@leofcoin/chain 1.6.9 → 1.6.10

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.
@@ -1433,781 +1433,764 @@ function requireIterator () {
1433
1433
  return iterator;
1434
1434
  }
1435
1435
 
1436
- var yallist;
1437
- var hasRequiredYallist;
1436
+ var yallist = Yallist$1;
1438
1437
 
1439
- function requireYallist () {
1440
- if (hasRequiredYallist) return yallist;
1441
- hasRequiredYallist = 1;
1442
- yallist = Yallist;
1438
+ Yallist$1.Node = Node;
1439
+ Yallist$1.create = Yallist$1;
1443
1440
 
1444
- Yallist.Node = Node;
1445
- Yallist.create = Yallist;
1446
-
1447
- function Yallist (list) {
1448
- var self = this;
1449
- if (!(self instanceof Yallist)) {
1450
- self = new Yallist();
1451
- }
1441
+ function Yallist$1 (list) {
1442
+ var self = this;
1443
+ if (!(self instanceof Yallist$1)) {
1444
+ self = new Yallist$1();
1445
+ }
1452
1446
 
1453
- self.tail = null;
1454
- self.head = null;
1455
- self.length = 0;
1447
+ self.tail = null;
1448
+ self.head = null;
1449
+ self.length = 0;
1456
1450
 
1457
- if (list && typeof list.forEach === 'function') {
1458
- list.forEach(function (item) {
1459
- self.push(item);
1460
- });
1461
- } else if (arguments.length > 0) {
1462
- for (var i = 0, l = arguments.length; i < l; i++) {
1463
- self.push(arguments[i]);
1464
- }
1465
- }
1466
-
1467
- return self
1468
- }
1451
+ if (list && typeof list.forEach === 'function') {
1452
+ list.forEach(function (item) {
1453
+ self.push(item);
1454
+ });
1455
+ } else if (arguments.length > 0) {
1456
+ for (var i = 0, l = arguments.length; i < l; i++) {
1457
+ self.push(arguments[i]);
1458
+ }
1459
+ }
1469
1460
 
1470
- Yallist.prototype.removeNode = function (node) {
1471
- if (node.list !== this) {
1472
- throw new Error('removing node which does not belong to this list')
1473
- }
1461
+ return self
1462
+ }
1474
1463
 
1475
- var next = node.next;
1476
- var prev = node.prev;
1464
+ Yallist$1.prototype.removeNode = function (node) {
1465
+ if (node.list !== this) {
1466
+ throw new Error('removing node which does not belong to this list')
1467
+ }
1477
1468
 
1478
- if (next) {
1479
- next.prev = prev;
1480
- }
1469
+ var next = node.next;
1470
+ var prev = node.prev;
1481
1471
 
1482
- if (prev) {
1483
- prev.next = next;
1484
- }
1472
+ if (next) {
1473
+ next.prev = prev;
1474
+ }
1485
1475
 
1486
- if (node === this.head) {
1487
- this.head = next;
1488
- }
1489
- if (node === this.tail) {
1490
- this.tail = prev;
1491
- }
1476
+ if (prev) {
1477
+ prev.next = next;
1478
+ }
1492
1479
 
1493
- node.list.length--;
1494
- node.next = null;
1495
- node.prev = null;
1496
- node.list = null;
1480
+ if (node === this.head) {
1481
+ this.head = next;
1482
+ }
1483
+ if (node === this.tail) {
1484
+ this.tail = prev;
1485
+ }
1497
1486
 
1498
- return next
1499
- };
1487
+ node.list.length--;
1488
+ node.next = null;
1489
+ node.prev = null;
1490
+ node.list = null;
1500
1491
 
1501
- Yallist.prototype.unshiftNode = function (node) {
1502
- if (node === this.head) {
1503
- return
1504
- }
1492
+ return next
1493
+ };
1505
1494
 
1506
- if (node.list) {
1507
- node.list.removeNode(node);
1508
- }
1495
+ Yallist$1.prototype.unshiftNode = function (node) {
1496
+ if (node === this.head) {
1497
+ return
1498
+ }
1509
1499
 
1510
- var head = this.head;
1511
- node.list = this;
1512
- node.next = head;
1513
- if (head) {
1514
- head.prev = node;
1515
- }
1500
+ if (node.list) {
1501
+ node.list.removeNode(node);
1502
+ }
1516
1503
 
1517
- this.head = node;
1518
- if (!this.tail) {
1519
- this.tail = node;
1520
- }
1521
- this.length++;
1522
- };
1504
+ var head = this.head;
1505
+ node.list = this;
1506
+ node.next = head;
1507
+ if (head) {
1508
+ head.prev = node;
1509
+ }
1523
1510
 
1524
- Yallist.prototype.pushNode = function (node) {
1525
- if (node === this.tail) {
1526
- return
1527
- }
1511
+ this.head = node;
1512
+ if (!this.tail) {
1513
+ this.tail = node;
1514
+ }
1515
+ this.length++;
1516
+ };
1528
1517
 
1529
- if (node.list) {
1530
- node.list.removeNode(node);
1531
- }
1518
+ Yallist$1.prototype.pushNode = function (node) {
1519
+ if (node === this.tail) {
1520
+ return
1521
+ }
1532
1522
 
1533
- var tail = this.tail;
1534
- node.list = this;
1535
- node.prev = tail;
1536
- if (tail) {
1537
- tail.next = node;
1538
- }
1523
+ if (node.list) {
1524
+ node.list.removeNode(node);
1525
+ }
1539
1526
 
1540
- this.tail = node;
1541
- if (!this.head) {
1542
- this.head = node;
1543
- }
1544
- this.length++;
1545
- };
1527
+ var tail = this.tail;
1528
+ node.list = this;
1529
+ node.prev = tail;
1530
+ if (tail) {
1531
+ tail.next = node;
1532
+ }
1546
1533
 
1547
- Yallist.prototype.push = function () {
1548
- for (var i = 0, l = arguments.length; i < l; i++) {
1549
- push(this, arguments[i]);
1550
- }
1551
- return this.length
1552
- };
1534
+ this.tail = node;
1535
+ if (!this.head) {
1536
+ this.head = node;
1537
+ }
1538
+ this.length++;
1539
+ };
1553
1540
 
1554
- Yallist.prototype.unshift = function () {
1555
- for (var i = 0, l = arguments.length; i < l; i++) {
1556
- unshift(this, arguments[i]);
1557
- }
1558
- return this.length
1559
- };
1541
+ Yallist$1.prototype.push = function () {
1542
+ for (var i = 0, l = arguments.length; i < l; i++) {
1543
+ push(this, arguments[i]);
1544
+ }
1545
+ return this.length
1546
+ };
1560
1547
 
1561
- Yallist.prototype.pop = function () {
1562
- if (!this.tail) {
1563
- return undefined
1564
- }
1548
+ Yallist$1.prototype.unshift = function () {
1549
+ for (var i = 0, l = arguments.length; i < l; i++) {
1550
+ unshift(this, arguments[i]);
1551
+ }
1552
+ return this.length
1553
+ };
1565
1554
 
1566
- var res = this.tail.value;
1567
- this.tail = this.tail.prev;
1568
- if (this.tail) {
1569
- this.tail.next = null;
1570
- } else {
1571
- this.head = null;
1572
- }
1573
- this.length--;
1574
- return res
1575
- };
1555
+ Yallist$1.prototype.pop = function () {
1556
+ if (!this.tail) {
1557
+ return undefined
1558
+ }
1576
1559
 
1577
- Yallist.prototype.shift = function () {
1578
- if (!this.head) {
1579
- return undefined
1580
- }
1560
+ var res = this.tail.value;
1561
+ this.tail = this.tail.prev;
1562
+ if (this.tail) {
1563
+ this.tail.next = null;
1564
+ } else {
1565
+ this.head = null;
1566
+ }
1567
+ this.length--;
1568
+ return res
1569
+ };
1581
1570
 
1582
- var res = this.head.value;
1583
- this.head = this.head.next;
1584
- if (this.head) {
1585
- this.head.prev = null;
1586
- } else {
1587
- this.tail = null;
1588
- }
1589
- this.length--;
1590
- return res
1591
- };
1571
+ Yallist$1.prototype.shift = function () {
1572
+ if (!this.head) {
1573
+ return undefined
1574
+ }
1592
1575
 
1593
- Yallist.prototype.forEach = function (fn, thisp) {
1594
- thisp = thisp || this;
1595
- for (var walker = this.head, i = 0; walker !== null; i++) {
1596
- fn.call(thisp, walker.value, i, this);
1597
- walker = walker.next;
1598
- }
1599
- };
1576
+ var res = this.head.value;
1577
+ this.head = this.head.next;
1578
+ if (this.head) {
1579
+ this.head.prev = null;
1580
+ } else {
1581
+ this.tail = null;
1582
+ }
1583
+ this.length--;
1584
+ return res
1585
+ };
1600
1586
 
1601
- Yallist.prototype.forEachReverse = function (fn, thisp) {
1602
- thisp = thisp || this;
1603
- for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {
1604
- fn.call(thisp, walker.value, i, this);
1605
- walker = walker.prev;
1606
- }
1607
- };
1587
+ Yallist$1.prototype.forEach = function (fn, thisp) {
1588
+ thisp = thisp || this;
1589
+ for (var walker = this.head, i = 0; walker !== null; i++) {
1590
+ fn.call(thisp, walker.value, i, this);
1591
+ walker = walker.next;
1592
+ }
1593
+ };
1608
1594
 
1609
- Yallist.prototype.get = function (n) {
1610
- for (var i = 0, walker = this.head; walker !== null && i < n; i++) {
1611
- // abort out of the list early if we hit a cycle
1612
- walker = walker.next;
1613
- }
1614
- if (i === n && walker !== null) {
1615
- return walker.value
1616
- }
1617
- };
1595
+ Yallist$1.prototype.forEachReverse = function (fn, thisp) {
1596
+ thisp = thisp || this;
1597
+ for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {
1598
+ fn.call(thisp, walker.value, i, this);
1599
+ walker = walker.prev;
1600
+ }
1601
+ };
1618
1602
 
1619
- Yallist.prototype.getReverse = function (n) {
1620
- for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {
1621
- // abort out of the list early if we hit a cycle
1622
- walker = walker.prev;
1623
- }
1624
- if (i === n && walker !== null) {
1625
- return walker.value
1626
- }
1627
- };
1603
+ Yallist$1.prototype.get = function (n) {
1604
+ for (var i = 0, walker = this.head; walker !== null && i < n; i++) {
1605
+ // abort out of the list early if we hit a cycle
1606
+ walker = walker.next;
1607
+ }
1608
+ if (i === n && walker !== null) {
1609
+ return walker.value
1610
+ }
1611
+ };
1628
1612
 
1629
- Yallist.prototype.map = function (fn, thisp) {
1630
- thisp = thisp || this;
1631
- var res = new Yallist();
1632
- for (var walker = this.head; walker !== null;) {
1633
- res.push(fn.call(thisp, walker.value, this));
1634
- walker = walker.next;
1635
- }
1636
- return res
1637
- };
1613
+ Yallist$1.prototype.getReverse = function (n) {
1614
+ for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {
1615
+ // abort out of the list early if we hit a cycle
1616
+ walker = walker.prev;
1617
+ }
1618
+ if (i === n && walker !== null) {
1619
+ return walker.value
1620
+ }
1621
+ };
1638
1622
 
1639
- Yallist.prototype.mapReverse = function (fn, thisp) {
1640
- thisp = thisp || this;
1641
- var res = new Yallist();
1642
- for (var walker = this.tail; walker !== null;) {
1643
- res.push(fn.call(thisp, walker.value, this));
1644
- walker = walker.prev;
1645
- }
1646
- return res
1647
- };
1623
+ Yallist$1.prototype.map = function (fn, thisp) {
1624
+ thisp = thisp || this;
1625
+ var res = new Yallist$1();
1626
+ for (var walker = this.head; walker !== null;) {
1627
+ res.push(fn.call(thisp, walker.value, this));
1628
+ walker = walker.next;
1629
+ }
1630
+ return res
1631
+ };
1648
1632
 
1649
- Yallist.prototype.reduce = function (fn, initial) {
1650
- var acc;
1651
- var walker = this.head;
1652
- if (arguments.length > 1) {
1653
- acc = initial;
1654
- } else if (this.head) {
1655
- walker = this.head.next;
1656
- acc = this.head.value;
1657
- } else {
1658
- throw new TypeError('Reduce of empty list with no initial value')
1659
- }
1633
+ Yallist$1.prototype.mapReverse = function (fn, thisp) {
1634
+ thisp = thisp || this;
1635
+ var res = new Yallist$1();
1636
+ for (var walker = this.tail; walker !== null;) {
1637
+ res.push(fn.call(thisp, walker.value, this));
1638
+ walker = walker.prev;
1639
+ }
1640
+ return res
1641
+ };
1660
1642
 
1661
- for (var i = 0; walker !== null; i++) {
1662
- acc = fn(acc, walker.value, i);
1663
- walker = walker.next;
1664
- }
1643
+ Yallist$1.prototype.reduce = function (fn, initial) {
1644
+ var acc;
1645
+ var walker = this.head;
1646
+ if (arguments.length > 1) {
1647
+ acc = initial;
1648
+ } else if (this.head) {
1649
+ walker = this.head.next;
1650
+ acc = this.head.value;
1651
+ } else {
1652
+ throw new TypeError('Reduce of empty list with no initial value')
1653
+ }
1665
1654
 
1666
- return acc
1667
- };
1655
+ for (var i = 0; walker !== null; i++) {
1656
+ acc = fn(acc, walker.value, i);
1657
+ walker = walker.next;
1658
+ }
1668
1659
 
1669
- Yallist.prototype.reduceReverse = function (fn, initial) {
1670
- var acc;
1671
- var walker = this.tail;
1672
- if (arguments.length > 1) {
1673
- acc = initial;
1674
- } else if (this.tail) {
1675
- walker = this.tail.prev;
1676
- acc = this.tail.value;
1677
- } else {
1678
- throw new TypeError('Reduce of empty list with no initial value')
1679
- }
1660
+ return acc
1661
+ };
1680
1662
 
1681
- for (var i = this.length - 1; walker !== null; i--) {
1682
- acc = fn(acc, walker.value, i);
1683
- walker = walker.prev;
1684
- }
1663
+ Yallist$1.prototype.reduceReverse = function (fn, initial) {
1664
+ var acc;
1665
+ var walker = this.tail;
1666
+ if (arguments.length > 1) {
1667
+ acc = initial;
1668
+ } else if (this.tail) {
1669
+ walker = this.tail.prev;
1670
+ acc = this.tail.value;
1671
+ } else {
1672
+ throw new TypeError('Reduce of empty list with no initial value')
1673
+ }
1685
1674
 
1686
- return acc
1687
- };
1675
+ for (var i = this.length - 1; walker !== null; i--) {
1676
+ acc = fn(acc, walker.value, i);
1677
+ walker = walker.prev;
1678
+ }
1688
1679
 
1689
- Yallist.prototype.toArray = function () {
1690
- var arr = new Array(this.length);
1691
- for (var i = 0, walker = this.head; walker !== null; i++) {
1692
- arr[i] = walker.value;
1693
- walker = walker.next;
1694
- }
1695
- return arr
1696
- };
1680
+ return acc
1681
+ };
1697
1682
 
1698
- Yallist.prototype.toArrayReverse = function () {
1699
- var arr = new Array(this.length);
1700
- for (var i = 0, walker = this.tail; walker !== null; i++) {
1701
- arr[i] = walker.value;
1702
- walker = walker.prev;
1703
- }
1704
- return arr
1705
- };
1683
+ Yallist$1.prototype.toArray = function () {
1684
+ var arr = new Array(this.length);
1685
+ for (var i = 0, walker = this.head; walker !== null; i++) {
1686
+ arr[i] = walker.value;
1687
+ walker = walker.next;
1688
+ }
1689
+ return arr
1690
+ };
1706
1691
 
1707
- Yallist.prototype.slice = function (from, to) {
1708
- to = to || this.length;
1709
- if (to < 0) {
1710
- to += this.length;
1711
- }
1712
- from = from || 0;
1713
- if (from < 0) {
1714
- from += this.length;
1715
- }
1716
- var ret = new Yallist();
1717
- if (to < from || to < 0) {
1718
- return ret
1719
- }
1720
- if (from < 0) {
1721
- from = 0;
1722
- }
1723
- if (to > this.length) {
1724
- to = this.length;
1725
- }
1726
- for (var i = 0, walker = this.head; walker !== null && i < from; i++) {
1727
- walker = walker.next;
1728
- }
1729
- for (; walker !== null && i < to; i++, walker = walker.next) {
1730
- ret.push(walker.value);
1731
- }
1732
- return ret
1733
- };
1692
+ Yallist$1.prototype.toArrayReverse = function () {
1693
+ var arr = new Array(this.length);
1694
+ for (var i = 0, walker = this.tail; walker !== null; i++) {
1695
+ arr[i] = walker.value;
1696
+ walker = walker.prev;
1697
+ }
1698
+ return arr
1699
+ };
1734
1700
 
1735
- Yallist.prototype.sliceReverse = function (from, to) {
1736
- to = to || this.length;
1737
- if (to < 0) {
1738
- to += this.length;
1739
- }
1740
- from = from || 0;
1741
- if (from < 0) {
1742
- from += this.length;
1743
- }
1744
- var ret = new Yallist();
1745
- if (to < from || to < 0) {
1746
- return ret
1747
- }
1748
- if (from < 0) {
1749
- from = 0;
1750
- }
1751
- if (to > this.length) {
1752
- to = this.length;
1753
- }
1754
- for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {
1755
- walker = walker.prev;
1756
- }
1757
- for (; walker !== null && i > from; i--, walker = walker.prev) {
1758
- ret.push(walker.value);
1759
- }
1760
- return ret
1761
- };
1701
+ Yallist$1.prototype.slice = function (from, to) {
1702
+ to = to || this.length;
1703
+ if (to < 0) {
1704
+ to += this.length;
1705
+ }
1706
+ from = from || 0;
1707
+ if (from < 0) {
1708
+ from += this.length;
1709
+ }
1710
+ var ret = new Yallist$1();
1711
+ if (to < from || to < 0) {
1712
+ return ret
1713
+ }
1714
+ if (from < 0) {
1715
+ from = 0;
1716
+ }
1717
+ if (to > this.length) {
1718
+ to = this.length;
1719
+ }
1720
+ for (var i = 0, walker = this.head; walker !== null && i < from; i++) {
1721
+ walker = walker.next;
1722
+ }
1723
+ for (; walker !== null && i < to; i++, walker = walker.next) {
1724
+ ret.push(walker.value);
1725
+ }
1726
+ return ret
1727
+ };
1762
1728
 
1763
- Yallist.prototype.splice = function (start, deleteCount, ...nodes) {
1764
- if (start > this.length) {
1765
- start = this.length - 1;
1766
- }
1767
- if (start < 0) {
1768
- start = this.length + start;
1769
- }
1729
+ Yallist$1.prototype.sliceReverse = function (from, to) {
1730
+ to = to || this.length;
1731
+ if (to < 0) {
1732
+ to += this.length;
1733
+ }
1734
+ from = from || 0;
1735
+ if (from < 0) {
1736
+ from += this.length;
1737
+ }
1738
+ var ret = new Yallist$1();
1739
+ if (to < from || to < 0) {
1740
+ return ret
1741
+ }
1742
+ if (from < 0) {
1743
+ from = 0;
1744
+ }
1745
+ if (to > this.length) {
1746
+ to = this.length;
1747
+ }
1748
+ for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {
1749
+ walker = walker.prev;
1750
+ }
1751
+ for (; walker !== null && i > from; i--, walker = walker.prev) {
1752
+ ret.push(walker.value);
1753
+ }
1754
+ return ret
1755
+ };
1770
1756
 
1771
- for (var i = 0, walker = this.head; walker !== null && i < start; i++) {
1772
- walker = walker.next;
1773
- }
1757
+ Yallist$1.prototype.splice = function (start, deleteCount, ...nodes) {
1758
+ if (start > this.length) {
1759
+ start = this.length - 1;
1760
+ }
1761
+ if (start < 0) {
1762
+ start = this.length + start;
1763
+ }
1774
1764
 
1775
- var ret = [];
1776
- for (var i = 0; walker && i < deleteCount; i++) {
1777
- ret.push(walker.value);
1778
- walker = this.removeNode(walker);
1779
- }
1780
- if (walker === null) {
1781
- walker = this.tail;
1782
- }
1765
+ for (var i = 0, walker = this.head; walker !== null && i < start; i++) {
1766
+ walker = walker.next;
1767
+ }
1783
1768
 
1784
- if (walker !== this.head && walker !== this.tail) {
1785
- walker = walker.prev;
1786
- }
1769
+ var ret = [];
1770
+ for (var i = 0; walker && i < deleteCount; i++) {
1771
+ ret.push(walker.value);
1772
+ walker = this.removeNode(walker);
1773
+ }
1774
+ if (walker === null) {
1775
+ walker = this.tail;
1776
+ }
1787
1777
 
1788
- for (var i = 0; i < nodes.length; i++) {
1789
- walker = insert(this, walker, nodes[i]);
1790
- }
1791
- return ret;
1792
- };
1778
+ if (walker !== this.head && walker !== this.tail) {
1779
+ walker = walker.prev;
1780
+ }
1793
1781
 
1794
- Yallist.prototype.reverse = function () {
1795
- var head = this.head;
1796
- var tail = this.tail;
1797
- for (var walker = head; walker !== null; walker = walker.prev) {
1798
- var p = walker.prev;
1799
- walker.prev = walker.next;
1800
- walker.next = p;
1801
- }
1802
- this.head = tail;
1803
- this.tail = head;
1804
- return this
1805
- };
1782
+ for (var i = 0; i < nodes.length; i++) {
1783
+ walker = insert(this, walker, nodes[i]);
1784
+ }
1785
+ return ret;
1786
+ };
1806
1787
 
1807
- function insert (self, node, value) {
1808
- var inserted = node === self.head ?
1809
- new Node(value, null, node, self) :
1810
- new Node(value, node, node.next, self);
1788
+ Yallist$1.prototype.reverse = function () {
1789
+ var head = this.head;
1790
+ var tail = this.tail;
1791
+ for (var walker = head; walker !== null; walker = walker.prev) {
1792
+ var p = walker.prev;
1793
+ walker.prev = walker.next;
1794
+ walker.next = p;
1795
+ }
1796
+ this.head = tail;
1797
+ this.tail = head;
1798
+ return this
1799
+ };
1811
1800
 
1812
- if (inserted.next === null) {
1813
- self.tail = inserted;
1814
- }
1815
- if (inserted.prev === null) {
1816
- self.head = inserted;
1817
- }
1801
+ function insert (self, node, value) {
1802
+ var inserted = node === self.head ?
1803
+ new Node(value, null, node, self) :
1804
+ new Node(value, node, node.next, self);
1818
1805
 
1819
- self.length++;
1806
+ if (inserted.next === null) {
1807
+ self.tail = inserted;
1808
+ }
1809
+ if (inserted.prev === null) {
1810
+ self.head = inserted;
1811
+ }
1820
1812
 
1821
- return inserted
1822
- }
1813
+ self.length++;
1823
1814
 
1824
- function push (self, item) {
1825
- self.tail = new Node(item, self.tail, null, self);
1826
- if (!self.head) {
1827
- self.head = self.tail;
1828
- }
1829
- self.length++;
1830
- }
1815
+ return inserted
1816
+ }
1831
1817
 
1832
- function unshift (self, item) {
1833
- self.head = new Node(item, null, self.head, self);
1834
- if (!self.tail) {
1835
- self.tail = self.head;
1836
- }
1837
- self.length++;
1838
- }
1818
+ function push (self, item) {
1819
+ self.tail = new Node(item, self.tail, null, self);
1820
+ if (!self.head) {
1821
+ self.head = self.tail;
1822
+ }
1823
+ self.length++;
1824
+ }
1839
1825
 
1840
- function Node (value, prev, next, list) {
1841
- if (!(this instanceof Node)) {
1842
- return new Node(value, prev, next, list)
1843
- }
1826
+ function unshift (self, item) {
1827
+ self.head = new Node(item, null, self.head, self);
1828
+ if (!self.tail) {
1829
+ self.tail = self.head;
1830
+ }
1831
+ self.length++;
1832
+ }
1844
1833
 
1845
- this.list = list;
1846
- this.value = value;
1834
+ function Node (value, prev, next, list) {
1835
+ if (!(this instanceof Node)) {
1836
+ return new Node(value, prev, next, list)
1837
+ }
1847
1838
 
1848
- if (prev) {
1849
- prev.next = this;
1850
- this.prev = prev;
1851
- } else {
1852
- this.prev = null;
1853
- }
1839
+ this.list = list;
1840
+ this.value = value;
1854
1841
 
1855
- if (next) {
1856
- next.prev = this;
1857
- this.next = next;
1858
- } else {
1859
- this.next = null;
1860
- }
1861
- }
1842
+ if (prev) {
1843
+ prev.next = this;
1844
+ this.prev = prev;
1845
+ } else {
1846
+ this.prev = null;
1847
+ }
1862
1848
 
1863
- try {
1864
- // add if support for Symbol.iterator is present
1865
- requireIterator()(Yallist);
1866
- } catch (er) {}
1867
- return yallist;
1849
+ if (next) {
1850
+ next.prev = this;
1851
+ this.next = next;
1852
+ } else {
1853
+ this.next = null;
1854
+ }
1868
1855
  }
1869
1856
 
1870
- var lruCache;
1871
- var hasRequiredLruCache;
1872
-
1873
- function requireLruCache () {
1874
- if (hasRequiredLruCache) return lruCache;
1875
- hasRequiredLruCache = 1;
1876
-
1877
- // A linked list to keep track of recently-used-ness
1878
- const Yallist = requireYallist();
1879
-
1880
- const MAX = Symbol('max');
1881
- const LENGTH = Symbol('length');
1882
- const LENGTH_CALCULATOR = Symbol('lengthCalculator');
1883
- const ALLOW_STALE = Symbol('allowStale');
1884
- const MAX_AGE = Symbol('maxAge');
1885
- const DISPOSE = Symbol('dispose');
1886
- const NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet');
1887
- const LRU_LIST = Symbol('lruList');
1888
- const CACHE = Symbol('cache');
1889
- const UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet');
1890
-
1891
- const naiveLength = () => 1;
1892
-
1893
- // lruList is a yallist where the head is the youngest
1894
- // item, and the tail is the oldest. the list contains the Hit
1895
- // objects as the entries.
1896
- // Each Hit object has a reference to its Yallist.Node. This
1897
- // never changes.
1898
- //
1899
- // cache is a Map (or PseudoMap) that matches the keys to
1900
- // the Yallist.Node object.
1901
- class LRUCache {
1902
- constructor (options) {
1903
- if (typeof options === 'number')
1904
- options = { max: options };
1905
-
1906
- if (!options)
1907
- options = {};
1908
-
1909
- if (options.max && (typeof options.max !== 'number' || options.max < 0))
1910
- throw new TypeError('max must be a non-negative number')
1911
- // Kind of weird to have a default max of Infinity, but oh well.
1912
- this[MAX] = options.max || Infinity;
1913
-
1914
- const lc = options.length || naiveLength;
1915
- this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc;
1916
- this[ALLOW_STALE] = options.stale || false;
1917
- if (options.maxAge && typeof options.maxAge !== 'number')
1918
- throw new TypeError('maxAge must be a number')
1919
- this[MAX_AGE] = options.maxAge || 0;
1920
- this[DISPOSE] = options.dispose;
1921
- this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false;
1922
- this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false;
1923
- this.reset();
1924
- }
1857
+ try {
1858
+ // add if support for Symbol.iterator is present
1859
+ requireIterator()(Yallist$1);
1860
+ } catch (er) {}
1861
+
1862
+ // A linked list to keep track of recently-used-ness
1863
+ const Yallist = yallist;
1864
+
1865
+ const MAX = Symbol('max');
1866
+ const LENGTH = Symbol('length');
1867
+ const LENGTH_CALCULATOR = Symbol('lengthCalculator');
1868
+ const ALLOW_STALE = Symbol('allowStale');
1869
+ const MAX_AGE = Symbol('maxAge');
1870
+ const DISPOSE = Symbol('dispose');
1871
+ const NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet');
1872
+ const LRU_LIST = Symbol('lruList');
1873
+ const CACHE = Symbol('cache');
1874
+ const UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet');
1875
+
1876
+ const naiveLength = () => 1;
1877
+
1878
+ // lruList is a yallist where the head is the youngest
1879
+ // item, and the tail is the oldest. the list contains the Hit
1880
+ // objects as the entries.
1881
+ // Each Hit object has a reference to its Yallist.Node. This
1882
+ // never changes.
1883
+ //
1884
+ // cache is a Map (or PseudoMap) that matches the keys to
1885
+ // the Yallist.Node object.
1886
+ class LRUCache {
1887
+ constructor (options) {
1888
+ if (typeof options === 'number')
1889
+ options = { max: options };
1890
+
1891
+ if (!options)
1892
+ options = {};
1893
+
1894
+ if (options.max && (typeof options.max !== 'number' || options.max < 0))
1895
+ throw new TypeError('max must be a non-negative number')
1896
+ // Kind of weird to have a default max of Infinity, but oh well.
1897
+ this[MAX] = options.max || Infinity;
1898
+
1899
+ const lc = options.length || naiveLength;
1900
+ this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc;
1901
+ this[ALLOW_STALE] = options.stale || false;
1902
+ if (options.maxAge && typeof options.maxAge !== 'number')
1903
+ throw new TypeError('maxAge must be a number')
1904
+ this[MAX_AGE] = options.maxAge || 0;
1905
+ this[DISPOSE] = options.dispose;
1906
+ this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false;
1907
+ this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false;
1908
+ this.reset();
1909
+ }
1925
1910
 
1926
- // resize the cache when the max changes.
1927
- set max (mL) {
1928
- if (typeof mL !== 'number' || mL < 0)
1929
- throw new TypeError('max must be a non-negative number')
1911
+ // resize the cache when the max changes.
1912
+ set max (mL) {
1913
+ if (typeof mL !== 'number' || mL < 0)
1914
+ throw new TypeError('max must be a non-negative number')
1930
1915
 
1931
- this[MAX] = mL || Infinity;
1932
- trim(this);
1933
- }
1934
- get max () {
1935
- return this[MAX]
1936
- }
1916
+ this[MAX] = mL || Infinity;
1917
+ trim(this);
1918
+ }
1919
+ get max () {
1920
+ return this[MAX]
1921
+ }
1937
1922
 
1938
- set allowStale (allowStale) {
1939
- this[ALLOW_STALE] = !!allowStale;
1940
- }
1941
- get allowStale () {
1942
- return this[ALLOW_STALE]
1943
- }
1923
+ set allowStale (allowStale) {
1924
+ this[ALLOW_STALE] = !!allowStale;
1925
+ }
1926
+ get allowStale () {
1927
+ return this[ALLOW_STALE]
1928
+ }
1944
1929
 
1945
- set maxAge (mA) {
1946
- if (typeof mA !== 'number')
1947
- throw new TypeError('maxAge must be a non-negative number')
1930
+ set maxAge (mA) {
1931
+ if (typeof mA !== 'number')
1932
+ throw new TypeError('maxAge must be a non-negative number')
1948
1933
 
1949
- this[MAX_AGE] = mA;
1950
- trim(this);
1951
- }
1952
- get maxAge () {
1953
- return this[MAX_AGE]
1954
- }
1934
+ this[MAX_AGE] = mA;
1935
+ trim(this);
1936
+ }
1937
+ get maxAge () {
1938
+ return this[MAX_AGE]
1939
+ }
1955
1940
 
1956
- // resize the cache when the lengthCalculator changes.
1957
- set lengthCalculator (lC) {
1958
- if (typeof lC !== 'function')
1959
- lC = naiveLength;
1960
-
1961
- if (lC !== this[LENGTH_CALCULATOR]) {
1962
- this[LENGTH_CALCULATOR] = lC;
1963
- this[LENGTH] = 0;
1964
- this[LRU_LIST].forEach(hit => {
1965
- hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key);
1966
- this[LENGTH] += hit.length;
1967
- });
1968
- }
1969
- trim(this);
1970
- }
1971
- get lengthCalculator () { return this[LENGTH_CALCULATOR] }
1941
+ // resize the cache when the lengthCalculator changes.
1942
+ set lengthCalculator (lC) {
1943
+ if (typeof lC !== 'function')
1944
+ lC = naiveLength;
1945
+
1946
+ if (lC !== this[LENGTH_CALCULATOR]) {
1947
+ this[LENGTH_CALCULATOR] = lC;
1948
+ this[LENGTH] = 0;
1949
+ this[LRU_LIST].forEach(hit => {
1950
+ hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key);
1951
+ this[LENGTH] += hit.length;
1952
+ });
1953
+ }
1954
+ trim(this);
1955
+ }
1956
+ get lengthCalculator () { return this[LENGTH_CALCULATOR] }
1972
1957
 
1973
- get length () { return this[LENGTH] }
1974
- get itemCount () { return this[LRU_LIST].length }
1958
+ get length () { return this[LENGTH] }
1959
+ get itemCount () { return this[LRU_LIST].length }
1975
1960
 
1976
- rforEach (fn, thisp) {
1977
- thisp = thisp || this;
1978
- for (let walker = this[LRU_LIST].tail; walker !== null;) {
1979
- const prev = walker.prev;
1980
- forEachStep(this, fn, walker, thisp);
1981
- walker = prev;
1982
- }
1983
- }
1961
+ rforEach (fn, thisp) {
1962
+ thisp = thisp || this;
1963
+ for (let walker = this[LRU_LIST].tail; walker !== null;) {
1964
+ const prev = walker.prev;
1965
+ forEachStep(this, fn, walker, thisp);
1966
+ walker = prev;
1967
+ }
1968
+ }
1984
1969
 
1985
- forEach (fn, thisp) {
1986
- thisp = thisp || this;
1987
- for (let walker = this[LRU_LIST].head; walker !== null;) {
1988
- const next = walker.next;
1989
- forEachStep(this, fn, walker, thisp);
1990
- walker = next;
1991
- }
1992
- }
1970
+ forEach (fn, thisp) {
1971
+ thisp = thisp || this;
1972
+ for (let walker = this[LRU_LIST].head; walker !== null;) {
1973
+ const next = walker.next;
1974
+ forEachStep(this, fn, walker, thisp);
1975
+ walker = next;
1976
+ }
1977
+ }
1993
1978
 
1994
- keys () {
1995
- return this[LRU_LIST].toArray().map(k => k.key)
1996
- }
1979
+ keys () {
1980
+ return this[LRU_LIST].toArray().map(k => k.key)
1981
+ }
1997
1982
 
1998
- values () {
1999
- return this[LRU_LIST].toArray().map(k => k.value)
2000
- }
1983
+ values () {
1984
+ return this[LRU_LIST].toArray().map(k => k.value)
1985
+ }
2001
1986
 
2002
- reset () {
2003
- if (this[DISPOSE] &&
2004
- this[LRU_LIST] &&
2005
- this[LRU_LIST].length) {
2006
- this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value));
2007
- }
1987
+ reset () {
1988
+ if (this[DISPOSE] &&
1989
+ this[LRU_LIST] &&
1990
+ this[LRU_LIST].length) {
1991
+ this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value));
1992
+ }
2008
1993
 
