data-structure-typed 2.1.0 → 2.1.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 (711) hide show
  1. package/CHANGELOG.md +5 -1
  2. package/COMMANDS.md +13 -3
  3. package/README.md +21 -38
  4. package/benchmark/report.html +1 -1
  5. package/benchmark/report.json +101 -101
  6. package/dist/cjs/index.cjs +13062 -0
  7. package/dist/cjs/index.cjs.map +1 -0
  8. package/dist/esm/index.mjs +12984 -0
  9. package/dist/esm/index.mjs.map +1 -0
  10. package/dist/{cjs → types}/data-structures/binary-tree/avl-tree-counter.d.ts +5 -5
  11. package/dist/{esm → types}/data-structures/binary-tree/avl-tree-multi-map.d.ts +6 -6
  12. package/dist/{esm → types}/data-structures/binary-tree/avl-tree.d.ts +5 -5
  13. package/dist/{esm → types}/data-structures/binary-tree/binary-tree.d.ts +6 -6
  14. package/dist/{esm → types}/data-structures/binary-tree/bst.d.ts +6 -6
  15. package/dist/{esm → types}/data-structures/binary-tree/red-black-tree.d.ts +6 -6
  16. package/dist/{cjs → types}/data-structures/binary-tree/tree-counter.d.ts +5 -5
  17. package/dist/{cjs → types}/data-structures/binary-tree/tree-multi-map.d.ts +6 -6
  18. package/dist/{esm → types}/data-structures/heap/heap.d.ts +4 -4
  19. package/dist/{esm → types}/data-structures/linked-list/singly-linked-list.d.ts +1 -1
  20. package/dist/{esm → types}/interfaces/binary-tree.d.ts +3 -3
  21. package/dist/umd/data-structure-typed.js +97 -174
  22. package/dist/umd/data-structure-typed.js.map +1 -0
  23. package/dist/umd/data-structure-typed.min.js +2 -2
  24. package/dist/umd/data-structure-typed.min.js.map +1 -1
  25. package/jest.integration.config.js +8 -1
  26. package/package.json +20 -14
  27. package/src/data-structures/binary-tree/avl-tree-counter.ts +8 -11
  28. package/src/data-structures/binary-tree/avl-tree-multi-map.ts +6 -11
  29. package/src/data-structures/binary-tree/avl-tree.ts +6 -8
  30. package/src/data-structures/binary-tree/binary-tree.ts +18 -20
  31. package/src/data-structures/binary-tree/bst.ts +6 -11
  32. package/src/data-structures/binary-tree/red-black-tree.ts +6 -11
  33. package/src/data-structures/binary-tree/tree-counter.ts +8 -13
  34. package/src/data-structures/binary-tree/tree-multi-map.ts +6 -11
  35. package/src/data-structures/heap/heap.ts +5 -5
  36. package/src/data-structures/linked-list/singly-linked-list.ts +2 -2
  37. package/src/interfaces/binary-tree.ts +3 -3
  38. package/test/integration/all-in-one.test.ts +1 -1
  39. package/test/integration/compile.test.mjs +159 -0
  40. package/test/integration/compile.test.ts +176 -0
  41. package/test/integration/heap.test.js +1 -1
  42. package/test/integration/index.html +1 -1
  43. package/test/performance/data-structures/comparison/comparison.test.ts +27 -57
  44. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +3 -3
  45. package/test/unit/data-structures/binary-tree/tree-multi-map.test.ts +109 -1
  46. package/tsconfig.base.json +23 -0
  47. package/tsconfig.test.json +9 -0
  48. package/tsconfig.types.json +15 -0
  49. package/tsup.config.js +12 -24
  50. package/tsup.node.config.js +37 -0
  51. package/dist/cjs/common/index.js +0 -29
  52. package/dist/cjs/common/index.js.map +0 -1
  53. package/dist/cjs/data-structures/base/index.js +0 -19
  54. package/dist/cjs/data-structures/base/index.js.map +0 -1
  55. package/dist/cjs/data-structures/base/iterable-element-base.js +0 -244
  56. package/dist/cjs/data-structures/base/iterable-element-base.js.map +0 -1
  57. package/dist/cjs/data-structures/base/iterable-entry-base.js +0 -184
  58. package/dist/cjs/data-structures/base/iterable-entry-base.js.map +0 -1
  59. package/dist/cjs/data-structures/base/linear-base.js +0 -416
  60. package/dist/cjs/data-structures/base/linear-base.js.map +0 -1
  61. package/dist/cjs/data-structures/binary-tree/avl-tree-counter.js +0 -375
  62. package/dist/cjs/data-structures/binary-tree/avl-tree-counter.js.map +0 -1
  63. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.d.ts +0 -135
  64. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js +0 -251
  65. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js.map +0 -1
  66. package/dist/cjs/data-structures/binary-tree/avl-tree.d.ts +0 -291
  67. package/dist/cjs/data-structures/binary-tree/avl-tree.js +0 -612
  68. package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +0 -1
  69. package/dist/cjs/data-structures/binary-tree/binary-indexed-tree.js +0 -295
  70. package/dist/cjs/data-structures/binary-tree/binary-indexed-tree.js.map +0 -1
  71. package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +0 -754
  72. package/dist/cjs/data-structures/binary-tree/binary-tree.js +0 -1926
  73. package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +0 -1
  74. package/dist/cjs/data-structures/binary-tree/bst.d.ts +0 -413
  75. package/dist/cjs/data-structures/binary-tree/bst.js +0 -904
  76. package/dist/cjs/data-structures/binary-tree/bst.js.map +0 -1
  77. package/dist/cjs/data-structures/binary-tree/index.js +0 -27
  78. package/dist/cjs/data-structures/binary-tree/index.js.map +0 -1
  79. package/dist/cjs/data-structures/binary-tree/red-black-tree.d.ts +0 -208
  80. package/dist/cjs/data-structures/binary-tree/red-black-tree.js +0 -547
  81. package/dist/cjs/data-structures/binary-tree/red-black-tree.js.map +0 -1
  82. package/dist/cjs/data-structures/binary-tree/segment-tree.js +0 -298
  83. package/dist/cjs/data-structures/binary-tree/segment-tree.js.map +0 -1
  84. package/dist/cjs/data-structures/binary-tree/tree-counter.js +0 -414
  85. package/dist/cjs/data-structures/binary-tree/tree-counter.js.map +0 -1
  86. package/dist/cjs/data-structures/binary-tree/tree-multi-map.js +0 -385
  87. package/dist/cjs/data-structures/binary-tree/tree-multi-map.js.map +0 -1
  88. package/dist/cjs/data-structures/graph/abstract-graph.js +0 -897
  89. package/dist/cjs/data-structures/graph/abstract-graph.js.map +0 -1
  90. package/dist/cjs/data-structures/graph/directed-graph.js +0 -526
  91. package/dist/cjs/data-structures/graph/directed-graph.js.map +0 -1
  92. package/dist/cjs/data-structures/graph/index.js +0 -21
  93. package/dist/cjs/data-structures/graph/index.js.map +0 -1
  94. package/dist/cjs/data-structures/graph/map-graph.js +0 -108
  95. package/dist/cjs/data-structures/graph/map-graph.js.map +0 -1
  96. package/dist/cjs/data-structures/graph/undirected-graph.js +0 -425
  97. package/dist/cjs/data-structures/graph/undirected-graph.js.map +0 -1
  98. package/dist/cjs/data-structures/hash/hash-map.js +0 -693
  99. package/dist/cjs/data-structures/hash/hash-map.js.map +0 -1
  100. package/dist/cjs/data-structures/hash/index.js +0 -18
  101. package/dist/cjs/data-structures/hash/index.js.map +0 -1
  102. package/dist/cjs/data-structures/heap/heap.d.ts +0 -503
  103. package/dist/cjs/data-structures/heap/heap.js +0 -902
  104. package/dist/cjs/data-structures/heap/heap.js.map +0 -1
  105. package/dist/cjs/data-structures/heap/index.js +0 -20
  106. package/dist/cjs/data-structures/heap/index.js.map +0 -1
  107. package/dist/cjs/data-structures/heap/max-heap.js +0 -41
  108. package/dist/cjs/data-structures/heap/max-heap.js.map +0 -1
  109. package/dist/cjs/data-structures/heap/min-heap.js +0 -32
  110. package/dist/cjs/data-structures/heap/min-heap.js.map +0 -1
  111. package/dist/cjs/data-structures/index.js +0 -29
  112. package/dist/cjs/data-structures/index.js.map +0 -1
  113. package/dist/cjs/data-structures/linked-list/doubly-linked-list.js +0 -1112
  114. package/dist/cjs/data-structures/linked-list/doubly-linked-list.js.map +0 -1
  115. package/dist/cjs/data-structures/linked-list/index.js +0 -20
  116. package/dist/cjs/data-structures/linked-list/index.js.map +0 -1
  117. package/dist/cjs/data-structures/linked-list/singly-linked-list.d.ts +0 -451
  118. package/dist/cjs/data-structures/linked-list/singly-linked-list.js +0 -851
  119. package/dist/cjs/data-structures/linked-list/singly-linked-list.js.map +0 -1
  120. package/dist/cjs/data-structures/linked-list/skip-linked-list.js +0 -145
  121. package/dist/cjs/data-structures/linked-list/skip-linked-list.js.map +0 -1
  122. package/dist/cjs/data-structures/matrix/index.js +0 -19
  123. package/dist/cjs/data-structures/matrix/index.js.map +0 -1
  124. package/dist/cjs/data-structures/matrix/matrix.js +0 -449
  125. package/dist/cjs/data-structures/matrix/matrix.js.map +0 -1
  126. package/dist/cjs/data-structures/matrix/navigator.js +0 -112
  127. package/dist/cjs/data-structures/matrix/navigator.js.map +0 -1
  128. package/dist/cjs/data-structures/priority-queue/index.js +0 -20
  129. package/dist/cjs/data-structures/priority-queue/index.js.map +0 -1
  130. package/dist/cjs/data-structures/priority-queue/max-priority-queue.js +0 -35
  131. package/dist/cjs/data-structures/priority-queue/max-priority-queue.js.map +0 -1
  132. package/dist/cjs/data-structures/priority-queue/min-priority-queue.js +0 -25
  133. package/dist/cjs/data-structures/priority-queue/min-priority-queue.js.map +0 -1
  134. package/dist/cjs/data-structures/priority-queue/priority-queue.js +0 -21
  135. package/dist/cjs/data-structures/priority-queue/priority-queue.js.map +0 -1
  136. package/dist/cjs/data-structures/queue/deque.js +0 -880
  137. package/dist/cjs/data-structures/queue/deque.js.map +0 -1
  138. package/dist/cjs/data-structures/queue/index.js +0 -19
  139. package/dist/cjs/data-structures/queue/index.js.map +0 -1
  140. package/dist/cjs/data-structures/queue/queue.js +0 -474
  141. package/dist/cjs/data-structures/queue/queue.js.map +0 -1
  142. package/dist/cjs/data-structures/stack/index.js +0 -18
  143. package/dist/cjs/data-structures/stack/index.js.map +0 -1
  144. package/dist/cjs/data-structures/stack/stack.js +0 -402
  145. package/dist/cjs/data-structures/stack/stack.js.map +0 -1
  146. package/dist/cjs/data-structures/tree/index.js +0 -18
  147. package/dist/cjs/data-structures/tree/index.js.map +0 -1
  148. package/dist/cjs/data-structures/tree/tree.js +0 -108
  149. package/dist/cjs/data-structures/tree/tree.js.map +0 -1
  150. package/dist/cjs/data-structures/trie/index.js +0 -18
  151. package/dist/cjs/data-structures/trie/index.js.map +0 -1
  152. package/dist/cjs/data-structures/trie/trie.js +0 -611
  153. package/dist/cjs/data-structures/trie/trie.js.map +0 -1
  154. package/dist/cjs/index.js +0 -22
  155. package/dist/cjs/index.js.map +0 -1
  156. package/dist/cjs/interfaces/binary-tree.d.ts +0 -59
  157. package/dist/cjs/interfaces/binary-tree.js +0 -3
  158. package/dist/cjs/interfaces/binary-tree.js.map +0 -1
  159. package/dist/cjs/interfaces/doubly-linked-list.js +0 -3
  160. package/dist/cjs/interfaces/doubly-linked-list.js.map +0 -1
  161. package/dist/cjs/interfaces/graph.js +0 -3
  162. package/dist/cjs/interfaces/graph.js.map +0 -1
  163. package/dist/cjs/interfaces/heap.js +0 -3
  164. package/dist/cjs/interfaces/heap.js.map +0 -1
  165. package/dist/cjs/interfaces/index.js +0 -25
  166. package/dist/cjs/interfaces/index.js.map +0 -1
  167. package/dist/cjs/interfaces/navigator.js +0 -3
  168. package/dist/cjs/interfaces/navigator.js.map +0 -1
  169. package/dist/cjs/interfaces/priority-queue.js +0 -3
  170. package/dist/cjs/interfaces/priority-queue.js.map +0 -1
  171. package/dist/cjs/interfaces/segment-tree.js +0 -3
  172. package/dist/cjs/interfaces/segment-tree.js.map +0 -1
  173. package/dist/cjs/interfaces/singly-linked-list.js +0 -3
  174. package/dist/cjs/interfaces/singly-linked-list.js.map +0 -1
  175. package/dist/cjs/types/common.js +0 -3
  176. package/dist/cjs/types/common.js.map +0 -1
  177. package/dist/cjs/types/data-structures/base/base.js +0 -3
  178. package/dist/cjs/types/data-structures/base/base.js.map +0 -1
  179. package/dist/cjs/types/data-structures/base/index.js +0 -18
  180. package/dist/cjs/types/data-structures/base/index.js.map +0 -1
  181. package/dist/cjs/types/data-structures/binary-tree/avl-tree-counter.js +0 -3
  182. package/dist/cjs/types/data-structures/binary-tree/avl-tree-counter.js.map +0 -1
  183. package/dist/cjs/types/data-structures/binary-tree/avl-tree-multi-map.js +0 -3
  184. package/dist/cjs/types/data-structures/binary-tree/avl-tree-multi-map.js.map +0 -1
  185. package/dist/cjs/types/data-structures/binary-tree/avl-tree.js +0 -3
  186. package/dist/cjs/types/data-structures/binary-tree/avl-tree.js.map +0 -1
  187. package/dist/cjs/types/data-structures/binary-tree/binary-indexed-tree.js +0 -3
  188. package/dist/cjs/types/data-structures/binary-tree/binary-indexed-tree.js.map +0 -1
  189. package/dist/cjs/types/data-structures/binary-tree/binary-tree.js +0 -3
  190. package/dist/cjs/types/data-structures/binary-tree/binary-tree.js.map +0 -1
  191. package/dist/cjs/types/data-structures/binary-tree/bst.js +0 -3
  192. package/dist/cjs/types/data-structures/binary-tree/bst.js.map +0 -1
  193. package/dist/cjs/types/data-structures/binary-tree/index.js +0 -26
  194. package/dist/cjs/types/data-structures/binary-tree/index.js.map +0 -1
  195. package/dist/cjs/types/data-structures/binary-tree/red-black-tree.js +0 -3
  196. package/dist/cjs/types/data-structures/binary-tree/red-black-tree.js.map +0 -1
  197. package/dist/cjs/types/data-structures/binary-tree/segment-tree.js +0 -3
  198. package/dist/cjs/types/data-structures/binary-tree/segment-tree.js.map +0 -1
  199. package/dist/cjs/types/data-structures/binary-tree/tree-counter.js +0 -3
  200. package/dist/cjs/types/data-structures/binary-tree/tree-counter.js.map +0 -1
  201. package/dist/cjs/types/data-structures/binary-tree/tree-multi-map.js +0 -3
  202. package/dist/cjs/types/data-structures/binary-tree/tree-multi-map.js.map +0 -1
  203. package/dist/cjs/types/data-structures/graph/abstract-graph.js +0 -3
  204. package/dist/cjs/types/data-structures/graph/abstract-graph.js.map +0 -1
  205. package/dist/cjs/types/data-structures/graph/directed-graph.js +0 -3
  206. package/dist/cjs/types/data-structures/graph/directed-graph.js.map +0 -1
  207. package/dist/cjs/types/data-structures/graph/index.js +0 -20
  208. package/dist/cjs/types/data-structures/graph/index.js.map +0 -1
  209. package/dist/cjs/types/data-structures/graph/map-graph.js +0 -3
  210. package/dist/cjs/types/data-structures/graph/map-graph.js.map +0 -1
  211. package/dist/cjs/types/data-structures/graph/undirected-graph.js +0 -3
  212. package/dist/cjs/types/data-structures/graph/undirected-graph.js.map +0 -1
  213. package/dist/cjs/types/data-structures/hash/hash-map.js +0 -3
  214. package/dist/cjs/types/data-structures/hash/hash-map.js.map +0 -1
  215. package/dist/cjs/types/data-structures/hash/index.js +0 -18
  216. package/dist/cjs/types/data-structures/hash/index.js.map +0 -1
  217. package/dist/cjs/types/data-structures/heap/heap.js +0 -3
  218. package/dist/cjs/types/data-structures/heap/heap.js.map +0 -1
  219. package/dist/cjs/types/data-structures/heap/index.js +0 -18
  220. package/dist/cjs/types/data-structures/heap/index.js.map +0 -1
  221. package/dist/cjs/types/data-structures/heap/max-heap.js +0 -3
  222. package/dist/cjs/types/data-structures/heap/max-heap.js.map +0 -1
  223. package/dist/cjs/types/data-structures/heap/min-heap.js +0 -3
  224. package/dist/cjs/types/data-structures/heap/min-heap.js.map +0 -1
  225. package/dist/cjs/types/data-structures/index.js +0 -29
  226. package/dist/cjs/types/data-structures/index.js.map +0 -1
  227. package/dist/cjs/types/data-structures/linked-list/doubly-linked-list.js +0 -3
  228. package/dist/cjs/types/data-structures/linked-list/doubly-linked-list.js.map +0 -1
  229. package/dist/cjs/types/data-structures/linked-list/index.js +0 -20
  230. package/dist/cjs/types/data-structures/linked-list/index.js.map +0 -1
  231. package/dist/cjs/types/data-structures/linked-list/singly-linked-list.js +0 -3
  232. package/dist/cjs/types/data-structures/linked-list/singly-linked-list.js.map +0 -1
  233. package/dist/cjs/types/data-structures/linked-list/skip-linked-list.js +0 -3
  234. package/dist/cjs/types/data-structures/linked-list/skip-linked-list.js.map +0 -1
  235. package/dist/cjs/types/data-structures/matrix/index.js +0 -19
  236. package/dist/cjs/types/data-structures/matrix/index.js.map +0 -1
  237. package/dist/cjs/types/data-structures/matrix/matrix.js +0 -3
  238. package/dist/cjs/types/data-structures/matrix/matrix.js.map +0 -1
  239. package/dist/cjs/types/data-structures/matrix/navigator.js +0 -3
  240. package/dist/cjs/types/data-structures/matrix/navigator.js.map +0 -1
  241. package/dist/cjs/types/data-structures/priority-queue/index.js +0 -20
  242. package/dist/cjs/types/data-structures/priority-queue/index.js.map +0 -1
  243. package/dist/cjs/types/data-structures/priority-queue/max-priority-queue.js +0 -3
  244. package/dist/cjs/types/data-structures/priority-queue/max-priority-queue.js.map +0 -1
  245. package/dist/cjs/types/data-structures/priority-queue/min-priority-queue.js +0 -3
  246. package/dist/cjs/types/data-structures/priority-queue/min-priority-queue.js.map +0 -1
  247. package/dist/cjs/types/data-structures/priority-queue/priority-queue.js +0 -3
  248. package/dist/cjs/types/data-structures/priority-queue/priority-queue.js.map +0 -1
  249. package/dist/cjs/types/data-structures/queue/deque.js +0 -3
  250. package/dist/cjs/types/data-structures/queue/deque.js.map +0 -1
  251. package/dist/cjs/types/data-structures/queue/index.js +0 -19
  252. package/dist/cjs/types/data-structures/queue/index.js.map +0 -1
  253. package/dist/cjs/types/data-structures/queue/queue.js +0 -3
  254. package/dist/cjs/types/data-structures/queue/queue.js.map +0 -1
  255. package/dist/cjs/types/data-structures/stack/index.js +0 -18
  256. package/dist/cjs/types/data-structures/stack/index.js.map +0 -1
  257. package/dist/cjs/types/data-structures/stack/stack.js +0 -3
  258. package/dist/cjs/types/data-structures/stack/stack.js.map +0 -1
  259. package/dist/cjs/types/data-structures/tree/index.js +0 -18
  260. package/dist/cjs/types/data-structures/tree/index.js.map +0 -1
  261. package/dist/cjs/types/data-structures/tree/tree.js +0 -3
  262. package/dist/cjs/types/data-structures/tree/tree.js.map +0 -1
  263. package/dist/cjs/types/data-structures/trie/index.js +0 -18
  264. package/dist/cjs/types/data-structures/trie/index.js.map +0 -1
  265. package/dist/cjs/types/data-structures/trie/trie.js +0 -3
  266. package/dist/cjs/types/data-structures/trie/trie.js.map +0 -1
  267. package/dist/cjs/types/index.js +0 -20
  268. package/dist/cjs/types/index.js.map +0 -1
  269. package/dist/cjs/types/utils/index.js +0 -19
  270. package/dist/cjs/types/utils/index.js.map +0 -1
  271. package/dist/cjs/types/utils/utils.js +0 -3
  272. package/dist/cjs/types/utils/utils.js.map +0 -1
  273. package/dist/cjs/types/utils/validate-type.js +0 -3
  274. package/dist/cjs/types/utils/validate-type.js.map +0 -1
  275. package/dist/cjs/utils/index.js +0 -19
  276. package/dist/cjs/utils/index.js.map +0 -1
  277. package/dist/cjs/utils/number.js +0 -24
  278. package/dist/cjs/utils/number.js.map +0 -1
  279. package/dist/cjs/utils/utils.js +0 -354
  280. package/dist/cjs/utils/utils.js.map +0 -1
  281. package/dist/esm/common/index.d.ts +0 -12
  282. package/dist/esm/common/index.js +0 -29
  283. package/dist/esm/common/index.js.map +0 -1
  284. package/dist/esm/data-structures/base/index.d.ts +0 -2
  285. package/dist/esm/data-structures/base/index.js +0 -3
  286. package/dist/esm/data-structures/base/index.js.map +0 -1
  287. package/dist/esm/data-structures/base/iterable-element-base.d.ts +0 -219
  288. package/dist/esm/data-structures/base/iterable-element-base.js +0 -247
  289. package/dist/esm/data-structures/base/iterable-element-base.js.map +0 -1
  290. package/dist/esm/data-structures/base/iterable-entry-base.d.ts +0 -144
  291. package/dist/esm/data-structures/base/iterable-entry-base.js +0 -180
  292. package/dist/esm/data-structures/base/iterable-entry-base.js.map +0 -1
  293. package/dist/esm/data-structures/base/linear-base.d.ts +0 -335
  294. package/dist/esm/data-structures/base/linear-base.js +0 -412
  295. package/dist/esm/data-structures/base/linear-base.js.map +0 -1
  296. package/dist/esm/data-structures/binary-tree/avl-tree-counter.d.ts +0 -182
  297. package/dist/esm/data-structures/binary-tree/avl-tree-counter.js +0 -369
  298. package/dist/esm/data-structures/binary-tree/avl-tree-counter.js.map +0 -1
  299. package/dist/esm/data-structures/binary-tree/avl-tree-multi-map.js +0 -244
  300. package/dist/esm/data-structures/binary-tree/avl-tree-multi-map.js.map +0 -1
  301. package/dist/esm/data-structures/binary-tree/avl-tree.js +0 -607
  302. package/dist/esm/data-structures/binary-tree/avl-tree.js.map +0 -1
  303. package/dist/esm/data-structures/binary-tree/binary-indexed-tree.d.ts +0 -174
  304. package/dist/esm/data-structures/binary-tree/binary-indexed-tree.js +0 -296
  305. package/dist/esm/data-structures/binary-tree/binary-indexed-tree.js.map +0 -1
  306. package/dist/esm/data-structures/binary-tree/binary-tree.js +0 -1922
  307. package/dist/esm/data-structures/binary-tree/binary-tree.js.map +0 -1
  308. package/dist/esm/data-structures/binary-tree/bst.js +0 -901
  309. package/dist/esm/data-structures/binary-tree/bst.js.map +0 -1
  310. package/dist/esm/data-structures/binary-tree/index.d.ts +0 -10
  311. package/dist/esm/data-structures/binary-tree/index.js +0 -11
  312. package/dist/esm/data-structures/binary-tree/index.js.map +0 -1
  313. package/dist/esm/data-structures/binary-tree/red-black-tree.js +0 -540
  314. package/dist/esm/data-structures/binary-tree/red-black-tree.js.map +0 -1
  315. package/dist/esm/data-structures/binary-tree/segment-tree.d.ts +0 -160
  316. package/dist/esm/data-structures/binary-tree/segment-tree.js +0 -295
  317. package/dist/esm/data-structures/binary-tree/segment-tree.js.map +0 -1
  318. package/dist/esm/data-structures/binary-tree/tree-counter.d.ts +0 -190
  319. package/dist/esm/data-structures/binary-tree/tree-counter.js +0 -412
  320. package/dist/esm/data-structures/binary-tree/tree-counter.js.map +0 -1
  321. package/dist/esm/data-structures/binary-tree/tree-multi-map.d.ts +0 -270
  322. package/dist/esm/data-structures/binary-tree/tree-multi-map.js +0 -378
  323. package/dist/esm/data-structures/binary-tree/tree-multi-map.js.map +0 -1
  324. package/dist/esm/data-structures/graph/abstract-graph.d.ts +0 -340
  325. package/dist/esm/data-structures/graph/abstract-graph.js +0 -892
  326. package/dist/esm/data-structures/graph/abstract-graph.js.map +0 -1
  327. package/dist/esm/data-structures/graph/directed-graph.d.ts +0 -207
  328. package/dist/esm/data-structures/graph/directed-graph.js +0 -521
  329. package/dist/esm/data-structures/graph/directed-graph.js.map +0 -1
  330. package/dist/esm/data-structures/graph/index.d.ts +0 -4
  331. package/dist/esm/data-structures/graph/index.js +0 -5
  332. package/dist/esm/data-structures/graph/index.js.map +0 -1
  333. package/dist/esm/data-structures/graph/map-graph.d.ts +0 -78
  334. package/dist/esm/data-structures/graph/map-graph.js +0 -105
  335. package/dist/esm/data-structures/graph/map-graph.js.map +0 -1
  336. package/dist/esm/data-structures/graph/undirected-graph.d.ts +0 -188
  337. package/dist/esm/data-structures/graph/undirected-graph.js +0 -418
  338. package/dist/esm/data-structures/graph/undirected-graph.js.map +0 -1
  339. package/dist/esm/data-structures/hash/hash-map.d.ts +0 -345
  340. package/dist/esm/data-structures/hash/hash-map.js +0 -691
  341. package/dist/esm/data-structures/hash/hash-map.js.map +0 -1
  342. package/dist/esm/data-structures/hash/index.d.ts +0 -1
  343. package/dist/esm/data-structures/hash/index.js +0 -2
  344. package/dist/esm/data-structures/hash/index.js.map +0 -1
  345. package/dist/esm/data-structures/heap/heap.js +0 -894
  346. package/dist/esm/data-structures/heap/heap.js.map +0 -1
  347. package/dist/esm/data-structures/heap/index.d.ts +0 -3
  348. package/dist/esm/data-structures/heap/index.js +0 -4
  349. package/dist/esm/data-structures/heap/index.js.map +0 -1
  350. package/dist/esm/data-structures/heap/max-heap.d.ts +0 -32
  351. package/dist/esm/data-structures/heap/max-heap.js +0 -40
  352. package/dist/esm/data-structures/heap/max-heap.js.map +0 -1
  353. package/dist/esm/data-structures/heap/min-heap.d.ts +0 -33
  354. package/dist/esm/data-structures/heap/min-heap.js +0 -28
  355. package/dist/esm/data-structures/heap/min-heap.js.map +0 -1
  356. package/dist/esm/data-structures/index.d.ts +0 -12
  357. package/dist/esm/data-structures/index.js +0 -13
  358. package/dist/esm/data-structures/index.js.map +0 -1
  359. package/dist/esm/data-structures/linked-list/doubly-linked-list.d.ts +0 -769
  360. package/dist/esm/data-structures/linked-list/doubly-linked-list.js +0 -1109
  361. package/dist/esm/data-structures/linked-list/doubly-linked-list.js.map +0 -1
  362. package/dist/esm/data-structures/linked-list/index.d.ts +0 -3
  363. package/dist/esm/data-structures/linked-list/index.js +0 -4
  364. package/dist/esm/data-structures/linked-list/index.js.map +0 -1
  365. package/dist/esm/data-structures/linked-list/singly-linked-list.js +0 -847
  366. package/dist/esm/data-structures/linked-list/singly-linked-list.js.map +0 -1
  367. package/dist/esm/data-structures/linked-list/skip-linked-list.d.ts +0 -27
  368. package/dist/esm/data-structures/linked-list/skip-linked-list.js +0 -143
  369. package/dist/esm/data-structures/linked-list/skip-linked-list.js.map +0 -1
  370. package/dist/esm/data-structures/matrix/index.d.ts +0 -2
  371. package/dist/esm/data-structures/matrix/index.js +0 -3
  372. package/dist/esm/data-structures/matrix/index.js.map +0 -1
  373. package/dist/esm/data-structures/matrix/matrix.d.ts +0 -168
  374. package/dist/esm/data-structures/matrix/matrix.js +0 -444
  375. package/dist/esm/data-structures/matrix/matrix.js.map +0 -1
  376. package/dist/esm/data-structures/matrix/navigator.d.ts +0 -55
  377. package/dist/esm/data-structures/matrix/navigator.js +0 -114
  378. package/dist/esm/data-structures/matrix/navigator.js.map +0 -1
  379. package/dist/esm/data-structures/priority-queue/index.d.ts +0 -3
  380. package/dist/esm/data-structures/priority-queue/index.js +0 -4
  381. package/dist/esm/data-structures/priority-queue/index.js.map +0 -1
  382. package/dist/esm/data-structures/priority-queue/max-priority-queue.d.ts +0 -27
  383. package/dist/esm/data-structures/priority-queue/max-priority-queue.js +0 -34
  384. package/dist/esm/data-structures/priority-queue/max-priority-queue.js.map +0 -1
  385. package/dist/esm/data-structures/priority-queue/min-priority-queue.d.ts +0 -26
  386. package/dist/esm/data-structures/priority-queue/min-priority-queue.js +0 -21
  387. package/dist/esm/data-structures/priority-queue/min-priority-queue.js.map +0 -1
  388. package/dist/esm/data-structures/priority-queue/priority-queue.d.ts +0 -15
  389. package/dist/esm/data-structures/priority-queue/priority-queue.js +0 -17
  390. package/dist/esm/data-structures/priority-queue/priority-queue.js.map +0 -1
  391. package/dist/esm/data-structures/queue/deque.d.ts +0 -431
  392. package/dist/esm/data-structures/queue/deque.js +0 -880
  393. package/dist/esm/data-structures/queue/deque.js.map +0 -1
  394. package/dist/esm/data-structures/queue/index.d.ts +0 -2
  395. package/dist/esm/data-structures/queue/index.js +0 -3
  396. package/dist/esm/data-structures/queue/index.js.map +0 -1
  397. package/dist/esm/data-structures/queue/queue.d.ts +0 -308
  398. package/dist/esm/data-structures/queue/queue.js +0 -467
  399. package/dist/esm/data-structures/queue/queue.js.map +0 -1
  400. package/dist/esm/data-structures/stack/index.d.ts +0 -1
  401. package/dist/esm/data-structures/stack/index.js +0 -2
  402. package/dist/esm/data-structures/stack/index.js.map +0 -1
  403. package/dist/esm/data-structures/stack/stack.d.ts +0 -306
  404. package/dist/esm/data-structures/stack/stack.js +0 -398
  405. package/dist/esm/data-structures/stack/stack.js.map +0 -1
  406. package/dist/esm/data-structures/tree/index.d.ts +0 -1
  407. package/dist/esm/data-structures/tree/index.js +0 -2
  408. package/dist/esm/data-structures/tree/index.js.map +0 -1
  409. package/dist/esm/data-structures/tree/tree.d.ts +0 -62
  410. package/dist/esm/data-structures/tree/tree.js +0 -107
  411. package/dist/esm/data-structures/tree/tree.js.map +0 -1
  412. package/dist/esm/data-structures/trie/index.d.ts +0 -1
  413. package/dist/esm/data-structures/trie/index.js +0 -2
  414. package/dist/esm/data-structures/trie/index.js.map +0 -1
  415. package/dist/esm/data-structures/trie/trie.d.ts +0 -350
  416. package/dist/esm/data-structures/trie/trie.js +0 -613
  417. package/dist/esm/data-structures/trie/trie.js.map +0 -1
  418. package/dist/esm/index.d.ts +0 -5
  419. package/dist/esm/index.js +0 -6
  420. package/dist/esm/index.js.map +0 -1
  421. package/dist/esm/interfaces/binary-tree.js +0 -2
  422. package/dist/esm/interfaces/binary-tree.js.map +0 -1
  423. package/dist/esm/interfaces/doubly-linked-list.d.ts +0 -1
  424. package/dist/esm/interfaces/doubly-linked-list.js +0 -2
  425. package/dist/esm/interfaces/doubly-linked-list.js.map +0 -1
  426. package/dist/esm/interfaces/graph.d.ts +0 -21
  427. package/dist/esm/interfaces/graph.js +0 -2
  428. package/dist/esm/interfaces/graph.js.map +0 -1
  429. package/dist/esm/interfaces/heap.d.ts +0 -1
  430. package/dist/esm/interfaces/heap.js +0 -2
  431. package/dist/esm/interfaces/heap.js.map +0 -1
  432. package/dist/esm/interfaces/index.d.ts +0 -8
  433. package/dist/esm/interfaces/index.js +0 -9
  434. package/dist/esm/interfaces/index.js.map +0 -1
  435. package/dist/esm/interfaces/navigator.d.ts +0 -1
  436. package/dist/esm/interfaces/navigator.js +0 -2
  437. package/dist/esm/interfaces/navigator.js.map +0 -1
  438. package/dist/esm/interfaces/priority-queue.d.ts +0 -1
  439. package/dist/esm/interfaces/priority-queue.js +0 -2
  440. package/dist/esm/interfaces/priority-queue.js.map +0 -1
  441. package/dist/esm/interfaces/segment-tree.d.ts +0 -1
  442. package/dist/esm/interfaces/segment-tree.js +0 -2
  443. package/dist/esm/interfaces/segment-tree.js.map +0 -1
  444. package/dist/esm/interfaces/singly-linked-list.d.ts +0 -1
  445. package/dist/esm/interfaces/singly-linked-list.js +0 -2
  446. package/dist/esm/interfaces/singly-linked-list.js.map +0 -1
  447. package/dist/esm/types/common.d.ts +0 -15
  448. package/dist/esm/types/common.js +0 -2
  449. package/dist/esm/types/common.js.map +0 -1
  450. package/dist/esm/types/data-structures/base/base.d.ts +0 -13
  451. package/dist/esm/types/data-structures/base/base.js +0 -2
  452. package/dist/esm/types/data-structures/base/base.js.map +0 -1
  453. package/dist/esm/types/data-structures/base/index.d.ts +0 -1
  454. package/dist/esm/types/data-structures/base/index.js +0 -2
  455. package/dist/esm/types/data-structures/base/index.js.map +0 -1
  456. package/dist/esm/types/data-structures/binary-tree/avl-tree-counter.d.ts +0 -2
  457. package/dist/esm/types/data-structures/binary-tree/avl-tree-counter.js +0 -2
  458. package/dist/esm/types/data-structures/binary-tree/avl-tree-counter.js.map +0 -1
  459. package/dist/esm/types/data-structures/binary-tree/avl-tree-multi-map.d.ts +0 -2
  460. package/dist/esm/types/data-structures/binary-tree/avl-tree-multi-map.js +0 -2
  461. package/dist/esm/types/data-structures/binary-tree/avl-tree-multi-map.js.map +0 -1
  462. package/dist/esm/types/data-structures/binary-tree/avl-tree.d.ts +0 -2
  463. package/dist/esm/types/data-structures/binary-tree/avl-tree.js +0 -2
  464. package/dist/esm/types/data-structures/binary-tree/avl-tree.js.map +0 -1
  465. package/dist/esm/types/data-structures/binary-tree/binary-indexed-tree.d.ts +0 -1
  466. package/dist/esm/types/data-structures/binary-tree/binary-indexed-tree.js +0 -2
  467. package/dist/esm/types/data-structures/binary-tree/binary-indexed-tree.js.map +0 -1
  468. package/dist/esm/types/data-structures/binary-tree/binary-tree.d.ts +0 -29
  469. package/dist/esm/types/data-structures/binary-tree/binary-tree.js +0 -2
  470. package/dist/esm/types/data-structures/binary-tree/binary-tree.js.map +0 -1
  471. package/dist/esm/types/data-structures/binary-tree/bst.d.ts +0 -12
  472. package/dist/esm/types/data-structures/binary-tree/bst.js +0 -2
  473. package/dist/esm/types/data-structures/binary-tree/bst.js.map +0 -1
  474. package/dist/esm/types/data-structures/binary-tree/index.d.ts +0 -9
  475. package/dist/esm/types/data-structures/binary-tree/index.js +0 -10
  476. package/dist/esm/types/data-structures/binary-tree/index.js.map +0 -1
  477. package/dist/esm/types/data-structures/binary-tree/red-black-tree.d.ts +0 -3
  478. package/dist/esm/types/data-structures/binary-tree/red-black-tree.js +0 -2
  479. package/dist/esm/types/data-structures/binary-tree/red-black-tree.js.map +0 -1
  480. package/dist/esm/types/data-structures/binary-tree/segment-tree.d.ts +0 -1
  481. package/dist/esm/types/data-structures/binary-tree/segment-tree.js +0 -2
  482. package/dist/esm/types/data-structures/binary-tree/segment-tree.js.map +0 -1
  483. package/dist/esm/types/data-structures/binary-tree/tree-counter.d.ts +0 -2
  484. package/dist/esm/types/data-structures/binary-tree/tree-counter.js +0 -2
  485. package/dist/esm/types/data-structures/binary-tree/tree-counter.js.map +0 -1
  486. package/dist/esm/types/data-structures/binary-tree/tree-multi-map.d.ts +0 -2
  487. package/dist/esm/types/data-structures/binary-tree/tree-multi-map.js +0 -2
  488. package/dist/esm/types/data-structures/binary-tree/tree-multi-map.js.map +0 -1
  489. package/dist/esm/types/data-structures/graph/abstract-graph.d.ts +0 -14
  490. package/dist/esm/types/data-structures/graph/abstract-graph.js +0 -2
  491. package/dist/esm/types/data-structures/graph/abstract-graph.js.map +0 -1
  492. package/dist/esm/types/data-structures/graph/directed-graph.d.ts +0 -1
  493. package/dist/esm/types/data-structures/graph/directed-graph.js +0 -2
  494. package/dist/esm/types/data-structures/graph/directed-graph.js.map +0 -1
  495. package/dist/esm/types/data-structures/graph/index.d.ts +0 -3
  496. package/dist/esm/types/data-structures/graph/index.js +0 -4
  497. package/dist/esm/types/data-structures/graph/index.js.map +0 -1
  498. package/dist/esm/types/data-structures/graph/map-graph.d.ts +0 -1
  499. package/dist/esm/types/data-structures/graph/map-graph.js +0 -2
  500. package/dist/esm/types/data-structures/graph/map-graph.js.map +0 -1
  501. package/dist/esm/types/data-structures/graph/undirected-graph.d.ts +0 -1
  502. package/dist/esm/types/data-structures/graph/undirected-graph.js +0 -2
  503. package/dist/esm/types/data-structures/graph/undirected-graph.js.map +0 -1
  504. package/dist/esm/types/data-structures/hash/hash-map.d.ts +0 -19
  505. package/dist/esm/types/data-structures/hash/hash-map.js +0 -2
  506. package/dist/esm/types/data-structures/hash/hash-map.js.map +0 -1
  507. package/dist/esm/types/data-structures/hash/index.d.ts +0 -2
  508. package/dist/esm/types/data-structures/hash/index.js +0 -2
  509. package/dist/esm/types/data-structures/hash/index.js.map +0 -1
  510. package/dist/esm/types/data-structures/heap/heap.d.ts +0 -5
  511. package/dist/esm/types/data-structures/heap/heap.js +0 -2
  512. package/dist/esm/types/data-structures/heap/heap.js.map +0 -1
  513. package/dist/esm/types/data-structures/heap/index.d.ts +0 -1
  514. package/dist/esm/types/data-structures/heap/index.js +0 -2
  515. package/dist/esm/types/data-structures/heap/index.js.map +0 -1
  516. package/dist/esm/types/data-structures/heap/max-heap.d.ts +0 -1
  517. package/dist/esm/types/data-structures/heap/max-heap.js +0 -2
  518. package/dist/esm/types/data-structures/heap/max-heap.js.map +0 -1
  519. package/dist/esm/types/data-structures/heap/min-heap.d.ts +0 -1
  520. package/dist/esm/types/data-structures/heap/min-heap.js +0 -2
  521. package/dist/esm/types/data-structures/heap/min-heap.js.map +0 -1
  522. package/dist/esm/types/data-structures/index.d.ts +0 -12
  523. package/dist/esm/types/data-structures/index.js +0 -13
  524. package/dist/esm/types/data-structures/index.js.map +0 -1
  525. package/dist/esm/types/data-structures/linked-list/doubly-linked-list.d.ts +0 -2
  526. package/dist/esm/types/data-structures/linked-list/doubly-linked-list.js +0 -2
  527. package/dist/esm/types/data-structures/linked-list/doubly-linked-list.js.map +0 -1
  528. package/dist/esm/types/data-structures/linked-list/index.d.ts +0 -3
  529. package/dist/esm/types/data-structures/linked-list/index.js +0 -4
  530. package/dist/esm/types/data-structures/linked-list/index.js.map +0 -1
  531. package/dist/esm/types/data-structures/linked-list/singly-linked-list.d.ts +0 -2
  532. package/dist/esm/types/data-structures/linked-list/singly-linked-list.js +0 -2
  533. package/dist/esm/types/data-structures/linked-list/singly-linked-list.js.map +0 -1
  534. package/dist/esm/types/data-structures/linked-list/skip-linked-list.d.ts +0 -4
  535. package/dist/esm/types/data-structures/linked-list/skip-linked-list.js +0 -2
  536. package/dist/esm/types/data-structures/linked-list/skip-linked-list.js.map +0 -1
  537. package/dist/esm/types/data-structures/matrix/index.d.ts +0 -2
  538. package/dist/esm/types/data-structures/matrix/index.js +0 -3
  539. package/dist/esm/types/data-structures/matrix/index.js.map +0 -1
  540. package/dist/esm/types/data-structures/matrix/matrix.d.ts +0 -7
  541. package/dist/esm/types/data-structures/matrix/matrix.js +0 -2
  542. package/dist/esm/types/data-structures/matrix/matrix.js.map +0 -1
  543. package/dist/esm/types/data-structures/matrix/navigator.d.ts +0 -14
  544. package/dist/esm/types/data-structures/matrix/navigator.js +0 -2
  545. package/dist/esm/types/data-structures/matrix/navigator.js.map +0 -1
  546. package/dist/esm/types/data-structures/priority-queue/index.d.ts +0 -3
  547. package/dist/esm/types/data-structures/priority-queue/index.js +0 -4
  548. package/dist/esm/types/data-structures/priority-queue/index.js.map +0 -1
  549. package/dist/esm/types/data-structures/priority-queue/max-priority-queue.d.ts +0 -1
  550. package/dist/esm/types/data-structures/priority-queue/max-priority-queue.js +0 -2
  551. package/dist/esm/types/data-structures/priority-queue/max-priority-queue.js.map +0 -1
  552. package/dist/esm/types/data-structures/priority-queue/min-priority-queue.d.ts +0 -1
  553. package/dist/esm/types/data-structures/priority-queue/min-priority-queue.js +0 -2
  554. package/dist/esm/types/data-structures/priority-queue/min-priority-queue.js.map +0 -1
  555. package/dist/esm/types/data-structures/priority-queue/priority-queue.d.ts +0 -2
  556. package/dist/esm/types/data-structures/priority-queue/priority-queue.js +0 -2
  557. package/dist/esm/types/data-structures/priority-queue/priority-queue.js.map +0 -1
  558. package/dist/esm/types/data-structures/queue/deque.d.ts +0 -4
  559. package/dist/esm/types/data-structures/queue/deque.js +0 -2
  560. package/dist/esm/types/data-structures/queue/deque.js.map +0 -1
  561. package/dist/esm/types/data-structures/queue/index.d.ts +0 -2
  562. package/dist/esm/types/data-structures/queue/index.js +0 -3
  563. package/dist/esm/types/data-structures/queue/index.js.map +0 -1
  564. package/dist/esm/types/data-structures/queue/queue.d.ts +0 -4
  565. package/dist/esm/types/data-structures/queue/queue.js +0 -2
  566. package/dist/esm/types/data-structures/queue/queue.js.map +0 -1
  567. package/dist/esm/types/data-structures/stack/index.d.ts +0 -1
  568. package/dist/esm/types/data-structures/stack/index.js +0 -2
  569. package/dist/esm/types/data-structures/stack/index.js.map +0 -1
  570. package/dist/esm/types/data-structures/stack/stack.d.ts +0 -2
  571. package/dist/esm/types/data-structures/stack/stack.js +0 -2
  572. package/dist/esm/types/data-structures/stack/stack.js.map +0 -1
  573. package/dist/esm/types/data-structures/tree/index.d.ts +0 -1
  574. package/dist/esm/types/data-structures/tree/index.js +0 -2
  575. package/dist/esm/types/data-structures/tree/index.js.map +0 -1
  576. package/dist/esm/types/data-structures/tree/tree.d.ts +0 -1
  577. package/dist/esm/types/data-structures/tree/tree.js +0 -2
  578. package/dist/esm/types/data-structures/tree/tree.js.map +0 -1
  579. package/dist/esm/types/data-structures/trie/index.d.ts +0 -1
  580. package/dist/esm/types/data-structures/trie/index.js +0 -2
  581. package/dist/esm/types/data-structures/trie/index.js.map +0 -1
  582. package/dist/esm/types/data-structures/trie/trie.d.ts +0 -4
  583. package/dist/esm/types/data-structures/trie/trie.js +0 -2
  584. package/dist/esm/types/data-structures/trie/trie.js.map +0 -1
  585. package/dist/esm/types/index.d.ts +0 -3
  586. package/dist/esm/types/index.js +0 -4
  587. package/dist/esm/types/index.js.map +0 -1
  588. package/dist/esm/types/utils/index.d.ts +0 -2
  589. package/dist/esm/types/utils/index.js +0 -3
  590. package/dist/esm/types/utils/index.js.map +0 -1
  591. package/dist/esm/types/utils/utils.d.ts +0 -22
  592. package/dist/esm/types/utils/utils.js +0 -2
  593. package/dist/esm/types/utils/utils.js.map +0 -1
  594. package/dist/esm/types/utils/validate-type.d.ts +0 -19
  595. package/dist/esm/types/utils/validate-type.js +0 -2
  596. package/dist/esm/types/utils/validate-type.js.map +0 -1
  597. package/dist/esm/utils/index.d.ts +0 -2
  598. package/dist/esm/utils/index.js +0 -3
  599. package/dist/esm/utils/index.js.map +0 -1
  600. package/dist/esm/utils/number.d.ts +0 -14
  601. package/dist/esm/utils/number.js +0 -21
  602. package/dist/esm/utils/number.js.map +0 -1
  603. package/dist/esm/utils/utils.d.ts +0 -209
  604. package/dist/esm/utils/utils.js +0 -325
  605. package/dist/esm/utils/utils.js.map +0 -1
  606. package/test/integration/compile.js +0 -144
  607. package/test/integration/compile.mjs +0 -135
  608. package/test/integration/compile.ts +0 -171
  609. package/tsconfig-base.json +0 -24
  610. package/tsconfig-cjs.json +0 -14
  611. package/tsconfig-esm.json +0 -14
  612. /package/dist/{cjs → types}/common/index.d.ts +0 -0
  613. /package/dist/{cjs → types}/data-structures/base/index.d.ts +0 -0
  614. /package/dist/{cjs → types}/data-structures/base/iterable-element-base.d.ts +0 -0
  615. /package/dist/{cjs → types}/data-structures/base/iterable-entry-base.d.ts +0 -0
  616. /package/dist/{cjs → types}/data-structures/base/linear-base.d.ts +0 -0
  617. /package/dist/{cjs → types}/data-structures/binary-tree/binary-indexed-tree.d.ts +0 -0
  618. /package/dist/{cjs → types}/data-structures/binary-tree/index.d.ts +0 -0
  619. /package/dist/{cjs → types}/data-structures/binary-tree/segment-tree.d.ts +0 -0
  620. /package/dist/{cjs → types}/data-structures/graph/abstract-graph.d.ts +0 -0
  621. /package/dist/{cjs → types}/data-structures/graph/directed-graph.d.ts +0 -0
  622. /package/dist/{cjs → types}/data-structures/graph/index.d.ts +0 -0
  623. /package/dist/{cjs → types}/data-structures/graph/map-graph.d.ts +0 -0
  624. /package/dist/{cjs → types}/data-structures/graph/undirected-graph.d.ts +0 -0
  625. /package/dist/{cjs → types}/data-structures/hash/hash-map.d.ts +0 -0
  626. /package/dist/{cjs → types}/data-structures/hash/index.d.ts +0 -0
  627. /package/dist/{cjs → types}/data-structures/heap/index.d.ts +0 -0
  628. /package/dist/{cjs → types}/data-structures/heap/max-heap.d.ts +0 -0
  629. /package/dist/{cjs → types}/data-structures/heap/min-heap.d.ts +0 -0
  630. /package/dist/{cjs → types}/data-structures/index.d.ts +0 -0
  631. /package/dist/{cjs → types}/data-structures/linked-list/doubly-linked-list.d.ts +0 -0
  632. /package/dist/{cjs → types}/data-structures/linked-list/index.d.ts +0 -0
  633. /package/dist/{cjs → types}/data-structures/linked-list/skip-linked-list.d.ts +0 -0
  634. /package/dist/{cjs → types}/data-structures/matrix/index.d.ts +0 -0
  635. /package/dist/{cjs → types}/data-structures/matrix/matrix.d.ts +0 -0
  636. /package/dist/{cjs → types}/data-structures/matrix/navigator.d.ts +0 -0
  637. /package/dist/{cjs → types}/data-structures/priority-queue/index.d.ts +0 -0
  638. /package/dist/{cjs → types}/data-structures/priority-queue/max-priority-queue.d.ts +0 -0
  639. /package/dist/{cjs → types}/data-structures/priority-queue/min-priority-queue.d.ts +0 -0
  640. /package/dist/{cjs → types}/data-structures/priority-queue/priority-queue.d.ts +0 -0
  641. /package/dist/{cjs → types}/data-structures/queue/deque.d.ts +0 -0
  642. /package/dist/{cjs → types}/data-structures/queue/index.d.ts +0 -0
  643. /package/dist/{cjs → types}/data-structures/queue/queue.d.ts +0 -0
  644. /package/dist/{cjs → types}/data-structures/stack/index.d.ts +0 -0
  645. /package/dist/{cjs → types}/data-structures/stack/stack.d.ts +0 -0
  646. /package/dist/{cjs → types}/data-structures/tree/index.d.ts +0 -0
  647. /package/dist/{cjs → types}/data-structures/tree/tree.d.ts +0 -0
  648. /package/dist/{cjs → types}/data-structures/trie/index.d.ts +0 -0
  649. /package/dist/{cjs → types}/data-structures/trie/trie.d.ts +0 -0
  650. /package/dist/{cjs → types}/index.d.ts +0 -0
  651. /package/dist/{cjs → types}/interfaces/doubly-linked-list.d.ts +0 -0
  652. /package/dist/{cjs → types}/interfaces/graph.d.ts +0 -0
  653. /package/dist/{cjs → types}/interfaces/heap.d.ts +0 -0
  654. /package/dist/{cjs → types}/interfaces/index.d.ts +0 -0
  655. /package/dist/{cjs → types}/interfaces/navigator.d.ts +0 -0
  656. /package/dist/{cjs → types}/interfaces/priority-queue.d.ts +0 -0
  657. /package/dist/{cjs → types}/interfaces/segment-tree.d.ts +0 -0
  658. /package/dist/{cjs → types}/interfaces/singly-linked-list.d.ts +0 -0
  659. /package/dist/{cjs → types}/types/common.d.ts +0 -0
  660. /package/dist/{cjs → types}/types/data-structures/base/base.d.ts +0 -0
  661. /package/dist/{cjs → types}/types/data-structures/base/index.d.ts +0 -0
  662. /package/dist/{cjs → types}/types/data-structures/binary-tree/avl-tree-counter.d.ts +0 -0
  663. /package/dist/{cjs → types}/types/data-structures/binary-tree/avl-tree-multi-map.d.ts +0 -0
  664. /package/dist/{cjs → types}/types/data-structures/binary-tree/avl-tree.d.ts +0 -0
  665. /package/dist/{cjs → types}/types/data-structures/binary-tree/binary-indexed-tree.d.ts +0 -0
  666. /package/dist/{cjs → types}/types/data-structures/binary-tree/binary-tree.d.ts +0 -0
  667. /package/dist/{cjs → types}/types/data-structures/binary-tree/bst.d.ts +0 -0
  668. /package/dist/{cjs → types}/types/data-structures/binary-tree/index.d.ts +0 -0
  669. /package/dist/{cjs → types}/types/data-structures/binary-tree/red-black-tree.d.ts +0 -0
  670. /package/dist/{cjs → types}/types/data-structures/binary-tree/segment-tree.d.ts +0 -0
  671. /package/dist/{cjs → types}/types/data-structures/binary-tree/tree-counter.d.ts +0 -0
  672. /package/dist/{cjs → types}/types/data-structures/binary-tree/tree-multi-map.d.ts +0 -0
  673. /package/dist/{cjs → types}/types/data-structures/graph/abstract-graph.d.ts +0 -0
  674. /package/dist/{cjs → types}/types/data-structures/graph/directed-graph.d.ts +0 -0
  675. /package/dist/{cjs → types}/types/data-structures/graph/index.d.ts +0 -0
  676. /package/dist/{cjs → types}/types/data-structures/graph/map-graph.d.ts +0 -0
  677. /package/dist/{cjs → types}/types/data-structures/graph/undirected-graph.d.ts +0 -0
  678. /package/dist/{cjs → types}/types/data-structures/hash/hash-map.d.ts +0 -0
  679. /package/dist/{cjs → types}/types/data-structures/hash/index.d.ts +0 -0
  680. /package/dist/{cjs → types}/types/data-structures/heap/heap.d.ts +0 -0
  681. /package/dist/{cjs → types}/types/data-structures/heap/index.d.ts +0 -0
  682. /package/dist/{cjs → types}/types/data-structures/heap/max-heap.d.ts +0 -0
  683. /package/dist/{cjs → types}/types/data-structures/heap/min-heap.d.ts +0 -0
  684. /package/dist/{cjs → types}/types/data-structures/index.d.ts +0 -0
  685. /package/dist/{cjs → types}/types/data-structures/linked-list/doubly-linked-list.d.ts +0 -0
  686. /package/dist/{cjs → types}/types/data-structures/linked-list/index.d.ts +0 -0
  687. /package/dist/{cjs → types}/types/data-structures/linked-list/singly-linked-list.d.ts +0 -0
  688. /package/dist/{cjs → types}/types/data-structures/linked-list/skip-linked-list.d.ts +0 -0
  689. /package/dist/{cjs → types}/types/data-structures/matrix/index.d.ts +0 -0
  690. /package/dist/{cjs → types}/types/data-structures/matrix/matrix.d.ts +0 -0
  691. /package/dist/{cjs → types}/types/data-structures/matrix/navigator.d.ts +0 -0
  692. /package/dist/{cjs → types}/types/data-structures/priority-queue/index.d.ts +0 -0
  693. /package/dist/{cjs → types}/types/data-structures/priority-queue/max-priority-queue.d.ts +0 -0
  694. /package/dist/{cjs → types}/types/data-structures/priority-queue/min-priority-queue.d.ts +0 -0
  695. /package/dist/{cjs → types}/types/data-structures/priority-queue/priority-queue.d.ts +0 -0
  696. /package/dist/{cjs → types}/types/data-structures/queue/deque.d.ts +0 -0
  697. /package/dist/{cjs → types}/types/data-structures/queue/index.d.ts +0 -0
  698. /package/dist/{cjs → types}/types/data-structures/queue/queue.d.ts +0 -0
  699. /package/dist/{cjs → types}/types/data-structures/stack/index.d.ts +0 -0
  700. /package/dist/{cjs → types}/types/data-structures/stack/stack.d.ts +0 -0
  701. /package/dist/{cjs → types}/types/data-structures/tree/index.d.ts +0 -0
  702. /package/dist/{cjs → types}/types/data-structures/tree/tree.d.ts +0 -0
  703. /package/dist/{cjs → types}/types/data-structures/trie/index.d.ts +0 -0
  704. /package/dist/{cjs → types}/types/data-structures/trie/trie.d.ts +0 -0
  705. /package/dist/{cjs → types}/types/index.d.ts +0 -0
  706. /package/dist/{cjs → types}/types/utils/index.d.ts +0 -0
  707. /package/dist/{cjs → types}/types/utils/utils.d.ts +0 -0
  708. /package/dist/{cjs → types}/types/utils/validate-type.d.ts +0 -0
  709. /package/dist/{cjs → types}/utils/index.d.ts +0 -0
  710. /package/dist/{cjs → types}/utils/number.d.ts +0 -0
  711. /package/dist/{cjs → types}/utils/utils.d.ts +0 -0
