data-structure-typed 1.32.0 → 1.32.1

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 (348) hide show
  1. package/.github/workflows/ci.yml +12 -1
  2. package/.prettierrc.js +1 -1
  3. package/CHANGELOG.md +1 -1
  4. package/README.md +20 -3
  5. package/coverage/clover.xml +717 -717
  6. package/coverage/coverage-final.json +21 -21
  7. package/coverage/coverage-summary.json +68 -0
  8. package/coverage/lcov-report/index.html +1 -1
  9. package/coverage/lcov-report/src/data-structures/binary-tree/aa-tree.ts.html +1 -1
  10. package/coverage/lcov-report/src/data-structures/binary-tree/abstract-binary-tree.ts.html +19 -7
  11. package/coverage/lcov-report/src/data-structures/binary-tree/avl-tree.ts.html +5 -5
  12. package/coverage/lcov-report/src/data-structures/binary-tree/b-tree.ts.html +1 -1
  13. package/coverage/lcov-report/src/data-structures/binary-tree/binary-indexed-tree.ts.html +1 -1
  14. package/coverage/lcov-report/src/data-structures/binary-tree/binary-tree.ts.html +4 -4
  15. package/coverage/lcov-report/src/data-structures/binary-tree/bst.ts.html +7 -25
  16. package/coverage/lcov-report/src/data-structures/binary-tree/index.html +1 -1
  17. package/coverage/lcov-report/src/data-structures/binary-tree/index.ts.html +1 -1
  18. package/coverage/lcov-report/src/data-structures/binary-tree/rb-tree.ts.html +4 -4
  19. package/coverage/lcov-report/src/data-structures/binary-tree/segment-tree.ts.html +2 -2
  20. package/coverage/lcov-report/src/data-structures/binary-tree/splay-tree.ts.html +1 -1
  21. package/coverage/lcov-report/src/data-structures/binary-tree/tree-multiset.ts.html +9 -9
  22. package/coverage/lcov-report/src/data-structures/binary-tree/two-three-tree.ts.html +1 -1
  23. package/coverage/lcov-report/src/data-structures/graph/abstract-graph.ts.html +17 -17
  24. package/coverage/lcov-report/src/data-structures/graph/directed-graph.ts.html +5 -5
  25. package/coverage/lcov-report/src/data-structures/graph/index.html +1 -1
  26. package/coverage/lcov-report/src/data-structures/graph/index.ts.html +1 -1
  27. package/coverage/lcov-report/src/data-structures/graph/map-graph.ts.html +3 -3
  28. package/coverage/lcov-report/src/data-structures/graph/undirected-graph.ts.html +5 -5
  29. package/coverage/lcov-report/src/data-structures/hash/coordinate-map.ts.html +1 -1
  30. package/coverage/lcov-report/src/data-structures/hash/coordinate-set.ts.html +1 -1
  31. package/coverage/lcov-report/src/data-structures/hash/hash-table.ts.html +1 -1
  32. package/coverage/lcov-report/src/data-structures/hash/index.html +1 -1
  33. package/coverage/lcov-report/src/data-structures/hash/index.ts.html +1 -1
  34. package/coverage/lcov-report/src/data-structures/hash/pair.ts.html +1 -1
  35. package/coverage/lcov-report/src/data-structures/hash/tree-map.ts.html +1 -1
  36. package/coverage/lcov-report/src/data-structures/hash/tree-set.ts.html +1 -1
  37. package/coverage/lcov-report/src/data-structures/heap/heap.ts.html +4 -4
  38. package/coverage/lcov-report/src/data-structures/heap/index.html +1 -1
  39. package/coverage/lcov-report/src/data-structures/heap/index.ts.html +1 -1
  40. package/coverage/lcov-report/src/data-structures/heap/max-heap.ts.html +4 -4
  41. package/coverage/lcov-report/src/data-structures/heap/min-heap.ts.html +4 -4
  42. package/coverage/lcov-report/src/data-structures/index.html +1 -1
  43. package/coverage/lcov-report/src/data-structures/index.ts.html +1 -1
  44. package/coverage/lcov-report/src/data-structures/linked-list/doubly-linked-list.ts.html +1 -1
  45. package/coverage/lcov-report/src/data-structures/linked-list/index.html +1 -1
  46. package/coverage/lcov-report/src/data-structures/linked-list/index.ts.html +1 -1
  47. package/coverage/lcov-report/src/data-structures/linked-list/singly-linked-list.ts.html +1 -1
  48. package/coverage/lcov-report/src/data-structures/linked-list/skip-linked-list.ts.html +1 -1
  49. package/coverage/lcov-report/src/data-structures/matrix/index.html +1 -1
  50. package/coverage/lcov-report/src/data-structures/matrix/index.ts.html +1 -1
  51. package/coverage/lcov-report/src/data-structures/matrix/matrix.ts.html +3 -3
  52. package/coverage/lcov-report/src/data-structures/matrix/matrix2d.ts.html +1 -1
  53. package/coverage/lcov-report/src/data-structures/matrix/navigator.ts.html +4 -4
  54. package/coverage/lcov-report/src/data-structures/matrix/vector2d.ts.html +1 -1
  55. package/coverage/lcov-report/src/data-structures/priority-queue/index.html +1 -1
  56. package/coverage/lcov-report/src/data-structures/priority-queue/index.ts.html +1 -1
  57. package/coverage/lcov-report/src/data-structures/priority-queue/max-priority-queue.ts.html +6 -6
  58. package/coverage/lcov-report/src/data-structures/priority-queue/min-priority-queue.ts.html +3 -3
  59. package/coverage/lcov-report/src/data-structures/priority-queue/priority-queue.ts.html +32 -32
  60. package/coverage/lcov-report/src/data-structures/queue/deque.ts.html +5 -5
  61. package/coverage/lcov-report/src/data-structures/queue/index.html +1 -1
  62. package/coverage/lcov-report/src/data-structures/queue/index.ts.html +1 -1
  63. package/coverage/lcov-report/src/data-structures/queue/queue.ts.html +2 -2
  64. package/coverage/lcov-report/src/data-structures/stack/index.html +1 -1
  65. package/coverage/lcov-report/src/data-structures/stack/index.ts.html +1 -1
  66. package/coverage/lcov-report/src/data-structures/stack/stack.ts.html +1 -1
  67. package/coverage/lcov-report/src/data-structures/tree/index.html +1 -1
  68. package/coverage/lcov-report/src/data-structures/tree/index.ts.html +1 -1
  69. package/coverage/lcov-report/src/data-structures/tree/tree.ts.html +2 -2
  70. package/coverage/lcov-report/src/data-structures/trie/index.html +1 -1
  71. package/coverage/lcov-report/src/data-structures/trie/index.ts.html +1 -1
  72. package/coverage/lcov-report/src/data-structures/trie/trie.ts.html +1 -1
  73. package/coverage/lcov-report/src/index.html +1 -1
  74. package/coverage/lcov-report/src/index.ts.html +1 -1
  75. package/coverage/lcov-report/src/interfaces/index.html +1 -1
  76. package/coverage/lcov-report/src/interfaces/index.ts.html +1 -1
  77. package/coverage/lcov-report/src/types/data-structures/abstract-binary-tree.ts.html +1 -1
  78. package/coverage/lcov-report/src/types/data-structures/bst.ts.html +1 -1
  79. package/coverage/lcov-report/src/types/data-structures/directed-graph.ts.html +1 -1
  80. package/coverage/lcov-report/src/types/data-structures/index.html +1 -1
  81. package/coverage/lcov-report/src/types/data-structures/index.ts.html +1 -1
  82. package/coverage/lcov-report/src/types/data-structures/rb-tree.ts.html +1 -1
  83. package/coverage/lcov-report/src/types/index.html +1 -1
  84. package/coverage/lcov-report/src/types/index.ts.html +1 -1
  85. package/coverage/lcov-report/src/types/utils/index.html +1 -1
  86. package/coverage/lcov-report/src/types/utils/index.ts.html +1 -1
  87. package/coverage/lcov-report/src/utils/index.html +1 -1
  88. package/coverage/lcov-report/src/utils/index.ts.html +1 -1
  89. package/coverage/lcov-report/src/utils/utils.ts.html +4 -4
  90. package/coverage/lcov-report/test/utils/index.html +1 -1
  91. package/coverage/lcov-report/test/utils/index.ts.html +1 -1
  92. package/coverage/lcov-report/test/utils/magnitude.ts.html +1 -1
  93. package/coverage/lcov-report/test/utils/number.ts.html +1 -1
  94. package/coverage/lcov.info +1329 -1329
  95. package/dist/data-structures/binary-tree/abstract-binary-tree.js.map +1 -1
  96. package/dist/data-structures/binary-tree/avl-tree.js.map +1 -1
  97. package/dist/data-structures/binary-tree/binary-tree.js.map +1 -1
  98. package/dist/data-structures/binary-tree/bst.js.map +1 -1
  99. package/dist/data-structures/binary-tree/rb-tree.js.map +1 -1
  100. package/dist/data-structures/binary-tree/tree-multiset.js.map +1 -1
  101. package/dist/data-structures/graph/abstract-graph.js.map +1 -1
  102. package/dist/data-structures/graph/directed-graph.js.map +1 -1
  103. package/dist/data-structures/graph/map-graph.js.map +1 -1
  104. package/dist/data-structures/graph/undirected-graph.js.map +1 -1
  105. package/dist/data-structures/heap/heap.js.map +1 -1
  106. package/dist/data-structures/heap/max-heap.js.map +1 -1
  107. package/dist/data-structures/heap/min-heap.js.map +1 -1
  108. package/dist/data-structures/matrix/matrix.js.map +1 -1
  109. package/dist/data-structures/matrix/navigator.js.map +1 -1
  110. package/dist/data-structures/priority-queue/max-priority-queue.js.map +1 -1
  111. package/dist/data-structures/priority-queue/min-priority-queue.js.map +1 -1
  112. package/dist/data-structures/priority-queue/priority-queue.js.map +1 -1
  113. package/dist/data-structures/queue/deque.js.map +1 -1
  114. package/dist/data-structures/queue/queue.js.map +1 -1
  115. package/dist/data-structures/tree/tree.js.map +1 -1
  116. package/dist/utils/utils.js.map +1 -1
  117. package/docs/classes/AVLTree.html +85 -85
  118. package/docs/classes/AVLTreeNode.html +15 -15
  119. package/docs/classes/AaTree.html +1 -1
  120. package/docs/classes/AbstractBinaryTree.html +78 -78
  121. package/docs/classes/AbstractBinaryTreeNode.html +21 -21
  122. package/docs/classes/AbstractEdge.html +11 -11
  123. package/docs/classes/AbstractGraph.html +36 -36
  124. package/docs/classes/AbstractVertex.html +8 -8
  125. package/docs/classes/ArrayDeque.html +14 -14
  126. package/docs/classes/BST.html +78 -78
  127. package/docs/classes/BSTNode.html +15 -15
  128. package/docs/classes/BTree.html +1 -1
  129. package/docs/classes/BinaryIndexedTree.html +9 -9
  130. package/docs/classes/BinaryTree.html +71 -71
  131. package/docs/classes/BinaryTreeNode.html +15 -15
  132. package/docs/classes/Character.html +4 -4
  133. package/docs/classes/CoordinateMap.html +9 -9
  134. package/docs/classes/CoordinateSet.html +8 -8
  135. package/docs/classes/Deque.html +34 -34
  136. package/docs/classes/DirectedEdge.html +15 -15
  137. package/docs/classes/DirectedGraph.html +52 -52
  138. package/docs/classes/DirectedVertex.html +6 -6
  139. package/docs/classes/DoublyLinkedList.html +37 -37
  140. package/docs/classes/DoublyLinkedListNode.html +11 -11
  141. package/docs/classes/HashTable.html +1 -1
  142. package/docs/classes/Heap.html +26 -26
  143. package/docs/classes/HeapItem.html +8 -8
  144. package/docs/classes/LinkedListQueue.html +35 -35
  145. package/docs/classes/MapEdge.html +13 -13
  146. package/docs/classes/MapGraph.html +56 -56
  147. package/docs/classes/MapVertex.html +12 -12
  148. package/docs/classes/Matrix2D.html +16 -16
  149. package/docs/classes/MatrixNTI2D.html +4 -4
  150. package/docs/classes/MaxHeap.html +26 -26
  151. package/docs/classes/MaxPriorityQueue.html +34 -34
  152. package/docs/classes/MinHeap.html +26 -26
  153. package/docs/classes/MinPriorityQueue.html +34 -34
  154. package/docs/classes/Navigator.html +10 -10
  155. package/docs/classes/ObjectDeque.html +25 -25
  156. package/docs/classes/Pair.html +1 -1
  157. package/docs/classes/PriorityQueue.html +32 -32
  158. package/docs/classes/Queue.html +22 -22
  159. package/docs/classes/RBTree.html +78 -78
  160. package/docs/classes/RBTreeNode.html +18 -18
  161. package/docs/classes/SegmentTree.html +17 -17
  162. package/docs/classes/SegmentTreeNode.html +20 -20
  163. package/docs/classes/SinglyLinkedList.html +35 -35
  164. package/docs/classes/SinglyLinkedListNode.html +8 -8
  165. package/docs/classes/SkipLinkedList.html +1 -1
  166. package/docs/classes/SplayTree.html +1 -1
  167. package/docs/classes/Stack.html +12 -12
  168. package/docs/classes/TreeMap.html +1 -1
  169. package/docs/classes/TreeMultiset.html +99 -99
  170. package/docs/classes/TreeMultisetNode.html +18 -18
  171. package/docs/classes/TreeNode.html +13 -13
  172. package/docs/classes/TreeSet.html +1 -1
  173. package/docs/classes/Trie.html +13 -13
  174. package/docs/classes/TrieNode.html +11 -11
  175. package/docs/classes/TwoThreeTree.html +1 -1
  176. package/docs/classes/UndirectedEdge.html +12 -12
  177. package/docs/classes/UndirectedGraph.html +40 -40
  178. package/docs/classes/UndirectedVertex.html +6 -6
  179. package/docs/classes/Vector2D.html +28 -28
  180. package/docs/enums/CP.html +4 -4
  181. package/docs/enums/FamilyPosition.html +8 -8
  182. package/docs/enums/LoopType.html +3 -3
  183. package/docs/enums/RBColor.html +3 -3
  184. package/docs/enums/TopologicalProperty.html +4 -4
  185. package/docs/functions/arrayRemove.html +1 -1
  186. package/docs/functions/isThunk.html +1 -1
  187. package/docs/functions/toThunk.html +1 -1
  188. package/docs/functions/trampoline.html +1 -1
  189. package/docs/functions/trampolineAsync.html +1 -1
  190. package/docs/functions/uuidV4.html +1 -1
  191. package/docs/index.html +11 -12
  192. package/docs/interfaces/IAVLTree.html +77 -77
  193. package/docs/interfaces/IAbstractBinaryTree.html +72 -72
  194. package/docs/interfaces/IAbstractBinaryTreeNode.html +14 -14
  195. package/docs/interfaces/IAbstractGraph.html +15 -15
  196. package/docs/interfaces/IBST.html +77 -77
  197. package/docs/interfaces/IDirectedGraph.html +23 -23
  198. package/docs/interfaces/IRBTree.html +77 -77
  199. package/docs/interfaces/IUNDirectedGraph.html +16 -16
  200. package/docs/types/AVLTreeNodeNested.html +1 -1
  201. package/docs/types/AVLTreeOptions.html +1 -1
  202. package/docs/types/AbstractBinaryTreeNodeNested.html +1 -1
  203. package/docs/types/AbstractBinaryTreeNodeProperties.html +1 -1
  204. package/docs/types/AbstractBinaryTreeNodeProperty.html +1 -1
  205. package/docs/types/AbstractBinaryTreeOptions.html +1 -1
  206. package/docs/types/BSTComparator.html +1 -1
  207. package/docs/types/BSTNodeNested.html +1 -1
  208. package/docs/types/BSTOptions.html +1 -1
  209. package/docs/types/BinaryTreeDeletedResult.html +1 -1
  210. package/docs/types/BinaryTreeNodeId.html +1 -1
  211. package/docs/types/BinaryTreeNodeNested.html +1 -1
  212. package/docs/types/BinaryTreeNodePropertyName.html +1 -1
  213. package/docs/types/BinaryTreeOptions.html +1 -1
  214. package/docs/types/DFSOrderPattern.html +1 -1
  215. package/docs/types/DijkstraResult.html +1 -1
  216. package/docs/types/Direction.html +1 -1
  217. package/docs/types/DummyAny.html +1 -1
  218. package/docs/types/EdgeId.html +1 -1
  219. package/docs/types/HeapOptions.html +1 -1
  220. package/docs/types/IAVLTreeNode.html +1 -1
  221. package/docs/types/IBSTNode.html +1 -1
  222. package/docs/types/IBinaryTree.html +1 -1
  223. package/docs/types/IBinaryTreeNode.html +1 -1
  224. package/docs/types/IRBTreeNode.html +1 -1
  225. package/docs/types/ITreeMultiset.html +1 -1
  226. package/docs/types/ITreeMultisetNode.html +1 -1
  227. package/docs/types/KeyValueObject.html +1 -1
  228. package/docs/types/KeyValueObjectWithId.html +1 -1
  229. package/docs/types/MapGraphCoordinate.html +1 -1
  230. package/docs/types/NavigatorParams.html +1 -1
  231. package/docs/types/NodeOrPropertyName.html +1 -1
  232. package/docs/types/NonNumberNonObjectButDefined.html +1 -1
  233. package/docs/types/ObjectWithNonNumberId.html +1 -1
  234. package/docs/types/ObjectWithNumberId.html +1 -1
  235. package/docs/types/ObjectWithoutId.html +1 -1
  236. package/docs/types/PriorityQueueComparator.html +1 -1
  237. package/docs/types/PriorityQueueDFSOrderPattern.html +1 -1
  238. package/docs/types/PriorityQueueOptions.html +1 -1
  239. package/docs/types/RBTreeNodeNested.html +1 -1
  240. package/docs/types/RBTreeOptions.html +1 -1
  241. package/docs/types/RestrictValById.html +1 -1
  242. package/docs/types/SegmentTreeNodeVal.html +1 -1
  243. package/docs/types/SpecifyOptional.html +1 -1
  244. package/docs/types/Thunk.html +1 -1
  245. package/docs/types/ToThunkFn.html +1 -1
  246. package/docs/types/TopologicalStatus.html +1 -1
  247. package/docs/types/TreeMultisetNodeNested.html +1 -1
  248. package/docs/types/TreeMultisetOptions.html +1 -1
  249. package/docs/types/TrlAsyncFn.html +1 -1
  250. package/docs/types/TrlFn.html +1 -1
  251. package/docs/types/Turning.html +1 -1
  252. package/docs/types/VertexId.html +1 -1
  253. package/docs/variables/THUNK_SYMBOL.html +1 -1
  254. package/jest.config.js +1 -0
  255. package/package.json +18 -6
  256. package/src/data-structures/binary-tree/aa-tree.ts +1 -0
  257. package/src/data-structures/binary-tree/abstract-binary-tree.ts +1631 -0
  258. package/src/data-structures/binary-tree/avl-tree.ts +310 -0
  259. package/src/data-structures/binary-tree/b-tree.ts +1 -0
  260. package/src/data-structures/binary-tree/binary-indexed-tree.ts +76 -0
  261. package/src/data-structures/binary-tree/binary-tree.ts +47 -0
  262. package/src/data-structures/binary-tree/bst.ts +537 -0
  263. package/src/data-structures/binary-tree/index.ts +12 -0
  264. package/src/data-structures/binary-tree/rb-tree.ts +101 -0
  265. package/src/data-structures/binary-tree/segment-tree.ts +242 -0
  266. package/src/data-structures/binary-tree/splay-tree.ts +1 -0
  267. package/src/data-structures/binary-tree/tree-multiset.ts +700 -0
  268. package/src/data-structures/binary-tree/two-three-tree.ts +1 -0
  269. package/src/data-structures/diagrams/README.md +5 -0
  270. package/src/data-structures/graph/abstract-graph.ts +1040 -0
  271. package/src/data-structures/graph/directed-graph.ts +470 -0
  272. package/src/data-structures/graph/index.ts +4 -0
  273. package/src/data-structures/graph/map-graph.ts +129 -0
  274. package/src/data-structures/graph/undirected-graph.ts +274 -0
  275. package/src/data-structures/hash/coordinate-map.ts +67 -0
  276. package/src/data-structures/hash/coordinate-set.ts +56 -0
  277. package/src/data-structures/hash/hash-table.ts +1 -0
  278. package/src/data-structures/hash/index.ts +6 -0
  279. package/src/data-structures/hash/pair.ts +1 -0
  280. package/src/data-structures/hash/tree-map.ts +1 -0
  281. package/src/data-structures/hash/tree-set.ts +1 -0
  282. package/src/data-structures/heap/heap.ts +212 -0
  283. package/src/data-structures/heap/index.ts +3 -0
  284. package/src/data-structures/heap/max-heap.ts +31 -0
  285. package/src/data-structures/heap/min-heap.ts +32 -0
  286. package/src/data-structures/index.ts +11 -0
  287. package/src/data-structures/linked-list/doubly-linked-list.ts +573 -0
  288. package/src/data-structures/linked-list/index.ts +3 -0
  289. package/src/data-structures/linked-list/singly-linked-list.ts +501 -0
  290. package/src/data-structures/linked-list/skip-linked-list.ts +1 -0
  291. package/src/data-structures/matrix/index.ts +4 -0
  292. package/src/data-structures/matrix/matrix.ts +27 -0
  293. package/src/data-structures/matrix/matrix2d.ts +212 -0
  294. package/src/data-structures/matrix/navigator.ts +121 -0
  295. package/src/data-structures/matrix/vector2d.ts +316 -0
  296. package/src/data-structures/priority-queue/index.ts +3 -0
  297. package/src/data-structures/priority-queue/max-priority-queue.ts +56 -0
  298. package/src/data-structures/priority-queue/min-priority-queue.ts +57 -0
  299. package/src/data-structures/priority-queue/priority-queue.ts +359 -0
  300. package/src/data-structures/queue/deque.ts +297 -0
  301. package/src/data-structures/queue/index.ts +2 -0
  302. package/src/data-structures/queue/queue.ts +191 -0
  303. package/src/data-structures/stack/index.ts +1 -0
  304. package/src/data-structures/stack/stack.ts +98 -0
  305. package/src/data-structures/tree/index.ts +1 -0
  306. package/src/data-structures/tree/tree.ts +69 -0
  307. package/src/data-structures/trie/index.ts +1 -0
  308. package/src/data-structures/trie/trie.ts +225 -0
  309. package/src/index.ts +4 -0
  310. package/src/interfaces/abstract-binary-tree.ts +191 -0
  311. package/src/interfaces/abstract-graph.ts +31 -0
  312. package/src/interfaces/avl-tree.ts +25 -0
  313. package/src/interfaces/binary-tree.ts +6 -0
  314. package/src/interfaces/bst.ts +31 -0
  315. package/src/interfaces/directed-graph.ts +20 -0
  316. package/src/interfaces/doubly-linked-list.ts +1 -0
  317. package/src/interfaces/heap.ts +1 -0
  318. package/src/interfaces/index.ts +15 -0
  319. package/src/interfaces/navigator.ts +1 -0
  320. package/src/interfaces/priority-queue.ts +1 -0
  321. package/src/interfaces/rb-tree.ts +9 -0
  322. package/src/interfaces/segment-tree.ts +1 -0
  323. package/src/interfaces/singly-linked-list.ts +1 -0
  324. package/src/interfaces/tree-multiset.ts +7 -0
  325. package/src/interfaces/undirected-graph.ts +6 -0
  326. package/src/types/data-structures/abstract-binary-tree.ts +50 -0
  327. package/src/types/data-structures/abstract-graph.ts +11 -0
  328. package/src/types/data-structures/avl-tree.ts +5 -0
  329. package/src/types/data-structures/binary-tree.ts +5 -0
  330. package/src/types/data-structures/bst.ts +13 -0
  331. package/src/types/data-structures/directed-graph.ts +8 -0
  332. package/src/types/data-structures/doubly-linked-list.ts +1 -0
  333. package/src/types/data-structures/heap.ts +5 -0
  334. package/src/types/data-structures/index.ts +15 -0
  335. package/src/types/data-structures/map-graph.ts +1 -0
  336. package/src/types/data-structures/navigator.ts +13 -0
  337. package/src/types/data-structures/priority-queue.ts +9 -0
  338. package/src/types/data-structures/rb-tree.ts +8 -0
  339. package/src/types/data-structures/segment-tree.ts +1 -0
  340. package/src/types/data-structures/singly-linked-list.ts +1 -0
  341. package/src/types/data-structures/tree-multiset.ts +6 -0
  342. package/src/types/helpers.ts +1 -0
  343. package/src/types/index.ts +3 -0
  344. package/src/types/utils/index.ts +2 -0
  345. package/src/types/utils/utils.ts +6 -0
  346. package/src/types/utils/validate-type.ts +35 -0
  347. package/src/utils/index.ts +1 -0
  348. package/src/utils/utils.ts +79 -0