2009
- this[CACHE] = new Map(); // hash of items by key
2010
- this[LRU_LIST] = new Yallist(); // list of items in order of use recency
2011
- this[LENGTH] = 0; // length of items in the list
2012
- }
1994
+ this[CACHE] = new Map(); // hash of items by key
1995
+ this[LRU_LIST] = new Yallist(); // list of items in order of use recency
1996
+ this[LENGTH] = 0; // length of items in the list
1997
+ }
2013
1998
 
2014
- dump () {
2015
- return this[LRU_LIST].map(hit =>
2016
- isStale(this, hit) ? false : {
2017
- k: hit.key,
2018
- v: hit.value,
2019
- e: hit.now + (hit.maxAge || 0)
2020
- }).toArray().filter(h => h)
2021
- }
1999
+ dump () {
2000
+ return this[LRU_LIST].map(hit =>
2001
+ isStale(this, hit) ? false : {
2002
+ k: hit.key,
2003
+ v: hit.value,
2004
+ e: hit.now + (hit.maxAge || 0)
2005
+ }).toArray().filter(h => h)
2006
+ }
2022
2007
 
2023
- dumpLru () {
2024
- return this[LRU_LIST]
2025
- }
2008
+ dumpLru () {
2009
+ return this[LRU_LIST]
2010
+ }
2026
2011
 
