ts-data-forge 5.0.1 → 5.1.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 (539) hide show
  1. package/README.md +101 -50
  2. package/dist/array/impl/array-utils-creation.d.mts +14 -0
  3. package/dist/array/impl/array-utils-creation.d.mts.map +1 -1
  4. package/dist/array/impl/array-utils-creation.mjs +12 -0
  5. package/dist/array/impl/array-utils-creation.mjs.map +1 -1
  6. package/dist/array/impl/array-utils-element-access.d.mts +10 -0
  7. package/dist/array/impl/array-utils-element-access.d.mts.map +1 -1
  8. package/dist/array/impl/array-utils-element-access.mjs +6 -0
  9. package/dist/array/impl/array-utils-element-access.mjs.map +1 -1
  10. package/dist/array/impl/array-utils-modification.d.mts +14 -0
  11. package/dist/array/impl/array-utils-modification.d.mts.map +1 -1
  12. package/dist/array/impl/array-utils-modification.mjs.map +1 -1
  13. package/dist/array/impl/array-utils-reducing-value.d.mts +34 -10
  14. package/dist/array/impl/array-utils-reducing-value.d.mts.map +1 -1
  15. package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -1
  16. package/dist/array/impl/array-utils-search.d.mts +34 -4
  17. package/dist/array/impl/array-utils-search.d.mts.map +1 -1
  18. package/dist/array/impl/array-utils-search.mjs.map +1 -1
  19. package/dist/array/impl/array-utils-set-op.d.mts +20 -7
  20. package/dist/array/impl/array-utils-set-op.d.mts.map +1 -1
  21. package/dist/array/impl/array-utils-set-op.mjs +20 -7
  22. package/dist/array/impl/array-utils-set-op.mjs.map +1 -1
  23. package/dist/array/impl/array-utils-size.d.mts +5 -2
  24. package/dist/array/impl/array-utils-size.d.mts.map +1 -1
  25. package/dist/array/impl/array-utils-size.mjs +5 -2
  26. package/dist/array/impl/array-utils-size.mjs.map +1 -1
  27. package/dist/array/impl/array-utils-slice-clamped.d.mts +2 -0
  28. package/dist/array/impl/array-utils-slice-clamped.d.mts.map +1 -1
  29. package/dist/array/impl/array-utils-slice-clamped.mjs.map +1 -1
  30. package/dist/array/impl/array-utils-slicing.d.mts +17 -2
  31. package/dist/array/impl/array-utils-slicing.d.mts.map +1 -1
  32. package/dist/array/impl/array-utils-slicing.mjs +9 -2
  33. package/dist/array/impl/array-utils-slicing.mjs.map +1 -1
  34. package/dist/array/impl/array-utils-transformation.d.mts +27 -0
  35. package/dist/array/impl/array-utils-transformation.d.mts.map +1 -1
  36. package/dist/array/impl/array-utils-transformation.mjs +6 -0
  37. package/dist/array/impl/array-utils-transformation.mjs.map +1 -1
  38. package/dist/array/impl/array-utils-validation.d.mts +35 -18
  39. package/dist/array/impl/array-utils-validation.d.mts.map +1 -1
  40. package/dist/array/impl/array-utils-validation.mjs +25 -14
  41. package/dist/array/impl/array-utils-validation.mjs.map +1 -1
  42. package/dist/collections/imap-mapped.mjs.map +1 -1
  43. package/dist/collections/imap.d.mts +35 -15
  44. package/dist/collections/imap.d.mts.map +1 -1
  45. package/dist/collections/imap.mjs +5 -3
  46. package/dist/collections/imap.mjs.map +1 -1
  47. package/dist/collections/iset-mapped.d.mts +46 -19
  48. package/dist/collections/iset-mapped.d.mts.map +1 -1
  49. package/dist/collections/iset-mapped.mjs +9 -2
  50. package/dist/collections/iset-mapped.mjs.map +1 -1
  51. package/dist/collections/iset.d.mts +48 -19
  52. package/dist/collections/iset.d.mts.map +1 -1
  53. package/dist/collections/iset.mjs +9 -2
  54. package/dist/collections/iset.mjs.map +1 -1
  55. package/dist/collections/queue.d.mts +65 -25
  56. package/dist/collections/queue.d.mts.map +1 -1
  57. package/dist/collections/queue.mjs +13 -5
  58. package/dist/collections/queue.mjs.map +1 -1
  59. package/dist/collections/stack.d.mts +60 -25
  60. package/dist/collections/stack.d.mts.map +1 -1
  61. package/dist/collections/stack.mjs +12 -5
  62. package/dist/collections/stack.mjs.map +1 -1
  63. package/dist/entry-point.mjs +1 -1
  64. package/dist/functional/match.d.mts +1 -1
  65. package/dist/functional/match.d.mts.map +1 -1
  66. package/dist/functional/match.mjs.map +1 -1
  67. package/dist/functional/optional/impl/optional-expect-to-be.d.mts +3 -2
  68. package/dist/functional/optional/impl/optional-expect-to-be.d.mts.map +1 -1
  69. package/dist/functional/optional/impl/optional-expect-to-be.mjs.map +1 -1
  70. package/dist/functional/optional/impl/optional-filter.d.mts +3 -0
  71. package/dist/functional/optional/impl/optional-filter.d.mts.map +1 -1
  72. package/dist/functional/optional/impl/optional-filter.mjs.map +1 -1
  73. package/dist/functional/optional/impl/optional-flat-map.d.mts +2 -0
  74. package/dist/functional/optional/impl/optional-flat-map.d.mts.map +1 -1
  75. package/dist/functional/optional/impl/optional-flat-map.mjs.map +1 -1
  76. package/dist/functional/optional/impl/optional-from-nullable.d.mts +2 -0
  77. package/dist/functional/optional/impl/optional-from-nullable.d.mts.map +1 -1
  78. package/dist/functional/optional/impl/optional-from-nullable.mjs +2 -0
  79. package/dist/functional/optional/impl/optional-from-nullable.mjs.map +1 -1
  80. package/dist/functional/optional/impl/optional-is-none.d.mts +1 -1
  81. package/dist/functional/optional/impl/optional-is-none.mjs +1 -1
  82. package/dist/functional/optional/impl/optional-is-optional.d.mts +4 -2
  83. package/dist/functional/optional/impl/optional-is-optional.d.mts.map +1 -1
  84. package/dist/functional/optional/impl/optional-is-optional.mjs +4 -2
  85. package/dist/functional/optional/impl/optional-is-optional.mjs.map +1 -1
  86. package/dist/functional/optional/impl/optional-is-some.d.mts +2 -1
  87. package/dist/functional/optional/impl/optional-is-some.d.mts.map +1 -1
  88. package/dist/functional/optional/impl/optional-is-some.mjs +2 -1
  89. package/dist/functional/optional/impl/optional-is-some.mjs.map +1 -1
  90. package/dist/functional/optional/impl/optional-map.d.mts +2 -0
  91. package/dist/functional/optional/impl/optional-map.d.mts.map +1 -1
  92. package/dist/functional/optional/impl/optional-map.mjs.map +1 -1
  93. package/dist/functional/optional/impl/optional-none.d.mts +4 -2
  94. package/dist/functional/optional/impl/optional-none.d.mts.map +1 -1
  95. package/dist/functional/optional/impl/optional-none.mjs +4 -2
  96. package/dist/functional/optional/impl/optional-none.mjs.map +1 -1
  97. package/dist/functional/optional/impl/optional-or-else.d.mts +4 -0
  98. package/dist/functional/optional/impl/optional-or-else.d.mts.map +1 -1
  99. package/dist/functional/optional/impl/optional-or-else.mjs.map +1 -1
  100. package/dist/functional/optional/impl/optional-some.d.mts +5 -3
  101. package/dist/functional/optional/impl/optional-some.d.mts.map +1 -1
  102. package/dist/functional/optional/impl/optional-some.mjs +4 -2
  103. package/dist/functional/optional/impl/optional-some.mjs.map +1 -1
  104. package/dist/functional/optional/impl/optional-to-nullable.d.mts +4 -2
  105. package/dist/functional/optional/impl/optional-to-nullable.d.mts.map +1 -1
  106. package/dist/functional/optional/impl/optional-to-nullable.mjs +4 -2
  107. package/dist/functional/optional/impl/optional-to-nullable.mjs.map +1 -1
  108. package/dist/functional/optional/impl/optional-unwrap-or.d.mts +7 -4
  109. package/dist/functional/optional/impl/optional-unwrap-or.d.mts.map +1 -1
  110. package/dist/functional/optional/impl/optional-unwrap-or.mjs.map +1 -1
  111. package/dist/functional/optional/impl/optional-unwrap-throw.d.mts +2 -1
  112. package/dist/functional/optional/impl/optional-unwrap-throw.d.mts.map +1 -1
  113. package/dist/functional/optional/impl/optional-unwrap-throw.mjs +2 -1
  114. package/dist/functional/optional/impl/optional-unwrap-throw.mjs.map +1 -1
  115. package/dist/functional/optional/impl/optional-unwrap.d.mts +4 -2
  116. package/dist/functional/optional/impl/optional-unwrap.d.mts.map +1 -1
  117. package/dist/functional/optional/impl/optional-unwrap.mjs.map +1 -1
  118. package/dist/functional/optional/impl/optional-zip.d.mts +3 -1
  119. package/dist/functional/optional/impl/optional-zip.d.mts.map +1 -1
  120. package/dist/functional/optional/impl/optional-zip.mjs +3 -1
  121. package/dist/functional/optional/impl/optional-zip.mjs.map +1 -1
  122. package/dist/functional/pipe.d.mts +2 -2
  123. package/dist/functional/result/impl/result-err.d.mts +4 -2
  124. package/dist/functional/result/impl/result-err.d.mts.map +1 -1
  125. package/dist/functional/result/impl/result-err.mjs +3 -1
  126. package/dist/functional/result/impl/result-err.mjs.map +1 -1
  127. package/dist/functional/result/impl/result-expect-to-be.d.mts +3 -2
  128. package/dist/functional/result/impl/result-expect-to-be.d.mts.map +1 -1
  129. package/dist/functional/result/impl/result-expect-to-be.mjs.map +1 -1
  130. package/dist/functional/result/impl/result-flat-map.d.mts +5 -0
  131. package/dist/functional/result/impl/result-flat-map.d.mts.map +1 -1
  132. package/dist/functional/result/impl/result-flat-map.mjs.map +1 -1
  133. package/dist/functional/result/impl/result-fold.d.mts +4 -0
  134. package/dist/functional/result/impl/result-fold.d.mts.map +1 -1
  135. package/dist/functional/result/impl/result-fold.mjs.map +1 -1
  136. package/dist/functional/result/impl/result-from-promise.d.mts +4 -1
  137. package/dist/functional/result/impl/result-from-promise.d.mts.map +1 -1
  138. package/dist/functional/result/impl/result-from-promise.mjs +4 -1
  139. package/dist/functional/result/impl/result-from-promise.mjs.map +1 -1
  140. package/dist/functional/result/impl/result-from-throwable.d.mts +3 -1
  141. package/dist/functional/result/impl/result-from-throwable.d.mts.map +1 -1
  142. package/dist/functional/result/impl/result-from-throwable.mjs +3 -1
  143. package/dist/functional/result/impl/result-from-throwable.mjs.map +1 -1
  144. package/dist/functional/result/impl/result-is-err.d.mts +4 -2
  145. package/dist/functional/result/impl/result-is-err.d.mts.map +1 -1
  146. package/dist/functional/result/impl/result-is-err.mjs +4 -2
  147. package/dist/functional/result/impl/result-is-err.mjs.map +1 -1
  148. package/dist/functional/result/impl/result-is-ok.d.mts +4 -2
  149. package/dist/functional/result/impl/result-is-ok.d.mts.map +1 -1
  150. package/dist/functional/result/impl/result-is-ok.mjs +4 -2
  151. package/dist/functional/result/impl/result-is-ok.mjs.map +1 -1
  152. package/dist/functional/result/impl/result-is-result.d.mts +7 -3
  153. package/dist/functional/result/impl/result-is-result.d.mts.map +1 -1
  154. package/dist/functional/result/impl/result-is-result.mjs +7 -3
  155. package/dist/functional/result/impl/result-is-result.mjs.map +1 -1
  156. package/dist/functional/result/impl/result-map-err.d.mts +3 -0
  157. package/dist/functional/result/impl/result-map-err.d.mts.map +1 -1
  158. package/dist/functional/result/impl/result-map-err.mjs.map +1 -1
  159. package/dist/functional/result/impl/result-map.d.mts +4 -0
  160. package/dist/functional/result/impl/result-map.d.mts.map +1 -1
  161. package/dist/functional/result/impl/result-map.mjs.map +1 -1
  162. package/dist/functional/result/impl/result-ok.d.mts +4 -2
  163. package/dist/functional/result/impl/result-ok.d.mts.map +1 -1
  164. package/dist/functional/result/impl/result-ok.mjs +3 -1
  165. package/dist/functional/result/impl/result-ok.mjs.map +1 -1
  166. package/dist/functional/result/impl/result-or-else.d.mts +4 -0
  167. package/dist/functional/result/impl/result-or-else.d.mts.map +1 -1
  168. package/dist/functional/result/impl/result-or-else.mjs.map +1 -1
  169. package/dist/functional/result/impl/result-swap.d.mts +2 -0
  170. package/dist/functional/result/impl/result-swap.d.mts.map +1 -1
  171. package/dist/functional/result/impl/result-swap.mjs +2 -0
  172. package/dist/functional/result/impl/result-swap.mjs.map +1 -1
  173. package/dist/functional/result/impl/result-to-optional.d.mts +2 -0
  174. package/dist/functional/result/impl/result-to-optional.d.mts.map +1 -1
  175. package/dist/functional/result/impl/result-to-optional.mjs +2 -0
  176. package/dist/functional/result/impl/result-to-optional.mjs.map +1 -1
  177. package/dist/functional/result/impl/result-unwrap-err-or.d.mts +7 -4
  178. package/dist/functional/result/impl/result-unwrap-err-or.d.mts.map +1 -1
  179. package/dist/functional/result/impl/result-unwrap-err-or.mjs.map +1 -1
  180. package/dist/functional/result/impl/result-unwrap-err-throw.d.mts +3 -1
  181. package/dist/functional/result/impl/result-unwrap-err-throw.d.mts.map +1 -1
  182. package/dist/functional/result/impl/result-unwrap-err-throw.mjs +3 -1
  183. package/dist/functional/result/impl/result-unwrap-err-throw.mjs.map +1 -1
  184. package/dist/functional/result/impl/result-unwrap-err.d.mts +3 -2
  185. package/dist/functional/result/impl/result-unwrap-err.d.mts.map +1 -1
  186. package/dist/functional/result/impl/result-unwrap-err.mjs +3 -2
  187. package/dist/functional/result/impl/result-unwrap-err.mjs.map +1 -1
  188. package/dist/functional/result/impl/result-unwrap-ok-or.d.mts +7 -4
  189. package/dist/functional/result/impl/result-unwrap-ok-or.d.mts.map +1 -1
  190. package/dist/functional/result/impl/result-unwrap-ok-or.mjs.map +1 -1
  191. package/dist/functional/result/impl/result-unwrap-ok.d.mts +3 -2
  192. package/dist/functional/result/impl/result-unwrap-ok.d.mts.map +1 -1
  193. package/dist/functional/result/impl/result-unwrap-ok.mjs.map +1 -1
  194. package/dist/functional/result/impl/result-unwrap-throw.d.mts +3 -1
  195. package/dist/functional/result/impl/result-unwrap-throw.d.mts.map +1 -1
  196. package/dist/functional/result/impl/result-unwrap-throw.mjs +3 -1
  197. package/dist/functional/result/impl/result-unwrap-throw.mjs.map +1 -1
  198. package/dist/functional/result/impl/result-zip.d.mts +3 -1
  199. package/dist/functional/result/impl/result-zip.d.mts.map +1 -1
  200. package/dist/functional/result/impl/result-zip.mjs +3 -1
  201. package/dist/functional/result/impl/result-zip.mjs.map +1 -1
  202. package/dist/functional/ternary-result/impl/ternary-result-err.d.mts +3 -2
  203. package/dist/functional/ternary-result/impl/ternary-result-err.d.mts.map +1 -1
  204. package/dist/functional/ternary-result/impl/ternary-result-err.mjs +2 -1
  205. package/dist/functional/ternary-result/impl/ternary-result-err.mjs.map +1 -1
  206. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.d.mts +1 -0
  207. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.d.mts.map +1 -1
  208. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.mjs.map +1 -1
  209. package/dist/functional/ternary-result/impl/ternary-result-flat-map.d.mts +4 -0
  210. package/dist/functional/ternary-result/impl/ternary-result-flat-map.d.mts.map +1 -1
  211. package/dist/functional/ternary-result/impl/ternary-result-flat-map.mjs.map +1 -1
  212. package/dist/functional/ternary-result/impl/ternary-result-fold.d.mts +2 -0
  213. package/dist/functional/ternary-result/impl/ternary-result-fold.d.mts.map +1 -1
  214. package/dist/functional/ternary-result/impl/ternary-result-fold.mjs.map +1 -1
  215. package/dist/functional/ternary-result/impl/ternary-result-from-promise.d.mts +3 -1
  216. package/dist/functional/ternary-result/impl/ternary-result-from-promise.d.mts.map +1 -1
  217. package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs +3 -1
  218. package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs.map +1 -1
  219. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.d.mts +3 -1
  220. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.d.mts.map +1 -1
  221. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs +3 -1
  222. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs.map +1 -1
  223. package/dist/functional/ternary-result/impl/ternary-result-is-ok.d.mts +1 -0
  224. package/dist/functional/ternary-result/impl/ternary-result-is-ok.d.mts.map +1 -1
  225. package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs +1 -0
  226. package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs.map +1 -1
  227. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.d.mts +7 -3
  228. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.d.mts.map +1 -1
  229. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs +7 -3
  230. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs.map +1 -1
  231. package/dist/functional/ternary-result/impl/ternary-result-is-warn.d.mts +1 -0
  232. package/dist/functional/ternary-result/impl/ternary-result-is-warn.d.mts.map +1 -1
  233. package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs +1 -0
  234. package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs.map +1 -1
  235. package/dist/functional/ternary-result/impl/ternary-result-map-err.d.mts +3 -0
  236. package/dist/functional/ternary-result/impl/ternary-result-map-err.d.mts.map +1 -1
  237. package/dist/functional/ternary-result/impl/ternary-result-map-err.mjs.map +1 -1
  238. package/dist/functional/ternary-result/impl/ternary-result-map-warn.d.mts +3 -0
  239. package/dist/functional/ternary-result/impl/ternary-result-map-warn.d.mts.map +1 -1
  240. package/dist/functional/ternary-result/impl/ternary-result-map-warn.mjs.map +1 -1
  241. package/dist/functional/ternary-result/impl/ternary-result-map.d.mts +6 -0
  242. package/dist/functional/ternary-result/impl/ternary-result-map.d.mts.map +1 -1
  243. package/dist/functional/ternary-result/impl/ternary-result-map.mjs.map +1 -1
  244. package/dist/functional/ternary-result/impl/ternary-result-ok.d.mts +1 -1
  245. package/dist/functional/ternary-result/impl/ternary-result-ok.d.mts.map +1 -1
  246. package/dist/functional/ternary-result/impl/ternary-result-ok.mjs.map +1 -1
  247. package/dist/functional/ternary-result/impl/ternary-result-or-else.d.mts +2 -0
  248. package/dist/functional/ternary-result/impl/ternary-result-or-else.d.mts.map +1 -1
  249. package/dist/functional/ternary-result/impl/ternary-result-or-else.mjs.map +1 -1
  250. package/dist/functional/ternary-result/impl/ternary-result-to-optional.d.mts +2 -0
  251. package/dist/functional/ternary-result/impl/ternary-result-to-optional.d.mts.map +1 -1
  252. package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs +2 -0
  253. package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs.map +1 -1
  254. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.d.mts +2 -0
  255. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.d.mts.map +1 -1
  256. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.mjs.map +1 -1
  257. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.d.mts +1 -0
  258. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.d.mts.map +1 -1
  259. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs +1 -0
  260. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs.map +1 -1
  261. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.d.mts +2 -0
  262. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.d.mts.map +1 -1
  263. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs +2 -0
  264. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs.map +1 -1
  265. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.d.mts +2 -0
  266. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.d.mts.map +1 -1
  267. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mjs.map +1 -1
  268. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.d.mts +2 -0
  269. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.d.mts.map +1 -1
  270. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.mjs.map +1 -1
  271. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.d.mts +1 -0
  272. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.d.mts.map +1 -1
  273. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs +1 -0
  274. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs.map +1 -1
  275. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.d.mts +2 -0
  276. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.d.mts.map +1 -1
  277. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mjs.map +1 -1
  278. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.d.mts +1 -0
  279. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.d.mts.map +1 -1
  280. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs +1 -0
  281. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs.map +1 -1
  282. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.d.mts +2 -0
  283. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.d.mts.map +1 -1
  284. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs +2 -0
  285. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs.map +1 -1
  286. package/dist/functional/ternary-result/impl/ternary-result-warn.d.mts +1 -1
  287. package/dist/functional/ternary-result/impl/ternary-result-warn.d.mts.map +1 -1
  288. package/dist/functional/ternary-result/impl/ternary-result-warn.mjs.map +1 -1
  289. package/dist/functional/ternary-result/impl/ternary-result-zip.d.mts +4 -0
  290. package/dist/functional/ternary-result/impl/ternary-result-zip.d.mts.map +1 -1
  291. package/dist/functional/ternary-result/impl/ternary-result-zip.mjs +4 -0
  292. package/dist/functional/ternary-result/impl/ternary-result-zip.mjs.map +1 -1
  293. package/dist/globals.d.mts +12 -1
  294. package/dist/guard/has-key.d.mts +6 -3
  295. package/dist/guard/has-key.d.mts.map +1 -1
  296. package/dist/guard/has-key.mjs +2 -2
  297. package/dist/guard/index.mjs +1 -1
  298. package/dist/guard/is-record.d.mts +31 -0
  299. package/dist/guard/is-record.d.mts.map +1 -1
  300. package/dist/guard/is-record.mjs +32 -1
  301. package/dist/guard/is-record.mjs.map +1 -1
  302. package/dist/guard/is-type.d.mts +3 -0
  303. package/dist/guard/is-type.d.mts.map +1 -1
  304. package/dist/guard/is-type.mjs +3 -0
  305. package/dist/guard/is-type.mjs.map +1 -1
  306. package/dist/guard/key-is-in.d.mts +3 -2
  307. package/dist/guard/key-is-in.d.mts.map +1 -1
  308. package/dist/guard/key-is-in.mjs +3 -2
  309. package/dist/guard/key-is-in.mjs.map +1 -1
  310. package/dist/index.mjs +1 -1
  311. package/dist/iterator/range.d.mts +4 -0
  312. package/dist/iterator/range.d.mts.map +1 -1
  313. package/dist/iterator/range.mjs +1 -0
  314. package/dist/iterator/range.mjs.map +1 -1
  315. package/dist/json/json.d.mts +42 -21
  316. package/dist/json/json.d.mts.map +1 -1
  317. package/dist/json/json.mjs +42 -21
  318. package/dist/json/json.mjs.map +1 -1
  319. package/dist/number/branded-types/int.d.mts +33 -19
  320. package/dist/number/branded-types/int.d.mts.map +1 -1
  321. package/dist/number/branded-types/int.mjs +33 -19
  322. package/dist/number/branded-types/int.mjs.map +1 -1
  323. package/dist/number/branded-types/non-zero-safe-int.mjs +2 -2
  324. package/dist/number/branded-types/positive-int.d.mts +34 -20
  325. package/dist/number/branded-types/positive-int.d.mts.map +1 -1
  326. package/dist/number/branded-types/positive-int.mjs +34 -20
  327. package/dist/number/branded-types/positive-int.mjs.map +1 -1
  328. package/dist/number/branded-types/positive-safe-int.d.mts +47 -26
  329. package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -1
  330. package/dist/number/branded-types/positive-safe-int.mjs +48 -27
  331. package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
  332. package/dist/number/branded-types/safe-int.d.mts +48 -27
  333. package/dist/number/branded-types/safe-int.d.mts.map +1 -1
  334. package/dist/number/branded-types/safe-int.mjs +50 -29
  335. package/dist/number/branded-types/safe-int.mjs.map +1 -1
  336. package/dist/number/branded-types/safe-uint.mjs +1 -1
  337. package/dist/number/branded-types/uint.d.mts +31 -19
  338. package/dist/number/branded-types/uint.d.mts.map +1 -1
  339. package/dist/number/branded-types/uint.mjs +31 -19
  340. package/dist/number/branded-types/uint.mjs.map +1 -1
  341. package/dist/number/num.d.mts +29 -20
  342. package/dist/number/num.d.mts.map +1 -1
  343. package/dist/number/num.mjs +24 -17
  344. package/dist/number/num.mjs.map +1 -1
  345. package/dist/number/refined-number-utils.d.mts +33 -11
  346. package/dist/number/refined-number-utils.d.mts.map +1 -1
  347. package/dist/number/refined-number-utils.mjs +33 -11
  348. package/dist/number/refined-number-utils.mjs.map +1 -1
  349. package/dist/object/object.d.mts +12 -3
  350. package/dist/object/object.d.mts.map +1 -1
  351. package/dist/object/object.mjs +10 -3
  352. package/dist/object/object.mjs.map +1 -1
  353. package/dist/others/map-nullable.mjs.map +1 -1
  354. package/dist/others/tuple.d.mts +14 -3
  355. package/dist/others/tuple.d.mts.map +1 -1
  356. package/dist/others/tuple.mjs +14 -3
  357. package/dist/others/tuple.mjs.map +1 -1
  358. package/dist/others/unknown-to-string.d.mts.map +1 -1
  359. package/dist/others/unknown-to-string.mjs.map +1 -1
  360. package/dist/promise/promise.d.mts +8 -4
  361. package/dist/promise/promise.d.mts.map +1 -1
  362. package/dist/promise/promise.mjs +8 -4
  363. package/dist/promise/promise.mjs.map +1 -1
  364. package/package.json +26 -28
  365. package/src/array/impl/array-utils-creation.mts +20 -0
  366. package/src/array/impl/array-utils-creation.test.mts +72 -1
  367. package/src/array/impl/array-utils-element-access.mts +13 -0
  368. package/src/array/impl/array-utils-element-access.test.mts +36 -15
  369. package/src/array/impl/array-utils-iterators.test.mts +17 -0
  370. package/src/array/impl/array-utils-modification.mts +78 -19
  371. package/src/array/impl/array-utils-modification.test.mts +75 -0
  372. package/src/array/impl/array-utils-overload-type-error.test.mts +19 -0
  373. package/src/array/impl/array-utils-reducing-value.mts +61 -16
  374. package/src/array/impl/array-utils-reducing-value.test.mts +107 -25
  375. package/src/array/impl/array-utils-search.mts +57 -4
  376. package/src/array/impl/array-utils-search.test.mts +61 -10
  377. package/src/array/impl/array-utils-set-op.mts +26 -7
  378. package/src/array/impl/array-utils-set-op.test.mts +129 -13
  379. package/src/array/impl/array-utils-size.mts +5 -2
  380. package/src/array/impl/array-utils-size.test.mts +1 -0
  381. package/src/array/impl/array-utils-slice-clamped.mts +7 -0
  382. package/src/array/impl/array-utils-slice-clamped.test.mts +20 -0
  383. package/src/array/impl/array-utils-slicing.mts +29 -2
  384. package/src/array/impl/array-utils-slicing.test.mts +57 -0
  385. package/src/array/impl/array-utils-transformation.mts +58 -0
  386. package/src/array/impl/array-utils-transformation.test.mts +115 -3
  387. package/src/array/impl/array-utils-validation.mts +41 -18
  388. package/src/array/impl/array-utils-validation.test.mts +176 -78
  389. package/src/array/impl/array.test.mts +18 -6
  390. package/src/collections/imap-mapped.mts +11 -0
  391. package/src/collections/imap-mapped.test.mts +86 -18
  392. package/src/collections/imap.mts +47 -15
  393. package/src/collections/imap.test.mts +137 -31
  394. package/src/collections/iset-mapped.mts +54 -19
  395. package/src/collections/iset-mapped.test.mts +163 -52
  396. package/src/collections/iset.mts +53 -19
  397. package/src/collections/iset.test.mts +323 -130
  398. package/src/collections/queue.mts +78 -25
  399. package/src/collections/queue.test.mts +65 -35
  400. package/src/collections/stack.mts +67 -25
  401. package/src/collections/stack.test.mts +59 -15
  402. package/src/functional/match.mts +17 -1
  403. package/src/functional/match.test.mts +2 -0
  404. package/src/functional/optional/impl/optional-expect-to-be.mts +5 -2
  405. package/src/functional/optional/impl/optional-filter.mts +6 -0
  406. package/src/functional/optional/impl/optional-flat-map.mts +4 -0
  407. package/src/functional/optional/impl/optional-from-nullable.mts +2 -0
  408. package/src/functional/optional/impl/optional-is-none.mts +1 -1
  409. package/src/functional/optional/impl/optional-is-optional.mts +4 -2
  410. package/src/functional/optional/impl/optional-is-some.mts +2 -1
  411. package/src/functional/optional/impl/optional-map.mts +5 -0
  412. package/src/functional/optional/impl/optional-none.mts +4 -2
  413. package/src/functional/optional/impl/optional-or-else.mts +6 -0
  414. package/src/functional/optional/impl/optional-some.mts +5 -3
  415. package/src/functional/optional/impl/optional-to-nullable.mts +4 -2
  416. package/src/functional/optional/impl/optional-unwrap-or.mts +9 -4
  417. package/src/functional/optional/impl/optional-unwrap-throw.mts +2 -1
  418. package/src/functional/optional/impl/optional-unwrap.mts +4 -2
  419. package/src/functional/optional/impl/optional-zip.mts +3 -1
  420. package/src/functional/optional.test.mts +126 -54
  421. package/src/functional/pipe.mts +2 -2
  422. package/src/functional/pipe.test.mts +7 -4
  423. package/src/functional/result/impl/result-err.mts +4 -2
  424. package/src/functional/result/impl/result-expect-to-be.mts +5 -2
  425. package/src/functional/result/impl/result-flat-map.mts +7 -0
  426. package/src/functional/result/impl/result-fold.mts +6 -0
  427. package/src/functional/result/impl/result-from-promise.mts +4 -1
  428. package/src/functional/result/impl/result-from-throwable.mts +5 -1
  429. package/src/functional/result/impl/result-is-err.mts +4 -2
  430. package/src/functional/result/impl/result-is-ok.mts +4 -2
  431. package/src/functional/result/impl/result-is-result.mts +7 -3
  432. package/src/functional/result/impl/result-map-err.mts +5 -0
  433. package/src/functional/result/impl/result-map.mts +6 -0
  434. package/src/functional/result/impl/result-ok.mts +4 -2
  435. package/src/functional/result/impl/result-or-else.mts +6 -0
  436. package/src/functional/result/impl/result-swap.mts +2 -0
  437. package/src/functional/result/impl/result-to-optional.mts +2 -0
  438. package/src/functional/result/impl/result-unwrap-err-or.mts +9 -4
  439. package/src/functional/result/impl/result-unwrap-err-throw.mts +3 -1
  440. package/src/functional/result/impl/result-unwrap-err.mts +3 -2
  441. package/src/functional/result/impl/result-unwrap-ok-or.mts +9 -4
  442. package/src/functional/result/impl/result-unwrap-ok.mts +4 -2
  443. package/src/functional/result/impl/result-unwrap-throw.mts +3 -1
  444. package/src/functional/result/impl/result-zip.mts +3 -1
  445. package/src/functional/result.test.mts +182 -152
  446. package/src/functional/ternary-result/impl/ternary-result-err.mts +3 -2
  447. package/src/functional/ternary-result/impl/ternary-result-expect-to-be.mts +4 -0
  448. package/src/functional/ternary-result/impl/ternary-result-flat-map.mts +7 -0
  449. package/src/functional/ternary-result/impl/ternary-result-fold.mts +5 -0
  450. package/src/functional/ternary-result/impl/ternary-result-from-promise.mts +3 -1
  451. package/src/functional/ternary-result/impl/ternary-result-from-throwable.mts +4 -1
  452. package/src/functional/ternary-result/impl/ternary-result-is-ok.mts +1 -0
  453. package/src/functional/ternary-result/impl/ternary-result-is-ternary-result.mts +7 -3
  454. package/src/functional/ternary-result/impl/ternary-result-is-warn.mts +1 -0
  455. package/src/functional/ternary-result/impl/ternary-result-map-err.mts +6 -0
  456. package/src/functional/ternary-result/impl/ternary-result-map-warn.mts +6 -0
  457. package/src/functional/ternary-result/impl/ternary-result-map.mts +9 -0
  458. package/src/functional/ternary-result/impl/ternary-result-ok.mts +1 -1
  459. package/src/functional/ternary-result/impl/ternary-result-or-else.mts +5 -0
  460. package/src/functional/ternary-result/impl/ternary-result-to-optional.mts +2 -0
  461. package/src/functional/ternary-result/impl/ternary-result-unwrap-err-or.mts +5 -0
  462. package/src/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mts +1 -0
  463. package/src/functional/ternary-result/impl/ternary-result-unwrap-err.mts +2 -0
  464. package/src/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mts +5 -0
  465. package/src/functional/ternary-result/impl/ternary-result-unwrap-ok.mts +3 -0
  466. package/src/functional/ternary-result/impl/ternary-result-unwrap-throw.mts +1 -0
  467. package/src/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mts +5 -0
  468. package/src/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mts +1 -0
  469. package/src/functional/ternary-result/impl/ternary-result-unwrap-warn.mts +2 -0
  470. package/src/functional/ternary-result/impl/ternary-result-warn.mts +4 -1
  471. package/src/functional/ternary-result/impl/ternary-result-zip.mts +4 -0
  472. package/src/functional/ternary-result.test.mts +99 -8
  473. package/src/globals.d.mts +12 -1
  474. package/src/guard/has-key.mts +8 -5
  475. package/src/guard/has-key.test.mts +9 -5
  476. package/src/guard/is-error.test.mts +143 -0
  477. package/src/guard/is-non-empty-string.test.mts +44 -24
  478. package/src/guard/is-non-null-object.test.mts +45 -26
  479. package/src/guard/is-primitive.test.mts +51 -28
  480. package/src/guard/is-record.mts +34 -0
  481. package/src/guard/is-record.test.mts +28 -7
  482. package/src/guard/is-type.mts +3 -0
  483. package/src/guard/is-type.test.mts +285 -155
  484. package/src/guard/key-is-in.mts +3 -2
  485. package/src/guard/key-is-in.test.mts +2 -2
  486. package/src/iterator/range.mts +9 -0
  487. package/src/json/json.mts +50 -21
  488. package/src/json/json.test.mts +224 -176
  489. package/src/number/branded-types/finite-number.test.mts +51 -11
  490. package/src/number/branded-types/int.mts +33 -19
  491. package/src/number/branded-types/int.test.mts +56 -14
  492. package/src/number/branded-types/int16.test.mts +63 -16
  493. package/src/number/branded-types/int32.test.mts +63 -16
  494. package/src/number/branded-types/non-negative-finite-number.test.mts +52 -12
  495. package/src/number/branded-types/non-negative-int16.test.mts +59 -16
  496. package/src/number/branded-types/non-negative-int32.test.mts +59 -16
  497. package/src/number/branded-types/non-zero-finite-number.test.mts +65 -14
  498. package/src/number/branded-types/non-zero-int.test.mts +72 -19
  499. package/src/number/branded-types/non-zero-int16.test.mts +60 -16
  500. package/src/number/branded-types/non-zero-int32.test.mts +60 -16
  501. package/src/number/branded-types/non-zero-safe-int.mts +2 -2
  502. package/src/number/branded-types/non-zero-safe-int.test.mts +85 -23
  503. package/src/number/branded-types/non-zero-uint16.test.mts +53 -16
  504. package/src/number/branded-types/non-zero-uint32.test.mts +53 -16
  505. package/src/number/branded-types/positive-finite-number.test.mts +59 -14
  506. package/src/number/branded-types/positive-int.mts +34 -20
  507. package/src/number/branded-types/positive-int.test.mts +64 -17
  508. package/src/number/branded-types/positive-int16.test.mts +50 -15
  509. package/src/number/branded-types/positive-int32.test.mts +50 -15
  510. package/src/number/branded-types/positive-safe-int.mts +48 -27
  511. package/src/number/branded-types/positive-safe-int.test.mts +68 -19
  512. package/src/number/branded-types/positive-uint16.test.mts +53 -16
  513. package/src/number/branded-types/positive-uint32.test.mts +53 -16
  514. package/src/number/branded-types/safe-int.mts +50 -29
  515. package/src/number/branded-types/safe-int.test.mts +70 -18
  516. package/src/number/branded-types/safe-uint.mts +1 -1
  517. package/src/number/branded-types/safe-uint.test.mts +65 -17
  518. package/src/number/branded-types/uint.mts +31 -19
  519. package/src/number/branded-types/uint.test.mts +58 -15
  520. package/src/number/branded-types/uint16.test.mts +56 -15
  521. package/src/number/branded-types/uint32.test.mts +56 -15
  522. package/src/number/enum/int8.test.mts +7 -1
  523. package/src/number/enum/uint8.test.mts +7 -1
  524. package/src/number/num.mts +32 -21
  525. package/src/number/num.test.mts +88 -26
  526. package/src/number/refined-number-utils.mts +38 -13
  527. package/src/object/object.mts +19 -3
  528. package/src/object/object.test.mts +16 -6
  529. package/src/others/cast-mutable.test.mts +8 -1
  530. package/src/others/cast-readonly.test.mts +21 -4
  531. package/src/others/if-then.test.mts +40 -24
  532. package/src/others/map-nullable.mts +3 -0
  533. package/src/others/map-nullable.test.mts +27 -0
  534. package/src/others/memoize-function.test.mts +41 -0
  535. package/src/others/tuple.mts +14 -3
  536. package/src/others/unknown-to-string.mts +2 -0
  537. package/src/others/unknown-to-string.test.mts +10 -0
  538. package/src/promise/promise.mts +8 -4
  539. package/src/promise/promise.test.mts +8 -13