@@ -1,897 +0,0 @@
1
- "use strict";
2
- /**
3
- * data-structure-typed
4
- *
5
- * @author Pablo Zeng
6
- * @copyright Copyright (c) 2022 Pablo Zeng <zrwusa@gmail.com>
7
- * @license MIT License
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.AbstractGraph = exports.AbstractEdge = exports.AbstractVertex = void 0;
11
- const utils_1 = require("../../utils");
12
- const base_1 = require("../base");
13
- const heap_1 = require("../heap");
14
- const queue_1 = require("../queue");
15
- class AbstractVertex {
16
- constructor(key, value) {
17
- this.key = key;
18
- this.value = value;
19
- }
20
- }
21
- exports.AbstractVertex = AbstractVertex;
22
- class AbstractEdge {
23
- constructor(weight, value) {
24
- this.weight = weight !== undefined ? weight : 1;
25
- this.value = value;
26
- this._hashCode = (0, utils_1.uuidV4)();
27
- }
28
- get hashCode() {
29
- return this._hashCode;
30
- }
31
- }
32
- exports.AbstractEdge = AbstractEdge;
33
- /**
34
- * Abstract graph over vertices and edges.
35
- * @template V - Vertex value type.
36
- * @template E - Edge value type.
37
- * @template VO - Concrete vertex subclass (extends AbstractVertex<V>).
38
- * @template EO - Concrete edge subclass (extends AbstractEdge<E>).
39
- * @remarks Time O(1), Space O(1)
40
- * @example examples will be generated by unit test
41
- */
42
- class AbstractGraph extends base_1.IterableEntryBase {
43
- /**
44
- * Construct a graph with runtime defaults.
45
- * @param options - `GraphOptions<V>` in `options.graph` (e.g. `vertexValueInitializer`, `defaultEdgeWeight`).
46
- * @remarks Time O(1), Space O(1)
47
- */
48
- constructor(options) {
49
- super();
50
- this._options = { defaultEdgeWeight: 1 };
51
- this._vertexMap = new Map();
52
- const graph = options === null || options === void 0 ? void 0 : options.graph;
53
- this._options = Object.assign({ defaultEdgeWeight: 1 }, (graph !== null && graph !== void 0 ? graph : {}));
54
- }
55
- get options() {
56
- return this._options;
57
- }
58
- get vertexMap() {
59
- return this._vertexMap;
60
- }
61
- set vertexMap(v) {
62
- this._vertexMap = v;
63
- }
64
- get size() {
65
- return this._vertexMap.size;
66
- }
67
- /**
68
- * Get vertex instance by key.
69
- * @param vertexKey - Vertex key.
70
- * @returns Vertex instance or `undefined`.
71
- * @remarks Time O(1), Space O(1)
72
- */
73
- getVertex(vertexKey) {
74
- return this._vertexMap.get(vertexKey) || undefined;
75
- }
76
- /**
77
- * Whether a vertex exists.
78
- * @param vertexOrKey - Vertex or key.
79
- * @returns `true` if present, otherwise `false`.
80
- * @remarks Time O(1) avg, Space O(1)
81
- */
82
- hasVertex(vertexOrKey) {
83
- return this._vertexMap.has(this._getVertexKey(vertexOrKey));
84
- }
85
- /**
86
- * Add a vertex by key/value or by pre-built vertex.
87
- * @param keyOrVertex - Vertex key or existing vertex instance.
88
- * @param value - Optional payload.
89
- * @returns `true` if inserted; `false` when key already exists.
90
- * @remarks Time O(1) avg, Space O(1)
91
- */
92
- addVertex(keyOrVertex, value) {
93
- if (keyOrVertex instanceof AbstractVertex) {
94
- return this._addVertex(keyOrVertex);
95
- }
96
- else {
97
- const newVertex = this.createVertex(keyOrVertex, value);
98
- return this._addVertex(newVertex);
99
- }
100
- }
101
- /**
102
- * Type guard: check if a value is a valid vertex key.
103
- * @param potentialKey - Value to test.
104
- * @returns `true` if string/number; else `false`.
105
- * @remarks Time O(1), Space O(1)
106
- */
107
- isVertexKey(potentialKey) {
108
- const potentialKeyType = typeof potentialKey;
109
- return potentialKeyType === 'string' || potentialKeyType === 'number';
110
- }
111
- /**
112
- * Delete multiple vertices.
113
- * @param vertexMap - Array of vertices or keys.
114
- * @returns `true` if any vertex was removed.
115
- * @remarks Time O(sum(deg)), Space O(1)
116
- */
117
- removeManyVertices(vertexMap) {
118
- const removed = [];
119
- for (const v of vertexMap) {
120
- removed.push(this.deleteVertex(v));
121
- }
122
- return removed.length > 0;
123
- }
124
- /**
125
- * Whether an edge exists between two vertices.
126
- * @param v1 - Endpoint A vertex or key.
127
- * @param v2 - Endpoint B vertex or key.
128
- * @returns `true` if present; otherwise `false`.
129
- * @remarks Time O(1) avg, Space O(1)
130
- */
131
- hasEdge(v1, v2) {
132
- const edge = this.getEdge(v1, v2);
133
- return !!edge;
134
- }
135
- /**
136
- * Add an edge by instance or by `(src, dest, weight?, value?)`.
137
- * @param srcOrEdge - Edge instance or source vertex/key.
138
- * @param dest - Destination vertex/key (when adding by pair).
139
- * @param weight - Edge weight.
140
- * @param value - Edge payload.
141
- * @returns `true` if inserted; otherwise `false`.
142
- * @remarks Time O(1) avg, Space O(1)
143
- */
144
- addEdge(srcOrEdge, dest, weight, value) {
145
- if (srcOrEdge instanceof AbstractEdge) {
146
- return this._addEdge(srcOrEdge);
147
- }
148
- else {
149
- if (dest instanceof AbstractVertex || typeof dest === 'string' || typeof dest === 'number') {
150
- if (!(this.hasVertex(srcOrEdge) && this.hasVertex(dest)))
151
- return false;
152
- if (srcOrEdge instanceof AbstractVertex)
153
- srcOrEdge = srcOrEdge.key;
154
- if (dest instanceof AbstractVertex)
155
- dest = dest.key;
156
- const newEdge = this.createEdge(srcOrEdge, dest, weight, value);
157
- return this._addEdge(newEdge);
158
- }
159
- else {
160
- throw new Error('dest must be a Vertex or vertex key while srcOrEdge is an Edge');
161
- }
162
- }
163
- }
164
- /**
165
- * Set the weight of an existing edge.
166
- * @param srcOrKey - Source vertex or key.
167
- * @param destOrKey - Destination vertex or key.
168
- * @param weight - New weight.
169
- * @returns `true` if updated; otherwise `false`.
170
- * @remarks Time O(1) avg, Space O(1)
171
- */
172
- setEdgeWeight(srcOrKey, destOrKey, weight) {
173
- const edge = this.getEdge(srcOrKey, destOrKey);
174
- if (edge) {
175
- edge.weight = weight;
176
- return true;
177
- }
178
- else {
179
- return false;
180
- }
181
- }
182
- /**
183
- * Enumerate simple paths up to a limit.
184
- * @param v1 - Source vertex or key.
185
- * @param v2 - Destination vertex or key.
186
- * @param limit - Maximum number of paths to collect.
187
- * @returns Array of paths (each path is an array of vertices).
188
- * @remarks Time O(paths) worst-case exponential, Space O(V + paths)
189
- */
190
- getAllPathsBetween(v1, v2, limit = 1000) {
191
- const paths = [];
192
- const vertex1 = this._getVertex(v1);
193
- const vertex2 = this._getVertex(v2);
194
- if (!(vertex1 && vertex2)) {
195
- return [];
196
- }
197
- const stack = [];
198
- stack.push({ vertex: vertex1, path: [vertex1] });
199
- while (stack.length > 0) {
200
- const { vertex, path } = stack.pop();
201
- if (vertex === vertex2) {
202
- paths.push(path);
203
- if (paths.length >= limit)
204
- return paths;
205
- }
206
- const neighbors = this.getNeighbors(vertex);
207
- for (const neighbor of neighbors) {
208
- if (!path.includes(neighbor)) {
209
- const newPath = [...path, neighbor];
210
- stack.push({ vertex: neighbor, path: newPath });
211
- }
212
- }
213
- }
214
- return paths;
215
- }
216
- /**
217
- * Sum the weights along a vertex path.
218
- * @param path - Sequence of vertices.
219
- * @returns Path weight sum (0 if empty or edge missing).
220
- * @remarks Time O(L), Space O(1) where L is path length
221
- */
222
- getPathSumWeight(path) {
223
- var _a;
224
- let sum = 0;
225
- for (let i = 0; i < path.length; i++) {
226
- sum += ((_a = this.getEdge(path[i], path[i + 1])) === null || _a === void 0 ? void 0 : _a.weight) || 0;
227
- }
228
- return sum;
229
- }
230
- /**
231
- * Minimum hops/weight between two vertices.
232
- * @param v1 - Source vertex or key.
233
- * @param v2 - Destination vertex or key.
234
- * @param isWeight - If `true`, compare by path weight; otherwise by hop count.
235
- * @returns Minimum cost or `undefined` if missing/unreachable.
236
- * @remarks Time O((V + E) log V) weighted / O(V + E) unweighted, Space O(V + E)
237
- */
238
- getMinCostBetween(v1, v2, isWeight) {
239
- if (isWeight === undefined)
240
- isWeight = false;
241
- if (isWeight) {
242
- const allPaths = this.getAllPathsBetween(v1, v2);
243
- let min = Number.MAX_SAFE_INTEGER;
244
- for (const path of allPaths) {
245
- min = Math.min(this.getPathSumWeight(path), min);
246
- }
247
- return min;
248
- }
249
- else {
250
- const vertex2 = this._getVertex(v2);
251
- const vertex1 = this._getVertex(v1);
252
- if (!(vertex1 && vertex2)) {
253
- return undefined;
254
- }
255
- const visited = new Map();
256
- const queue = new queue_1.Queue([vertex1]);
257
- visited.set(vertex1, true);
258
- let cost = 0;
259
- while (queue.length > 0) {
260
- for (let i = 0, layerSize = queue.length; i < layerSize; i++) {
261
- const cur = queue.shift();
262
- if (cur === vertex2) {
263
- return cost;
264
- }
265
- if (cur !== undefined) {
266
- const neighbors = this.getNeighbors(cur);
267
- for (const neighbor of neighbors) {
268
- if (!visited.has(neighbor)) {
269
- visited.set(neighbor, true);
270
- queue.push(neighbor);
271
- }
272
- }
273
- }
274
- }
275
- cost++;
276
- }
277
- return undefined;
278
- }
279
- }
280
- /**
281
- * Minimum path (as vertex sequence) between two vertices.
282
- * @param v1 - Source vertex or key.
283
- * @param v2 - Destination vertex or key.
284
- * @param isWeight - If `true`, compare by path weight; otherwise by hop count.
285
- * @param isDFS - For weighted mode only: if `true`, brute-force all paths; if `false`, use Dijkstra.
286
- * @returns Vertex sequence, or `undefined`/empty when unreachable depending on branch.
287
- * @remarks Time O((V + E) log V) weighted / O(V + E) unweighted, Space O(V + E)
288
- */
289
- getMinPathBetween(v1, v2, isWeight, isDFS = false) {
290
- var _a, _b;
291
- if (isWeight === undefined)
292
- isWeight = false;
293
- if (isWeight) {
294
- if (isDFS) {
295
- const allPaths = this.getAllPathsBetween(v1, v2, 10000);
296
- let min = Number.MAX_SAFE_INTEGER;
297
- let minIndex = -1;
298
- let index = 0;
299
- for (const path of allPaths) {
300
- const pathSumWeight = this.getPathSumWeight(path);
301
- if (pathSumWeight < min) {
302
- min = pathSumWeight;
303
- minIndex = index;
304
- }
305
- index++;
306
- }
307
- return allPaths[minIndex] || undefined;
308
- }
309
- else {
310
- /**
311
- * Dijkstra (binary-heap) shortest paths for non-negative weights.
312
- * @param src - Source vertex or key.
313
- * @param dest - Optional destination for early stop.
314
- * @param getMinDist - If `true`, compute global minimum distance.
315
- * @param genPaths - If `true`, also generate path arrays.
316
- * @returns Result bag or `undefined` if source missing.
317
- * @remarks Time O((V + E) log V), Space O(V + E)
318
- */
319
- return (_b = (_a = this.dijkstra(v1, v2, true, true)) === null || _a === void 0 ? void 0 : _a.minPath) !== null && _b !== void 0 ? _b : [];
320
- }
321
- }
322
- else {
323
- let minPath = [];
324
- const vertex1 = this._getVertex(v1);
325
- const vertex2 = this._getVertex(v2);
326
- if (!(vertex1 && vertex2))
327
- return [];
328
- const dfs = (cur, dest, visiting, path) => {
329
- visiting.add(cur);
330
- if (cur === dest) {
331
- minPath = [vertex1, ...path];
332
- return;
333
- }
334
- const neighbors = this.getNeighbors(cur);
335
- for (const neighbor of neighbors) {
336
- if (!visiting.has(neighbor)) {
337
- path.push(neighbor);
338
- dfs(neighbor, dest, visiting, path);
339
- path.pop();
340
- }
341
- }
342
- visiting.delete(cur);
343
- };
344
- dfs(vertex1, vertex2, new Set(), []);
345
- return minPath;
346
- }
347
- }
348
- /**
349
- * Dijkstra without heap (array-based selection).
350
- * @param src - Source vertex or key.
351
- * @param dest - Optional destination for early stop.
352
- * @param getMinDist - If `true`, compute global minimum distance.
353
- * @param genPaths - If `true`, also generate path arrays.
354
- * @returns Result bag or `undefined` if source missing.
355
- * @remarks Time O(V^2 + E), Space O(V + E)
356
- */
357
- dijkstraWithoutHeap(src, dest = undefined, getMinDist = false, genPaths = false) {
358
- let minDist = Number.MAX_SAFE_INTEGER;
359
- let minDest = undefined;
360
- let minPath = [];
361
- const paths = [];
362
- const vertexMap = this._vertexMap;
363
- const distMap = new Map();
364
- const seen = new Set();
365
- const preMap = new Map();
366
- const srcVertex = this._getVertex(src);
367
- const destVertex = dest ? this._getVertex(dest) : undefined;
368
- if (!srcVertex) {
369
- return undefined;
370
- }
371
- for (const vertex of vertexMap) {
372
- const vertexOrKey = vertex[1];
373
- if (vertexOrKey instanceof AbstractVertex)
374
- distMap.set(vertexOrKey, Number.MAX_SAFE_INTEGER);
375
- }
376
- distMap.set(srcVertex, 0);
377
- preMap.set(srcVertex, undefined);
378
- const getMinOfNoSeen = () => {
379
- let min = Number.MAX_SAFE_INTEGER;
380
- let minV = undefined;
381
- for (const [key, value] of distMap) {
382
- if (!seen.has(key)) {
383
- if (value < min) {
384
- min = value;
385
- minV = key;
386
- }
387
- }
388
- }
389
- return minV;
390
- };
391
- const getPaths = (minV) => {
392
- for (const vertex of vertexMap) {
393
- const vertexOrKey = vertex[1];
394
- if (vertexOrKey instanceof AbstractVertex) {
395
- const path = [vertexOrKey];
396
- let parent = preMap.get(vertexOrKey);
397
- while (parent) {
398
- path.push(parent);
399
- parent = preMap.get(parent);
400
- }
401
- const reversed = path.reverse();
402
- if (vertex[1] === minV)
403
- minPath = reversed;
404
- paths.push(reversed);
405
- }
406
- }
407
- };
408
- for (let i = 1; i < vertexMap.size; i++) {
409
- const cur = getMinOfNoSeen();
410
- if (cur) {
411
- seen.add(cur);
412
- if (destVertex && destVertex === cur) {
413
- if (getMinDist) {
414
- minDist = distMap.get(destVertex) || Number.MAX_SAFE_INTEGER;
415
- }
416
- if (genPaths) {
417
- getPaths(destVertex);
418
- }
419
- return { distMap, preMap, seen, paths, minDist, minPath };
420
- }
421
- const neighbors = this.getNeighbors(cur);
422
- for (const neighbor of neighbors) {
423
- if (!seen.has(neighbor)) {
424
- const edge = this.getEdge(cur, neighbor);
425
- if (edge) {
426
- const curFromMap = distMap.get(cur);
427
- const neighborFromMap = distMap.get(neighbor);
428
- if (curFromMap !== undefined && neighborFromMap !== undefined) {
429
- if (edge.weight + curFromMap < neighborFromMap) {
430
- distMap.set(neighbor, edge.weight + curFromMap);
431
- preMap.set(neighbor, cur);
432
- }
433
- }
434
- }
435
- }
436
- }
437
- }
438
- }
439
- if (getMinDist)
440
- distMap.forEach((d, v) => {
441
- if (v !== srcVertex) {
442
- if (d < minDist) {
443
- minDist = d;
444
- if (genPaths)
445
- minDest = v;
446
- }
447
- }
448
- });
449
- if (genPaths)
450
- getPaths(minDest);
451
- return { distMap, preMap, seen, paths, minDist, minPath };
452
- }
453
- dijkstra(src, dest = undefined, getMinDist = false, genPaths = false) {
454
- var _a;
455
- let minDist = Number.MAX_SAFE_INTEGER;
456
- let minDest = undefined;
457
- let minPath = [];
458
- const paths = [];
459
- const vertexMap = this._vertexMap;
460
- const distMap = new Map();
461
- const seen = new Set();
462
- const preMap = new Map();
463
- const srcVertex = this._getVertex(src);
464
- const destVertex = dest ? this._getVertex(dest) : undefined;
465
- if (!srcVertex)
466
- return undefined;
467
- for (const vertex of vertexMap) {
468
- const vertexOrKey = vertex[1];
469
- if (vertexOrKey instanceof AbstractVertex)
470
- distMap.set(vertexOrKey, Number.MAX_SAFE_INTEGER);
471
- }
472
- const heap = new heap_1.Heap([], { comparator: (a, b) => a.key - b.key });
473
- heap.add({ key: 0, value: srcVertex });
474
- distMap.set(srcVertex, 0);
475
- preMap.set(srcVertex, undefined);
476
- const getPaths = (minV) => {
477
- for (const vertex of vertexMap) {
478
- const vertexOrKey = vertex[1];
479
- if (vertexOrKey instanceof AbstractVertex) {
480
- const path = [vertexOrKey];
481
- let parent = preMap.get(vertexOrKey);
482
- while (parent) {
483
- path.push(parent);
484
- parent = preMap.get(parent);
485
- }
486
- const reversed = path.reverse();
487
- if (vertex[1] === minV)
488
- minPath = reversed;
489
- paths.push(reversed);
490
- }
491
- }
492
- };
493
- while (heap.size > 0) {
494
- const curHeapNode = heap.poll();
495
- const dist = curHeapNode === null || curHeapNode === void 0 ? void 0 : curHeapNode.key;
496
- const cur = curHeapNode === null || curHeapNode === void 0 ? void 0 : curHeapNode.value;
497
- if (dist !== undefined) {
498
- if (cur) {
499
- seen.add(cur);
500
- if (destVertex && destVertex === cur) {
501
- if (getMinDist) {
502
- minDist = distMap.get(destVertex) || Number.MAX_SAFE_INTEGER;
503
- }
504
- if (genPaths) {
505
- getPaths(destVertex);
506
- }
507
- return { distMap, preMap, seen, paths, minDist, minPath };
508
- }
509
- const neighbors = this.getNeighbors(cur);
510
- for (const neighbor of neighbors) {
511
- if (!seen.has(neighbor)) {
512
- const weight = (_a = this.getEdge(cur, neighbor)) === null || _a === void 0 ? void 0 : _a.weight;
513
- if (typeof weight === 'number') {
514
- const distSrcToNeighbor = distMap.get(neighbor);
515
- if (distSrcToNeighbor !== undefined) {
516
- if (dist + weight < distSrcToNeighbor) {
517
- heap.add({ key: dist + weight, value: neighbor });
518
- preMap.set(neighbor, cur);
519
- distMap.set(neighbor, dist + weight);
520
- }
521
- }
522
- }
523
- }
524
- }
525
- }
526
- }
527
- }
528
- if (getMinDist) {
529
- distMap.forEach((d, v) => {
530
- if (v !== srcVertex) {
531
- if (d < minDist) {
532
- minDist = d;
533
- if (genPaths)
534
- minDest = v;
535
- }
536
- }
537
- });
538
- }
539
- if (genPaths) {
540
- getPaths(minDest);
541
- }
542
- return { distMap, preMap, seen, paths, minDist, minPath };
543
- }
544
- /**
545
- * Bellman-Ford single-source shortest paths with option to scan negative cycles.
546
- * @param src - Source vertex or key.
547
- * @param scanNegativeCycle - If `true`, also detect negative cycles.
548
- * @param getMin - If `true`, compute global minimum distance.
549
- * @param genPath - If `true`, generate path arrays via predecessor map.
550
- * @returns Result bag including distances, predecessors, and optional cycle flag.
551
- * @remarks Time O(V * E), Space O(V + E)
552
- */
553
- bellmanFord(src, scanNegativeCycle, getMin, genPath) {
554
- if (getMin === undefined)
555
- getMin = false;
556
- if (genPath === undefined)
557
- genPath = false;
558
- const srcVertex = this._getVertex(src);
559
- const paths = [];
560
- const distMap = new Map();
561
- const preMap = new Map();
562
- let min = Number.MAX_SAFE_INTEGER;
563
- let minPath = [];
564
- let hasNegativeCycle;
565
- if (scanNegativeCycle)
566
- hasNegativeCycle = false;
567
- if (!srcVertex)
568
- return { hasNegativeCycle, distMap, preMap, paths, min, minPath };
569
- const vertexMap = this._vertexMap;
570
- const numOfVertices = vertexMap.size;
571
- const edgeMap = this.edgeSet();
572
- const numOfEdges = edgeMap.length;
573
- this._vertexMap.forEach(vertex => {
574
- distMap.set(vertex, Number.MAX_SAFE_INTEGER);
575
- });
576
- distMap.set(srcVertex, 0);
577
- for (let i = 1; i < numOfVertices; ++i) {
578
- for (let j = 0; j < numOfEdges; ++j) {
579
- const ends = this.getEndsOfEdge(edgeMap[j]);
580
- if (ends) {
581
- const [s, d] = ends;
582
- const weight = edgeMap[j].weight;
583
- const sWeight = distMap.get(s);
584
- const dWeight = distMap.get(d);
585
- if (sWeight !== undefined && dWeight !== undefined) {
586
- if (distMap.get(s) !== Number.MAX_SAFE_INTEGER && sWeight + weight < dWeight) {
587
- distMap.set(d, sWeight + weight);
588
- if (genPath)
589
- preMap.set(d, s);
590
- }
591
- }
592
- }
593
- }
594
- }
595
- let minDest = undefined;
596
- if (getMin) {
597
- distMap.forEach((d, v) => {
598
- if (v !== srcVertex) {
599
- if (d < min) {
600
- min = d;
601
- if (genPath)
602
- minDest = v;
603
- }
604
- }
605
- });
606
- }
607
- if (genPath) {
608
- for (const vertex of vertexMap) {
609
- const vertexOrKey = vertex[1];
610
- if (vertexOrKey instanceof AbstractVertex) {
611
- const path = [vertexOrKey];
612
- let parent = preMap.get(vertexOrKey);
613
- while (parent !== undefined) {
614
- path.push(parent);
615
- parent = preMap.get(parent);
616
- }
617
- const reversed = path.reverse();
618
- if (vertex[1] === minDest)
619
- minPath = reversed;
620
- paths.push(reversed);
621
- }
622
- }
623
- }
624
- for (let j = 0; j < numOfEdges; ++j) {
625
- const ends = this.getEndsOfEdge(edgeMap[j]);
626
- if (ends) {
627
- const [s] = ends;
628
- const weight = edgeMap[j].weight;
629
- const sWeight = distMap.get(s);
630
- if (sWeight) {
631
- if (sWeight !== Number.MAX_SAFE_INTEGER && sWeight + weight < sWeight)
632
- hasNegativeCycle = true;
633
- }
634
- }
635
- }
636
- return { hasNegativeCycle, distMap, preMap, paths, min, minPath };
637
- }
638
- /**
639
- * Floyd–Warshall all-pairs shortest paths.
640
- * @returns `{ costs, predecessor }` matrices.
641
- * @remarks Time O(V^3), Space O(V^2)
642
- */
643
- floydWarshall() {
644
- var _a;
645
- const idAndVertices = [...this._vertexMap];
646
- const n = idAndVertices.length;
647
- const costs = [];
648
- const predecessor = [];
649
- for (let i = 0; i < n; i++) {
650
- costs[i] = [];
651
- predecessor[i] = [];
652
- for (let j = 0; j < n; j++) {
653
- predecessor[i][j] = undefined;
654
- }
655
- }
656
- for (let i = 0; i < n; i++) {
657
- for (let j = 0; j < n; j++) {
658
- costs[i][j] = ((_a = this.getEdge(idAndVertices[i][1], idAndVertices[j][1])) === null || _a === void 0 ? void 0 : _a.weight) || Number.MAX_SAFE_INTEGER;
659
- }
660
- }
661
- for (let k = 0; k < n; k++) {
662
- for (let i = 0; i < n; i++) {
663
- for (let j = 0; j < n; j++) {
664
- if (costs[i][j] > costs[i][k] + costs[k][j]) {
665
- costs[i][j] = costs[i][k] + costs[k][j];
666
- predecessor[i][j] = idAndVertices[k][1];
667
- }
668
- }
669
- }
670
- }
671
- return { costs, predecessor };
672
- }
673
- /**
674
- * Enumerate simple cycles (may be expensive).
675
- * @param isInclude2Cycle - If `true`, include 2-cycles when graph semantics allow.
676
- * @returns Array of cycles (each as array of vertex keys).
677
- * @remarks Time exponential in worst-case, Space O(V + E)
678
- */
679
- getCycles(isInclude2Cycle = false) {
680
- const cycles = [];
681
- const visited = new Set();
682
- const dfs = (vertex, currentPath, visited) => {
683
- if (visited.has(vertex)) {
684
- if (((!isInclude2Cycle && currentPath.length > 2) || (isInclude2Cycle && currentPath.length >= 2)) &&
685
- currentPath[0] === vertex.key) {
686
- cycles.push([...currentPath]);
687
- }
688
- return;
689
- }
690
- visited.add(vertex);
691
- currentPath.push(vertex.key);
692
- for (const neighbor of this.getNeighbors(vertex)) {
693
- if (neighbor)
694
- dfs(neighbor, currentPath, visited);
695
- }
696
- visited.delete(vertex);
697
- currentPath.pop();
698
- };
699
- for (const vertex of this.vertexMap.values()) {
700
- dfs(vertex, [], visited);
701
- }
702
- const uniqueCycles = new Map();
703
- for (const cycle of cycles) {
704
- const sorted = [...cycle].sort().toString();
705
- if (uniqueCycles.has(sorted))
706
- continue;
707
- else {
708
- uniqueCycles.set(sorted, cycle);
709
- }
710
- }
711
- /**
712
- * Map entries to an array via callback.
713
- * @param callback - `(key, value, index, self) => T`.
714
- * @param thisArg - Optional `this` for callback.
715
- * @returns Mapped results.
716
- * @remarks Time O(V), Space O(V)
717
- */
718
- return [...uniqueCycles].map(cycleString => cycleString[1]);
719
- }
720
- /**
721
- * Induced-subgraph filter: keep vertices where `predicate(key, value)` is true,
722
- * and only keep edges whose endpoints both survive.
723
- * @param predicate - `(key, value, index, self) => boolean`.
724
- * @param thisArg - Optional `this` for callback.
725
- * @returns A new graph of the same concrete class (`this` type).
726
- * @remarks Time O(V + E), Space O(V + E)
727
- */
728
- filter(predicate, thisArg) {
729
- const filtered = [];
730
- let index = 0;
731
- for (const [key, value] of this) {
732
- if (predicate.call(thisArg, key, value, index, this)) {
733
- filtered.push([key, value]);
734
- }
735
- index++;
736
- }
737
- return this._createLike(filtered, this._snapshotOptions());
738
- }
739
- /**
740
- * Preserve the old behavior: return filtered entries as an array.
741
- * @remarks Time O(V), Space O(V)
742
- */
743
- filterEntries(predicate, thisArg) {
744
- const filtered = [];
745
- let index = 0;
746
- for (const [key, value] of this) {
747
- if (predicate.call(thisArg, key, value, index, this)) {
748
- filtered.push([key, value]);
749
- }
750
- index++;
751
- }
752
- return filtered;
753
- }
754
- map(callback, thisArg) {
755
- const mapped = [];
756
- let index = 0;
757
- for (const [key, value] of this) {
758
- mapped.push(callback.call(thisArg, key, value, index, this));
759
- index++;
760
- }
761
- return mapped;
762
- }
763
- /**
764
- * Create a deep clone of the graph with the same species.
765
- * @remarks Time O(V + E), Space O(V + E)
766
- */
767
- /**
768
- * Create a deep clone of the graph with the same species.
769
- * @returns A new graph of the same concrete class (`this` type).
770
- * @remarks Time O(V + E), Space O(V + E)
771
- */
772
- clone() {
773
- return this._createLike(undefined, this._snapshotOptions());
774
- }
775
- // ===== Same-species factory & cloning helpers =====
776
- /**
777
- * Internal iterator over `[key, value]` entries in insertion order.
778
- * @returns Iterator of `[VertexKey, V | undefined]`.
779
- * @remarks Time O(V), Space O(1)
780
- */
781
- *_getIterator() {
782
- for (const vertex of this._vertexMap.values()) {
783
- yield [vertex.key, vertex.value];
784
- }
785
- }
786
- /**
787
- * Capture configuration needed to reproduce the current graph.
788
- * Currently the graph has no runtime options, so we return an empty object.
789
- */
790
- /**
791
- * Capture configuration needed to reproduce the current graph.
792
- * @returns Options bag (opaque to callers).
793
- * @remarks Time O(1), Space O(1)
794
- */
795
- _snapshotOptions() {
796
- return { graph: Object.assign({}, this._options) };
797
- }
798
- /**
799
- * Create an empty graph instance of the same concrete species (Directed/Undirected/etc).
800
- * @remarks Time O(1), Space O(1)
801
- */
802
- /**
803
- * Create an empty graph instance of the same concrete species.
804
- * @param _options - Snapshot options from `_snapshotOptions()`.
805
- * @returns A new empty graph instance of `this` type.
806
- * @remarks Time O(1), Space O(1)
807
- */
808
- _createInstance(_options) {
809
- const Ctor = this.constructor;
810
- const instance = new Ctor();
811
- const graph = _options === null || _options === void 0 ? void 0 : _options.graph;
812
- if (graph)
813
- instance._options = Object.assign(Object.assign({}, instance._options), graph);
814
- else
815
- instance._options = Object.assign(Object.assign({}, instance._options), this._options);
816
- return instance;
817
- }
818
- /**
819
- * Create a same-species graph populated with the given entries.
820
- * Also preserves edges between kept vertices from the source graph.
821
- * @remarks Time O(V + E), Space O(V + E)
822
- */
823
- /**
824
- * Create a same-species graph populated with entries; preserves edges among kept vertices.
825
- * @param iter - Optional entries to seed the new graph.
826
- * @param options - Snapshot options.
827
- * @returns A new graph of `this` type.
828
- * @remarks Time O(V + E), Space O(V + E)
829
- */
830
- _createLike(iter, options) {
831
- const g = this._createInstance(options);
832
- // 1) Add vertices
833
- if (iter) {
834
- for (const [k, v] of iter) {
835
- g.addVertex(k, v);
836
- }
837
- }
838
- else {
839
- for (const [k, v] of this) {
840
- g.addVertex(k, v);
841
- }
842
- }
843
- // 2) Add edges whose endpoints exist in the new graph
844
- const edges = this.edgeSet();
845
- for (const e of edges) {
846
- const ends = this.getEndsOfEdge(e);
847
- if (!ends)
848
- continue;
849
- const [va, vb] = ends;
850
- const ka = va.key;
851
- const kb = vb.key;
852
- const hasA = g.hasVertex ? g.hasVertex(ka) : false;
853
- const hasB = g.hasVertex ? g.hasVertex(kb) : false;
854
- if (hasA && hasB) {
855
- const w = e.weight;
856
- const val = e.value;
857
- const newEdge = g.createEdge(ka, kb, w, val);
858
- g._addEdge(newEdge);
859
- }
860
- }
861
- return g;
862
- }
863
- /**
864
- * Insert a pre-built vertex into the graph.
865
- * @param newVertex - Concrete vertex instance.
866
- * @returns `true` if inserted; `false` if key already exists.
867
- * @remarks Time O(1) avg, Space O(1)
868
- */
869
- _addVertex(newVertex) {
870
- if (this.hasVertex(newVertex)) {
871
- return false;
872
- }
873
- this._vertexMap.set(newVertex.key, newVertex);
874
- return true;
875
- }
876
- /**
877
- * Resolve a vertex key or instance to the concrete vertex instance.
878
- * @param vertexOrKey - Vertex key or existing vertex.
879
- * @returns Vertex instance or `undefined`.
880
- * @remarks Time O(1), Space O(1)
881
- */
882
- _getVertex(vertexOrKey) {
883
- const vertexKey = this._getVertexKey(vertexOrKey);
884
- return this._vertexMap.get(vertexKey) || undefined;
885
- }
886
- /**
887
- * Resolve a vertex key from a key or vertex instance.
888
- * @param vertexOrKey - Vertex key or existing vertex.
889
- * @returns The vertex key.
890
- * @remarks Time O(1), Space O(1)
891
- */
892
- _getVertexKey(vertexOrKey) {
893
- return vertexOrKey instanceof AbstractVertex ? vertexOrKey.key : vertexOrKey;
894
- }
895
- }
896
- exports.AbstractGraph = AbstractGraph;
897
- //# sourceMappingURL=abstract-graph.js.map