2027
- set (key, value, maxAge) {
2028
- maxAge = maxAge || this[MAX_AGE];
2012
+ set (key, value, maxAge) {
2013
+ maxAge = maxAge || this[MAX_AGE];
2029
2014
 
2030
- if (maxAge && typeof maxAge !== 'number')
2031
- throw new TypeError('maxAge must be a number')
2015
+ if (maxAge && typeof maxAge !== 'number')
2016
+ throw new TypeError('maxAge must be a number')
2032
2017
 
2033
- const now = maxAge ? Date.now() : 0;
2034
- const len = this[LENGTH_CALCULATOR](value, key);
2018
+ const now = maxAge ? Date.now() : 0;
2019
+ const len = this[LENGTH_CALCULATOR](value, key);
2035
2020
 
2036
- if (this[CACHE].has(key)) {
2037
- if (len > this[MAX]) {
2038
- del(this, this[CACHE].get(key));
2039
- return false
2040
- }
2021
+ if (this[CACHE].has(key)) {
2022
+ if (len > this[MAX]) {
2023
+ del(this, this[CACHE].get(key));
2024
+ return false
2025
+ }
2041
2026
 
2042
- const node = this[CACHE].get(key);
2043
- const item = node.value;
2027
+ const node = this[CACHE].get(key);
2028
+ const item = node.value;
2044
2029
 
2045
- // dispose of the old one before overwriting
2046
- // split out into 2 ifs for better coverage tracking
2047
- if (this[DISPOSE]) {
2048
- if (!this[NO_DISPOSE_ON_SET])
2049
- this[DISPOSE](key, item.value);
2050
- }
2030
+ // dispose of the old one before overwriting
2031
+ // split out into 2 ifs for better coverage tracking
2032
+ if (this[DISPOSE]) {
2033
+ if (!this[NO_DISPOSE_ON_SET])
2034
+ this[DISPOSE](key, item.value);
2035
+ }
2051
2036
 
2052
- item.now = now;
2053
- item.maxAge = maxAge;
2054
- item.value = value;
2055
- this[LENGTH] += len - item.length;
2056
- item.length = len;
2057
- this.get(key);
2058
- trim(this);
2059
- return true
2060
- }
2037
+ item.now = now;
2038
+ item.maxAge = maxAge;
2039
+ item.value = value;
2040
+ this[LENGTH] += len - item.length;
2041
+ item.length = len;
2042
+ this.get(key);
2043
+ trim(this);
2044
+ return true
2045
+ }
2061
2046
 
2062
- const hit = new Entry(key, value, len, now, maxAge);
2047
+ const hit = new Entry(key, value, len, now, maxAge);
2063
2048
 
2064
- // oversized objects fall out of cache automatically.
2065
- if (hit.length > this[MAX]) {
2066
- if (this[DISPOSE])
2067
- this[DISPOSE](key, value);
2049
+ // oversized objects fall out of cache automatically.
2050
+ if (hit.length > this[MAX]) {
2051
+ if (this[DISPOSE])
2052
+ this[DISPOSE](key, value);
2068
2053
 
2069
- return false
2070
- }
2054
+ return false
2055
+ }
2071
2056
 
2072
- this[LENGTH] += hit.length;
2073
- this[LRU_LIST].unshift(hit);
2074
- this[CACHE].set(key, this[LRU_LIST].head);
2075
- trim(this);
2076
- return true
2077
- }
2057
+ this[LENGTH] += hit.length;
2058
+ this[LRU_LIST].unshift(hit);
2059
+ this[CACHE].set(key, this[LRU_LIST].head);
2060
+ trim(this);
2061
+ return true
2062
+ }
2078
2063
 
