mol_key 0.0.740 → 0.0.742

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.
package/node.test.js CHANGED
@@ -1699,7 +1699,12 @@ var $;
1699
1699
  var $;
1700
1700
  (function ($) {
1701
1701
  function $mol_range2(item = index => index, size = () => Number.POSITIVE_INFINITY) {
1702
- return new Proxy(new $mol_range2_array(), {
1702
+ const source = typeof item === 'function' ? new $mol_range2_array() : item;
1703
+ if (typeof item !== 'function') {
1704
+ item = index => source[index];
1705
+ size = () => source.length;
1706
+ }
1707
+ return new Proxy(source, {
1703
1708
  get(target, field) {
1704
1709
  if (typeof field === 'string') {
1705
1710
  if (field === 'length')
@@ -1712,7 +1717,7 @@ var $;
1712
1717
  if (index === Math.trunc(index))
1713
1718
  return item(index);
1714
1719
  }
1715
- return target[field];
1720
+ return $mol_range2_array.prototype[field];
1716
1721
  },
1717
1722
  set(target, field) {
1718
1723
  return $mol_fail(new TypeError(`Lazy range is read only (trying to set field ${JSON.stringify(field)})`));
@@ -1753,13 +1758,16 @@ var $;
1753
1758
  return $mol_range2(index => index < this.length ? this[index] : tail[0][index - this.length], () => this.length + tail[0].length);
1754
1759
  }
1755
1760
  filter(check, context) {
1756
- const filtered = new $mol_range2_array();
1757
- for (let index = 0; index < this.length; ++index) {
1758
- const item = this[index];
1759
- if (check.call(context, item, index, this))
1760
- filtered.push(item);
1761
- }
1762
- return filtered;
1761
+ const filtered = [];
1762
+ let cursor = -1;
1763
+ return $mol_range2(index => {
1764
+ while (cursor < this.length && index >= filtered.length - 1) {
1765
+ const val = this[++cursor];
1766
+ if (check(val, cursor, this))
1767
+ filtered.push(val);
1768
+ }
1769
+ return filtered[index];
1770
+ }, () => cursor < this.length ? Number.POSITIVE_INFINITY : filtered.length);
1763
1771
  }
1764
1772
  forEach(proceed, context) {
1765
1773
  for (let [key, value] of this.entries())
@@ -1819,7 +1827,7 @@ var $;
1819
1827
  'lazy calls'() {
1820
1828
  let calls = 0;
1821
1829
  const list = $mol_range2(index => (++calls, index), () => 10);
1822
- $mol_assert_ok(list instanceof Array);
1830
+ $mol_assert_equal(true, list instanceof Array);
1823
1831
  $mol_assert_equal(list.length, 10);
1824
1832
  $mol_assert_equal(list[-1], undefined);
1825
1833
  $mol_assert_equal(list[0], 0);
@@ -1862,11 +1870,17 @@ var $;
1862
1870
  $mol_range2(i => i, () => 5).forEach(i => log += i);
1863
1871
  $mol_assert_equal(log, '01234');
1864
1872
  },
1873
+ 'reduce'() {
1874
+ let calls = 0;
1875
+ const list = $mol_range2().slice(1, 6);
1876
+ $mol_assert_equal(list.reduce((s, v) => s + v), 15);
1877
+ $mol_assert_equal(list.reduce((s, v) => s + v, 5), 20);
1878
+ },
1865
1879
  'lazy concat'() {
1866
1880
  let calls1 = 0;
1867
1881
  let calls2 = 0;
1868
1882
  const list = $mol_range2(index => (++calls1, index), () => 5).concat([0, 1, 2, 3, 4], $mol_range2(index => (++calls2, index), () => 5));
1869
- $mol_assert_ok(list instanceof Array);
1883
+ $mol_assert_equal(true, list instanceof Array);
1870
1884
  $mol_assert_equal(list.length, 15);
1871
1885
  $mol_assert_equal(list[0], 0);
1872
1886
  $mol_assert_equal(list[4], 4);
@@ -1878,32 +1892,26 @@ var $;
1878
1892
  $mol_assert_equal(calls1, 2);
1879
1893
  $mol_assert_equal(calls2, 2);
1880
1894
  },
1881
- 'filter'() {
1895
+ 'lazy filter'() {
1882
1896
  let calls = 0;
1883
- const list = $mol_range2(index => (++calls, index), () => 10).filter(v => v % 2).slice(0, 3);
1884
- $mol_assert_ok(list instanceof Array);
1897
+ const list = $mol_range2(index => (++calls, index), () => 15).filter(v => v % 2).slice(0, 3);
1898
+ $mol_assert_equal(true, list instanceof Array);
1885
1899
  $mol_assert_equal(list.length, 3);
1886
1900
  $mol_assert_equal(list[0], 1);
1887
1901
  $mol_assert_equal(list[2], 5);
1888
1902
  $mol_assert_equal(list[3], undefined);
1889
- $mol_assert_equal(calls, 10);
1903
+ $mol_assert_equal(calls, 8);
1890
1904
  },
1891
- 'reverse'() {
1905
+ 'lazy reverse'() {
1892
1906
  let calls = 0;
1893
1907
  const list = $mol_range2(index => (++calls, index), () => 10).toReversed().slice(0, 3);
1894
- $mol_assert_ok(list instanceof Array);
1908
+ $mol_assert_equal(true, list instanceof Array);
1895
1909
  $mol_assert_equal(list.length, 3);
1896
1910
  $mol_assert_equal(list[0], 9);
1897
1911
  $mol_assert_equal(list[2], 7);
1898
1912
  $mol_assert_equal(list[3], undefined);
1899
1913
  $mol_assert_equal(calls, 2);
1900
1914
  },
1901
- 'reduce'() {
1902
- let calls = 0;
1903
- const list = $mol_range2().slice(1, 6);
1904
- $mol_assert_equal(list.reduce((s, v) => s + v), 15);
1905
- $mol_assert_equal(list.reduce((s, v) => s + v, 5), 20);
1906
- },
1907
1915
  'lazy map'() {
1908
1916
  let calls1 = 0;
1909
1917
  let calls2 = 0;
@@ -1913,7 +1921,7 @@ var $;
1913
1921
  $mol_assert_equal(source, self);
1914
1922
  return index + 10;
1915
1923
  }, () => 5);
1916
- $mol_assert_ok(target instanceof Array);
1924
+ $mol_assert_equal(true, target instanceof Array);
1917
1925
  $mol_assert_equal(target.length, 5);
1918
1926
  $mol_assert_equal(target[0], 10);
1919
1927
  $mol_assert_equal(target[4], 14);
@@ -1924,7 +1932,7 @@ var $;
1924
1932
  'lazy slice'() {
1925
1933
  let calls = 0;
1926
1934
  const list = $mol_range2(index => (++calls, index), () => 10).slice(3, 7);
1927
- $mol_assert_ok(list instanceof Array);
1935
+ $mol_assert_equal(true, list instanceof Array);
1928
1936
  $mol_assert_equal(list.length, 4);
1929
1937
  $mol_assert_equal(list[0], 3);
1930
1938
  $mol_assert_equal(list[3], 6);
@@ -1933,22 +1941,22 @@ var $;
1933
1941
  },
1934
1942
  'lazy some'() {
1935
1943
  let calls = 0;
1936
- $mol_assert_ok($mol_range2(index => (++calls, index), () => 5).some(v => v >= 2));
1944
+ $mol_assert_equal(true, $mol_range2(index => (++calls, index), () => 5).some(v => v >= 2));
1937
1945
  $mol_assert_equal(calls, 3);
1938
- $mol_assert_not($mol_range2(i => i, () => 0).some(v => true));
1939
- $mol_assert_ok($mol_range2(i => i).some(v => v > 5));
1946
+ $mol_assert_equal(false, $mol_range2(i => i, () => 0).some(v => true));
1947
+ $mol_assert_equal(true, $mol_range2(i => i).some(v => v > 5));
1940
1948
  },
1941
1949
  'lazy every'() {
1942
1950
  let calls = 0;
1943
- $mol_assert_not($mol_range2(index => (++calls, index), () => 5).every(v => v < 2));
1951
+ $mol_assert_equal(false, $mol_range2(index => (++calls, index), () => 5).every(v => v < 2));
1944
1952
  $mol_assert_equal(calls, 3);
1945
- $mol_assert_ok($mol_range2(i => i, () => 0).every(v => false));
1946
- $mol_assert_not($mol_range2(i => i).every(v => v < 5));
1953
+ $mol_assert_equal(true, $mol_range2(i => i, () => 0).every(v => false));
1954
+ $mol_assert_equal(false, $mol_range2(i => i).every(v => v < 5));
1947
1955
  },
1948
1956
  'lazyfy'() {
1949
1957
  let calls = 0;
1950
- const list = new $mol_range2_array(...[0, 1, 2, 3, 4, 5]).map(i => (++calls, i + 10)).slice(2);
1951
- $mol_assert_ok(list instanceof Array);
1958
+ const list = $mol_range2([0, 1, 2, 3, 4, 5]).map(i => (++calls, i + 10)).slice(2);
1959
+ $mol_assert_equal(true, list instanceof Array);
1952
1960
  $mol_assert_equal(list.length, 4);
1953
1961
  $mol_assert_equal(calls, 0);
1954
1962
  $mol_assert_equal(list[0], 12);