@@ -44,22 +44,29 @@ export type Stack<T> = Readonly<{
44
44
  * ```ts
45
45
  * const stack = createStack<string>();
46
46
  *
47
- * assert.ok(stack.isEmpty);
48
- * assert(stack.size === 0);
47
+ * assert.isTrue(stack.isEmpty);
48
+ *
49
+ * assert.isTrue(stack.size === 0);
49
50
  *
50
51
  * stack.push('first');
52
+ *
51
53
  * // eslint-disable-next-line unicorn/prefer-single-call
52
54
  * stack.push('second');
53
55
  *
54
- * assert.notOk(stack.isEmpty);
55
- * assert(stack.size === 2);
56
+ * assert.isFalse(stack.isEmpty);
57
+ *
58
+ * assert.isTrue(stack.size === 2);
59
+ *
56
60
  * assert.deepStrictEqual(stack.pop(), Optional.some('second'));
61
+ *
57
62
  * assert.deepStrictEqual(stack.pop(), Optional.some('first'));
63
+ *
58
64
  * assert.deepStrictEqual(stack.pop(), Optional.none);
59
65
  *
60
66
  * const seededStack = createStack([10, 20, 30]);
61
67
  *
62
- * assert(seededStack.size === 3);
68
+ * assert.isTrue(seededStack.size === 3);
69
+ *
63
70
  * assert.deepStrictEqual(seededStack.pop(), Optional.some(30));
64
71
  * ```
65
72
  */
@@ -73,22 +80,29 @@ export type Stack<T> = Readonly<{
73
80
  * ```ts
74
81
  * const stack = createStack<string>();
75
82
  *
76
- * assert.ok(stack.isEmpty);
77
- * assert(stack.size === 0);
83
+ * assert.isTrue(stack.isEmpty);
84
+ *
85
+ * assert.isTrue(stack.size === 0);
78
86
  *
79
87
  * stack.push('first');
88
+ *
80
89
  * // eslint-disable-next-line unicorn/prefer-single-call
81
90
  * stack.push('second');
82
91
  *
83
- * assert.notOk(stack.isEmpty);
84
- * assert(stack.size === 2);
92
+ * assert.isFalse(stack.isEmpty);
93
+ *
94
+ * assert.isTrue(stack.size === 2);
95
+ *
85
96
  * assert.deepStrictEqual(stack.pop(), Optional.some('second'));
97
+ *
86
98
  * assert.deepStrictEqual(stack.pop(), Optional.some('first'));
99
+ *
87
100
  * assert.deepStrictEqual(stack.pop(), Optional.none);
88
101
  *
89
102
  * const seededStack = createStack([10, 20, 30]);
90
103
  *
91
- * assert(seededStack.size === 3);
104
+ * assert.isTrue(seededStack.size === 3);
105
+ *
92
106
  * assert.deepStrictEqual(seededStack.pop(), Optional.some(30));
93
107
  * ```
94
108
  */
@@ -102,22 +116,29 @@ export type Stack<T> = Readonly<{
102
116
  * ```ts
103
117
  * const stack = createStack<string>();
104
118
  *
105
- * assert.ok(stack.isEmpty);
106
- * assert(stack.size === 0);
119
+ * assert.isTrue(stack.isEmpty);
120
+ *
121
+ * assert.isTrue(stack.size === 0);
107
122
  *
108
123
  * stack.push('first');
124
+ *
109
125
  * // eslint-disable-next-line unicorn/prefer-single-call
110
126
  * stack.push('second');
111
127
  *
112
- * assert.notOk(stack.isEmpty);
113
- * assert(stack.size === 2);
128
+ * assert.isFalse(stack.isEmpty);
129
+ *
130
+ * assert.isTrue(stack.size === 2);
131
+ *
114
132
  * assert.deepStrictEqual(stack.pop(), Optional.some('second'));
133
+ *
115
134
  * assert.deepStrictEqual(stack.pop(), Optional.some('first'));
135
+ *
116
136
  * assert.deepStrictEqual(stack.pop(), Optional.none);
117
137
  *
118
138
  * const seededStack = createStack([10, 20, 30]);
119
139
  *
120
- * assert(seededStack.size === 3);
140
+ * assert.isTrue(seededStack.size === 3);
141
+ *
121
142
  * assert.deepStrictEqual(seededStack.pop(), Optional.some(30));
122
143
  * ```
123
144
  *
@@ -134,22 +155,29 @@ export type Stack<T> = Readonly<{
134
155
  * ```ts
135
156
  * const stack = createStack<string>();
136
157
  *
137
- * assert.ok(stack.isEmpty);
138
- * assert(stack.size === 0);
158
+ * assert.isTrue(stack.isEmpty);
159
+ *
160
+ * assert.isTrue(stack.size === 0);
139
161
  *
140
162
  * stack.push('first');
163
+ *
141
164
  * // eslint-disable-next-line unicorn/prefer-single-call
142
165
  * stack.push('second');
143
166
  *
144
- * assert.notOk(stack.isEmpty);
145
- * assert(stack.size === 2);
167
+ * assert.isFalse(stack.isEmpty);
168
+ *
169
+ * assert.isTrue(stack.size === 2);
170
+ *
146
171
  * assert.deepStrictEqual(stack.pop(), Optional.some('second'));
172
+ *
147
173
  * assert.deepStrictEqual(stack.pop(), Optional.some('first'));
174
+ *
148
175
  * assert.deepStrictEqual(stack.pop(), Optional.none);
149
176
  *
150
177
  * const seededStack = createStack([10, 20, 30]);
151
178
  *
152
- * assert(seededStack.size === 3);
179
+ * assert.isTrue(seededStack.size === 3);
180
+ *
153
181
  * assert.deepStrictEqual(seededStack.pop(), Optional.some(30));
154
182
  * ```
155
183
  *
@@ -197,7 +225,9 @@ class StackClass<T> implements Stack<T> {
197
225
  { length: initialCapacity },
198
226
  () => undefined,
199
227
  );
228
+
200
229
  this.#mut_size = asUint32(0);
230
+
201
231
  this.#capacity = initialCapacity;
202
232
 
203
233
  // Add initial values
@@ -236,8 +266,10 @@ class StackClass<T> implements Stack<T> {
236
266
  }
237
267
 
238
268
  this.#mut_size = Uint32.sub(this.#mut_size, 1);
269
+
239
270
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
240
271
  const element = this.#buffer[this.#mut_size]!;
272
+
241
273
  this.#buffer[this.#mut_size] = undefined; // Clear reference for garbage collection
242
274
 
243
275
  return Optional.some(element);
@@ -267,6 +299,7 @@ class StackClass<T> implements Stack<T> {
267
299
  }
268
300
 
269
301
  this.#buffer[this.#mut_size] = value;
302
+
270
303
  this.#mut_size = Uint32.add(this.#mut_size, 1);
271
304
  }
272
305
 
@@ -277,6 +310,7 @@ class StackClass<T> implements Stack<T> {
277
310
  */
278
311
  #resize(): void {
279
312
  const newCapacity = asUint32(this.#capacity * 2);
313
+
280
314
  const newBuffer = Array.from<unknown, T | undefined>(
281
315
  { length: newCapacity },
282
316
  () => undefined,
@@ -288,6 +322,7 @@ class StackClass<T> implements Stack<T> {
288
322
  }
289
323
 
290
324
  this.#buffer = newBuffer;
325
+
291
326
  this.#capacity = newCapacity;
292
327
  }
293
328
  }
@@ -321,22 +356,29 @@ class StackClass<T> implements Stack<T> {
321
356
  * ```ts
322
357
  * const stack = createStack<string>();
323
358
  *
324
- * assert.ok(stack.isEmpty);
325
- * assert(stack.size === 0);
359
+ * assert.isTrue(stack.isEmpty);
360
+ *
361
+ * assert.isTrue(stack.size === 0);
326
362
  *
327
363
  * stack.push('first');
364
+ *
328
365
  * // eslint-disable-next-line unicorn/prefer-single-call
329
366
  * stack.push('second');
330
367
  *
331
- * assert.notOk(stack.isEmpty);
332
- * assert(stack.size === 2);
368
+ * assert.isFalse(stack.isEmpty);
369
+ *
370
+ * assert.isTrue(stack.size === 2);
371
+ *
333
372
  * assert.deepStrictEqual(stack.pop(), Optional.some('second'));
373
+ *
334
374
  * assert.deepStrictEqual(stack.pop(), Optional.some('first'));
375
+ *
335
376
  * assert.deepStrictEqual(stack.pop(), Optional.none);
336
377
  *
337
378
  * const seededStack = createStack([10, 20, 30]);
338
379
  *
339
- * assert(seededStack.size === 3);
380
+ * assert.isTrue(seededStack.size === 3);
381
+ *
340
382
  * assert.deepStrictEqual(seededStack.pop(), Optional.some(30));
341
383
  * ```
342
384
  *
@@ -9,56 +9,74 @@ describe('Stack test', () => {
9
9
  const stack = createStack<number>();
10
10
 
11
11
  expectType<typeof stack, Stack<number>>('=');
12
+
12
13
  expectType<typeof stack.isEmpty, boolean>('=');
14
+
13
15
  expectType<typeof stack.size, SizeType.Arr>('=');
16
+
14
17
  expectType<typeof stack.pop, () => Optional<number>>('=');
18
+
15
19
  expectType<typeof stack.push, (value: number) => void>('=');
16
20
 
17
21
  // Verify the type checking works at runtime too
18
22
  expectTypeOf(stack.isEmpty).toBeBoolean();
23
+
19
24
  expectTypeOf(stack.size).toBeNumber();
25
+
20
26
  expectTypeOf(stack.pop).toBeFunction();
27
+
21
28
  expectTypeOf(stack.push).toBeFunction();
22
29
  });
23
30
 
24
31
  test('should be empty when created without initial values', () => {
25
32
  const stack = createStack<string>();
26
33
 
27
- expect(stack.isEmpty).toBe(true);
34
+ assert.isTrue(stack.isEmpty);
35
+
28
36
  expect(stack.size).toBe(0);
29
37
  });
30
38
 
31
39
  test('should create with initial values', () => {
32
40
  const stack = createStack<number>([1, 2, 3]);
33
41
 
34
- expect(stack.isEmpty).toBe(false);
42
+ assert.isFalse(stack.isEmpty);
43
+
35
44
  expect(stack.size).toBe(3);
36
45
 
37
46
  // Last element should be on top (LIFO)
38
47
  expect(Optional.unwrap(stack.pop())).toBe(3);
48
+
39
49
  expect(Optional.unwrap(stack.pop())).toBe(2);
50
+
40
51
  expect(Optional.unwrap(stack.pop())).toBe(1);
41
- expect(stack.isEmpty).toBe(true);
52
+
53
+ assert.isTrue(stack.isEmpty);
42
54
  });
43
55
 
44
56
  test('should implement LIFO behavior correctly', () => {
45
57
  const stack = createStack<string>();
46
58
 
47
59
  stack.push('first');
60
+
48
61
  // eslint-disable-next-line unicorn/prefer-single-call
49
62
  stack.push('second');
63
+
50
64
  // eslint-disable-next-line unicorn/prefer-single-call
51
65
  stack.push('third');
52
66
 
53
67
  expect(stack.size).toBe(3);
54
- expect(stack.isEmpty).toBe(false);
68
+
69
+ assert.isFalse(stack.isEmpty);
55
70
 
56
71
  // LIFO: Last In, First Out
57
72
  expect(Optional.unwrap(stack.pop())).toBe('third');
73
+
58
74
  expect(Optional.unwrap(stack.pop())).toBe('second');
75
+
59
76
  expect(Optional.unwrap(stack.pop())).toBe('first');
60
77
 
61
- expect(stack.isEmpty).toBe(true);
78
+ assert.isTrue(stack.isEmpty);
79
+
62
80
  expect(stack.size).toBe(0);
63
81
  });
64
82
 
@@ -67,8 +85,10 @@ describe('Stack test', () => {
67
85
 
68
86
  const result = stack.pop();
69
87
 
70
- expect(Optional.isNone(result)).toBe(true);
71
- expect(stack.isEmpty).toBe(true);
88
+ assert.isTrue(Optional.isNone(result));
89
+
90
+ assert.isTrue(stack.isEmpty);
91
+
72
92
  expect(stack.size).toBe(0);
73
93
  });
74
94
 
@@ -100,48 +120,58 @@ describe('Stack test', () => {
100
120
  Optional.unwrap(stack.pop());
101
121
 
102
122
  expect(stack.size).toBe(0);
103
- expect(stack.isEmpty).toBe(true);
123
+
124
+ assert.isTrue(stack.isEmpty);
104
125
  });
105
126
 
106
127
  test('should handle mixed push and pop operations', () => {
107
128
  const stack = createStack<string>();
108
129
 
109
130
  stack.push('a');
131
+
110
132
  // eslint-disable-next-line unicorn/prefer-single-call
111
133
  stack.push('b');
112
134
 
113
135
  expect(Optional.unwrap(stack.pop())).toBe('b');
114
136
 
115
137
  stack.push('c');
138
+
116
139
  // eslint-disable-next-line unicorn/prefer-single-call
117
140
  stack.push('d');
118
141
 
119
142
  expect(Optional.unwrap(stack.pop())).toBe('d');
143
+
120
144
  expect(Optional.unwrap(stack.pop())).toBe('c');
145
+
121
146
  expect(Optional.unwrap(stack.pop())).toBe('a');
122
147
 
123
- expect(stack.isEmpty).toBe(true);
148
+ assert.isTrue(stack.isEmpty);
124
149
  });
125
150
 
126
151
  test('should work with object types', () => {
127
152
  type Item = Readonly<{ id: number; name: string }>;
153
+
128
154
  const stack = createStack<Item>();
129
155
 
130
156
  const item1: Item = { id: 1, name: 'first' };
157
+
131
158
  const item2: Item = { id: 2, name: 'second' };
132
159
 
133
160
  stack.push(item1);
161
+
134
162
  // eslint-disable-next-line unicorn/prefer-single-call
135
163
  stack.push(item2);
136
164
 
137
165
  assert.deepStrictEqual(Optional.unwrap(stack.pop()), item2);
166
+
138
167
  assert.deepStrictEqual(Optional.unwrap(stack.pop()), item1);
139
168
 
140
- expect(stack.isEmpty).toBe(true);
169
+ assert.isTrue(stack.isEmpty);
141
170
  });
142
171
 
143
172
  test('should handle large number of operations efficiently', () => {
144
173
  const stack = createStack<number>();
174
+
145
175
  const n = asPositiveSafeInt(10_000);
146
176
 
147
177
  // Push many elements
@@ -150,28 +180,33 @@ describe('Stack test', () => {
150
180
  }
151
181
 
152
182
  expect(stack.size).toBe(n);
153
- expect(stack.isEmpty).toBe(false);
183
+
184
+ assert.isFalse(stack.isEmpty);
154
185
 
155
186
  // Pop all elements and verify LIFO order
156
187
  for (const i of range(asSafeInt(n - 1), -1, -1)) {
157
188
  const result = stack.pop();
158
189
 
159
- expect(Optional.isSome(result)).toBe(true);
190
+ assert.isTrue(Optional.isSome(result));
191
+
160
192
  expect(Optional.unwrap(result)).toBe(i);
161
193
  }
162
194
 
163
- expect(stack.isEmpty).toBe(true);
195
+ assert.isTrue(stack.isEmpty);
196
+
164
197
  expect(stack.size).toBe(0);
165
198
  });
166
199
 
167
200
  test('should not mutate initial values array', () => {
168
201
  const initialValues = [1, 2, 3];
202
+
169
203
  const originalLength = initialValues.length;
170
204
 
171
205
  const stack = createStack(initialValues);
172
206
 
173
207
  // Modify stack
174
208
  stack.push(4);
209
+
175
210
  Optional.unwrap(stack.pop());
176
211
 
177
212
  // Original array should be unchanged
@@ -184,18 +219,25 @@ describe('Stack test', () => {
184
219
  const stack = createStack<string | null | undefined>();
185
220
 
186
221
  stack.push('value');
222
+
187
223
  // eslint-disable-next-line unicorn/prefer-single-call
188
224
  stack.push(null);
225
+
189
226
  // eslint-disable-next-line unicorn/prefer-single-call
190
227
  stack.push(undefined);
228
+
191
229
  // eslint-disable-next-line unicorn/prefer-single-call
192
230
  stack.push('another');
193
231
 
194
232
  expect(Optional.unwrap(stack.pop())).toBe('another');
233
+
195
234
  expect(Optional.unwrap(stack.pop())).toBeUndefined();
235
+
196
236
  expect(Optional.unwrap(stack.pop())).toBeNull();
237
+
197
238
  expect(Optional.unwrap(stack.pop())).toBe('value');
198
- expect(stack.isEmpty).toBe(true);
239
+
240
+ assert.isTrue(stack.isEmpty);
199
241
  });
200
242
 
201
243
  test('should maintain performance characteristics', () => {
@@ -215,6 +257,7 @@ describe('Stack test', () => {
215
257
  }
216
258
 
217
259
  const endTime = performance.now();
260
+
218
261
  const duration = endTime - startTime;
219
262
 
220
263
  // Should complete in reasonable time (much less than 100ms for 512 operations)
@@ -226,6 +269,7 @@ describe('Stack test', () => {
226
269
 
227
270
  for (const i of range(100)) {
228
271
  stack.push(i);
272
+
229
273
  if (i % 2 === 1) {
230
274
  // Pop every other time
231
275
  const result = stack.pop();
@@ -244,6 +288,6 @@ describe('Stack test', () => {
244
288
  expect(Optional.unwrap(result)).toBe(i);
245
289
  }
246
290
 
247
- expect(stack.isEmpty).toBe(true);
291
+ assert.isTrue(stack.isEmpty);
248
292
  });
249
293
  });
@@ -34,7 +34,7 @@ import { keyIsIn } from '../guard/index.mjs';
34
34
  * published: 'Complete',
35
35
  * });
36
36
  *
37
- * assert(message === 'Work in progress');
37
+ * assert.isTrue(message === 'Work in progress');
38
38
  * ```
39
39
  *
40
40
  * @param target - The value to match against
@@ -70,10 +70,13 @@ export function match<
70
70
  switch (args.length) {
71
71
  case 2: {
72
72
  const [target, cases] = args;
73
+
73
74
  return cases[target];
74
75
  }
76
+
75
77
  case 3: {
76
78
  const [target, cases, defaultValue] = args;
79
+
77
80
  return keyIsIn(target, cases) ? cases[target] : defaultValue;
78
81
  }
79
82
  }
@@ -102,8 +105,11 @@ type AllCasesCovered<Case extends PropertyKey, R> =
102
105
  TypeEq<Case, keyof R> extends true ? true : false;
103
106
 
104
107
  expectType<AllCasesCovered<'a' | 'b', { a: 1; b: 2 }>, true>('=');
108
+
105
109
  expectType<AllCasesCovered<'a' | 'b' | 'c', { a: 1; b: 2 }>, false>('=');
110
+
106
111
  expectType<AllCasesCovered<'a' | 'b', { a: 1; b: 2; c: 3 }>, false>('=');
112
+
107
113
  expectType<AllCasesCovered<string, Record<string, string>>, true>('=');
108
114
 
109
115
  /**
@@ -121,15 +127,19 @@ type IsLiteralUnionFullyCovered<
121
127
  : false;
122
128
 
123
129
  expectType<IsLiteralUnionFullyCovered<'a' | 'b', { a: 1; b: 2 }>, true>('=');
130
+
124
131
  expectType<IsLiteralUnionFullyCovered<'a' | 'b' | 'c', { a: 1; b: 2 }>, false>(
125
132
  '=',
126
133
  );
134
+
127
135
  expectType<IsLiteralUnionFullyCovered<'a' | 'b', { a: 1; b: 2; c: 3 }>, false>(
128
136
  '=',
129
137
  );
138
+
130
139
  expectType<IsLiteralUnionFullyCovered<string, Record<string, string>>, false>(
131
140
  '=',
132
141
  );
142
+
133
143
  expectType<
134
144
  // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents
135
145
  IsLiteralUnionFullyCovered<'a' | 'b' | string, { a: 1; b: 2 }>,
@@ -152,9 +162,15 @@ type IsLiteralType<T extends PropertyKey> = string extends T
152
162
  : true;
153
163
 
154
164
  expectType<IsLiteralType<'a' | 'b'>, true>('=');
165
+
155
166
  expectType<IsLiteralType<'a'>, true>('=');
167
+
156
168
  expectType<IsLiteralType<string>, false>('=');
169
+
157
170
  expectType<IsLiteralType<number>, false>('=');
171
+
158
172
  expectType<IsLiteralType<1>, true>('=');
173
+
159
174
  expectType<IsLiteralType<number | 'aa'>, false>('=');
175
+
160
176
  expectType<IsLiteralType<'aa' | 32>, true>('=');
@@ -3,6 +3,7 @@ import { match } from './match.mjs';
3
3
 
4
4
  describe(match, () => {
5
5
  type Direction = 'E' | 'N' | 'S' | 'W';
6
+
6
7
  const direction: Direction = 'N' as Direction;
7
8
 
8
9
  test('literal union', () => {
@@ -159,6 +160,7 @@ describe(match, () => {
159
160
 
160
161
  test('with default case - string key missing', () => {
161
162
  const unknownDirection = 'X' as string;
163
+
162
164
  const res = match(
163
165
  unknownDirection,
164
166
  {
@@ -11,12 +11,13 @@ import { type Unwrap } from './types.mjs';
11
11
  * ```ts
12
12
  * const optionalValue = Optional.some('data');
13
13
  *
14
- * assert(Optional.expectToBe(optionalValue, 'value expected') === 'data');
14
+ * assert.isTrue(Optional.expectToBe(optionalValue, 'value expected') === 'data');
15
15
  *
16
16
  * const expectValue = Optional.expectToBe<string>('missing optional');
17
17
  *
18
18
  * assert.throws(() => expectValue(Optional.none), /missing optional/u);
19
- * assert(expectValue(Optional.some('present')) === 'present');
19
+ *
20
+ * assert.isTrue(expectValue(Optional.some('present')) === 'present');
20
21
  * ```
21
22
  *
22
23
  * @template O The `UnknownOptional` type to unwrap.
@@ -41,12 +42,14 @@ export function expectToBe<O extends UnknownOptional>(
41
42
  switch (args.length) {
42
43
  case 2: {
43
44
  const [optional, message] = args;
45
+
44
46
  return expectToBeImpl(optional, message);
45
47
  }
46
48
 
47
49
  case 1: {
48
50
  // Curried version: first argument is message
49
51
  const [message] = args;
52
+
50
53
  return (optional: Optional<Unwrap<O>>): Unwrap<O> =>
51
54
  expectToBeImpl(optional, message);
52
55
  }
@@ -13,14 +13,17 @@ import { type Unwrap } from './types.mjs';
13
13
  *
14
14
  * ```ts
15
15
  * const even = Optional.filter(Optional.some(4), (value) => value % 2 === 0);
16
+ *
16
17
  * const odd = Optional.filter(Optional.some(3), (value) => value % 2 === 0);
17
18
  *
18
19
  * assert.deepStrictEqual(even, Optional.some(4));
20
+ *
19
21
  * assert.deepStrictEqual(odd, Optional.none);
20
22
  *
21
23
  * const filterEven = Optional.filter((value: number) => value % 2 === 0);
22
24
  *
23
25
  * assert.deepStrictEqual(filterEven(Optional.some(6)), Optional.some(6));
26
+ *
24
27
  * assert.deepStrictEqual(filterEven(Optional.some(5)), Optional.none);
25
28
  * ```
26
29
  *
@@ -47,12 +50,14 @@ export function filter<O extends UnknownOptional>(
47
50
  switch (args.length) {
48
51
  case 2: {
49
52
  const [optional, predicate] = args;
53
+
50
54
  return filterImpl(optional, predicate);
51
55
  }
52
56
 
53
57
  case 1: {
54
58
  // Curried version: first argument is predicate function
55
59
  const [predicate] = args;
60
+
56
61
  return (optional: O) => filterImpl(optional, predicate);
57
62
  }
58
63
  }
@@ -64,6 +69,7 @@ const filterImpl = <O extends UnknownOptional>(
64
69
  ): Optional<Unwrap<O>> => {
65
70
  if (isSome(optional)) {
66
71
  const value = unwrap(optional);
72
+
67
73
  return predicate(value) ? some(value) : none;
68
74
  }
69
75
 
@@ -13,6 +13,7 @@ import { type Unwrap } from './types.mjs';
13
13
  * ```ts
14
14
  * const parseNumber = (input: string): Optional<number> => {
15
15
  * const num = Number.parseInt(input, 10);
16
+ *
16
17
  * return Number.isNaN(num) ? Optional.none : Optional.some(num);
17
18
  * };
18
19
  *
@@ -23,6 +24,7 @@ import { type Unwrap } from './types.mjs';
23
24
  * const flatMapParse = Optional.flatMap(parseNumber);
24
25
  *
25
26
  * assert.deepStrictEqual(flatMapParse(Optional.some('5')), Optional.some(5));
27
+ *
26
28
  * assert.deepStrictEqual(flatMapParse(Optional.some('invalid')), Optional.none);
27
29
  * ```
28
30
  *
@@ -50,12 +52,14 @@ export function flatMap<O extends UnknownOptional, S2>(
50
52
  switch (args.length) {
51
53
  case 2: {
52
54
  const [optional, flatMapFn] = args;
55
+
53
56
  return flatMapImpl(optional, flatMapFn);
54
57
  }
55
58
 
56
59
  case 1: {
57
60
  // Curried version
58
61
  const [flatMapFn] = args;
62
+
59
63
  return (optional: O) => flatMapImpl(optional, flatMapFn);
60
64
  }
61
65
  }
@@ -12,9 +12,11 @@ import { some } from './optional-some.mjs';
12
12
  *
13
13
  * ```ts
14
14
  * const present = Optional.fromNullable('hello');
15
+ *
15
16
  * const absent = Optional.fromNullable<string | null>(null);
16
17
  *
17
18
  * assert.deepStrictEqual(present, Optional.some('hello'));
19
+ *
18
20
  * assert.deepStrictEqual(absent, Optional.none);
19
21
  * ```
20
22
  *
@@ -11,7 +11,7 @@ import { type NarrowToNone } from './types.mjs';
11
11
  *
12
12
  * if (Optional.isNone(optionalValue)) {
13
13
  * // Type narrowed to None
14
- * assert.ok(true); // optionalValue is None
14
+ * assert.isTrue(true); // optionalValue is None
15
15
  * }
16
16
  * ```
17
17
  *
@@ -8,10 +8,12 @@ import { NoneTypeTagName, SomeTypeTagName } from './tag.mjs';
8
8
  *
9
9
  * ```ts
10
10
  * const maybeOptional = Optional.some('value');
11
+ *
11
12
  * const notOptional = { $$tag: 'ts-data-forge::Optional.some' };
12
13
  *
13
- * assert.ok(Optional.isOptional(maybeOptional));
14
- * assert.notOk(Optional.isOptional(notOptional));
14
+ * assert.isTrue(Optional.isOptional(maybeOptional));
15
+ *
16
+ * assert.isFalse(Optional.isOptional(notOptional));
15
17
  * ```
16
18
  *
17
19
  * @param maybeOptional The value to check.
@@ -11,7 +11,8 @@ import { type NarrowToSome } from './types.mjs';
11
11
  *
12
12
  * if (Optional.isSome(optionalNumber)) {
13
13
  * const value: number = optionalNumber.value;
14
- * assert(value === 42);
14
+ *
15
+ * assert.isTrue(value === 42);
15
16
  * }
16
17
  * ```
17
18
  *