2079
- has (key) {
2080
- if (!this[CACHE].has(key)) return false
2081
- const hit = this[CACHE].get(key).value;
2082
- return !isStale(this, hit)
2083
- }
2064
+ has (key) {
2065
+ if (!this[CACHE].has(key)) return false
2066
+ const hit = this[CACHE].get(key).value;
2067
+ return !isStale(this, hit)
2068
+ }
2084
2069
 
2085
- get (key) {
2086
- return get(this, key, true)
2087
- }
2070
+ get (key) {
2071
+ return get(this, key, true)
2072
+ }
2088
2073
 
2089
- peek (key) {
2090
- return get(this, key, false)
2091
- }
2074
+ peek (key) {
2075
+ return get(this, key, false)
2076
+ }
2092
2077
 
2093
- pop () {
2094
- const node = this[LRU_LIST].tail;
2095
- if (!node)
2096
- return null
2078
+ pop () {
2079
+ const node = this[LRU_LIST].tail;
2080
+ if (!node)
2081
+ return null
2097
2082
 
2098
- del(this, node);
2099
- return node.value
2100
- }
2083
+ del(this, node);
2084
+ return node.value
2085
+ }
2101
2086
 
2102
- del (key) {
2103
- del(this, this[CACHE].get(key));
2104
- }
2087
+ del (key) {
2088
+ del(this, this[CACHE].get(key));
2089
+ }
2105
2090
 
