@jsenv/dom 0.17.87 → 0.17.88

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 (2) hide show
  1. package/dist/jsenv_dom.js +15 -17
  2. package/package.json +1 -1
package/dist/jsenv_dom.js CHANGED
@@ -575,21 +575,28 @@ const getEventLabel = (e) => {
575
575
 
576
576
  const createIterableWeakSet = () => {
577
577
  const objectWeakRefSet = new Set();
578
+ // The one WeakRef of each member, so that adding a member twice keeps one
579
+ // entry and deleting it once removes it. Weak on the object, and a WeakRef
580
+ // holds nothing: this keeps nothing alive.
581
+ let weakRefMap = new WeakMap();
578
582
 
579
583
  return {
580
584
  add: (object) => {
585
+ if (weakRefMap.has(object)) {
586
+ return;
587
+ }
581
588
  const objectWeakRef = new WeakRef(object);
582
589
  objectWeakRefSet.add(objectWeakRef);
590
+ weakRefMap.set(object, objectWeakRef);
583
591
  },
584
592
 
585
593
  delete: (object) => {
586
- for (const weakRef of objectWeakRefSet) {
587
- if (weakRef.deref() === object) {
588
- objectWeakRefSet.delete(weakRef);
589
- return true;
590
- }
594
+ const objectWeakRef = weakRefMap.get(object);
595
+ if (!objectWeakRef) {
596
+ return false;
591
597
  }
592
- return false;
598
+ weakRefMap.delete(object);
599
+ return objectWeakRefSet.delete(objectWeakRef);
593
600
  },
594
601
 
595
602
  *[Symbol.iterator]() {
@@ -604,21 +611,12 @@ const createIterableWeakSet = () => {
604
611
  },
605
612
 
606
613
  has: (object) => {
607
- for (const weakRef of objectWeakRefSet) {
608
- const objectCandidate = weakRef.deref();
609
- if (objectCandidate === undefined) {
610
- objectWeakRefSet.delete(weakRef);
611
- continue;
612
- }
613
- if (objectCandidate === object) {
614
- return true;
615
- }
616
- }
617
- return false;
614
+ return weakRefMap.has(object);
618
615
  },
619
616
 
620
617
  clear: () => {
621
618
  objectWeakRefSet.clear();
619
+ weakRefMap = new WeakMap();
622
620
  },
623
621
 
624
622
  get size() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jsenv/dom",
3
- "version": "0.17.87",
3
+ "version": "0.17.88",
4
4
  "type": "module",
5
5
  "description": "DOM utilities for writing frontend code",
6
6
  "repository": {