data-structure-typed 1.52.0 → 1.52.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 (132) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/README.md +141 -54
  3. package/benchmark/report.html +13 -13
  4. package/benchmark/report.json +162 -162
  5. package/dist/cjs/data-structures/base/iterable-element-base.js.map +1 -1
  6. package/dist/cjs/data-structures/base/iterable-entry-base.js.map +1 -1
  7. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.d.ts +11 -11
  8. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js +6 -6
  9. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js.map +1 -1
  10. package/dist/cjs/data-structures/binary-tree/avl-tree.d.ts +11 -11
  11. package/dist/cjs/data-structures/binary-tree/avl-tree.js +6 -6
  12. package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +1 -1
  13. package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +97 -97
  14. package/dist/cjs/data-structures/binary-tree/binary-tree.js +52 -52
  15. package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -1
  16. package/dist/cjs/data-structures/binary-tree/bst.d.ts +35 -35
  17. package/dist/cjs/data-structures/binary-tree/bst.js +17 -17
  18. package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -1
  19. package/dist/cjs/data-structures/binary-tree/rb-tree.d.ts +8 -8
  20. package/dist/cjs/data-structures/binary-tree/rb-tree.js +6 -6
  21. package/dist/cjs/data-structures/binary-tree/rb-tree.js.map +1 -1
  22. package/dist/cjs/data-structures/binary-tree/tree-multi-map.d.ts +10 -10
  23. package/dist/cjs/data-structures/binary-tree/tree-multi-map.js +5 -5
  24. package/dist/cjs/data-structures/binary-tree/tree-multi-map.js.map +1 -1
  25. package/dist/cjs/data-structures/graph/abstract-graph.js.map +1 -1
  26. package/dist/cjs/data-structures/graph/directed-graph.js +2 -1
  27. package/dist/cjs/data-structures/graph/directed-graph.js.map +1 -1
  28. package/dist/cjs/data-structures/graph/undirected-graph.js.map +1 -1
  29. package/dist/cjs/data-structures/hash/hash-map.js.map +1 -1
  30. package/dist/cjs/data-structures/heap/heap.js.map +1 -1
  31. package/dist/cjs/data-structures/linked-list/doubly-linked-list.js.map +1 -1
  32. package/dist/cjs/data-structures/linked-list/singly-linked-list.js.map +1 -1
  33. package/dist/cjs/data-structures/queue/deque.d.ts +7 -0
  34. package/dist/cjs/data-structures/queue/deque.js +16 -1
  35. package/dist/cjs/data-structures/queue/deque.js.map +1 -1
  36. package/dist/cjs/data-structures/queue/queue.d.ts +18 -1
  37. package/dist/cjs/data-structures/queue/queue.js +32 -7
  38. package/dist/cjs/data-structures/queue/queue.js.map +1 -1
  39. package/dist/cjs/data-structures/stack/stack.js.map +1 -1
  40. package/dist/cjs/data-structures/trie/trie.js.map +1 -1
  41. package/dist/cjs/interfaces/binary-tree.d.ts +3 -3
  42. package/dist/cjs/types/common.d.ts +1 -22
  43. package/dist/cjs/types/data-structures/binary-tree/binary-tree.d.ts +18 -1
  44. package/dist/cjs/types/data-structures/binary-tree/bst.d.ts +3 -0
  45. package/dist/cjs/types/data-structures/queue/deque.d.ts +1 -0
  46. package/dist/cjs/types/data-structures/queue/queue.d.ts +3 -1
  47. package/dist/cjs/utils/number.js +1 -2
  48. package/dist/cjs/utils/number.js.map +1 -1
  49. package/dist/cjs/utils/utils.js +2 -2
  50. package/dist/cjs/utils/utils.js.map +1 -1
  51. package/dist/mjs/data-structures/binary-tree/avl-tree-multi-map.d.ts +11 -11
  52. package/dist/mjs/data-structures/binary-tree/avl-tree-multi-map.js +6 -6
  53. package/dist/mjs/data-structures/binary-tree/avl-tree.d.ts +11 -11
  54. package/dist/mjs/data-structures/binary-tree/avl-tree.js +6 -6
  55. package/dist/mjs/data-structures/binary-tree/binary-tree.d.ts +97 -97
  56. package/dist/mjs/data-structures/binary-tree/binary-tree.js +52 -52
  57. package/dist/mjs/data-structures/binary-tree/bst.d.ts +35 -35
  58. package/dist/mjs/data-structures/binary-tree/bst.js +17 -17
  59. package/dist/mjs/data-structures/binary-tree/rb-tree.d.ts +8 -8
  60. package/dist/mjs/data-structures/binary-tree/rb-tree.js +6 -6
  61. package/dist/mjs/data-structures/binary-tree/tree-multi-map.d.ts +10 -10
  62. package/dist/mjs/data-structures/binary-tree/tree-multi-map.js +5 -5
  63. package/dist/mjs/data-structures/graph/directed-graph.js +2 -1
  64. package/dist/mjs/data-structures/queue/deque.d.ts +7 -0
  65. package/dist/mjs/data-structures/queue/deque.js +16 -1
  66. package/dist/mjs/data-structures/queue/queue.d.ts +18 -1
  67. package/dist/mjs/data-structures/queue/queue.js +32 -7
  68. package/dist/mjs/interfaces/binary-tree.d.ts +3 -3
  69. package/dist/mjs/types/common.d.ts +1 -22
  70. package/dist/mjs/types/data-structures/binary-tree/binary-tree.d.ts +18 -1
  71. package/dist/mjs/types/data-structures/binary-tree/bst.d.ts +3 -0
  72. package/dist/mjs/types/data-structures/queue/deque.d.ts +1 -0
  73. package/dist/mjs/types/data-structures/queue/queue.d.ts +3 -1
  74. package/dist/umd/data-structure-typed.js +137 -95
  75. package/dist/umd/data-structure-typed.min.js +2 -2
  76. package/dist/umd/data-structure-typed.min.js.map +1 -1
  77. package/package.json +8 -8
  78. package/src/data-structures/base/iterable-element-base.ts +2 -2
  79. package/src/data-structures/base/iterable-entry-base.ts +4 -4
  80. package/src/data-structures/binary-tree/avl-tree-multi-map.ts +25 -24
  81. package/src/data-structures/binary-tree/avl-tree.ts +20 -19
  82. package/src/data-structures/binary-tree/binary-tree.ts +162 -157
  83. package/src/data-structures/binary-tree/bst.ts +54 -50
  84. package/src/data-structures/binary-tree/rb-tree.ts +18 -17
  85. package/src/data-structures/binary-tree/tree-multi-map.ts +18 -17
  86. package/src/data-structures/graph/abstract-graph.ts +15 -14
  87. package/src/data-structures/graph/directed-graph.ts +9 -7
  88. package/src/data-structures/graph/undirected-graph.ts +7 -6
  89. package/src/data-structures/hash/hash-map.ts +4 -4
  90. package/src/data-structures/heap/heap.ts +1 -1
  91. package/src/data-structures/linked-list/doubly-linked-list.ts +1 -1
  92. package/src/data-structures/linked-list/singly-linked-list.ts +1 -1
  93. package/src/data-structures/queue/deque.ts +18 -4
  94. package/src/data-structures/queue/queue.ts +38 -8
  95. package/src/data-structures/stack/stack.ts +1 -1
  96. package/src/data-structures/trie/trie.ts +1 -1
  97. package/src/interfaces/binary-tree.ts +3 -3
  98. package/src/types/common.ts +2 -24
  99. package/src/types/data-structures/binary-tree/binary-tree.ts +21 -1
  100. package/src/types/data-structures/binary-tree/bst.ts +7 -0
  101. package/src/types/data-structures/graph/abstract-graph.ts +8 -8
  102. package/src/types/data-structures/queue/deque.ts +4 -1
  103. package/src/types/data-structures/queue/queue.ts +3 -1
  104. package/src/types/utils/utils.ts +4 -4
  105. package/test/integration/bst.test.ts +4 -1
  106. package/test/performance/data-structures/comparison/comparison.test.ts +12 -4
  107. package/test/performance/data-structures/priority-queue/priority-queue.test.ts +6 -2
  108. package/test/performance/reportor.ts +23 -8
  109. package/test/performance/types/reportor.ts +5 -1
  110. package/test/types/utils/json2html.ts +5 -1
  111. package/test/unit/data-structures/binary-tree/avl-tree-multi-map.test.ts +6 -2
  112. package/test/unit/data-structures/binary-tree/avl-tree.test.ts +8 -2
  113. package/test/unit/data-structures/binary-tree/binary-index-tree.test.ts +36 -11
  114. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +3 -1
  115. package/test/unit/data-structures/binary-tree/bst.test.ts +18 -5
  116. package/test/unit/data-structures/binary-tree/tree-multi-map.test.ts +3 -1
  117. package/test/unit/data-structures/graph/abstract-graph.test.ts +2 -4
  118. package/test/unit/data-structures/graph/directed-graph.test.ts +27 -0
  119. package/test/unit/data-structures/hash/hash-map.test.ts +6 -2
  120. package/test/unit/data-structures/heap/heap.test.ts +64 -12
  121. package/test/unit/data-structures/heap/max-heap.test.ts +10 -3
  122. package/test/unit/data-structures/heap/min-heap.test.ts +3 -1
  123. package/test/unit/data-structures/linked-list/doubly-linked-list.test.ts +3 -1
  124. package/test/unit/data-structures/linked-list/singly-linked-list.test.ts +6 -2
  125. package/test/unit/data-structures/priority-queue/max-priority-queue.test.ts +22 -6
  126. package/test/unit/data-structures/priority-queue/priority-queue.test.ts +12 -4
  127. package/test/unit/data-structures/queue/deque.test.ts +31 -6
  128. package/test/unit/data-structures/queue/queue.test.ts +14 -1
  129. package/test/unit/data-structures/trie/trie.test.ts +3 -1
  130. package/test/unit/unrestricted-interconversion.test.ts +3 -1
  131. package/test/utils/big-o.ts +3 -1
  132. package/test/utils/json2html.ts +2 -6