2106
- load (arr) {
2107
- // reset the cache
2108
- this.reset();
2109
-
2110
- const now = Date.now();
2111
- // A previous serialized cache has the most recent items first
2112
- for (let l = arr.length - 1; l >= 0; l--) {
2113
- const hit = arr[l];
2114
- const expiresAt = hit.e || 0;
2115
- if (expiresAt === 0)
2116
- // the item was created without expiration in a non aged cache
2117
- this.set(hit.k, hit.v);
2118
- else {
2119
- const maxAge = expiresAt - now;
2120
- // dont add already expired items
2121
- if (maxAge > 0) {
2122
- this.set(hit.k, hit.v, maxAge);
2123
- }
2124
- }
2125
- }
2126
- }
2091
+ load (arr) {
2092
+ // reset the cache
2093
+ this.reset();
2094
+
2095
+ const now = Date.now();
2096
+ // A previous serialized cache has the most recent items first
2097
+ for (let l = arr.length - 1; l >= 0; l--) {
2098
+ const hit = arr[l];
2099
+ const expiresAt = hit.e || 0;
2100
+ if (expiresAt === 0)
2101
+ // the item was created without expiration in a non aged cache
2102
+ this.set(hit.k, hit.v);
2103
+ else {
2104
+ const maxAge = expiresAt - now;
2105
+ // dont add already expired items
2106
+ if (maxAge > 0) {
2107
+ this.set(hit.k, hit.v, maxAge);
2108
+ }
2109
+ }
2110
+ }
2111
+ }
2127
2112
 