@@ -0,0 +1,5 @@
1
+ import {BinaryTreeNode} from '../../data-structures/binary-tree';
2
+ import {AbstractBinaryTreeOptions} from './abstract-binary-tree';
3
+
4
+ export type BinaryTreeNodeNested<T> = BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, BinaryTreeNode<T, any>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
5
+ export type BinaryTreeOptions = AbstractBinaryTreeOptions & {}
@@ -0,0 +1,13 @@
1
+ import {BSTNode} from '../../data-structures/binary-tree';
2
+ import type {BinaryTreeOptions} from './binary-tree';
3
+ import {BinaryTreeNodeId} from './abstract-binary-tree';
4
+
5
+ export type BSTComparator = (a: BinaryTreeNodeId, b: BinaryTreeNodeId) => number;
6
+
7
+ // prettier-ignore
8
+ export type BSTNodeNested<T> = BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, any>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9
+ export type BSTOptions = BinaryTreeOptions & {
10
+ comparator?: BSTComparator,
11
+ }
12
+
13
+ export enum CP {lt = 'lt', eq = 'eq', gt = 'gt'}
@@ -0,0 +1,8 @@
1
+ // 0 means unknown, 1 means visiting, 2 means visited;
2
+ export type TopologicalStatus = 0 | 1 | 2;
3
+
4
+ export enum TopologicalProperty {
5
+ VAL = 'VAL',
6
+ NODE = 'NODE',
7
+ ID = 'ID'
8
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ export type HeapOptions<T> = {
2
+ priorityExtractor?: (element: T) => number;
3
+ // TODO there is an idea that support chaining which is for conveniently using the data structure
4
+ // isChaining? : boolean
5
+ };
@@ -0,0 +1,15 @@
1
+ export * from './binary-tree';
2
+ export * from './bst';
3
+ export * from './avl-tree';
4
+ export * from './segment-tree';
5
+ export * from './tree-multiset';
6
+ export * from './abstract-graph';
7
+ export * from './map-graph';
8
+ export * from './abstract-binary-tree';
9
+ export * from './rb-tree';
10
+ export * from './directed-graph';
11
+ export * from './priority-queue';
12
+ export * from './heap';
13
+ export * from './singly-linked-list';
14
+ export * from './doubly-linked-list';
15
+ export * from './navigator';
@@ -0,0 +1 @@
1
+ export type MapGraphCoordinate = [number, number];
@@ -0,0 +1,13 @@
1
+ export type Direction = 'up' | 'right' | 'down' | 'left';
2
+ export type Turning = {[key in Direction]: Direction};
3
+
4
+ export type NavigatorParams<T> = {
5
+ matrix: T[][];
6
+ turning: Turning;
7
+ onMove: (cur: [number, number]) => void;
8
+ init: {
9
+ cur: [number, number];
10
+ charDir: Direction;
11
+ VISITED: T;
12
+ };
13
+ };
@@ -0,0 +1,9 @@
1
+ export type PriorityQueueComparator<T> = (a: T, b: T) => number;
2
+
3
+ export type PriorityQueueOptions<T> = {
4
+ nodes?: T[];
5
+ isFix?: boolean;
6
+ comparator: PriorityQueueComparator<T>;
7
+ };
8
+
9
+ export type PriorityQueueDFSOrderPattern = 'pre' | 'in' | 'post';
@@ -0,0 +1,8 @@
1
+ import {BinaryTreeOptions} from './binary-tree';
2
+ import {RBTreeNode} from '../../data-structures/binary-tree';
3
+
4
+ export enum RBColor { RED = 'RED', BLACK = 'BLACK'}
5
+
6
+ export type RBTreeNodeNested<T> = RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, any>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7
+
8
+ export type RBTreeOptions = BinaryTreeOptions & {}
@@ -0,0 +1 @@
1
+ export type SegmentTreeNodeVal = number;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,6 @@
1
+ import {TreeMultisetNode} from '../../data-structures/binary-tree';
2
+ import {AVLTreeOptions} from './avl-tree';
3
+
4
+ export type TreeMultisetNodeNested<T> = TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, any>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
5
+
6
+ export type TreeMultisetOptions = Omit<AVLTreeOptions, 'isMergeDuplicatedNodeById'> & {}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ export * from './data-structures';
2
+ export * from './helpers';
3
+ export * from './utils';
@@ -0,0 +1,2 @@
1
+ export * from './utils';
2
+ export * from './validate-type';
@@ -0,0 +1,6 @@
1
+ export type ToThunkFn = () => ReturnType<TrlFn>;
2
+ export type Thunk = () => ReturnType<ToThunkFn> & {__THUNK__: symbol};
3
+ export type TrlFn = (...args: any[]) => any;
4
+ export type TrlAsyncFn = (...args: any[]) => any;
5
+
6
+ export type SpecifyOptional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
@@ -0,0 +1,35 @@
1
+ export type KeyValueObject = {[key: string]: any};
2
+
3
+ export type KeyValueObjectWithId = {[key: string]: any; id: string | number | symbol};
4
+
5
+ export type NonNumberNonObjectButDefined = string | boolean | symbol | null;
6
+
7
+ export type ObjectWithoutId = Omit<KeyValueObject, 'id'>;
8
+
9
+ export type ObjectWithNonNumberId = {
10
+ [key: string]: any;
11
+ id: string | boolean | symbol | null | object | undefined;
12
+ };
13
+
14
+ export type ObjectWithNumberId = {
15
+ [key: string]: any;
16
+ id: number;
17
+ };
18
+
19
+ export type RestrictValById =
20
+ | NonNumberNonObjectButDefined
21
+ | ObjectWithoutId
22
+ | ObjectWithNonNumberId
23
+ | ObjectWithNumberId;
24
+
25
+ export type DummyAny =
26
+ | string
27
+ | number
28
+ | boolean
29
+ | null
30
+ | undefined
31
+ | object
32
+ | symbol
33
+ | void
34
+ | ((...args: []) => any)
35
+ | never;
@@ -0,0 +1 @@
1
+ export * from './utils';
@@ -0,0 +1,79 @@
1
+ /**
2
+ * data-structure-typed
3
+ *
4
+ * @author Tyler Zeng
5
+ * @copyright Copyright (c) 2022 Tyler Zeng <zrwusa@gmail.com>
6
+ * @license MIT License
7
+ */
8
+ import type {Thunk, ToThunkFn, TrlAsyncFn, TrlFn} from '../types';
9
+
10
+ export const uuidV4 = function () {
11
+ return 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'.replace(/[x]/g, function (c) {
12
+ const r = (Math.random() * 16) | 0,
13
+ v = c == 'x' ? r : (r & 0x3) | 0x8;
14
+ return v.toString(16);
15
+ });
16
+ };
17
+
18
+ export const arrayRemove = function <T>(array: T[], predicate: (item: T, index: number, array: T[]) => boolean): T[] {
19
+ let i = -1,
20
+ len = array ? array.length : 0;
21
+ const result = [];
22
+
23
+ while (++i < len) {
24
+ const value = array[i];
25
+ if (predicate(value, i, array)) {
26
+ result.push(value);
27
+ Array.prototype.splice.call(array, i--, 1);
28
+ len--;
29
+ }
30
+ }
31
+
32
+ return result;
33
+ };
34
+
35
+ export const THUNK_SYMBOL = Symbol('thunk');
36
+
37
+ export const isThunk = (fnOrValue: any) => {
38
+ return typeof fnOrValue === 'function' && fnOrValue.__THUNK__ === THUNK_SYMBOL;
39
+ };
40
+
41
+ export const toThunk = (fn: ToThunkFn): Thunk => {
42
+ const thunk = () => fn();
43
+ thunk.__THUNK__ = THUNK_SYMBOL;
44
+ return thunk;
45
+ };
46
+
47
+ export const trampoline = (fn: TrlFn) => {
48
+ const cont = (...args: [...Parameters<TrlFn>]) => toThunk(() => fn(...args));
49
+
50
+ return Object.assign(
51
+ (...args: [...Parameters<TrlFn>]) => {
52
+ let result = fn(...args);
53
+
54
+ while (isThunk(result) && typeof result === 'function') {
55
+ result = result();
56
+ }
57
+
58
+ return result;
59
+ },
60
+ {cont}
61
+ );
62
+ };
63
+
64
+ export const trampolineAsync = (fn: TrlAsyncFn) => {
65
+ const cont = (...args: [...Parameters<TrlAsyncFn>]) => toThunk(() => fn(...args));
66
+
67
+ return Object.assign(
68
+ async (...args: [...Parameters<TrlAsyncFn>]) => {
69
+ let result = await fn(...args);
70
+
71
+ while (isThunk(result) && typeof result === 'function') {
72
+ result = await result();
73
+ }
74
+
75
+ return result;
76
+ },
77
+ {cont}
78
+ );
79
+ };