linked-list-typed 2.5.0 → 2.5.2

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 (90) hide show
  1. package/dist/cjs/index.cjs +1296 -89
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/cjs-legacy/index.cjs +1296 -89
  4. package/dist/cjs-legacy/index.cjs.map +1 -1
  5. package/dist/esm/index.mjs +1296 -90
  6. package/dist/esm/index.mjs.map +1 -1
  7. package/dist/esm-legacy/index.mjs +1296 -90
  8. package/dist/esm-legacy/index.mjs.map +1 -1
  9. package/dist/types/common/error.d.ts +9 -0
  10. package/dist/types/common/index.d.ts +1 -1
  11. package/dist/types/data-structures/base/index.d.ts +1 -0
  12. package/dist/types/data-structures/base/iterable-entry-base.d.ts +8 -8
  13. package/dist/types/data-structures/base/linear-base.d.ts +3 -3
  14. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +288 -0
  15. package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +336 -0
  16. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +618 -18
  17. package/dist/types/data-structures/binary-tree/bst.d.ts +676 -1
  18. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +456 -0
  19. package/dist/types/data-structures/binary-tree/segment-tree.d.ts +144 -1
  20. package/dist/types/data-structures/binary-tree/tree-map.d.ts +3307 -399
  21. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +3285 -360
  22. package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +2674 -325
  23. package/dist/types/data-structures/binary-tree/tree-set.d.ts +3072 -287
  24. package/dist/types/data-structures/graph/abstract-graph.d.ts +4 -4
  25. package/dist/types/data-structures/graph/directed-graph.d.ts +240 -0
  26. package/dist/types/data-structures/graph/undirected-graph.d.ts +216 -0
  27. package/dist/types/data-structures/hash/hash-map.d.ts +274 -10
  28. package/dist/types/data-structures/heap/heap.d.ts +336 -0
  29. package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +411 -3
  30. package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +363 -3
  31. package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +434 -2
  32. package/dist/types/data-structures/matrix/matrix.d.ts +192 -0
  33. package/dist/types/data-structures/queue/deque.d.ts +364 -4
  34. package/dist/types/data-structures/queue/queue.d.ts +288 -0
  35. package/dist/types/data-structures/stack/stack.d.ts +240 -0
  36. package/dist/types/data-structures/trie/trie.d.ts +292 -4
  37. package/dist/types/interfaces/graph.d.ts +1 -1
  38. package/dist/types/types/common.d.ts +2 -2
  39. package/dist/types/types/data-structures/binary-tree/bst.d.ts +1 -0
  40. package/dist/types/types/data-structures/binary-tree/tree-map.d.ts +5 -0
  41. package/dist/types/types/data-structures/binary-tree/tree-multi-set.d.ts +4 -0
  42. package/dist/types/types/data-structures/binary-tree/tree-set.d.ts +4 -0
  43. package/dist/types/types/data-structures/heap/heap.d.ts +1 -0
  44. package/dist/types/types/data-structures/priority-queue/priority-queue.d.ts +1 -0
  45. package/dist/types/types/utils/validate-type.d.ts +4 -4
  46. package/dist/umd/linked-list-typed.js +1320 -114
  47. package/dist/umd/linked-list-typed.js.map +1 -1
  48. package/dist/umd/linked-list-typed.min.js +1 -1
  49. package/dist/umd/linked-list-typed.min.js.map +1 -1
  50. package/package.json +2 -2
  51. package/src/common/error.ts +19 -1
  52. package/src/common/index.ts +1 -1
  53. package/src/data-structures/base/index.ts +1 -0
  54. package/src/data-structures/base/iterable-element-base.ts +3 -2
  55. package/src/data-structures/base/iterable-entry-base.ts +8 -8
  56. package/src/data-structures/base/linear-base.ts +3 -3
  57. package/src/data-structures/binary-tree/avl-tree.ts +299 -0
  58. package/src/data-structures/binary-tree/binary-indexed-tree.ts +341 -5
  59. package/src/data-structures/binary-tree/binary-tree.ts +606 -6
  60. package/src/data-structures/binary-tree/bst.ts +946 -7
  61. package/src/data-structures/binary-tree/red-black-tree.ts +472 -0
  62. package/src/data-structures/binary-tree/segment-tree.ts +145 -2
  63. package/src/data-structures/binary-tree/tree-map.ts +3423 -499
  64. package/src/data-structures/binary-tree/tree-multi-map.ts +3537 -596
  65. package/src/data-structures/binary-tree/tree-multi-set.ts +2855 -495
  66. package/src/data-structures/binary-tree/tree-set.ts +3209 -413
  67. package/src/data-structures/graph/abstract-graph.ts +6 -6
  68. package/src/data-structures/graph/directed-graph.ts +240 -0
  69. package/src/data-structures/graph/undirected-graph.ts +216 -0
  70. package/src/data-structures/hash/hash-map.ts +281 -19
  71. package/src/data-structures/heap/heap.ts +340 -4
  72. package/src/data-structures/heap/max-heap.ts +2 -2
  73. package/src/data-structures/linked-list/doubly-linked-list.ts +411 -3
  74. package/src/data-structures/linked-list/singly-linked-list.ts +363 -3
  75. package/src/data-structures/linked-list/skip-linked-list.ts +439 -7
  76. package/src/data-structures/matrix/matrix.ts +202 -10
  77. package/src/data-structures/priority-queue/max-priority-queue.ts +2 -2
  78. package/src/data-structures/queue/deque.ts +365 -5
  79. package/src/data-structures/queue/queue.ts +288 -0
  80. package/src/data-structures/stack/stack.ts +240 -0
  81. package/src/data-structures/trie/trie.ts +295 -7
  82. package/src/interfaces/graph.ts +1 -1
  83. package/src/types/common.ts +2 -2
  84. package/src/types/data-structures/binary-tree/bst.ts +1 -0
  85. package/src/types/data-structures/binary-tree/tree-map.ts +6 -0
  86. package/src/types/data-structures/binary-tree/tree-multi-set.ts +5 -0
  87. package/src/types/data-structures/binary-tree/tree-set.ts +5 -0
  88. package/src/types/data-structures/heap/heap.ts +1 -0
  89. package/src/types/data-structures/priority-queue/priority-queue.ts +1 -0
  90. package/src/types/utils/validate-type.ts +4 -4