2128
- prune () {
2129
- this[CACHE].forEach((value, key) => get(this, key, false));
2130
- }
2131
- }
2113
+ prune () {
2114
+ this[CACHE].forEach((value, key) => get(this, key, false));
2115
+ }
2116
+ }
2132
2117
 
2133
- const get = (self, key, doUse) => {
2134
- const node = self[CACHE].get(key);
2135
- if (node) {
2136
- const hit = node.value;
2137
- if (isStale(self, hit)) {
2138
- del(self, node);
2139
- if (!self[ALLOW_STALE])
2140
- return undefined
2141
- } else {
2142
- if (doUse) {
2143
- if (self[UPDATE_AGE_ON_GET])
2144
- node.value.now = Date.now();
2145
- self[LRU_LIST].unshiftNode(node);
2146
- }
2147
- }
2148
- return hit.value
2149
- }
2150
- };
2118
+ const get = (self, key, doUse) => {
2119
+ const node = self[CACHE].get(key);
2120
+ if (node) {
2121
+ const hit = node.value;
2122
+ if (isStale(self, hit)) {
2123
+ del(self, node);
2124
+ if (!self[ALLOW_STALE])
2125
+ return undefined
2126
+ } else {
2127
+ if (doUse) {
2128
+ if (self[UPDATE_AGE_ON_GET])
2129
+ node.value.now = Date.now();
2130
+ self[LRU_LIST].unshiftNode(node);
2131
+ }
2132
+ }
2133
+ return hit.value
2134
+ }
2135
+ };
2151
2136
 