@@ -204,8 +204,7 @@ describe('Deque - Complex Operations', () => {
204
204
  expect([...deque]).toEqual([1, 2, 3]);
205
205
  });
206
206
 
207
- test('shrinkToFit should reduce the memory footprint', () => {
208
- });
207
+ test('shrinkToFit should reduce the memory footprint', () => {});
209
208
  });
210
209
  describe('Deque - Utility Operations', () => {
211
210
  let deque: Deque<number>;
@@ -260,6 +259,24 @@ describe('Deque - Utility Operations', () => {
260
259
  // deque.print();
261
260
  // expect(consoleSpy).toHaveBeenCalledWith([1, 2]);
262
261
  });
262
+
263
+ test('should maxLen work well', () => {
264
+ const dequeMaxLen = new Deque([3, 4, 5, 6, 7], { maxLen: 3 });
265
+ expect(dequeMaxLen.size).toBe(3);
266
+ expect(dequeMaxLen.toArray()).toEqual([5, 6, 7]);
267
+ dequeMaxLen.unshift(4);
268
+ dequeMaxLen.unshift(3);
269
+ expect(dequeMaxLen.size).toBe(3);
270
+ expect(dequeMaxLen.toArray()).toEqual([3, 4, 5]);
271
+
272
+ const dequeNoMaxLen = new Deque([3, 4, 5, 6, 7]);
273
+ expect(dequeNoMaxLen.size).toBe(5);
274
+ expect(dequeNoMaxLen.toArray()).toEqual([3, 4, 5, 6, 7]);
275
+ dequeNoMaxLen.unshift(4);
276
+ dequeNoMaxLen.unshift(3);
277
+ expect(dequeNoMaxLen.size).toBe(7);
278
+ expect(dequeNoMaxLen.toArray()).toEqual([3, 4, 3, 4, 5, 6, 7]);
279
+ });
263
280
  });