@@ -1,4 +1,4 @@
1
- "use strict";var linkedListTyped=(()=>{var N=Object.defineProperty;var $=Object.getOwnPropertyDescriptor;var F=Object.getOwnPropertyNames;var q=Object.prototype.hasOwnProperty;var O=o=>{throw TypeError(o)};var B=(o,r,e)=>r in o?N(o,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):o[r]=e;var T=(o,r)=>{for(var e in r)N(o,e,{get:r[e],enumerable:!0})},z=(o,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of F(r))!q.call(o,n)&&n!==e&&N(o,n,{get:()=>r[n],enumerable:!(t=$(r,n))||t.enumerable});return o};var P=o=>z(N({},"__esModule",{value:!0}),o);var d=(o,r,e)=>B(o,typeof r!="symbol"?r+"":r,e),A=(o,r,e)=>r.has(o)||O("Cannot "+e);var c=(o,r,e)=>(A(o,r,"read from private field"),e?e.call(o):r.get(o)),M=(o,r,e)=>r.has(o)?O("Cannot add the same private member more than once"):r instanceof WeakSet?r.add(o):r.set(o,e),S=(o,r,e,t)=>(A(o,r,"write to private field"),t?t.call(o,e):r.set(o,e),e);var H={};T(H,{DFSOperation:()=>U,DoublyLinkedList:()=>D,DoublyLinkedListNode:()=>k,ERR:()=>b,Range:()=>V,SinglyLinkedList:()=>K,SinglyLinkedListNode:()=>y,SkipList:()=>C,SkipListNode:()=>m});var x=class{constructor(r){d(this,"_toElementFn");if(r){let{toElementFn:e}=r;if(typeof e=="function")this._toElementFn=e;else if(e)throw new TypeError("toElementFn must be a function type")}}get toElementFn(){return this._toElementFn}*[Symbol.iterator](...r){yield*this._getIterator(...r)}*values(){for(let r of this)yield r}every(r,e){let t=0;for(let n of this)if(e===void 0){if(!r(n,t++,this))return!1}else if(!r.call(e,n,t++,this))return!1;return!0}some(r,e){let t=0;for(let n of this)if(e===void 0){if(r(n,t++,this))return!0}else if(r.call(e,n,t++,this))return!0;return!1}forEach(r,e){let t=0;for(let n of this)e===void 0?r(n,t++,this):r.call(e,n,t++,this)}find(r,e){let t=0;for(let n of this)if(e===void 0){if(r(n,t++,this))return n}else if(r.call(e,n,t++,this))return n}has(r){for(let e of this)if(e===r)return!0;return!1}reduce(r,e){let t=0,n=this[Symbol.iterator](),i;if(arguments.length>=2)i=e;else{let s=n.next();if(s.done)throw new TypeError("Reduce of empty structure with no initial value");i=s.value,t=1}for(let s of n)i=r(i,s,t++,this);return i}toArray(){return[...this]}toVisual(){return[...this]}print(){console.log(this.toVisual())}};var L=class{constructor(r){d(this,"_value");d(this,"_next");this._value=r,this._next=void 0}get value(){return this._value}set value(r){this._value=r}get next(){return this._next}set next(r){this._next=r}},w=class o extends x{constructor(e){super(e);d(this,"_maxLen",-1);if(e){let{maxLen:t}=e;typeof t=="number"&&t>0&&t%1===0&&(this._maxLen=t)}}get maxLen(){return this._maxLen}indexOf(e,t=0){if(this.length===0)return-1;t<0&&(t=this.length+t),t<0&&(t=0);for(let n=t;n<this.length;n++)if(this.at(n)===e)return n;return-1}lastIndexOf(e,t=this.length-1){if(this.length===0)return-1;t>=this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(let n=t;n>=0;n--)if(this.at(n)===e)return n;return-1}findIndex(e,t){for(let n=0;n<this.length;n++){let i=this.at(n);if(i!==void 0&&e.call(t,i,n,this))return n}return-1}concat(...e){let t=this.clone();for(let n of e)n instanceof o?t.pushMany(n):t.push(n);return t}sort(e){let t=this.toArray();t.sort(e),this.clear();for(let n of t)this.push(n);return this}splice(e,t=0,...n){let i=this._createInstance();e=e<0?this.length+e:e,e=Math.max(0,Math.min(e,this.length)),t=Math.max(0,Math.min(t,this.length-e));for(let s=0;s<t;s++){let a=this.deleteAt(e);a!==void 0&&i.push(a)}for(let s=0;s<n.length;s++)this.addAt(e+s,n[s]);return i}join(e=","){return this.toArray().join(e)}toReversedArray(){let e=[];for(let t=this.length-1;t>=0;t--)e.push(this.at(t));return e}reduceRight(e,t){let n=t!=null?t:0;for(let i=this.length-1;i>=0;i--)n=e(n,this.at(i),i,this);return n}slice(e=0,t=this.length){e=e<0?this.length+e:e,t=t<0?this.length+t:t;let n=this._createInstance();for(let i=e;i<t;i++)n.push(this.at(i));return n}fill(e,t=0,n=this.length){if(t=t<0?this.length+t:t,n=n<0?this.length+n:n,t<0&&(t=0),n>this.length&&(n=this.length),t>=n)return this;for(let i=t;i<n;i++)this.setAt(i,e);return this}},p=class extends w{constructor(r){if(super(r),r){let{maxLen:e}=r;typeof e=="number"&&e>0&&e%1===0&&(this._maxLen=e)}}indexOf(r,e=0){let t=this._getIterator(),n=t.next(),i=0;for(;i<e;)n=t.next(),i++;for(;!n.done;){if(n.value===r)return i;n=t.next(),i++}return-1}lastIndexOf(r,e=this.length-1){let t=this._getReverseIterator(),n=t.next(),i=this.length-1;for(;i>e;)n=t.next(),i--;for(;!n.done;){if(n.value===r)return i;n=t.next(),i--}return-1}concat(...r){let e=this.clone();for(let t of r)t instanceof w?e.pushMany(t):e.push(t);return e}slice(r=0,e=this.length){r=r<0?this.length+r:r,e=e<0?this.length+e:e;let t=this._createInstance(),n=this._getIterator(),i=n.next(),s=0;for(;s<r;)i=n.next(),s++;for(let a=r;a<e;a++)t.push(i.value),i=n.next();return t}splice(r,e=0,...t){let n=this._createInstance();r=r<0?this.length+r:r,r=Math.max(0,Math.min(r,this.length)),e=Math.max(0,e);let i=0,s,a,u=this._getNodeIterator();for(let l of u){if(i===r){s=l;break}a=l,i++}for(let l=0;l<e&&s;l++){n.push(s.value);let h=s.next;this.delete(s),s=h}for(let l=0;l<t.length;l++)a?(this.addAfter(a,t[l]),a=a.next):(this.addAt(0,t[l]),a=this._getNodeIterator().next().value);return n}reduceRight(r,e){let t=e!=null?e:0,n=this.length-1;for(let i of this._getReverseIterator())t=r(t,i,n--,this);return t}};var y=class extends L{constructor(e){super(e);d(this,"_next");this._value=e,this._next=void 0}get next(){return this._next}set next(e){this._next=e}},K=class extends p{constructor(e=[],t){super(t);d(this,"_equals",(e,t)=>Object.is(e,t));d(this,"_head");d(this,"_tail");d(this,"_length",0);this.pushMany(e)}get head(){return this._head}get tail(){return this._tail}get length(){return this._length}get first(){var e;return(e=this.head)==null?void 0:e.value}get last(){var e;return(e=this.tail)==null?void 0:e.value}static from(e,t){let n=new this([],t);for(let i of e)n.push(i);return n}push(e){let t=this._ensureNode(e);return this.head?(this.tail.next=t,this._tail=t):this._head=this._tail=t,this._length++,this._maxLen>0&&this.length>this._maxLen&&this.shift(),!0}pop(){var n;if(!this.head)return;if(this.head===this.tail){let i=this.head.value;return this._head=void 0,this._tail=void 0,this._length--,i}let e=this.head;for(;e.next&&e.next!==this.tail;)e=e.next;let t=(n=this.tail)==null?void 0:n.value;return e.next=void 0,this._tail=e,this._length--,t}shift(){if(!this.head)return;let e=this.head;return this._head=this.head.next,this._head||(this._tail=void 0),this._length--,e.value}unshift(e){let t=this._ensureNode(e);return this.head?(t.next=this.head,this._head=t):this._head=this._tail=t,this._length++,!0}pushMany(e){let t=[];for(let n of e)this.toElementFn?t.push(this.push(this.toElementFn(n))):t.push(this.push(n));return t}unshiftMany(e){let t=[];for(let n of e)this.toElementFn?t.push(this.unshift(this.toElementFn(n))):t.push(this.unshift(n));return t}search(e){let t=this._ensurePredicate(e),n=this.head;for(;n;){if(t(n))return n.value;n=n.next}}at(e){if(e<0||e>=this._length)return;let t=this.head;for(let n=0;n<e&&t;n++)t=t.next;return t==null?void 0:t.value}isNode(e){return e instanceof y}getNodeAt(e){if(e<0||e>=this._length)return;let t=this.head;for(let n=0;n<e&&t;n++)t=t.next;return t}deleteAt(e){if(e<0||e>=this._length)return;if(e===0)return this.shift();let t=this.getNodeAt(e),n=this._getPrevNode(t),i=t.value;return n.next=t.next,t===this.tail&&(this._tail=n),this._length--,i}delete(e){if(e===void 0||!this.head)return!1;let t=this.isNode(e)?e:this.getNode(e);if(!t)return!1;let n=this._getPrevNode(t);return n?(n.next=t.next,t===this.tail&&(this._tail=n)):(this._head=t.next,t===this.tail&&(this._tail=void 0)),this._length--,!0}addAt(e,t){if(e<0||e>this._length)return!1;if(e===0)return this.unshift(t);if(e===this._length)return this.push(t);let n=this._ensureNode(t),i=this.getNodeAt(e-1);return n.next=i.next,i.next=n,this._length++,!0}setAt(e,t){let n=this.getNodeAt(e);return n?(n.value=t,!0):!1}isEmpty(){return this._length===0}clear(){this._head=void 0,this._tail=void 0,this._length=0}reverse(){if(!this.head||this.head===this.tail)return this;let e,t=this.head,n;for(;t;)n=t.next,t.next=e,e=t,t=n;return[this._head,this._tail]=[this.tail,this.head],this}getNode(e){if(e===void 0)return;if(this.isNode(e))return e;let t=this._ensurePredicate(e),n=this.head;for(;n;){if(t(n))return n;n=n.next}}addBefore(e,t){let n=this.getNode(e);if(!n)return!1;let i=this._getPrevNode(n),s=this._ensureNode(t);return i?(i.next=s,s.next=n,this._length++):(s.next=this._head,this._head=s,this._tail||(this._tail=s),this._length++),!0}addAfter(e,t){let n=this.getNode(e);if(!n)return!1;let i=this._ensureNode(t);return i.next=n.next,n.next=i,n===this.tail&&(this._tail=i),this._length++,!0}splice(e,t=0,...n){e=Math.max(0,Math.min(e,this.length)),t=Math.max(0,t);let i=this._createInstance(),s=e===0?void 0:this.getNodeAt(e-1),a=s?s.next:this.head,u=0;for(;u<t&&a;)i.push(a.value),a=a.next,u++;let l=a;if(s?s.next=l:this._head=l,l||(this._tail=s),n.length>0){let h,E;for(let v of n){let I=this._ensureNode(v);h||(h=I),E&&(E.next=I),E=I}s?s.next=h:this._head=h,E.next=l,l||(this._tail=E)}return this._length+=n.length-u,this._length===0&&(this._head=void 0,this._tail=void 0),i}countOccurrences(e){let t=j(e,this._equals),n=0,i=this.head;for(;i;)t(i)&&n++,i=i.next;return n}setEquality(e){return this._equals=e,this}deleteWhere(e){let t,n=this.head,i=0;for(;n;){if(e(n.value,i++,this))return t?(t.next=n.next,n===this._tail&&(this._tail=t)):(this._head=n.next,n===this._tail&&(this._tail=void 0)),this._length--,!0;t=n,n=n.next}return!1}clone(){let e=this._createInstance();for(let t of this)e.push(t);return e}filter(e,t){let n=this._createInstance(),i=0;for(let s of this)e.call(t,s,i++,this)&&n.push(s);return n}mapSame(e,t){let n=this._createInstance(),i=0;for(let s of this){let a=t===void 0?e(s,i++,this):e.call(t,s,i++,this);n.push(a)}return n}map(e,t,n){let i=this._createLike([],{...t!=null?t:{},maxLen:this._maxLen}),s=0;for(let a of this)i.push(e.call(n,a,s++,this));return i}createNode(e){return new y(e)}_isPredicate(e){return typeof e=="function"}_ensureNode(e){return this.isNode(e)?e:this.createNode(e)}_ensurePredicate(e){if(this.isNode(e))return n=>n===e;if(this._isPredicate(e))return e;let t=e;return n=>this._equals(n.value,t)}_getPrevNode(e){if(!this.head||this.head===e)return;let t=this.head;for(;t.next&&t.next!==e;)t=t.next;return t.next===e?t:void 0}*_getIterator(){let e=this.head;for(;e;)yield e.value,e=e.next}*_getReverseIterator(){let e=[...this].reverse();for(let t of e)yield t}*_getNodeIterator(){let e=this.head;for(;e;)yield e,e=e.next}_createInstance(e){let t=this.constructor;return new t([],e)}_createLike(e=[],t){let n=this.constructor;return new n(e,t)}_spawnLike(e){return this._createLike([],e)}};function j(o,r){if(o instanceof y)return t=>t===o;if(typeof o=="function")return o;let e=o;return t=>r(t.value,e)}var k=class extends L{constructor(e){super(e);d(this,"_next");d(this,"_prev");this._value=e,this._next=void 0,this._prev=void 0}get next(){return this._next}set next(e){this._next=e}get prev(){return this._prev}set prev(e){this._prev=e}},D=class extends p{constructor(e=[],t){super(t);d(this,"_equals",(e,t)=>Object.is(e,t));d(this,"_head");d(this,"_tail");d(this,"_length",0);this._head=void 0,this._tail=void 0,this._length=0,t!=null&&t.maxLen&&Number.isInteger(t.maxLen)&&t.maxLen>0&&(this._maxLen=t.maxLen),this.pushMany(e)}get head(){return this._head}get tail(){return this._tail}get length(){return this._length}get first(){var e;return(e=this.head)==null?void 0:e.value}get last(){var e;return(e=this.tail)==null?void 0:e.value}static fromArray(e){return new this(e)}isNode(e){return e instanceof k}push(e){let t=this._ensureNode(e);return this.head?(t.prev=this.tail,this.tail.next=t,this._tail=t):(this._head=t,this._tail=t),this._length++,this._maxLen>0&&this.length>this._maxLen&&this.shift(),!0}pop(){if(!this.tail)return;let e=this.tail;return this.head===this.tail?(this._head=void 0,this._tail=void 0):(this._tail=e.prev,this.tail.next=void 0),this._length--,e.value}shift(){if(!this.head)return;let e=this.head;return this.head===this.tail?(this._head=void 0,this._tail=void 0):(this._head=e.next,this.head.prev=void 0),this._length--,e.value}unshift(e){let t=this._ensureNode(e);return this.head?(t.next=this.head,this.head.prev=t,this._head=t):(this._head=t,this._tail=t),this._length++,this._maxLen>0&&this._length>this._maxLen&&this.pop(),!0}pushMany(e){let t=[];for(let n of e)this.toElementFn?t.push(this.push(this.toElementFn(n))):t.push(this.push(n));return t}unshiftMany(e){let t=[];for(let n of e)this.toElementFn?t.push(this.unshift(this.toElementFn(n))):t.push(this.unshift(n));return t}at(e){if(e<0||e>=this._length)return;let t=this.head;for(let n=0;n<e&&t;n++)t=t.next;return t==null?void 0:t.value}getNodeAt(e){if(e<0||e>=this._length)return;let t=this.head;for(let n=0;n<e&&t;n++)t=t.next;return t}getNode(e){if(e===void 0)return;if(this.isNode(e)){let i=e,s=this.head;for(;s;){if(s===i)return i;s=s.next}let a=u=>this._equals(u.value,i.value);for(s=this.head;s;){if(a(s))return s;s=s.next}return}let t=this._ensurePredicate(e),n=this.head;for(;n;){if(t(n))return n;n=n.next}}addAt(e,t){if(e<0||e>this._length)return!1;if(e===0)return this.unshift(t);if(e===this._length)return this.push(t);let n=this._ensureNode(t),i=this.getNodeAt(e-1),s=i.next;return n.prev=i,n.next=s,i.next=n,s.prev=n,this._length++,!0}addBefore(e,t){let n=this.isNode(e)?e:this.getNode(e);if(!n)return!1;let i=this._ensureNode(t);return i.prev=n.prev,n.prev&&(n.prev.next=i),i.next=n,n.prev=i,n===this.head&&(this._head=i),this._length++,!0}addAfter(e,t){let n=this.isNode(e)?e:this.getNode(e);if(!n)return!1;let i=this._ensureNode(t);return i.next=n.next,n.next&&(n.next.prev=i),i.prev=n,n.next=i,n===this.tail&&(this._tail=i),this._length++,!0}setAt(e,t){let n=this.getNodeAt(e);return n?(n.value=t,!0):!1}deleteAt(e){if(e<0||e>=this._length)return;if(e===0)return this.shift();if(e===this._length-1)return this.pop();let t=this.getNodeAt(e),n=t.prev,i=t.next;return n.next=i,i.prev=n,this._length--,t.value}delete(e){let t=this.getNode(e);if(!t)return!1;if(t===this.head)this.shift();else if(t===this.tail)this.pop();else{let n=t.prev,i=t.next;n.next=i,i.prev=n,this._length--}return!0}isEmpty(){return this._length===0}clear(){this._head=void 0,this._tail=void 0,this._length=0}search(e){let t=this._ensurePredicate(e),n=this.head;for(;n;){if(t(n))return n.value;n=n.next}}getBackward(e){let t=this._ensurePredicate(e),n=this.tail;for(;n;){if(t(n))return n.value;n=n.prev}}reverse(){let e=this.head;for([this._head,this._tail]=[this.tail,this.head];e;){let t=e.next;[e.prev,e.next]=[e.next,e.prev],e=t}return this}setEquality(e){return this._equals=e,this}clone(){let e=this._createInstance({toElementFn:this._toElementFn,maxLen:this._maxLen});for(let t of this)e.push(t);return e}filter(e,t){let n=this._createInstance({toElementFn:this._toElementFn,maxLen:this._maxLen}),i=0;for(let s of this)e.call(t,s,i++,this)&&n.push(s);return n}mapSame(e,t){let n=this._createInstance({toElementFn:this._toElementFn,maxLen:this._maxLen}),i=0;for(let s of this){let a=t===void 0?e(s,i++,this):e.call(t,s,i++,this);n.push(a)}return n}map(e,t,n){let i=this._createLike([],{...t!=null?t:{},maxLen:this._maxLen}),s=0;for(let a of this)i.push(e.call(n,a,s++,this));return i}_ensureNode(e){return this.isNode(e)?e:new k(e)}_ensurePredicate(e){if(this.isNode(e)){let n=e;return i=>i===n}if(typeof e=="function")return e;let t=e;return n=>this._equals(n.value,t)}_getPrevNode(e){return e.prev}_createInstance(e){let t=this.constructor;return new t([],e)}_createLike(e=[],t){let n=this.constructor;return new n(e,t)}*_getIterator(){let e=this.head;for(;e;)yield e.value,e=e.next}*_getReverseIterator(){let e=this.tail;for(;e;)yield e.value,e=e.prev}*_getNodeIterator(){let e=this.head;for(;e;)yield e,e=e.next}};var b={indexOutOfRange:(o,r,e,t)=>`${t?t+": ":""}Index ${o} is out of range [${r}, ${e}].`,invalidIndex:o=>`${o?o+": ":""}Index must be an integer.`,invalidArgument:(o,r)=>`${r?r+": ":""}${o}`,comparatorRequired:o=>`${o?o+": ":""}Comparator is required for non-number/non-string/non-Date keys.`,invalidKey:(o,r)=>`${r?r+": ":""}${o}`,notAFunction:(o,r)=>`${r?r+": ":""}${o} must be a function.`,invalidEntry:o=>`${o?o+": ":""}Each entry must be a [key, value] tuple.`,invalidNaN:o=>`${o?o+": ":""}NaN is not a valid key.`,invalidDate:o=>`${o?o+": ":""}Invalid Date key.`,reduceEmpty:o=>`${o?o+": ":""}Reduce of empty structure with no initial value.`,callbackReturnType:(o,r,e)=>`${e?e+": ":""}Callback must return ${o}; got ${r}.`,invalidOperation:(o,r)=>`${r?r+": ":""}${o}`,matrixDimensionMismatch:o=>`Matrix: Dimensions must be compatible for ${o}.`,matrixSingular:()=>"Matrix: Singular matrix, inverse does not exist.",matrixNotSquare:()=>"Matrix: Must be square for inversion.",matrixNotRectangular:()=>"Matrix: Must be rectangular for transposition.",matrixRowMismatch:(o,r)=>`Matrix: Expected row length ${o}, but got ${r}.`};var U=(e=>(e[e.VISIT=0]="VISIT",e[e.PROCESS=1]="PROCESS",e))(U||{}),V=class{constructor(r,e,t=!0,n=!0){this.low=r;this.high=e;this.includeLow=t;this.includeHigh=n}isInRange(r,e){let t=this.includeLow?e(r,this.low)>=0:e(r,this.low)>0,n=this.includeHigh?e(r,this.high)<=0:e(r,this.high)<0;return t&&n}};var R=class{*[Symbol.iterator](...r){yield*this._getIterator(...r)}*entries(){for(let r of this)yield r}*keys(){for(let r of this)yield r[0]}*values(){for(let r of this)yield r[1]}every(r,e){let t=0;for(let n of this)if(!r.call(e,n[1],n[0],t++,this))return!1;return!0}some(r,e){let t=0;for(let n of this)if(r.call(e,n[1],n[0],t++,this))return!0;return!1}forEach(r,e){let t=0;for(let n of this){let[i,s]=n;r.call(e,s,i,t++,this)}}find(r,e){let t=0;for(let n of this){let[i,s]=n;if(r.call(e,s,i,t++,this))return n}}has(r){for(let e of this){let[t]=e;if(t===r)return!0}return!1}hasValue(r){for(let[,e]of this)if(e===r)return!0;return!1}get(r){for(let e of this){let[t,n]=e;if(t===r)return n}}reduce(r,e){let t=e,n=0;for(let i of this){let[s,a]=i;t=r(t,a,s,n++,this)}return t}toArray(){return[...this]}toVisual(){return[...this]}print(){console.log(this.toVisual())}};var m=class{constructor(r,e,t){d(this,"key");d(this,"value");d(this,"forward");this.key=r,this.value=e,this.forward=new Array(t).fill(void 0)}},f,_,g=class g extends R{constructor(e=[],t={}){super();M(this,f);M(this,_);d(this,"_head");d(this,"_level",0);d(this,"_size",0);d(this,"_maxLevel",16);d(this,"_probability",.5);let{comparator:n,toEntryFn:i,maxLevel:s,probability:a}=t;typeof s=="number"&&s>0&&(this._maxLevel=s),typeof a=="number"&&a>0&&a<1&&(this._probability=a),S(this,_,n===void 0),S(this,f,n!=null?n:g.createDefaultComparator()),this._head=new m(void 0,void 0,this._maxLevel);for(let u of e){let l,h;if(i)[l,h]=i(u);else{if(!Array.isArray(u)||u.length<2)throw new TypeError(b.invalidEntry("SkipList"));[l,h]=u}this.set(l,h)}}static createDefaultComparator(){return(e,t)=>{if(typeof e=="number"&&typeof t=="number"){if(Number.isNaN(e)||Number.isNaN(t))throw new TypeError(b.invalidNaN("SkipList"));return e-t}if(typeof e=="string"&&typeof t=="string")return e<t?-1:e>t?1:0;if(e instanceof Date&&t instanceof Date){let n=e.getTime(),i=t.getTime();if(Number.isNaN(n)||Number.isNaN(i))throw new TypeError(b.invalidDate("SkipList"));return n-i}if(typeof e=="bigint"&&typeof t=="bigint")return e<t?-1:e>t?1:0;throw new TypeError(b.comparatorRequired("SkipList"))}}get size(){return this._size}get maxLevel(){return this._maxLevel}get probability(){return this._probability}get comparator(){return c(this,f)}isEmpty(){return this._size===0}clear(){this._head=new m(void 0,void 0,this._maxLevel),this._level=0,this._size=0}clone(){return new g(this,{comparator:c(this,_)?void 0:c(this,f),maxLevel:this._maxLevel,probability:this._probability})}set(e,t){let n=c(this,f),i=this._findUpdate(e),s=i[0].forward[0];if(s&&n(s.key,e)===0)return s.value=t,this;let a=this._randomLevel(),u=new m(e,t,a);if(a>this._level){for(let l=this._level;l<a;l++)i[l]=this._head;this._level=a}for(let l=0;l<a;l++)u.forward[l]=i[l].forward[l],i[l].forward[l]=u;return this._size++,this}get(e){let t=this._findNode(e);return t?t.value:void 0}has(e){return this._findNode(e)!==void 0}delete(e){let t=c(this,f),n=this._findUpdate(e),i=n[0].forward[0];if(!i||t(i.key,e)!==0)return!1;for(let s=0;s<this._level&&n[s].forward[s]===i;s++)n[s].forward[s]=i.forward[s];for(;this._level>0&&!this._head.forward[this._level-1];)this._level--;return this._size--,!0}first(){let e=this._head.forward[0];return e?[e.key,e.value]:void 0}last(){let e=this._head;for(let t=this._level-1;t>=0;t--)for(;e.forward[t];)e=e.forward[t];return e===this._head?void 0:[e.key,e.value]}pollFirst(){let e=this.first();if(e)return this.delete(e[0]),e}pollLast(){let e=this.last();if(e)return this.delete(e[0]),e}ceiling(e){let t=c(this,f),n=this._head;for(let s=this._level-1;s>=0;s--)for(;n.forward[s]&&t(n.forward[s].key,e)<0;)n=n.forward[s];let i=n.forward[0];return i?[i.key,i.value]:void 0}floor(e){let t=c(this,f),n=this._head;for(let s=this._level-1;s>=0;s--)for(;n.forward[s]&&t(n.forward[s].key,e)<=0;)n=n.forward[s];let i=n===this._head?void 0:n;if(i&&t(i.key,e)<=0)return[i.key,i.value]}higher(e){let t=c(this,f),n=this._head;for(let s=this._level-1;s>=0;s--)for(;n.forward[s]&&t(n.forward[s].key,e)<=0;)n=n.forward[s];let i=n.forward[0];return i?[i.key,i.value]:void 0}lower(e){let t=c(this,f),n=this._head,i;for(let s=this._level-1;s>=0;s--){for(;n.forward[s]&&t(n.forward[s].key,e)<0;)n=n.forward[s];n!==this._head&&t(n.key,e)<0&&(i=n)}return i?[i.key,i.value]:void 0}rangeSearch(e,t={}){let{lowInclusive:n=!0,highInclusive:i=!0}=t,[s,a]=e,u=c(this,f),l=[],h=this._head;for(let E=this._level-1;E>=0;E--)for(;h.forward[E]&&u(h.forward[E].key,s)<0;)h=h.forward[E];for(h=h.forward[0];h;){let E=u(h.key,a);if(E>0||E===0&&!i)break;let v=u(h.key,s);(v>0||v===0&&n)&&l.push([h.key,h.value]),h=h.forward[0]}return l}map(e,t){let n=new g([],t!=null?t:{}),i=0;for(let[s,a]of this){let[u,l]=e(a,s,i++,this);n.set(u,l)}return n}filter(e,t){let n=new g([],{comparator:c(this,_)?void 0:c(this,f),maxLevel:this._maxLevel,probability:this._probability}),i=0;for(let[s,a]of this)e.call(t,a,s,i++,this)&&n.set(s,a);return n}_getIterator(){let e=this._head;return(function*(){let t=e.forward[0];for(;t;)yield[t.key,t.value],t=t.forward[0]})()}_findUpdate(e){let t=c(this,f),n=new Array(this._maxLevel).fill(this._head),i=this._head;for(let s=this._level-1;s>=0;s--){for(;i.forward[s]&&t(i.forward[s].key,e)<0;)i=i.forward[s];n[s]=i}return n}_findNode(e){let t=c(this,f),n=this._head;for(let s=this._level-1;s>=0;s--)for(;n.forward[s]&&t(n.forward[s].key,e)<0;)n=n.forward[s];let i=n.forward[0];if(i&&t(i.key,e)===0)return i}_randomLevel(){let e=1;for(;Math.random()<this._probability&&e<this._maxLevel;)e++;return e}};f=new WeakMap,_=new WeakMap;var C=g;return P(H);})();
1
+ "use strict";var linkedListTyped=(()=>{var x=Object.defineProperty;var F=Object.getOwnPropertyDescriptor;var q=Object.getOwnPropertyNames;var B=Object.prototype.hasOwnProperty;var A=o=>{throw TypeError(o)};var T=(o,r,e)=>r in o?x(o,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):o[r]=e;var z=(o,r)=>{for(var e in r)x(o,e,{get:r[e],enumerable:!0})},P=(o,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of q(r))!B.call(o,n)&&n!==e&&x(o,n,{get:()=>r[n],enumerable:!(t=F(r,n))||t.enumerable});return o};var j=o=>P(x({},"__esModule",{value:!0}),o);var d=(o,r,e)=>T(o,typeof r!="symbol"?r+"":r,e),U=(o,r,e)=>r.has(o)||A("Cannot "+e);var c=(o,r,e)=>(U(o,r,"read from private field"),e?e.call(o):r.get(o)),S=(o,r,e)=>r.has(o)?A("Cannot add the same private member more than once"):r instanceof WeakSet?r.add(o):r.set(o,e),K=(o,r,e,t)=>(U(o,r,"write to private field"),t?t.call(o,e):r.set(o,e),e);var W={};z(W,{DFSOperation:()=>$,DoublyLinkedList:()=>C,DoublyLinkedListNode:()=>v,ERR:()=>L,Range:()=>D,SinglyLinkedList:()=>V,SinglyLinkedListNode:()=>m,SkipList:()=>O,SkipListNode:()=>k,raise:()=>b});function b(o,r){throw new o(r)}var L={indexOutOfRange:(o,r,e,t)=>`${t?t+": ":""}Index ${o} is out of range [${r}, ${e}].`,invalidIndex:o=>`${o?o+": ":""}Index must be an integer.`,invalidArgument:(o,r)=>`${r?r+": ":""}${o}`,comparatorRequired:o=>`${o?o+": ":""}Comparator is required for non-number/non-string/non-Date keys.`,invalidKey:(o,r)=>`${r?r+": ":""}${o}`,notAFunction:(o,r)=>`${r?r+": ":""}${o} must be a function.`,invalidEntry:o=>`${o?o+": ":""}Each entry must be a [key, value] tuple.`,invalidNaN:o=>`${o?o+": ":""}NaN is not a valid key.`,invalidDate:o=>`${o?o+": ":""}Invalid Date key.`,reduceEmpty:o=>`${o?o+": ":""}Reduce of empty structure with no initial value.`,callbackReturnType:(o,r,e)=>`${e?e+": ":""}Callback must return ${o}; got ${r}.`,invalidOperation:(o,r)=>`${r?r+": ":""}${o}`,matrixDimensionMismatch:o=>`Matrix: Dimensions must be compatible for ${o}.`,matrixSingular:()=>"Matrix: Singular matrix, inverse does not exist.",matrixNotSquare:()=>"Matrix: Must be square for inversion.",matrixNotRectangular:()=>"Matrix: Must be rectangular for transposition.",matrixRowMismatch:(o,r)=>`Matrix: Expected row length ${o}, but got ${r}.`,orderStatisticNotEnabled:(o,r)=>`${r?r+": ":""}${o}() requires enableOrderStatistic: true.`};var $=(e=>(e[e.VISIT=0]="VISIT",e[e.PROCESS=1]="PROCESS",e))($||{}),D=class{constructor(r,e,t=!0,n=!0){this.low=r;this.high=e;this.includeLow=t;this.includeHigh=n}isInRange(r,e){let t=this.includeLow?e(r,this.low)>=0:e(r,this.low)>0,n=this.includeHigh?e(r,this.high)<=0:e(r,this.high)<0;return t&&n}};var w=class{constructor(r){d(this,"_toElementFn");if(r){let{toElementFn:e}=r;typeof e=="function"?this._toElementFn=e:e&&b(TypeError,"toElementFn must be a function type")}}get toElementFn(){return this._toElementFn}*[Symbol.iterator](...r){yield*this._getIterator(...r)}*values(){for(let r of this)yield r}every(r,e){let t=0;for(let n of this)if(e===void 0){if(!r(n,t++,this))return!1}else if(!r.call(e,n,t++,this))return!1;return!0}some(r,e){let t=0;for(let n of this)if(e===void 0){if(r(n,t++,this))return!0}else if(r.call(e,n,t++,this))return!0;return!1}forEach(r,e){let t=0;for(let n of this)e===void 0?r(n,t++,this):r.call(e,n,t++,this)}find(r,e){let t=0;for(let n of this)if(e===void 0){if(r(n,t++,this))return n}else if(r.call(e,n,t++,this))return n}has(r){for(let e of this)if(e===r)return!0;return!1}reduce(r,e){let t=0,n=this[Symbol.iterator](),i;if(arguments.length>=2)i=e;else{let s=n.next();s.done&&b(TypeError,"Reduce of empty structure with no initial value"),i=s.value,t=1}for(let s of n)i=r(i,s,t++,this);return i}toArray(){return[...this]}toVisual(){return[...this]}print(){console.log(this.toVisual())}};var p=class{constructor(r){d(this,"_value");d(this,"_next");this._value=r,this._next=void 0}get value(){return this._value}set value(r){this._value=r}get next(){return this._next}set next(r){this._next=r}},R=class o extends w{constructor(e){super(e);d(this,"_maxLen",-1);if(e){let{maxLen:t}=e;typeof t=="number"&&t>0&&t%1===0&&(this._maxLen=t)}}get maxLen(){return this._maxLen}indexOf(e,t=0){if(this.length===0)return-1;t<0&&(t=this.length+t),t<0&&(t=0);for(let n=t;n<this.length;n++)if(this.at(n)===e)return n;return-1}lastIndexOf(e,t=this.length-1){if(this.length===0)return-1;t>=this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(let n=t;n>=0;n--)if(this.at(n)===e)return n;return-1}findIndex(e,t){for(let n=0;n<this.length;n++){let i=this.at(n);if(i!==void 0&&e.call(t,i,n,this))return n}return-1}concat(...e){let t=this.clone();for(let n of e)n instanceof o?t.pushMany(n):t.push(n);return t}sort(e){let t=this.toArray();t.sort(e),this.clear();for(let n of t)this.push(n);return this}splice(e,t=0,...n){let i=this._createInstance();e=e<0?this.length+e:e,e=Math.max(0,Math.min(e,this.length)),t=Math.max(0,Math.min(t,this.length-e));for(let s=0;s<t;s++){let a=this.deleteAt(e);a!==void 0&&i.push(a)}for(let s=0;s<n.length;s++)this.addAt(e+s,n[s]);return i}join(e=","){return this.toArray().join(e)}toReversedArray(){let e=[];for(let t=this.length-1;t>=0;t--)e.push(this.at(t));return e}reduceRight(e,t){let n=t!=null?t:0;for(let i=this.length-1;i>=0;i--)n=e(n,this.at(i),i,this);return n}slice(e=0,t=this.length){e=e<0?this.length+e:e,t=t<0?this.length+t:t;let n=this._createInstance();for(let i=e;i<t;i++)n.push(this.at(i));return n}fill(e,t=0,n=this.length){if(t=t<0?this.length+t:t,n=n<0?this.length+n:n,t<0&&(t=0),n>this.length&&(n=this.length),t>=n)return this;for(let i=t;i<n;i++)this.setAt(i,e);return this}},g=class extends R{constructor(r){if(super(r),r){let{maxLen:e}=r;typeof e=="number"&&e>0&&e%1===0&&(this._maxLen=e)}}indexOf(r,e=0){let t=this._getIterator(),n=t.next(),i=0;for(;i<e;)n=t.next(),i++;for(;!n.done;){if(n.value===r)return i;n=t.next(),i++}return-1}lastIndexOf(r,e=this.length-1){let t=this._getReverseIterator(),n=t.next(),i=this.length-1;for(;i>e;)n=t.next(),i--;for(;!n.done;){if(n.value===r)return i;n=t.next(),i--}return-1}concat(...r){let e=this.clone();for(let t of r)t instanceof R?e.pushMany(t):e.push(t);return e}slice(r=0,e=this.length){r=r<0?this.length+r:r,e=e<0?this.length+e:e;let t=this._createInstance(),n=this._getIterator(),i=n.next(),s=0;for(;s<r;)i=n.next(),s++;for(let a=r;a<e;a++)t.push(i.value),i=n.next();return t}splice(r,e=0,...t){let n=this._createInstance();r=r<0?this.length+r:r,r=Math.max(0,Math.min(r,this.length)),e=Math.max(0,e);let i=0,s,a,u=this._getNodeIterator();for(let l of u){if(i===r){s=l;break}a=l,i++}for(let l=0;l<e&&s;l++){n.push(s.value);let h=s.next;this.delete(s),s=h}for(let l=0;l<t.length;l++)a?(this.addAfter(a,t[l]),a=a.next):(this.addAt(0,t[l]),a=this._getNodeIterator().next().value);return n}reduceRight(r,e){let t=e!=null?e:0,n=this.length-1;for(let i of this._getReverseIterator())t=r(t,i,n--,this);return t}};var m=class extends p{constructor(e){super(e);d(this,"_next");this._value=e,this._next=void 0}get next(){return this._next}set next(e){this._next=e}},V=class extends g{constructor(e=[],t){super(t);d(this,"_equals",(e,t)=>Object.is(e,t));d(this,"_head");d(this,"_tail");d(this,"_length",0);this.pushMany(e)}get head(){return this._head}get tail(){return this._tail}get length(){return this._length}get first(){var e;return(e=this.head)==null?void 0:e.value}get last(){var e;return(e=this.tail)==null?void 0:e.value}static from(e,t){let n=new this([],t);for(let i of e)n.push(i);return n}push(e){let t=this._ensureNode(e);return this.head?(this.tail.next=t,this._tail=t):this._head=this._tail=t,this._length++,this._maxLen>0&&this.length>this._maxLen&&this.shift(),!0}pop(){var n;if(!this.head)return;if(this.head===this.tail){let i=this.head.value;return this._head=void 0,this._tail=void 0,this._length--,i}let e=this.head;for(;e.next&&e.next!==this.tail;)e=e.next;let t=(n=this.tail)==null?void 0:n.value;return e.next=void 0,this._tail=e,this._length--,t}shift(){if(!this.head)return;let e=this.head;return this._head=this.head.next,this._head||(this._tail=void 0),this._length--,e.value}unshift(e){let t=this._ensureNode(e);return this.head?(t.next=this.head,this._head=t):this._head=this._tail=t,this._length++,!0}pushMany(e){let t=[];for(let n of e)this.toElementFn?t.push(this.push(this.toElementFn(n))):t.push(this.push(n));return t}unshiftMany(e){let t=[];for(let n of e)this.toElementFn?t.push(this.unshift(this.toElementFn(n))):t.push(this.unshift(n));return t}search(e){let t=this._ensurePredicate(e),n=this.head;for(;n;){if(t(n))return n.value;n=n.next}}at(e){if(e<0||e>=this._length)return;let t=this.head;for(let n=0;n<e&&t;n++)t=t.next;return t==null?void 0:t.value}isNode(e){return e instanceof m}getNodeAt(e){if(e<0||e>=this._length)return;let t=this.head;for(let n=0;n<e&&t;n++)t=t.next;return t}deleteAt(e){if(e<0||e>=this._length)return;if(e===0)return this.shift();let t=this.getNodeAt(e),n=this._getPrevNode(t),i=t.value;return n.next=t.next,t===this.tail&&(this._tail=n),this._length--,i}delete(e){if(e===void 0||!this.head)return!1;let t=this.isNode(e)?e:this.getNode(e);if(!t)return!1;let n=this._getPrevNode(t);return n?(n.next=t.next,t===this.tail&&(this._tail=n)):(this._head=t.next,t===this.tail&&(this._tail=void 0)),this._length--,!0}addAt(e,t){if(e<0||e>this._length)return!1;if(e===0)return this.unshift(t);if(e===this._length)return this.push(t);let n=this._ensureNode(t),i=this.getNodeAt(e-1);return n.next=i.next,i.next=n,this._length++,!0}setAt(e,t){let n=this.getNodeAt(e);return n?(n.value=t,!0):!1}isEmpty(){return this._length===0}clear(){this._head=void 0,this._tail=void 0,this._length=0}reverse(){if(!this.head||this.head===this.tail)return this;let e,t=this.head,n;for(;t;)n=t.next,t.next=e,e=t,t=n;return[this._head,this._tail]=[this.tail,this.head],this}getNode(e){if(e===void 0)return;if(this.isNode(e))return e;let t=this._ensurePredicate(e),n=this.head;for(;n;){if(t(n))return n;n=n.next}}addBefore(e,t){let n=this.getNode(e);if(!n)return!1;let i=this._getPrevNode(n),s=this._ensureNode(t);return i?(i.next=s,s.next=n,this._length++):(s.next=this._head,this._head=s,this._tail||(this._tail=s),this._length++),!0}addAfter(e,t){let n=this.getNode(e);if(!n)return!1;let i=this._ensureNode(t);return i.next=n.next,n.next=i,n===this.tail&&(this._tail=i),this._length++,!0}splice(e,t=0,...n){e=Math.max(0,Math.min(e,this.length)),t=Math.max(0,t);let i=this._createInstance(),s=e===0?void 0:this.getNodeAt(e-1),a=s?s.next:this.head,u=0;for(;u<t&&a;)i.push(a.value),a=a.next,u++;let l=a;if(s?s.next=l:this._head=l,l||(this._tail=s),n.length>0){let h,E;for(let N of n){let M=this._ensureNode(N);h||(h=M),E&&(E.next=M),E=M}s?s.next=h:this._head=h,E.next=l,l||(this._tail=E)}return this._length+=n.length-u,this._length===0&&(this._head=void 0,this._tail=void 0),i}countOccurrences(e){let t=H(e,this._equals),n=0,i=this.head;for(;i;)t(i)&&n++,i=i.next;return n}setEquality(e){return this._equals=e,this}deleteWhere(e){let t,n=this.head,i=0;for(;n;){if(e(n.value,i++,this))return t?(t.next=n.next,n===this._tail&&(this._tail=t)):(this._head=n.next,n===this._tail&&(this._tail=void 0)),this._length--,!0;t=n,n=n.next}return!1}clone(){let e=this._createInstance();for(let t of this)e.push(t);return e}filter(e,t){let n=this._createInstance(),i=0;for(let s of this)e.call(t,s,i++,this)&&n.push(s);return n}mapSame(e,t){let n=this._createInstance(),i=0;for(let s of this){let a=t===void 0?e(s,i++,this):e.call(t,s,i++,this);n.push(a)}return n}map(e,t,n){let i=this._createLike([],{...t!=null?t:{},maxLen:this._maxLen}),s=0;for(let a of this)i.push(e.call(n,a,s++,this));return i}createNode(e){return new m(e)}_isPredicate(e){return typeof e=="function"}_ensureNode(e){return this.isNode(e)?e:this.createNode(e)}_ensurePredicate(e){if(this.isNode(e))return n=>n===e;if(this._isPredicate(e))return e;let t=e;return n=>this._equals(n.value,t)}_getPrevNode(e){if(!this.head||this.head===e)return;let t=this.head;for(;t.next&&t.next!==e;)t=t.next;return t.next===e?t:void 0}*_getIterator(){let e=this.head;for(;e;)yield e.value,e=e.next}*_getReverseIterator(){let e=[...this].reverse();for(let t of e)yield t}*_getNodeIterator(){let e=this.head;for(;e;)yield e,e=e.next}_createInstance(e){let t=this.constructor;return new t([],e)}_createLike(e=[],t){let n=this.constructor;return new n(e,t)}_spawnLike(e){return this._createLike([],e)}};function H(o,r){if(o instanceof m)return t=>t===o;if(typeof o=="function")return o;let e=o;return t=>r(t.value,e)}var v=class extends p{constructor(e){super(e);d(this,"_next");d(this,"_prev");this._value=e,this._next=void 0,this._prev=void 0}get next(){return this._next}set next(e){this._next=e}get prev(){return this._prev}set prev(e){this._prev=e}},C=class extends g{constructor(e=[],t){super(t);d(this,"_equals",(e,t)=>Object.is(e,t));d(this,"_head");d(this,"_tail");d(this,"_length",0);this._head=void 0,this._tail=void 0,this._length=0,t!=null&&t.maxLen&&Number.isInteger(t.maxLen)&&t.maxLen>0&&(this._maxLen=t.maxLen),this.pushMany(e)}get head(){return this._head}get tail(){return this._tail}get length(){return this._length}get first(){var e;return(e=this.head)==null?void 0:e.value}get last(){var e;return(e=this.tail)==null?void 0:e.value}static fromArray(e){return new this(e)}isNode(e){return e instanceof v}push(e){let t=this._ensureNode(e);return this.head?(t.prev=this.tail,this.tail.next=t,this._tail=t):(this._head=t,this._tail=t),this._length++,this._maxLen>0&&this.length>this._maxLen&&this.shift(),!0}pop(){if(!this.tail)return;let e=this.tail;return this.head===this.tail?(this._head=void 0,this._tail=void 0):(this._tail=e.prev,this.tail.next=void 0),this._length--,e.value}shift(){if(!this.head)return;let e=this.head;return this.head===this.tail?(this._head=void 0,this._tail=void 0):(this._head=e.next,this.head.prev=void 0),this._length--,e.value}unshift(e){let t=this._ensureNode(e);return this.head?(t.next=this.head,this.head.prev=t,this._head=t):(this._head=t,this._tail=t),this._length++,this._maxLen>0&&this._length>this._maxLen&&this.pop(),!0}pushMany(e){let t=[];for(let n of e)this.toElementFn?t.push(this.push(this.toElementFn(n))):t.push(this.push(n));return t}unshiftMany(e){let t=[];for(let n of e)this.toElementFn?t.push(this.unshift(this.toElementFn(n))):t.push(this.unshift(n));return t}at(e){if(e<0||e>=this._length)return;let t=this.head;for(let n=0;n<e&&t;n++)t=t.next;return t==null?void 0:t.value}getNodeAt(e){if(e<0||e>=this._length)return;let t=this.head;for(let n=0;n<e&&t;n++)t=t.next;return t}getNode(e){if(e===void 0)return;if(this.isNode(e)){let i=e,s=this.head;for(;s;){if(s===i)return i;s=s.next}let a=u=>this._equals(u.value,i.value);for(s=this.head;s;){if(a(s))return s;s=s.next}return}let t=this._ensurePredicate(e),n=this.head;for(;n;){if(t(n))return n;n=n.next}}addAt(e,t){if(e<0||e>this._length)return!1;if(e===0)return this.unshift(t);if(e===this._length)return this.push(t);let n=this._ensureNode(t),i=this.getNodeAt(e-1),s=i.next;return n.prev=i,n.next=s,i.next=n,s.prev=n,this._length++,!0}addBefore(e,t){let n=this.isNode(e)?e:this.getNode(e);if(!n)return!1;let i=this._ensureNode(t);return i.prev=n.prev,n.prev&&(n.prev.next=i),i.next=n,n.prev=i,n===this.head&&(this._head=i),this._length++,!0}addAfter(e,t){let n=this.isNode(e)?e:this.getNode(e);if(!n)return!1;let i=this._ensureNode(t);return i.next=n.next,n.next&&(n.next.prev=i),i.prev=n,n.next=i,n===this.tail&&(this._tail=i),this._length++,!0}setAt(e,t){let n=this.getNodeAt(e);return n?(n.value=t,!0):!1}deleteAt(e){if(e<0||e>=this._length)return;if(e===0)return this.shift();if(e===this._length-1)return this.pop();let t=this.getNodeAt(e),n=t.prev,i=t.next;return n.next=i,i.prev=n,this._length--,t.value}delete(e){let t=this.getNode(e);if(!t)return!1;if(t===this.head)this.shift();else if(t===this.tail)this.pop();else{let n=t.prev,i=t.next;n.next=i,i.prev=n,this._length--}return!0}isEmpty(){return this._length===0}clear(){this._head=void 0,this._tail=void 0,this._length=0}search(e){let t=this._ensurePredicate(e),n=this.head;for(;n;){if(t(n))return n.value;n=n.next}}getBackward(e){let t=this._ensurePredicate(e),n=this.tail;for(;n;){if(t(n))return n.value;n=n.prev}}reverse(){let e=this.head;for([this._head,this._tail]=[this.tail,this.head];e;){let t=e.next;[e.prev,e.next]=[e.next,e.prev],e=t}return this}setEquality(e){return this._equals=e,this}clone(){let e=this._createInstance({toElementFn:this._toElementFn,maxLen:this._maxLen});for(let t of this)e.push(t);return e}filter(e,t){let n=this._createInstance({toElementFn:this._toElementFn,maxLen:this._maxLen}),i=0;for(let s of this)e.call(t,s,i++,this)&&n.push(s);return n}mapSame(e,t){let n=this._createInstance({toElementFn:this._toElementFn,maxLen:this._maxLen}),i=0;for(let s of this){let a=t===void 0?e(s,i++,this):e.call(t,s,i++,this);n.push(a)}return n}map(e,t,n){let i=this._createLike([],{...t!=null?t:{},maxLen:this._maxLen}),s=0;for(let a of this)i.push(e.call(n,a,s++,this));return i}_ensureNode(e){return this.isNode(e)?e:new v(e)}_ensurePredicate(e){if(this.isNode(e)){let n=e;return i=>i===n}if(typeof e=="function")return e;let t=e;return n=>this._equals(n.value,t)}_getPrevNode(e){return e.prev}_createInstance(e){let t=this.constructor;return new t([],e)}_createLike(e=[],t){let n=this.constructor;return new n(e,t)}*_getIterator(){let e=this.head;for(;e;)yield e.value,e=e.next}*_getReverseIterator(){let e=this.tail;for(;e;)yield e.value,e=e.prev}*_getNodeIterator(){let e=this.head;for(;e;)yield e,e=e.next}};var I=class{*[Symbol.iterator](...r){yield*this._getIterator(...r)}*entries(){for(let r of this)yield r}*keys(){for(let r of this)yield r[0]}*values(){for(let r of this)yield r[1]}every(r,e){let t=0;for(let n of this)if(!r.call(e,n[1],n[0],t++,this))return!1;return!0}some(r,e){let t=0;for(let n of this)if(r.call(e,n[1],n[0],t++,this))return!0;return!1}forEach(r,e){let t=0;for(let n of this){let[i,s]=n;r.call(e,s,i,t++,this)}}find(r,e){let t=0;for(let n of this){let[i,s]=n;if(r.call(e,s,i,t++,this))return n}}has(r){for(let e of this){let[t]=e;if(t===r)return!0}return!1}hasValue(r){for(let[,e]of this)if(e===r)return!0;return!1}get(r){for(let e of this){let[t,n]=e;if(t===r)return n}}reduce(r,e){let t=e,n=0;for(let i of this){let[s,a]=i;t=r(t,a,s,n++,this)}return t}toArray(){return[...this]}toVisual(){return[...this]}print(){console.log(this.toVisual())}};var k=class{constructor(r,e,t){d(this,"key");d(this,"value");d(this,"forward");this.key=r,this.value=e,this.forward=new Array(t).fill(void 0)}},f,_,y=class y extends I{constructor(e=[],t={}){super();S(this,f);S(this,_);d(this,"_head");d(this,"_level",0);d(this,"_size",0);d(this,"_maxLevel",16);d(this,"_probability",.5);let{comparator:n,toEntryFn:i,maxLevel:s,probability:a}=t;typeof s=="number"&&s>0&&(this._maxLevel=s),typeof a=="number"&&a>0&&a<1&&(this._probability=a),K(this,_,n===void 0),K(this,f,n!=null?n:y.createDefaultComparator()),this._head=new k(void 0,void 0,this._maxLevel);for(let u of e){let l,h;i?[l,h]=i(u):((!Array.isArray(u)||u.length<2)&&b(TypeError,L.invalidEntry("SkipList")),[l,h]=u),this.set(l,h)}}static createDefaultComparator(){return(e,t)=>{if(typeof e=="number"&&typeof t=="number")return(Number.isNaN(e)||Number.isNaN(t))&&b(TypeError,L.invalidNaN("SkipList")),e-t;if(typeof e=="string"&&typeof t=="string")return e<t?-1:e>t?1:0;if(e instanceof Date&&t instanceof Date){let n=e.getTime(),i=t.getTime();return(Number.isNaN(n)||Number.isNaN(i))&&b(TypeError,L.invalidDate("SkipList")),n-i}if(typeof e=="bigint"&&typeof t=="bigint")return e<t?-1:e>t?1:0;b(TypeError,L.comparatorRequired("SkipList"))}}get size(){return this._size}get maxLevel(){return this._maxLevel}get probability(){return this._probability}get comparator(){return c(this,f)}isEmpty(){return this._size===0}clear(){this._head=new k(void 0,void 0,this._maxLevel),this._level=0,this._size=0}clone(){return new y(this,{comparator:c(this,_)?void 0:c(this,f),maxLevel:this._maxLevel,probability:this._probability})}set(e,t){let n=c(this,f),i=this._findUpdate(e),s=i[0].forward[0];if(s&&n(s.key,e)===0)return s.value=t,this;let a=this._randomLevel(),u=new k(e,t,a);if(a>this._level){for(let l=this._level;l<a;l++)i[l]=this._head;this._level=a}for(let l=0;l<a;l++)u.forward[l]=i[l].forward[l],i[l].forward[l]=u;return this._size++,this}get(e){let t=this._findNode(e);return t?t.value:void 0}has(e){return this._findNode(e)!==void 0}delete(e){let t=c(this,f),n=this._findUpdate(e),i=n[0].forward[0];if(!i||t(i.key,e)!==0)return!1;for(let s=0;s<this._level&&n[s].forward[s]===i;s++)n[s].forward[s]=i.forward[s];for(;this._level>0&&!this._head.forward[this._level-1];)this._level--;return this._size--,!0}first(){let e=this._head.forward[0];return e?[e.key,e.value]:void 0}last(){let e=this._head;for(let t=this._level-1;t>=0;t--)for(;e.forward[t];)e=e.forward[t];return e===this._head?void 0:[e.key,e.value]}pollFirst(){let e=this.first();if(e)return this.delete(e[0]),e}pollLast(){let e=this.last();if(e)return this.delete(e[0]),e}ceiling(e){let t=c(this,f),n=this._head;for(let s=this._level-1;s>=0;s--)for(;n.forward[s]&&t(n.forward[s].key,e)<0;)n=n.forward[s];let i=n.forward[0];return i?[i.key,i.value]:void 0}floor(e){let t=c(this,f),n=this._head;for(let s=this._level-1;s>=0;s--)for(;n.forward[s]&&t(n.forward[s].key,e)<=0;)n=n.forward[s];let i=n===this._head?void 0:n;if(i&&t(i.key,e)<=0)return[i.key,i.value]}higher(e){let t=c(this,f),n=this._head;for(let s=this._level-1;s>=0;s--)for(;n.forward[s]&&t(n.forward[s].key,e)<=0;)n=n.forward[s];let i=n.forward[0];return i?[i.key,i.value]:void 0}lower(e){let t=c(this,f),n=this._head,i;for(let s=this._level-1;s>=0;s--){for(;n.forward[s]&&t(n.forward[s].key,e)<0;)n=n.forward[s];n!==this._head&&t(n.key,e)<0&&(i=n)}return i?[i.key,i.value]:void 0}rangeSearch(e,t={}){let{lowInclusive:n=!0,highInclusive:i=!0}=t,[s,a]=e,u=c(this,f),l=[],h=this._head;for(let E=this._level-1;E>=0;E--)for(;h.forward[E]&&u(h.forward[E].key,s)<0;)h=h.forward[E];for(h=h.forward[0];h;){let E=u(h.key,a);if(E>0||E===0&&!i)break;let N=u(h.key,s);(N>0||N===0&&n)&&l.push([h.key,h.value]),h=h.forward[0]}return l}map(e,t){let n=new y([],t!=null?t:{}),i=0;for(let[s,a]of this){let[u,l]=e(a,s,i++,this);n.set(u,l)}return n}filter(e,t){let n=new y([],{comparator:c(this,_)?void 0:c(this,f),maxLevel:this._maxLevel,probability:this._probability}),i=0;for(let[s,a]of this)e.call(t,a,s,i++,this)&&n.set(s,a);return n}_getIterator(){let e=this._head;return(function*(){let t=e.forward[0];for(;t;)yield[t.key,t.value],t=t.forward[0]})()}_findUpdate(e){let t=c(this,f),n=new Array(this._maxLevel).fill(this._head),i=this._head;for(let s=this._level-1;s>=0;s--){for(;i.forward[s]&&t(i.forward[s].key,e)<0;)i=i.forward[s];n[s]=i}return n}_findNode(e){let t=c(this,f),n=this._head;for(let s=this._level-1;s>=0;s--)for(;n.forward[s]&&t(n.forward[s].key,e)<0;)n=n.forward[s];let i=n.forward[0];if(i&&t(i.key,e)===0)return i}_randomLevel(){let e=1;for(;Math.random()<this._probability&&e<this._maxLevel;)e++;return e}};f=new WeakMap,_=new WeakMap;var O=y;return j(W);})();
2
2
  /**
3
3
  * data-structure-typed
4
4
  *