2152
- const isStale = (self, hit) => {
2153
- if (!hit || (!hit.maxAge && !self[MAX_AGE]))
2154
- return false
2137
+ const isStale = (self, hit) => {
2138
+ if (!hit || (!hit.maxAge && !self[MAX_AGE]))
2139
+ return false
2155
2140
 
2156
- const diff = Date.now() - hit.now;
2157
- return hit.maxAge ? diff > hit.maxAge
2158
- : self[MAX_AGE] && (diff > self[MAX_AGE])
2159
- };
2141
+ const diff = Date.now() - hit.now;
2142
+ return hit.maxAge ? diff > hit.maxAge
2143
+ : self[MAX_AGE] && (diff > self[MAX_AGE])
2144
+ };
2160
2145
 
2161
- const trim = self => {
2162
- if (self[LENGTH] > self[MAX]) {
2163
- for (let walker = self[LRU_LIST].tail;
2164
- self[LENGTH] > self[MAX] && walker !== null;) {
2165
- // We know that we're about to delete this one, and also
2166
- // what the next least recently used key will be, so just
2167
- // go ahead and set it now.
2168
- const prev = walker.prev;
2169
- del(self, walker);
2170
- walker = prev;
2171
- }
2172
- }
2173
- };
2146
+ const trim = self => {
2147
+ if (self[LENGTH] > self[MAX]) {
2148
+ for (let walker = self[LRU_LIST].tail;
2149
+ self[LENGTH] > self[MAX] && walker !== null;) {
2150
+ // We know that we're about to delete this one, and also
2151
+ // what the next least recently used key will be, so just
2152
+ // go ahead and set it now.
2153
+ const prev = walker.prev;
2154
+ del(self, walker);
2155
+ walker = prev;
2156
+ }
2157
+ }
2158
+ };
2174
2159
 
2175
- const del = (self, node) => {
2176
- if (node) {
2177
- const hit = node.value;
2178
- if (self[DISPOSE])
2179
- self[DISPOSE](hit.key, hit.value);
2160
+ const del = (self, node) => {
2161
+ if (node) {
2162
+ const hit = node.value;
2163
+ if (self[DISPOSE])
2164
+ self[DISPOSE](hit.key, hit.value);
2180
2165
 
2181
- self[LENGTH] -= hit.length;
2182
- self[CACHE].delete(hit.key);
2183
- self[LRU_LIST].removeNode(node);
2184
- }
2185
- };
2166
+ self[LENGTH] -= hit.length;
2167
+ self[CACHE].delete(hit.key);
2168
+ self[LRU_LIST].removeNode(node);
2169
+ }
2170
+ };
2186
2171
 