264
281
 
265
282
  describe('Deque - Additional Operations', () => {
@@ -325,7 +342,9 @@ describe('Deque - push Method', () => {
325
342
  const bucketSize = 10;
326
343
 
327
344
  beforeEach(() => {
328
- deque = new Deque<number>([], { bucketSize });
345
+ deque = new Deque<number>([], {
346
+ bucketSize
347
+ });
329
348
  });
330
349
 
331
350
  test('push should add an element when deque is empty', () => {
@@ -367,7 +386,9 @@ describe('Deque - pop Method', () => {
367
386
  const bucketSize = 10;
368
387
 
369
388
  beforeEach(() => {
370
- deque = new Deque<number>([], { bucketSize });
389
+ deque = new Deque<number>([], {
390
+ bucketSize
391
+ });
371
392
  });
372
393
 
373
394
  test('pop should remove and return the last element', () => {
@@ -398,7 +419,9 @@ describe('Deque - unshift Method', () => {
398
419
  const bucketSize = 10;
399
420
 
400
421
  beforeEach(() => {
401
- deque = new Deque<number>([], { bucketSize });
422
+ deque = new Deque<number>([], {
423
+ bucketSize
424
+ });
402
425
  });
403
426
 
404
427
  test('unshift should add an element to the beginning when deque is empty', () => {
@@ -430,7 +453,9 @@ describe('Deque - shift Method', () => {
430
453
  const bucketSize = 10;
431
454
 
432
455
  beforeEach(() => {
433
- deque = new Deque<number>([], { bucketSize });
456
+ deque = new Deque<number>([], {
457
+ bucketSize
458
+ });
434
459
  });
435
460
 
436
461
  test('shift should remove and return the first element', () => {
@@ -90,6 +90,16 @@ describe('Queue', () => {
90
90
  expect(queue.isEmpty()).toBeTruthy();
91
91
  });
92
92
 
93
+ test('compact method should work well', () => {
94
+ for (let i = 0; i < 1000; i++) queue.push(i);
95
+
96
+ for (let i = 0; i < 499; i++) queue.shift();
97
+
98
+ expect(queue.elements.length).toBe(1000);
99
+ queue.compact();
100
+ expect(queue.elements.length).toBe(501);
101
+ });
102
+
93
103
  test('should at after shifting', () => {
94
104
  for (let i = 0; i < 100; i++) {
95
105
  queue.push(i);
@@ -116,7 +126,10 @@ describe('Queue', () => {
116
126
  });
117
127
 
118
128
  it('should object queue map & filter', function () {
119
- const queue = new Queue<{ a: string; key: number }>([
129
+ const queue = new Queue<{
130
+ a: string;
131
+ key: number;
132
+ }>([
120
133
  { key: 1, a: 'a1' },
121
134
  { key: 6, a: 'a6' },
122
135
  { key: 5, a: 'a5' },
@@ -795,7 +795,9 @@ describe('Trie operations', () => {
795
795
  });
796
796
 
797
797
  it('Case Sensitivity', () => {
798
- const caseInsensitiveTrie = new Trie(['apple', 'Banana'], { caseSensitive: false });
798
+ const caseInsensitiveTrie = new Trie(['apple', 'Banana'], {
799
+ caseSensitive: false
800
+ });
799
801
  expect(caseInsensitiveTrie.has('APPLE')).toBe(true);
800
802
  expect(caseInsensitiveTrie.has('banana')).toBe(true);
801
803
  expect(caseInsensitiveTrie.has('Cherry')).toBe(false);
@@ -245,7 +245,9 @@ describe('conversions', () => {
245
245
  const trie = new Trie(orgStrArr);
246
246
  expect(trie.size).toBe(10);
247
247
  isDebug && trie.print();
248
- const heap = new Heap<string>(trie, { comparator: (a, b) => Number(a) - Number(b) });
248
+ const heap = new Heap<string>(trie, {
249
+ comparator: (a, b) => Number(a) - Number(b)
250
+ });
249
251
  expect(heap.size).toBe(10);
250
252
  isDebug && heap.print();
251
253
  expect([...heap]).toEqual([
@@ -32,7 +32,9 @@ export const bigO = {
32
32
 
33
33
  function findPotentialN(input: any): number {
34
34
  let longestArray: any[] = [];
35
- let mostProperties: { [key: string]: any } = {};
35
+ let mostProperties: {
36
+ [key: string]: any;
37
+ } = {};
36
38
 
37
39
  function recurse(obj: any) {
38
40
  if (Array.isArray(obj)) {
@@ -14,13 +14,9 @@ function makeLabelDiv(options: any, level: number, keyName: string | number, dat
14
14
  return `<div class='index'><span class='json-to-html-label'>${keyName}&nbsp;</span></div>`;
15
15
  } else if (typeof keyName === 'string') {
16
16
  if (datatype === 'array') {
17
- return `<div class='collapsible level${level}' ${toggleJS(
18
- options
19
- )}><span class='json-to-html-label'>${keyName}</span></div>`;
17
+ return `<div class='collapsible level${level}' ${toggleJS(options)}><span class='json-to-html-label'>${keyName}</span></div>`;
20
18
  } else if (datatype === 'object') {
21
- return `<div class='attribute collapsible level${level}' ${toggleJS(
22
- options
23
- )}><span class='json-to-html-label'>${keyName}:</span></div>`;
19
+ return `<div class='attribute collapsible level${level}' ${toggleJS(options)}><span class='json-to-html-label'>${keyName}:</span></div>`;
24
20
  } else {
25
21
  return `<div class='leaf level${level}'><span class='json-to-html-label'>${keyName}:</span></div>`;
26
22
  }