mol_wire_lib 1.0.878 → 1.0.880

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mol_wire_lib",
3
- "version": "1.0.878",
3
+ "version": "1.0.880",
4
4
  "exports": {
5
5
  "node": {
6
6
  "import": "./node.mjs",
package/web.test.js CHANGED
@@ -394,7 +394,12 @@ var $;
394
394
  var $;
395
395
  (function ($) {
396
396
  function $mol_range2(item = index => index, size = () => Number.POSITIVE_INFINITY) {
397
- return new Proxy(new $mol_range2_array(), {
397
+ const source = typeof item === 'function' ? new $mol_range2_array() : item;
398
+ if (typeof item !== 'function') {
399
+ item = index => source[index];
400
+ size = () => source.length;
401
+ }
402
+ return new Proxy(source, {
398
403
  get(target, field) {
399
404
  if (typeof field === 'string') {
400
405
  if (field === 'length')
@@ -407,7 +412,7 @@ var $;
407
412
  if (index === Math.trunc(index))
408
413
  return item(index);
409
414
  }
410
- return target[field];
415
+ return $mol_range2_array.prototype[field];
411
416
  },
412
417
  set(target, field) {
413
418
  return $mol_fail(new TypeError(`Lazy range is read only (trying to set field ${JSON.stringify(field)})`));
@@ -448,13 +453,16 @@ var $;
448
453
  return $mol_range2(index => index < this.length ? this[index] : tail[0][index - this.length], () => this.length + tail[0].length);
449
454
  }
450
455
  filter(check, context) {
451
- const filtered = new $mol_range2_array();
452
- for (let index = 0; index < this.length; ++index) {
453
- const item = this[index];
454
- if (check.call(context, item, index, this))
455
- filtered.push(item);
456
- }
457
- return filtered;
456
+ const filtered = [];
457
+ let cursor = -1;
458
+ return $mol_range2(index => {
459
+ while (cursor < this.length && index >= filtered.length - 1) {
460
+ const val = this[++cursor];
461
+ if (check(val, cursor, this))
462
+ filtered.push(val);
463
+ }
464
+ return filtered[index];
465
+ }, () => cursor < this.length ? Number.POSITIVE_INFINITY : filtered.length);
458
466
  }
459
467
  forEach(proceed, context) {
460
468
  for (let [key, value] of this.entries())
@@ -514,7 +522,7 @@ var $;
514
522
  'lazy calls'() {
515
523
  let calls = 0;
516
524
  const list = $mol_range2(index => (++calls, index), () => 10);
517
- $mol_assert_ok(list instanceof Array);
525
+ $mol_assert_equal(true, list instanceof Array);
518
526
  $mol_assert_equal(list.length, 10);
519
527
  $mol_assert_equal(list[-1], undefined);
520
528
  $mol_assert_equal(list[0], 0);
@@ -557,11 +565,17 @@ var $;
557
565
  $mol_range2(i => i, () => 5).forEach(i => log += i);
558
566
  $mol_assert_equal(log, '01234');
559
567
  },
568
+ 'reduce'() {
569
+ let calls = 0;
570
+ const list = $mol_range2().slice(1, 6);
571
+ $mol_assert_equal(list.reduce((s, v) => s + v), 15);
572
+ $mol_assert_equal(list.reduce((s, v) => s + v, 5), 20);
573
+ },
560
574
  'lazy concat'() {
561
575
  let calls1 = 0;
562
576
  let calls2 = 0;
563
577
  const list = $mol_range2(index => (++calls1, index), () => 5).concat([0, 1, 2, 3, 4], $mol_range2(index => (++calls2, index), () => 5));
564
- $mol_assert_ok(list instanceof Array);
578
+ $mol_assert_equal(true, list instanceof Array);
565
579
  $mol_assert_equal(list.length, 15);
566
580
  $mol_assert_equal(list[0], 0);
567
581
  $mol_assert_equal(list[4], 4);
@@ -573,32 +587,26 @@ var $;
573
587
  $mol_assert_equal(calls1, 2);
574
588
  $mol_assert_equal(calls2, 2);
575
589
  },
576
- 'filter'() {
590
+ 'lazy filter'() {
577
591
  let calls = 0;
578
- const list = $mol_range2(index => (++calls, index), () => 10).filter(v => v % 2).slice(0, 3);
579
- $mol_assert_ok(list instanceof Array);
592
+ const list = $mol_range2(index => (++calls, index), () => 15).filter(v => v % 2).slice(0, 3);
593
+ $mol_assert_equal(true, list instanceof Array);
580
594
  $mol_assert_equal(list.length, 3);
581
595
  $mol_assert_equal(list[0], 1);
582
596
  $mol_assert_equal(list[2], 5);
583
597
  $mol_assert_equal(list[3], undefined);
584
- $mol_assert_equal(calls, 10);
598
+ $mol_assert_equal(calls, 8);
585
599
  },
586
- 'reverse'() {
600
+ 'lazy reverse'() {
587
601
  let calls = 0;
588
602
  const list = $mol_range2(index => (++calls, index), () => 10).toReversed().slice(0, 3);
589
- $mol_assert_ok(list instanceof Array);
603
+ $mol_assert_equal(true, list instanceof Array);
590
604
  $mol_assert_equal(list.length, 3);
591
605
  $mol_assert_equal(list[0], 9);
592
606
  $mol_assert_equal(list[2], 7);
593
607
  $mol_assert_equal(list[3], undefined);
594
608
  $mol_assert_equal(calls, 2);
595
609
  },
596
- 'reduce'() {
597
- let calls = 0;
598
- const list = $mol_range2().slice(1, 6);
599
- $mol_assert_equal(list.reduce((s, v) => s + v), 15);
600
- $mol_assert_equal(list.reduce((s, v) => s + v, 5), 20);
601
- },
602
610
  'lazy map'() {
603
611
  let calls1 = 0;
604
612
  let calls2 = 0;
@@ -608,7 +616,7 @@ var $;
608
616
  $mol_assert_equal(source, self);
609
617
  return index + 10;
610
618
  }, () => 5);
611
- $mol_assert_ok(target instanceof Array);
619
+ $mol_assert_equal(true, target instanceof Array);
612
620
  $mol_assert_equal(target.length, 5);
613
621
  $mol_assert_equal(target[0], 10);
614
622
  $mol_assert_equal(target[4], 14);
@@ -619,7 +627,7 @@ var $;
619
627
  'lazy slice'() {
620
628
  let calls = 0;
621
629
  const list = $mol_range2(index => (++calls, index), () => 10).slice(3, 7);
622
- $mol_assert_ok(list instanceof Array);
630
+ $mol_assert_equal(true, list instanceof Array);
623
631
  $mol_assert_equal(list.length, 4);
624
632
  $mol_assert_equal(list[0], 3);
625
633
  $mol_assert_equal(list[3], 6);
@@ -628,22 +636,22 @@ var $;
628
636
  },
629
637
  'lazy some'() {
630
638
  let calls = 0;
631
- $mol_assert_ok($mol_range2(index => (++calls, index), () => 5).some(v => v >= 2));
639
+ $mol_assert_equal(true, $mol_range2(index => (++calls, index), () => 5).some(v => v >= 2));
632
640
  $mol_assert_equal(calls, 3);
633
- $mol_assert_not($mol_range2(i => i, () => 0).some(v => true));
634
- $mol_assert_ok($mol_range2(i => i).some(v => v > 5));
641
+ $mol_assert_equal(false, $mol_range2(i => i, () => 0).some(v => true));
642
+ $mol_assert_equal(true, $mol_range2(i => i).some(v => v > 5));
635
643
  },
636
644
  'lazy every'() {
637
645
  let calls = 0;
638
- $mol_assert_not($mol_range2(index => (++calls, index), () => 5).every(v => v < 2));
646
+ $mol_assert_equal(false, $mol_range2(index => (++calls, index), () => 5).every(v => v < 2));
639
647
  $mol_assert_equal(calls, 3);
640
- $mol_assert_ok($mol_range2(i => i, () => 0).every(v => false));
641
- $mol_assert_not($mol_range2(i => i).every(v => v < 5));
648
+ $mol_assert_equal(true, $mol_range2(i => i, () => 0).every(v => false));
649
+ $mol_assert_equal(false, $mol_range2(i => i).every(v => v < 5));
642
650
  },
643
651
  'lazyfy'() {
644
652
  let calls = 0;
645
- const list = new $mol_range2_array(...[0, 1, 2, 3, 4, 5]).map(i => (++calls, i + 10)).slice(2);
646
- $mol_assert_ok(list instanceof Array);
653
+ const list = $mol_range2([0, 1, 2, 3, 4, 5]).map(i => (++calls, i + 10)).slice(2);
654
+ $mol_assert_equal(true, list instanceof Array);
647
655
  $mol_assert_equal(list.length, 4);
648
656
  $mol_assert_equal(calls, 0);
649
657
  $mol_assert_equal(list[0], 12);