2187
- class Entry {
2188
- constructor (key, value, length, now, maxAge) {
2189
- this.key = key;
2190
- this.value = value;
2191
- this.length = length;
2192
- this.now = now;
2193
- this.maxAge = maxAge || 0;
2194
- }
2195
- }
2172
+ class Entry {
2173
+ constructor (key, value, length, now, maxAge) {
2174
+ this.key = key;
2175
+ this.value = value;
2176
+ this.length = length;
2177
+ this.now = now;
2178
+ this.maxAge = maxAge || 0;
2179
+ }
2180
+ }
2196
2181
 
2197
- const forEachStep = (self, fn, node, thisp) => {
2198
- let hit = node.value;
2199
- if (isStale(self, hit)) {
2200
- del(self, node);
2201
- if (!self[ALLOW_STALE])
2202
- hit = undefined;
2203
- }
2204
- if (hit)
2205
- fn.call(thisp, hit.value, hit.key, self);
2206
- };
2182
+ const forEachStep = (self, fn, node, thisp) => {
2183
+ let hit = node.value;
2184
+ if (isStale(self, hit)) {
2185
+ del(self, node);
2186
+ if (!self[ALLOW_STALE])
2187
+ hit = undefined;
2188
+ }
2189
+ if (hit)
2190
+ fn.call(thisp, hit.value, hit.key, self);
2191
+ };
2207
2192
 
2208
- lruCache = LRUCache;
2209
- return lruCache;
2210
- }
2193
+ var lruCache = LRUCache;
2211
2194
 
2212
2195
  var range;
2213
2196
  var hasRequiredRange;
@@ -2415,7 +2398,7 @@ function requireRange () {
2415
2398
 
2416
2399
  range = Range;
2417
2400
 
2418
- const LRU = requireLruCache();
2401
+ const LRU = lruCache;
2419
2402
  const cache = new LRU({ max: 1000 });
2420
2403
 
2421
2404
  const parseOptions = parseOptions_1;
@@ -3645,7 +3628,13 @@ class Transaction extends Protocol {
3645
3628
  * @returns {Number} nonce
3646
3629
  */
3647
3630
  async getNonce(address) {
3648
- if (!(await globalThis.accountsStore.has(address))) {
3631
+ try {
3632
+ if (!(await globalThis.accountsStore.has(address))) {
3633
+ const nonce = await this.#getNonceFallback(address);
3634
+ await globalThis.accountsStore.put(address, new TextEncoder().encode(String(nonce)));
3635
+ }
3636
+ }
3637
+ catch (error) {
3649
3638
  const nonce = await this.#getNonceFallback(address);
3650
3639
  await globalThis.accountsStore.put(address, new TextEncoder().encode(String(nonce)));
3651
3640
  }
@@ -3663,8 +3652,7 @@ class Transaction extends Protocol {
3663
3652
  return Number(nonce);
3664
3653
  }
3665
3654
  async validateNonce(address, nonce) {
3666
- let previousNonce = await globalThis.accountsStore.get(address);
3667
- previousNonce = Number(new TextDecoder().decode(previousNonce));
3655
+ const previousNonce = await this.getNonce(address);
3668
3656
  if (previousNonce > nonce)
3669
3657
  throw new Error(`a transaction with a higher nonce already exists`);
3670
3658
  if (previousNonce === nonce)
@@ -3909,7 +3897,8 @@ class Machine {
3909
3897
  lastBlock: {
3910
3898
  index: 0,
3911
3899
  hash: ''
3912
- }
3900
+ },
3901
+ accounts: {}
3913
3902
  };
3914
3903
  // @ts-ignore
3915
3904
  return this.#init(blocks);
@@ -3999,8 +3988,14 @@ class Machine {
3999
3988
  const value = await this.#askWorker('get', { contract, method: 'state', params: [] });
4000
3989
  state[contract] = value;
4001
3990
  }));
4002
- await stateStore.put('lastBlock', JSON.stringify(await this.lastBlock));
4003
- await stateStore.put('states', JSON.stringify(state));
3991
+ const accounts = await Promise.all((await accountsStore.keys()).map((address) => accountsStore.get(address)));
3992
+ const tasks = [
3993
+ stateStore.put('lastBlock', JSON.stringify(await this.lastBlock)),
3994
+ stateStore.put('states', JSON.stringify(state)),
3995
+ stateStore.put('accounts', JSON.stringify(accounts))
3996
+ // accountsStore.clear()
3997
+ ];
3998
+ await Promise.all(tasks);
4004
3999
  }
4005
4000
  }
4006
4001
  catch (error) {
@@ -4034,6 +4029,12 @@ class Machine {
4034
4029
  if (await stateStore.has('lastBlock')) {
4035
4030
  this.states.lastBlock = JSON.parse(new TextDecoder().decode(await stateStore.get('lastBlock')));
4036
4031
  this.states.states = JSON.parse(new TextDecoder().decode(await stateStore.get('states')));
4032
+ try {
4033
+ this.states.accounts = JSON.parse(new TextDecoder().decode(await stateStore.get('accounts')));
4034
+ }
4035
+ catch {
4036
+ this.states.accounts = {};
4037
+ }
4037
4038
  console.log({ balances: this.states.states[addresses.nativeToken].balances });
4038
4039
  }
4039
4040
  const message = {
@@ -5025,7 +5026,6 @@ class Chain extends VersionControl {
5025
5026
  const lastBlock = await this.#makeRequest(peer, 'lastBlock');
5026
5027
  const localBlock = await this.lastBlock;
5027
5028
  const higherThenCurrentLocal = !localBlock.index ? true : lastBlock.index > localBlock.index;
5028
- const peerTransactionPool = (higherThenCurrentLocal && (await this.getPeerTransactionPool(peer))) || [];
5029
5029
  if (Object.keys(lastBlock).length > 0) {
5030
5030
  if (!this.lastBlock || higherThenCurrentLocal) {
5031
5031
  this.knownBlocks = await this.#makeRequest(peer, 'knownBlocks');
@@ -5034,6 +5034,7 @@ class Chain extends VersionControl {
5034
5034
  else if (!this.knownBlocks)
5035
5035
  this.knownBlocks = await this.#makeRequest(peer, 'knownBlocks');
5036
5036
  }
5037
+ const peerTransactionPool = (higherThenCurrentLocal && (await this.getPeerTransactionPool(peer))) || [];
5037
5038
  if (this.#participating && peerTransactionPool.length > 0)
5038
5039
  return this.#runEpoch();
5039
5040
  }