ts-data-forge 5.0.0 → 5.1.0

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 (532) hide show
  1. package/README.md +55 -6
  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 +7 -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 +1 -0
  13. package/dist/array/impl/array-utils-modification.mjs.map +1 -1
  14. package/dist/array/impl/array-utils-reducing-value.d.mts +26 -2
  15. package/dist/array/impl/array-utils-reducing-value.d.mts.map +1 -1
  16. package/dist/array/impl/array-utils-reducing-value.mjs +2 -1
  17. package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -1
  18. package/dist/array/impl/array-utils-search.d.mts +30 -0
  19. package/dist/array/impl/array-utils-search.d.mts.map +1 -1
  20. package/dist/array/impl/array-utils-search.mjs +1 -0
  21. package/dist/array/impl/array-utils-search.mjs.map +1 -1
  22. package/dist/array/impl/array-utils-set-op.d.mts +13 -0
  23. package/dist/array/impl/array-utils-set-op.d.mts.map +1 -1
  24. package/dist/array/impl/array-utils-set-op.mjs +13 -0
  25. package/dist/array/impl/array-utils-set-op.mjs.map +1 -1
  26. package/dist/array/impl/array-utils-size.d.mts +3 -0
  27. package/dist/array/impl/array-utils-size.d.mts.map +1 -1
  28. package/dist/array/impl/array-utils-size.mjs +3 -0
  29. package/dist/array/impl/array-utils-size.mjs.map +1 -1
  30. package/dist/array/impl/array-utils-slice-clamped.d.mts +2 -0
  31. package/dist/array/impl/array-utils-slice-clamped.d.mts.map +1 -1
  32. package/dist/array/impl/array-utils-slice-clamped.mjs.map +1 -1
  33. package/dist/array/impl/array-utils-slicing.d.mts +15 -0
  34. package/dist/array/impl/array-utils-slicing.d.mts.map +1 -1
  35. package/dist/array/impl/array-utils-slicing.mjs +7 -0
  36. package/dist/array/impl/array-utils-slicing.mjs.map +1 -1
  37. package/dist/array/impl/array-utils-transformation.d.mts +27 -0
  38. package/dist/array/impl/array-utils-transformation.d.mts.map +1 -1
  39. package/dist/array/impl/array-utils-transformation.mjs +7 -0
  40. package/dist/array/impl/array-utils-transformation.mjs.map +1 -1
  41. package/dist/array/impl/array-utils-validation.d.mts +17 -0
  42. package/dist/array/impl/array-utils-validation.d.mts.map +1 -1
  43. package/dist/array/impl/array-utils-validation.mjs +11 -0
  44. package/dist/array/impl/array-utils-validation.mjs.map +1 -1
  45. package/dist/collections/imap-mapped.mjs +1 -0
  46. package/dist/collections/imap-mapped.mjs.map +1 -1
  47. package/dist/collections/imap.d.mts +20 -0
  48. package/dist/collections/imap.d.mts.map +1 -1
  49. package/dist/collections/imap.mjs +3 -0
  50. package/dist/collections/imap.mjs.map +1 -1
  51. package/dist/collections/iset-mapped.d.mts +27 -0
  52. package/dist/collections/iset-mapped.d.mts.map +1 -1
  53. package/dist/collections/iset-mapped.mjs +7 -0
  54. package/dist/collections/iset-mapped.mjs.map +1 -1
  55. package/dist/collections/iset.d.mts +29 -0
  56. package/dist/collections/iset.d.mts.map +1 -1
  57. package/dist/collections/iset.mjs +7 -0
  58. package/dist/collections/iset.mjs.map +1 -1
  59. package/dist/collections/queue.d.mts +40 -0
  60. package/dist/collections/queue.d.mts.map +1 -1
  61. package/dist/collections/queue.mjs +9 -0
  62. package/dist/collections/queue.mjs.map +1 -1
  63. package/dist/collections/stack.d.mts +35 -0
  64. package/dist/collections/stack.d.mts.map +1 -1
  65. package/dist/collections/stack.mjs +8 -0
  66. package/dist/collections/stack.mjs.map +1 -1
  67. package/dist/entry-point.mjs +1 -1
  68. package/dist/functional/match.d.mts.map +1 -1
  69. package/dist/functional/match.mjs.map +1 -1
  70. package/dist/functional/optional/impl/optional-expect-to-be.d.mts +1 -0
  71. package/dist/functional/optional/impl/optional-expect-to-be.d.mts.map +1 -1
  72. package/dist/functional/optional/impl/optional-expect-to-be.mjs.map +1 -1
  73. package/dist/functional/optional/impl/optional-filter.d.mts +3 -0
  74. package/dist/functional/optional/impl/optional-filter.d.mts.map +1 -1
  75. package/dist/functional/optional/impl/optional-filter.mjs.map +1 -1
  76. package/dist/functional/optional/impl/optional-flat-map.d.mts +2 -0
  77. package/dist/functional/optional/impl/optional-flat-map.d.mts.map +1 -1
  78. package/dist/functional/optional/impl/optional-flat-map.mjs.map +1 -1
  79. package/dist/functional/optional/impl/optional-from-nullable.d.mts +2 -0
  80. package/dist/functional/optional/impl/optional-from-nullable.d.mts.map +1 -1
  81. package/dist/functional/optional/impl/optional-from-nullable.mjs +2 -0
  82. package/dist/functional/optional/impl/optional-from-nullable.mjs.map +1 -1
  83. package/dist/functional/optional/impl/optional-is-optional.d.mts +2 -0
  84. package/dist/functional/optional/impl/optional-is-optional.d.mts.map +1 -1
  85. package/dist/functional/optional/impl/optional-is-optional.mjs +2 -0
  86. package/dist/functional/optional/impl/optional-is-optional.mjs.map +1 -1
  87. package/dist/functional/optional/impl/optional-is-some.d.mts +1 -0
  88. package/dist/functional/optional/impl/optional-is-some.d.mts.map +1 -1
  89. package/dist/functional/optional/impl/optional-is-some.mjs +1 -0
  90. package/dist/functional/optional/impl/optional-is-some.mjs.map +1 -1
  91. package/dist/functional/optional/impl/optional-map.d.mts +2 -0
  92. package/dist/functional/optional/impl/optional-map.d.mts.map +1 -1
  93. package/dist/functional/optional/impl/optional-map.mjs.map +1 -1
  94. package/dist/functional/optional/impl/optional-none.d.mts +2 -0
  95. package/dist/functional/optional/impl/optional-none.d.mts.map +1 -1
  96. package/dist/functional/optional/impl/optional-none.mjs +2 -0
  97. package/dist/functional/optional/impl/optional-none.mjs.map +1 -1
  98. package/dist/functional/optional/impl/optional-or-else.d.mts +4 -0
  99. package/dist/functional/optional/impl/optional-or-else.d.mts.map +1 -1
  100. package/dist/functional/optional/impl/optional-or-else.mjs.map +1 -1
  101. package/dist/functional/optional/impl/optional-some.d.mts +3 -1
  102. package/dist/functional/optional/impl/optional-some.d.mts.map +1 -1
  103. package/dist/functional/optional/impl/optional-some.mjs +2 -0
  104. package/dist/functional/optional/impl/optional-some.mjs.map +1 -1
  105. package/dist/functional/optional/impl/optional-to-nullable.d.mts +2 -0
  106. package/dist/functional/optional/impl/optional-to-nullable.d.mts.map +1 -1
  107. package/dist/functional/optional/impl/optional-to-nullable.mjs +2 -0
  108. package/dist/functional/optional/impl/optional-to-nullable.mjs.map +1 -1
  109. package/dist/functional/optional/impl/optional-unwrap-or.d.mts +3 -0
  110. package/dist/functional/optional/impl/optional-unwrap-or.d.mts.map +1 -1
  111. package/dist/functional/optional/impl/optional-unwrap-or.mjs.map +1 -1
  112. package/dist/functional/optional/impl/optional-unwrap-throw.d.mts +1 -0
  113. package/dist/functional/optional/impl/optional-unwrap-throw.d.mts.map +1 -1
  114. package/dist/functional/optional/impl/optional-unwrap-throw.mjs +1 -0
  115. package/dist/functional/optional/impl/optional-unwrap-throw.mjs.map +1 -1
  116. package/dist/functional/optional/impl/optional-unwrap.d.mts +2 -0
  117. package/dist/functional/optional/impl/optional-unwrap.d.mts.map +1 -1
  118. package/dist/functional/optional/impl/optional-unwrap.mjs.map +1 -1
  119. package/dist/functional/optional/impl/optional-zip.d.mts +2 -0
  120. package/dist/functional/optional/impl/optional-zip.d.mts.map +1 -1
  121. package/dist/functional/optional/impl/optional-zip.mjs +2 -0
  122. package/dist/functional/optional/impl/optional-zip.mjs.map +1 -1
  123. package/dist/functional/result/impl/result-err.d.mts +3 -1
  124. package/dist/functional/result/impl/result-err.d.mts.map +1 -1
  125. package/dist/functional/result/impl/result-err.mjs +2 -0
  126. package/dist/functional/result/impl/result-err.mjs.map +1 -1
  127. package/dist/functional/result/impl/result-expect-to-be.d.mts +1 -0
  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 +3 -0
  137. package/dist/functional/result/impl/result-from-promise.d.mts.map +1 -1
  138. package/dist/functional/result/impl/result-from-promise.mjs +3 -0
  139. package/dist/functional/result/impl/result-from-promise.mjs.map +1 -1
  140. package/dist/functional/result/impl/result-from-throwable.d.mts +2 -0
  141. package/dist/functional/result/impl/result-from-throwable.d.mts.map +1 -1
  142. package/dist/functional/result/impl/result-from-throwable.mjs +4 -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 +2 -0
  145. package/dist/functional/result/impl/result-is-err.d.mts.map +1 -1
  146. package/dist/functional/result/impl/result-is-err.mjs +2 -0
  147. package/dist/functional/result/impl/result-is-err.mjs.map +1 -1
  148. package/dist/functional/result/impl/result-is-ok.d.mts +2 -0
  149. package/dist/functional/result/impl/result-is-ok.d.mts.map +1 -1
  150. package/dist/functional/result/impl/result-is-ok.mjs +2 -0
  151. package/dist/functional/result/impl/result-is-ok.mjs.map +1 -1
  152. package/dist/functional/result/impl/result-is-result.d.mts +4 -0
  153. package/dist/functional/result/impl/result-is-result.d.mts.map +1 -1
  154. package/dist/functional/result/impl/result-is-result.mjs +4 -0
  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 +3 -1
  163. package/dist/functional/result/impl/result-ok.d.mts.map +1 -1
  164. package/dist/functional/result/impl/result-ok.mjs +2 -0
  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 +3 -0
  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 +2 -0
  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 +2 -0
  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 +1 -0
  185. package/dist/functional/result/impl/result-unwrap-err.d.mts.map +1 -1
  186. package/dist/functional/result/impl/result-unwrap-err.mjs +1 -0
  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 +3 -0
  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 +1 -0
  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 +2 -0
  195. package/dist/functional/result/impl/result-unwrap-throw.d.mts.map +1 -1
  196. package/dist/functional/result/impl/result-unwrap-throw.mjs +2 -0
  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 +2 -1
  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 +1 -0
  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 +2 -0
  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 +2 -0
  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 +2 -0
  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 +4 -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 +4 -0
  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 +4 -0
  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 +10 -0
  294. package/dist/guard/index.mjs +1 -1
  295. package/dist/guard/is-record.d.mts +31 -0
  296. package/dist/guard/is-record.d.mts.map +1 -1
  297. package/dist/guard/is-record.mjs +32 -1
  298. package/dist/guard/is-record.mjs.map +1 -1
  299. package/dist/guard/is-type.d.mts +3 -0
  300. package/dist/guard/is-type.d.mts.map +1 -1
  301. package/dist/guard/is-type.mjs +3 -0
  302. package/dist/guard/is-type.mjs.map +1 -1
  303. package/dist/guard/key-is-in.d.mts +1 -0
  304. package/dist/guard/key-is-in.d.mts.map +1 -1
  305. package/dist/guard/key-is-in.mjs +1 -0
  306. package/dist/guard/key-is-in.mjs.map +1 -1
  307. package/dist/index.mjs +1 -1
  308. package/dist/iterator/range.d.mts +4 -0
  309. package/dist/iterator/range.d.mts.map +1 -1
  310. package/dist/iterator/range.mjs +1 -0
  311. package/dist/iterator/range.mjs.map +1 -1
  312. package/dist/json/json.d.mts +21 -0
  313. package/dist/json/json.d.mts.map +1 -1
  314. package/dist/json/json.mjs +22 -0
  315. package/dist/json/json.mjs.map +1 -1
  316. package/dist/number/branded-types/int.d.mts +14 -0
  317. package/dist/number/branded-types/int.d.mts.map +1 -1
  318. package/dist/number/branded-types/int.mjs +14 -0
  319. package/dist/number/branded-types/int.mjs.map +1 -1
  320. package/dist/number/branded-types/non-zero-safe-int.mjs +2 -2
  321. package/dist/number/branded-types/positive-int.d.mts +14 -0
  322. package/dist/number/branded-types/positive-int.d.mts.map +1 -1
  323. package/dist/number/branded-types/positive-int.mjs +14 -0
  324. package/dist/number/branded-types/positive-int.mjs.map +1 -1
  325. package/dist/number/branded-types/positive-safe-int.d.mts +21 -0
  326. package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -1
  327. package/dist/number/branded-types/positive-safe-int.mjs +22 -1
  328. package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
  329. package/dist/number/branded-types/safe-int.d.mts +21 -0
  330. package/dist/number/branded-types/safe-int.d.mts.map +1 -1
  331. package/dist/number/branded-types/safe-int.mjs +23 -2
  332. package/dist/number/branded-types/safe-int.mjs.map +1 -1
  333. package/dist/number/branded-types/safe-uint.mjs +1 -1
  334. package/dist/number/branded-types/uint.d.mts +12 -0
  335. package/dist/number/branded-types/uint.d.mts.map +1 -1
  336. package/dist/number/branded-types/uint.mjs +12 -0
  337. package/dist/number/branded-types/uint.mjs.map +1 -1
  338. package/dist/number/num.d.mts +9 -0
  339. package/dist/number/num.d.mts.map +1 -1
  340. package/dist/number/num.mjs +8 -1
  341. package/dist/number/num.mjs.map +1 -1
  342. package/dist/number/refined-number-utils.d.mts +22 -0
  343. package/dist/number/refined-number-utils.d.mts.map +1 -1
  344. package/dist/number/refined-number-utils.mjs +23 -0
  345. package/dist/number/refined-number-utils.mjs.map +1 -1
  346. package/dist/object/object.d.mts +9 -0
  347. package/dist/object/object.d.mts.map +1 -1
  348. package/dist/object/object.mjs +7 -0
  349. package/dist/object/object.mjs.map +1 -1
  350. package/dist/others/map-nullable.mjs.map +1 -1
  351. package/dist/others/tuple.d.mts +11 -0
  352. package/dist/others/tuple.d.mts.map +1 -1
  353. package/dist/others/tuple.mjs +11 -0
  354. package/dist/others/tuple.mjs.map +1 -1
  355. package/dist/others/unknown-to-string.d.mts.map +1 -1
  356. package/dist/others/unknown-to-string.mjs +2 -1
  357. package/dist/others/unknown-to-string.mjs.map +1 -1
  358. package/dist/promise/promise.d.mts +4 -0
  359. package/dist/promise/promise.d.mts.map +1 -1
  360. package/dist/promise/promise.mjs +5 -0
  361. package/dist/promise/promise.mjs.map +1 -1
  362. package/package.json +20 -24
  363. package/src/array/impl/array-utils-creation.mts +20 -0
  364. package/src/array/impl/array-utils-creation.test.mts +71 -0
  365. package/src/array/impl/array-utils-element-access.mts +13 -0
  366. package/src/array/impl/array-utils-element-access.test.mts +21 -0
  367. package/src/array/impl/array-utils-iterators.test.mts +17 -0
  368. package/src/array/impl/array-utils-modification.mts +40 -0
  369. package/src/array/impl/array-utils-modification.test.mts +75 -0
  370. package/src/array/impl/array-utils-overload-type-error.test.mts +19 -0
  371. package/src/array/impl/array-utils-reducing-value.mts +55 -9
  372. package/src/array/impl/array-utils-reducing-value.test.mts +90 -0
  373. package/src/array/impl/array-utils-search.mts +53 -0
  374. package/src/array/impl/array-utils-search.test.mts +51 -0
  375. package/src/array/impl/array-utils-set-op.mts +19 -0
  376. package/src/array/impl/array-utils-set-op.test.mts +116 -0
  377. package/src/array/impl/array-utils-size.mts +3 -0
  378. package/src/array/impl/array-utils-size.test.mts +1 -0
  379. package/src/array/impl/array-utils-slice-clamped.mts +7 -0
  380. package/src/array/impl/array-utils-slice-clamped.test.mts +20 -0
  381. package/src/array/impl/array-utils-slicing.mts +27 -0
  382. package/src/array/impl/array-utils-slicing.test.mts +57 -0
  383. package/src/array/impl/array-utils-transformation.mts +58 -0
  384. package/src/array/impl/array-utils-transformation.test.mts +113 -1
  385. package/src/array/impl/array-utils-validation.mts +23 -0
  386. package/src/array/impl/array-utils-validation.test.mts +96 -0
  387. package/src/array/impl/array.test.mts +12 -0
  388. package/src/collections/imap-mapped.mts +11 -0
  389. package/src/collections/imap-mapped.test.mts +70 -0
  390. package/src/collections/imap.mts +32 -0
  391. package/src/collections/imap.test.mts +106 -0
  392. package/src/collections/iset-mapped.mts +35 -0
  393. package/src/collections/iset-mapped.test.mts +111 -0
  394. package/src/collections/iset.mts +34 -0
  395. package/src/collections/iset.test.mts +193 -0
  396. package/src/collections/queue.mts +53 -0
  397. package/src/collections/queue.test.mts +32 -0
  398. package/src/collections/stack.mts +42 -0
  399. package/src/collections/stack.test.mts +44 -0
  400. package/src/functional/match.mts +16 -0
  401. package/src/functional/match.test.mts +2 -0
  402. package/src/functional/optional/impl/optional-expect-to-be.mts +3 -0
  403. package/src/functional/optional/impl/optional-filter.mts +6 -0
  404. package/src/functional/optional/impl/optional-flat-map.mts +4 -0
  405. package/src/functional/optional/impl/optional-from-nullable.mts +2 -0
  406. package/src/functional/optional/impl/optional-is-optional.mts +2 -0
  407. package/src/functional/optional/impl/optional-is-some.mts +1 -0
  408. package/src/functional/optional/impl/optional-map.mts +5 -0
  409. package/src/functional/optional/impl/optional-none.mts +2 -0
  410. package/src/functional/optional/impl/optional-or-else.mts +6 -0
  411. package/src/functional/optional/impl/optional-some.mts +3 -1
  412. package/src/functional/optional/impl/optional-to-nullable.mts +2 -0
  413. package/src/functional/optional/impl/optional-unwrap-or.mts +5 -0
  414. package/src/functional/optional/impl/optional-unwrap-throw.mts +1 -0
  415. package/src/functional/optional/impl/optional-unwrap.mts +2 -0
  416. package/src/functional/optional/impl/optional-zip.mts +2 -0
  417. package/src/functional/optional.test.mts +73 -0
  418. package/src/functional/pipe.test.mts +3 -0
  419. package/src/functional/result/impl/result-err.mts +3 -1
  420. package/src/functional/result/impl/result-expect-to-be.mts +3 -0
  421. package/src/functional/result/impl/result-flat-map.mts +7 -0
  422. package/src/functional/result/impl/result-fold.mts +6 -0
  423. package/src/functional/result/impl/result-from-promise.mts +3 -0
  424. package/src/functional/result/impl/result-from-throwable.mts +6 -1
  425. package/src/functional/result/impl/result-is-err.mts +2 -0
  426. package/src/functional/result/impl/result-is-ok.mts +2 -0
  427. package/src/functional/result/impl/result-is-result.mts +4 -0
  428. package/src/functional/result/impl/result-map-err.mts +5 -0
  429. package/src/functional/result/impl/result-map.mts +6 -0
  430. package/src/functional/result/impl/result-ok.mts +3 -1
  431. package/src/functional/result/impl/result-or-else.mts +6 -0
  432. package/src/functional/result/impl/result-swap.mts +2 -0
  433. package/src/functional/result/impl/result-to-optional.mts +2 -0
  434. package/src/functional/result/impl/result-unwrap-err-or.mts +5 -0
  435. package/src/functional/result/impl/result-unwrap-err-throw.mts +2 -0
  436. package/src/functional/result/impl/result-unwrap-err.mts +1 -0
  437. package/src/functional/result/impl/result-unwrap-ok-or.mts +5 -0
  438. package/src/functional/result/impl/result-unwrap-ok.mts +2 -0
  439. package/src/functional/result/impl/result-unwrap-throw.mts +2 -0
  440. package/src/functional/result/impl/result-zip.mts +3 -1
  441. package/src/functional/result.test.mts +88 -0
  442. package/src/functional/ternary-result/impl/ternary-result-err.mts +2 -1
  443. package/src/functional/ternary-result/impl/ternary-result-expect-to-be.mts +4 -0
  444. package/src/functional/ternary-result/impl/ternary-result-flat-map.mts +7 -0
  445. package/src/functional/ternary-result/impl/ternary-result-fold.mts +5 -0
  446. package/src/functional/ternary-result/impl/ternary-result-from-promise.mts +2 -0
  447. package/src/functional/ternary-result/impl/ternary-result-from-throwable.mts +5 -1
  448. package/src/functional/ternary-result/impl/ternary-result-is-ok.mts +1 -0
  449. package/src/functional/ternary-result/impl/ternary-result-is-ternary-result.mts +4 -0
  450. package/src/functional/ternary-result/impl/ternary-result-is-warn.mts +1 -0
  451. package/src/functional/ternary-result/impl/ternary-result-map-err.mts +6 -0
  452. package/src/functional/ternary-result/impl/ternary-result-map-warn.mts +6 -0
  453. package/src/functional/ternary-result/impl/ternary-result-map.mts +9 -0
  454. package/src/functional/ternary-result/impl/ternary-result-ok.mts +1 -1
  455. package/src/functional/ternary-result/impl/ternary-result-or-else.mts +5 -0
  456. package/src/functional/ternary-result/impl/ternary-result-to-optional.mts +2 -0
  457. package/src/functional/ternary-result/impl/ternary-result-unwrap-err-or.mts +5 -0
  458. package/src/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mts +1 -0
  459. package/src/functional/ternary-result/impl/ternary-result-unwrap-err.mts +2 -0
  460. package/src/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mts +5 -0
  461. package/src/functional/ternary-result/impl/ternary-result-unwrap-ok.mts +3 -0
  462. package/src/functional/ternary-result/impl/ternary-result-unwrap-throw.mts +1 -0
  463. package/src/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mts +5 -0
  464. package/src/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mts +1 -0
  465. package/src/functional/ternary-result/impl/ternary-result-unwrap-warn.mts +2 -0
  466. package/src/functional/ternary-result/impl/ternary-result-warn.mts +4 -1
  467. package/src/functional/ternary-result/impl/ternary-result-zip.mts +4 -0
  468. package/src/functional/ternary-result.test.mts +91 -0
  469. package/src/globals.d.mts +10 -0
  470. package/src/guard/has-key.test.mts +9 -0
  471. package/src/guard/is-non-empty-string.test.mts +20 -0
  472. package/src/guard/is-non-null-object.test.mts +19 -0
  473. package/src/guard/is-primitive.test.mts +23 -0
  474. package/src/guard/is-record.mts +34 -0
  475. package/src/guard/is-record.test.mts +21 -0
  476. package/src/guard/is-type.mts +3 -0
  477. package/src/guard/is-type.test.mts +134 -0
  478. package/src/guard/key-is-in.mts +1 -0
  479. package/src/iterator/range.mts +9 -0
  480. package/src/json/json.mts +29 -0
  481. package/src/json/json.test.mts +87 -0
  482. package/src/number/branded-types/finite-number.test.mts +38 -0
  483. package/src/number/branded-types/int.mts +14 -0
  484. package/src/number/branded-types/int.test.mts +42 -0
  485. package/src/number/branded-types/int16.test.mts +47 -0
  486. package/src/number/branded-types/int32.test.mts +47 -0
  487. package/src/number/branded-types/non-negative-finite-number.test.mts +40 -0
  488. package/src/number/branded-types/non-negative-int16.test.mts +43 -0
  489. package/src/number/branded-types/non-negative-int32.test.mts +43 -0
  490. package/src/number/branded-types/non-zero-finite-number.test.mts +51 -0
  491. package/src/number/branded-types/non-zero-int.test.mts +53 -0
  492. package/src/number/branded-types/non-zero-int16.test.mts +44 -0
  493. package/src/number/branded-types/non-zero-int32.test.mts +44 -0
  494. package/src/number/branded-types/non-zero-safe-int.mts +2 -2
  495. package/src/number/branded-types/non-zero-safe-int.test.mts +62 -0
  496. package/src/number/branded-types/non-zero-uint16.test.mts +37 -0
  497. package/src/number/branded-types/non-zero-uint32.test.mts +37 -0
  498. package/src/number/branded-types/positive-finite-number.test.mts +45 -0
  499. package/src/number/branded-types/positive-int.mts +14 -0
  500. package/src/number/branded-types/positive-int.test.mts +47 -0
  501. package/src/number/branded-types/positive-int16.test.mts +35 -0
  502. package/src/number/branded-types/positive-int32.test.mts +35 -0
  503. package/src/number/branded-types/positive-safe-int.mts +22 -1
  504. package/src/number/branded-types/positive-safe-int.test.mts +49 -0
  505. package/src/number/branded-types/positive-uint16.test.mts +37 -0
  506. package/src/number/branded-types/positive-uint32.test.mts +37 -0
  507. package/src/number/branded-types/safe-int.mts +23 -2
  508. package/src/number/branded-types/safe-int.test.mts +52 -0
  509. package/src/number/branded-types/safe-uint.mts +1 -1
  510. package/src/number/branded-types/safe-uint.test.mts +48 -0
  511. package/src/number/branded-types/uint.mts +12 -0
  512. package/src/number/branded-types/uint.test.mts +43 -0
  513. package/src/number/branded-types/uint16.test.mts +41 -0
  514. package/src/number/branded-types/uint32.test.mts +41 -0
  515. package/src/number/enum/int8.test.mts +6 -0
  516. package/src/number/enum/uint8.test.mts +6 -0
  517. package/src/number/num.mts +12 -1
  518. package/src/number/num.test.mts +62 -0
  519. package/src/number/refined-number-utils.mts +25 -0
  520. package/src/object/object.mts +15 -0
  521. package/src/object/object.test.mts +10 -0
  522. package/src/others/cast-mutable.test.mts +7 -0
  523. package/src/others/cast-readonly.test.mts +17 -0
  524. package/src/others/if-then.test.mts +16 -0
  525. package/src/others/map-nullable.mts +3 -0
  526. package/src/others/map-nullable.test.mts +27 -0
  527. package/src/others/memoize-function.test.mts +41 -0
  528. package/src/others/tuple.mts +11 -0
  529. package/src/others/unknown-to-string.mts +4 -1
  530. package/src/others/unknown-to-string.test.mts +10 -0
  531. package/src/promise/promise.mts +4 -0
  532. package/src/promise/promise.test.mts +1 -0
@@ -7,9 +7,11 @@ import { asUint32, Num } from '../../number/index.mjs';
7
7
  *
8
8
  * ```ts
9
9
  * const maybeArray: unknown = [1, 2, 3];
10
+ *
10
11
  * const maybeValue: unknown = 'Ada';
11
12
  *
12
13
  * assert.ok(Arr.isArray(maybeArray));
14
+ *
13
15
  * assert.notOk(Arr.isArray(maybeValue));
14
16
  *
15
17
  * if (Arr.isArray(maybeArray)) {
@@ -40,9 +42,11 @@ type Cast<A, B> = A extends B ? A : never;
40
42
  *
41
43
  * ```ts
42
44
  * const emptyNumbers: readonly number[] = [] as const;
45
+ *
43
46
  * const words = ['Ada', 'Lovelace'] as const;
44
47
  *
45
48
  * assert.ok(Arr.isEmpty(emptyNumbers));
49
+ *
46
50
  * assert.notOk(Arr.isEmpty(words));
47
51
  *
48
52
  * if (Arr.isEmpty(emptyNumbers)) {
@@ -60,9 +64,11 @@ export const isEmpty = <E,>(array: readonly E[]): array is readonly [] =>
60
64
  *
61
65
  * ```ts
62
66
  * const users: readonly { id: number }[] = [{ id: 1 }];
67
+ *
63
68
  * const emptyUsers: readonly { id: number }[] = [];
64
69
  *
65
70
  * assert.ok(Arr.isNonEmpty(users));
71
+ *
66
72
  * assert.notOk(Arr.isNonEmpty(emptyUsers));
67
73
  *
68
74
  * if (Arr.isNonEmpty(users)) {
@@ -81,9 +87,11 @@ export const isNonEmpty = <E,>(
81
87
  *
82
88
  * ```ts
83
89
  * const pair: readonly number[] = [1, 2];
90
+ *
84
91
  * const triple: readonly number[] = [1, 2, 3];
85
92
  *
86
93
  * assert.ok(Arr.isArrayOfLength(pair, 2));
94
+ *
87
95
  * assert.notOk(Arr.isArrayOfLength(triple, 2));
88
96
  *
89
97
  * if (Arr.isArrayOfLength(pair, 2)) {
@@ -103,9 +111,11 @@ export const isArrayOfLength = <E, N extends SizeType.ArgArr>(
103
111
  *
104
112
  * ```ts
105
113
  * const queue: readonly string[] = ['task-1', 'task-2'];
114
+ *
106
115
  * const emptyQueue: readonly string[] = [];
107
116
  *
108
117
  * assert.ok(Arr.isArrayAtLeastLength(queue, 1));
118
+ *
109
119
  * assert.notOk(Arr.isArrayAtLeastLength(emptyQueue, 1));
110
120
  *
111
121
  * if (Arr.isArrayAtLeastLength(queue, 1)) {
@@ -125,12 +135,15 @@ export const isArrayAtLeastLength = <E, N extends SizeType.ArgArr>(
125
135
  *
126
136
  * ```ts
127
137
  * const numbers = [2, 4, 6] as const;
138
+ *
128
139
  * const words = ['Ada', 'Grace'] as const;
129
140
  *
130
141
  * const allEven = Arr.every(numbers, (value) => value % 2 === 0);
142
+ *
131
143
  * const allStartWithA = Arr.every(words, (value) => value.startsWith('A'));
132
144
  *
133
145
  * assert.ok(allEven);
146
+ *
134
147
  * assert.notOk(allStartWithA);
135
148
  * ```
136
149
  */
@@ -165,10 +178,13 @@ export function every<E>(
165
178
  switch (args.length) {
166
179
  case 2: {
167
180
  const [array, predicate] = args;
181
+
168
182
  return array.every((a, i) => predicate(a, asUint32(i)));
169
183
  }
184
+
170
185
  case 1: {
171
186
  const [predicate] = args;
187
+
172
188
  return (array) => every(array, predicate);
173
189
  }
174
190
  }
@@ -181,12 +197,15 @@ export function every<E>(
181
197
  *
182
198
  * ```ts
183
199
  * const numbers = [1, 3, 5] as const;
200
+ *
184
201
  * const words = ['Ada', 'Grace'] as const;
185
202
  *
186
203
  * const hasEven = Arr.some(numbers, (value) => value % 2 === 0);
204
+ *
187
205
  * const hasShortName = Arr.some(words, (value) => value.length <= 3);
188
206
  *
189
207
  * assert.notOk(hasEven);
208
+ *
190
209
  * assert.ok(hasShortName);
191
210
  * ```
192
211
  */
@@ -210,10 +229,13 @@ export function some<E>(
210
229
  switch (args.length) {
211
230
  case 2: {
212
231
  const [array, predicate] = args;
232
+
213
233
  return array.some((a, i) => predicate(a, asUint32(i)));
214
234
  }
235
+
215
236
  case 1: {
216
237
  const [predicate] = args;
238
+
217
239
  return (array) => some(array, predicate);
218
240
  }
219
241
  }
@@ -228,6 +250,7 @@ export function some<E>(
228
250
  * const items = ['Ada', 'Grace', 'Katherine'] as const;
229
251
  *
230
252
  * assert.ok(Arr.indexIsInRange(items, 1));
253
+ *
231
254
  * assert.notOk(Arr.indexIsInRange(items, 3));
232
255
  *
233
256
  * if (Arr.indexIsInRange(items, 2)) {
@@ -14,16 +14,23 @@ describe('Arr validations', () => {
14
14
  describe(isArray, () => {
15
15
  test('should return true for arrays', () => {
16
16
  expect(isArray([1, 2, 3])).toBe(true);
17
+
17
18
  expect(isArray([])).toBe(true);
19
+
18
20
  expect(isArray(['a', 'b'])).toBe(true);
19
21
  });
20
22
 
21
23
  test('should return false for non-arrays', () => {
22
24
  expect(isArray('hello')).toBe(false);
25
+
23
26
  expect(isArray(123)).toBe(false);
27
+
24
28
  expect(isArray(null)).toBe(false);
29
+
25
30
  expect(isArray(undefined)).toBe(false);
31
+
26
32
  expect(isArray({})).toBe(false);
33
+
27
34
  expect(isArray(new Set())).toBe(false);
28
35
  });
29
36
 
@@ -34,18 +41,23 @@ describe('Arr validations', () => {
34
41
  if (isArray(value)) {
35
42
  // value should be typed as number[]
36
43
  expectType<typeof value, readonly number[]>('=');
44
+
37
45
  return value.length;
38
46
  }
47
+
39
48
  return 0;
40
49
  };
41
50
 
42
51
  expect(processValue([1, 2, 3])).toBe(3);
52
+
43
53
  expect(processValue('hello')).toBe(0);
54
+
44
55
  expect(processValue(null)).toBe(0);
45
56
  });
46
57
 
47
58
  test('should work with readonly arrays', () => {
48
59
  const readonlyArray: readonly number[] = [1, 2, 3];
60
+
49
61
  if (isArray(readonlyArray)) {
50
62
  expectType<typeof readonlyArray, readonly number[]>('=');
51
63
 
@@ -55,6 +67,7 @@ describe('Arr validations', () => {
55
67
 
56
68
  test('should work with mutable arrays', () => {
57
69
  const mutableArray: number[] = [1, 2, 3];
70
+
58
71
  if (isArray(mutableArray)) {
59
72
  expectType<typeof mutableArray, number[]>('=');
60
73
 
@@ -69,18 +82,24 @@ describe('Arr validations', () => {
69
82
  if (isArray(value)) {
70
83
  // Only number[] should remain
71
84
  expectType<typeof value, readonly number[]>('=');
85
+
72
86
  return value.length;
73
87
  }
88
+
74
89
  // Non-array types
75
90
  expectType<typeof value, string | boolean | Readonly<{ a: number }>>(
76
91
  '=',
77
92
  );
93
+
78
94
  return -1;
79
95
  };
80
96
 
81
97
  expect(checkUnion([1, 2])).toBe(2);
98
+
82
99
  expect(checkUnion('test')).toBe(-1);
100
+
83
101
  expect(checkUnion(true)).toBe(-1);
102
+
84
103
  expect(checkUnion({ a: 1 })).toBe(-1);
85
104
  });
86
105
 
@@ -97,38 +116,51 @@ describe('Arr validations', () => {
97
116
  if (isArray(value)) {
98
117
  // Only number[] should remain
99
118
  expectType<typeof value, readonly unknown[]>('=');
119
+
100
120
  return value.length;
101
121
  }
122
+
102
123
  // Non-array types
103
124
  expectType<
104
125
  typeof value,
105
126
  string | boolean | Readonly<{ a: number }> | unknown | object
106
127
  >('=');
128
+
107
129
  return -1;
108
130
  };
109
131
 
110
132
  expect(checkUnion([1, 2])).toBe(2);
133
+
111
134
  expect(checkUnion('test')).toBe(-1);
135
+
112
136
  expect(checkUnion(true)).toBe(-1);
137
+
113
138
  expect(checkUnion({ a: 1 })).toBe(-1);
114
139
  });
115
140
 
116
141
  test('should return true for arrays (additional)', () => {
117
142
  expect(isArray([])).toBe(true);
143
+
118
144
  expect(isArray([1, 2, 3])).toBe(true);
145
+
119
146
  expect(isArray(['a', 'b'])).toBe(true);
120
147
  });
121
148
 
122
149
  test('should return false for non-arrays (additional)', () => {
123
150
  expect(isArray('string')).toBe(false);
151
+
124
152
  expect(isArray(123)).toBe(false);
153
+
125
154
  expect(isArray({})).toBe(false);
155
+
126
156
  expect(isArray(null)).toBe(false);
157
+
127
158
  expect(isArray(undefined)).toBe(false);
128
159
  });
129
160
 
130
161
  test('should work as type guard (additional)', () => {
131
162
  const value: unknown = [1, 2, 3];
163
+
132
164
  if (isArray(value)) {
133
165
  expectType<typeof value, readonly unknown[]>('=');
134
166
 
@@ -145,6 +177,7 @@ describe('Arr validations', () => {
145
177
  describe('comprehensive type guard tests', () => {
146
178
  test('should narrow unknown type to array', () => {
147
179
  const value: unknown = [1, 2, 3];
180
+
148
181
  if (isArray(value)) {
149
182
  expectType<typeof value, readonly unknown[]>('=');
150
183
  } else {
@@ -154,6 +187,7 @@ describe('Arr validations', () => {
154
187
 
155
188
  test('should handle any type', () => {
156
189
  const value: any = [1, 2, 3];
190
+
157
191
  if (isArray(value)) {
158
192
  expectType<typeof value, readonly unknown[]>('=');
159
193
  }
@@ -161,6 +195,7 @@ describe('Arr validations', () => {
161
195
 
162
196
  test('should work with nested arrays', () => {
163
197
  const nested: readonly (readonly number[])[] = [[1], [2], [3]];
198
+
164
199
  if (isArray(nested)) {
165
200
  expectType<typeof nested, readonly (readonly number[])[]>('=');
166
201
  }
@@ -168,6 +203,7 @@ describe('Arr validations', () => {
168
203
 
169
204
  test('should distinguish between array and tuple types', () => {
170
205
  const tuple: readonly [1, 2, 3] = [1, 2, 3];
206
+
171
207
  if (isArray(tuple)) {
172
208
  expectType<typeof tuple, readonly [1, 2, 3]>('=');
173
209
  }
@@ -175,6 +211,7 @@ describe('Arr validations', () => {
175
211
 
176
212
  test('should work with empty tuple type', () => {
177
213
  const emptyTuple: readonly [] = [];
214
+
178
215
  if (isArray(emptyTuple)) {
179
216
  expectType<typeof emptyTuple, readonly []>('=');
180
217
  }
@@ -185,7 +222,9 @@ describe('Arr validations', () => {
185
222
  | readonly string[]
186
223
  | readonly number[]
187
224
  | readonly boolean[];
225
+
188
226
  const mixedArray: MixedArrayUnion = [1, 2, 3];
227
+
189
228
  if (isArray(mixedArray)) {
190
229
  expectType<typeof mixedArray, MixedArrayUnion>('<=');
191
230
  }
@@ -197,16 +236,19 @@ describe('Arr validations', () => {
197
236
  // Type is narrowed to array type within this block
198
237
  return value.length;
199
238
  }
239
+
200
240
  return 0;
201
241
  };
202
242
 
203
243
  expect(processGeneric([1, 2, 3])).toBe(3);
244
+
204
245
  expect(processGeneric('hello')).toBe(0);
205
246
  });
206
247
 
207
248
  test('should handle never type correctly', () => {
208
249
  // eslint-disable-next-line total-functions/no-unsafe-type-assertion
209
250
  const neverValue = undefined as never;
251
+
210
252
  if (isArray(neverValue)) {
211
253
  expectType<typeof neverValue, never>('=');
212
254
  }
@@ -214,22 +256,27 @@ describe('Arr validations', () => {
214
256
 
215
257
  test('should work with conditional types', () => {
216
258
  type ArrayOrValue<T> = T extends readonly unknown[] ? T : readonly T[];
259
+
217
260
  const makeArray = <T,>(value: T): ArrayOrValue<T> => {
218
261
  if (isArray(value)) {
219
262
  // eslint-disable-next-line total-functions/no-unsafe-type-assertion
220
263
  return value as ArrayOrValue<T>;
221
264
  }
265
+
222
266
  // eslint-disable-next-line total-functions/no-unsafe-type-assertion
223
267
  return [value] as ArrayOrValue<T>;
224
268
  };
225
269
 
226
270
  assert.deepStrictEqual(makeArray([1, 2, 3]), [1, 2, 3]);
271
+
227
272
  assert.deepStrictEqual(makeArray(5), [5]);
228
273
  });
229
274
 
230
275
  test('should handle intersection types', () => {
231
276
  type TaggedArray = readonly number[] & { tag: string };
277
+
232
278
  const tagged = Object.assign([1, 2, 3], { tag: 'test' }) as TaggedArray;
279
+
233
280
  if (isArray(tagged)) {
234
281
  expectType<typeof tagged, TaggedArray>('=');
235
282
 
@@ -239,8 +286,10 @@ describe('Arr validations', () => {
239
286
 
240
287
  test('should work with branded types', () => {
241
288
  type BrandedArray = readonly number[] & Readonly<{ __brand: unknown }>;
289
+
242
290
  // eslint-disable-next-line total-functions/no-unsafe-type-assertion
243
291
  const branded = [1, 2, 3] as unknown as BrandedArray;
292
+
244
293
  if (isArray(branded)) {
245
294
  expectType<typeof branded, BrandedArray>('=');
246
295
  }
@@ -258,32 +307,43 @@ describe('Arr validations', () => {
258
307
  const processComplex = (value: ComplexUnion): number => {
259
308
  if (isArray(value)) {
260
309
  expectType<typeof value, readonly number[]>('=');
310
+
261
311
  return value.length;
262
312
  }
313
+
263
314
  if (typeof value === 'string') {
264
315
  expectType<typeof value, string>('=');
316
+
265
317
  return value.length;
266
318
  }
319
+
267
320
  if (value === null) {
268
321
  expectType<typeof value, null>('=');
322
+
269
323
  return 0;
270
324
  }
325
+
271
326
  expectType<
272
327
  typeof value,
273
328
  | { type: 'array'; data: readonly string[] }
274
329
  | { type: 'object'; data: Record<string, unknown> }
275
330
  >('=');
331
+
276
332
  return -1;
277
333
  };
278
334
 
279
335
  expect(processComplex([1, 2, 3])).toBe(3);
336
+
280
337
  expect(processComplex('test')).toBe(4);
338
+
281
339
  expect(processComplex(null)).toBe(0);
340
+
282
341
  expect(processComplex({ type: 'array', data: ['a', 'b'] })).toBe(-1);
283
342
  });
284
343
 
285
344
  test('should preserve literal types in arrays', () => {
286
345
  const literalArray = [1, 2, 3] as const;
346
+
287
347
  if (isArray(literalArray)) {
288
348
  expectType<typeof literalArray, readonly [1, 2, 3]>('=');
289
349
  }
@@ -291,6 +351,7 @@ describe('Arr validations', () => {
291
351
 
292
352
  test('should handle arrays with mixed element types', () => {
293
353
  const mixed: readonly (string | number | boolean)[] = [1, 'two', true];
354
+
294
355
  if (isArray(mixed)) {
295
356
  expectType<typeof mixed, readonly (string | number | boolean)[]>('=');
296
357
  }
@@ -298,7 +359,9 @@ describe('Arr validations', () => {
298
359
 
299
360
  test('should work with symbol-keyed arrays', () => {
300
361
  const sym = Symbol('test');
362
+
301
363
  const arrWithSymbol = Object.assign([1, 2, 3], { [sym]: 'value' });
364
+
302
365
  if (isArray(arrWithSymbol)) {
303
366
  expect(arrWithSymbol).toHaveLength(3);
304
367
  }
@@ -308,6 +371,7 @@ describe('Arr validations', () => {
308
371
 
309
372
  describe(isEmpty, () => {
310
373
  const xs = [1, 2, 3] as const;
374
+
311
375
  const result = isEmpty(xs);
312
376
 
313
377
  expectType<typeof result, boolean>('=');
@@ -323,6 +387,7 @@ describe('Arr validations', () => {
323
387
 
324
388
  describe(isNonEmpty, () => {
325
389
  const xs = [1, 2, 3] as const;
390
+
326
391
  const result = isNonEmpty(xs);
327
392
 
328
393
  expectType<typeof result, boolean>('=');
@@ -395,18 +460,23 @@ describe('Arr validations', () => {
395
460
 
396
461
  test('should return true for arrays of exact length (additional)', () => {
397
462
  expect(isArrayOfLength([1, 2, 3], 3)).toBe(true);
463
+
398
464
  expect(isArrayOfLength([], 0)).toBe(true);
465
+
399
466
  expect(isArrayOfLength(['a'], 1)).toBe(true);
400
467
  });
401
468
 
402
469
  test('should return false for arrays of different length (additional)', () => {
403
470
  expect(isArrayOfLength([1, 2, 3], 2)).toBe(false);
471
+
404
472
  expect(isArrayOfLength([1, 2, 3], 4)).toBe(false);
473
+
405
474
  expect(isArrayOfLength([], 1)).toBe(false);
406
475
  });
407
476
 
408
477
  test('should work as type guard with exact length (additional)', () => {
409
478
  const array: readonly number[] = [1, 2, 3];
479
+
410
480
  if (isArrayOfLength(array, 3)) {
411
481
  expectType<typeof array, ArrayOfLength<3, number>>('=');
412
482
 
@@ -474,18 +544,23 @@ describe('Arr validations', () => {
474
544
 
475
545
  test('should return true for arrays of at least specified length (additional)', () => {
476
546
  expect(isArrayAtLeastLength([1, 2, 3], 3)).toBe(true);
547
+
477
548
  expect(isArrayAtLeastLength([1, 2, 3], 2)).toBe(true);
549
+
478
550
  expect(isArrayAtLeastLength([1, 2, 3], 1)).toBe(true);
551
+
479
552
  expect(isArrayAtLeastLength([1, 2, 3], 0)).toBe(true);
480
553
  });
481
554
 
482
555
  test('should return false for arrays shorter than specified length (additional)', () => {
483
556
  expect(isArrayAtLeastLength([1, 2, 3], 4)).toBe(false);
557
+
484
558
  expect(isArrayAtLeastLength([], 1)).toBe(false);
485
559
  });
486
560
 
487
561
  test('should work as type guard for at least length (additional)', () => {
488
562
  const array: readonly number[] = [1, 2, 3];
563
+
489
564
  if (isArrayAtLeastLength(array, 2)) {
490
565
  expectType<typeof array, ArrayAtLeastLen<2, number>>('=');
491
566
 
@@ -497,6 +572,7 @@ describe('Arr validations', () => {
497
572
  describe(every, () => {
498
573
  test('should return true when all elements satisfy predicate', () => {
499
574
  const evens = [2, 4, 6, 8];
575
+
500
576
  const allEven = every(evens, (n) => n % 2 === 0);
501
577
 
502
578
  expect(allEven).toBe(true);
@@ -504,6 +580,7 @@ describe('Arr validations', () => {
504
580
 
505
581
  test('should return false when not all elements satisfy predicate', () => {
506
582
  const mixed = [2, 3, 4, 6];
583
+
507
584
  const allEven = every(mixed, (n) => n % 2 === 0);
508
585
 
509
586
  expect(allEven).toBe(false);
@@ -511,6 +588,7 @@ describe('Arr validations', () => {
511
588
 
512
589
  test('should work as type guard', () => {
513
590
  const mixed: (string | number)[] = ['hello', 'world'];
591
+
514
592
  if (every(mixed, (x): x is string => typeof x === 'string')) {
515
593
  // TypeScript narrows mixed to readonly string[] here
516
594
  expect(mixed.every((s) => typeof s === 'string')).toBe(true);
@@ -519,16 +597,21 @@ describe('Arr validations', () => {
519
597
 
520
598
  test('should work with curried version', () => {
521
599
  const isPositive = (n: number): boolean => n > 0;
600
+
522
601
  const allPositive = every(isPositive);
523
602
 
524
603
  expect(allPositive([1, 2, 3])).toBe(true);
604
+
525
605
  expect(allPositive([1, -2, 3])).toBe(false);
526
606
  });
527
607
 
528
608
  test('should work with curried type guards', () => {
529
609
  const isString = (x: unknown): x is string => typeof x === 'string';
610
+
530
611
  const allStrings = every(isString);
612
+
531
613
  const data: unknown[] = ['a', 'b', 'c'];
614
+
532
615
  if (allStrings(data)) {
533
616
  // TypeScript narrows data to readonly string[] here
534
617
  expect(data.join('')).toBe('abc');
@@ -537,6 +620,7 @@ describe('Arr validations', () => {
537
620
 
538
621
  test('should return true for empty array', () => {
539
622
  const empty: number[] = [];
623
+
540
624
  const result = every(empty, (n) => n > 0);
541
625
 
542
626
  expect(result).toBe(true);
@@ -544,6 +628,7 @@ describe('Arr validations', () => {
544
628
 
545
629
  test('should pass index to predicate', () => {
546
630
  const numbers = [0, 1, 2, 3];
631
+
547
632
  const indexMatchesValue = every(numbers, (val, idx) => val === idx);
548
633
 
549
634
  expect(indexMatchesValue).toBe(true);
@@ -553,6 +638,7 @@ describe('Arr validations', () => {
553
638
  describe(some, () => {
554
639
  test('should return true when at least one element satisfies predicate', () => {
555
640
  const numbers = [1, 3, 5, 8];
641
+
556
642
  const hasEven = some(numbers, (n) => n % 2 === 0);
557
643
 
558
644
  expect(hasEven).toBe(true);
@@ -560,6 +646,7 @@ describe('Arr validations', () => {
560
646
 
561
647
  test('should return false when no elements satisfy predicate', () => {
562
648
  const odds = [1, 3, 5, 7];
649
+
563
650
  const hasEven = some(odds, (n) => n % 2 === 0);
564
651
 
565
652
  expect(hasEven).toBe(false);
@@ -567,14 +654,17 @@ describe('Arr validations', () => {
567
654
 
568
655
  test('should work with curried version', () => {
569
656
  const isNegative = (n: number): boolean => n < 0;
657
+
570
658
  const hasNegative = some(isNegative);
571
659
 
572
660
  expect(hasNegative([1, 2, -3])).toBe(true);
661
+
573
662
  expect(hasNegative([1, 2, 3])).toBe(false);
574
663
  });
575
664
 
576
665
  test('should return false for empty array', () => {
577
666
  const empty: number[] = [];
667
+
578
668
  const result = some(empty, (n) => n > 0);
579
669
 
580
670
  expect(result).toBe(false);
@@ -582,6 +672,7 @@ describe('Arr validations', () => {
582
672
 
583
673
  test('should pass index to predicate', () => {
584
674
  const numbers = [10, 10, 10, 30];
675
+
585
676
  const hasValueMatchingIndex = some(
586
677
  numbers,
587
678
  (val, idx) => val === idx * 10,
@@ -596,7 +687,9 @@ describe('Arr validations', () => {
596
687
  const array = ['a', 'b', 'c'];
597
688
 
598
689
  expect(indexIsInRange(array, 0)).toBe(true);
690
+
599
691
  expect(indexIsInRange(array, 1)).toBe(true);
692
+
600
693
  expect(indexIsInRange(array, 2)).toBe(true);
601
694
  });
602
695
 
@@ -604,6 +697,7 @@ describe('Arr validations', () => {
604
697
  const array = ['a', 'b', 'c'];
605
698
 
606
699
  expect(indexIsInRange(array, 3)).toBe(false);
700
+
607
701
  expect(indexIsInRange(array, 10)).toBe(false);
608
702
  });
609
703
 
@@ -611,6 +705,7 @@ describe('Arr validations', () => {
611
705
  const empty: readonly string[] = [];
612
706
 
613
707
  expect(indexIsInRange(empty, 0)).toBe(false);
708
+
614
709
  // @ts-expect-error negative indices should not be allowed
615
710
  expect(indexIsInRange(empty, -1)).toBe(false);
616
711
  });
@@ -620,6 +715,7 @@ describe('Arr validations', () => {
620
715
 
621
716
  // @ts-expect-error floating point indices should not be allowed
622
717
  expect(indexIsInRange(array, 1.5)).toBe(true); // JavaScript arrays accept floating point indices
718
+
623
719
  // @ts-expect-error floating point indices should not be allowed
624
720
  expect(indexIsInRange(array, 3.1)).toBe(false);
625
721
  });
@@ -32,6 +32,7 @@ describe('Array.some', () => {
32
32
 
33
33
  describe('Array.flat', () => {
34
34
  const xs = [1, 2, [3, 4, [5, 6, [7, 8]]]] as const;
35
+
35
36
  const result = xs.flat();
36
37
 
37
38
  expectType<
@@ -47,6 +48,7 @@ describe('Array.flat', () => {
47
48
  describe('Array.includes', () => {
48
49
  {
49
50
  const xs = [2, 1, 3] as const;
51
+
50
52
  const result = xs.includes(2);
51
53
 
52
54
  expectType<typeof result, boolean>('=');
@@ -55,8 +57,10 @@ describe('Array.includes', () => {
55
57
  expect(result).toBe(true);
56
58
  });
57
59
  }
60
+
58
61
  {
59
62
  const xs: readonly number[] = [2, 1, 3];
63
+
60
64
  const result = xs.includes(4);
61
65
 
62
66
  expectType<typeof result, boolean>('=');
@@ -70,6 +74,7 @@ describe('Array.includes', () => {
70
74
  describe('Array.find', () => {
71
75
  {
72
76
  const xs = [{ v: 2 }, { v: 1 }, { v: 3 }] as const;
77
+
73
78
  const result = xs.find((x) => x.v === 1);
74
79
 
75
80
  expectType<typeof result, Readonly<{ v: 1 }> | undefined>('=');
@@ -78,12 +83,14 @@ describe('Array.find', () => {
78
83
  assert.deepStrictEqual(result, { v: 1 });
79
84
  });
80
85
  }
86
+
81
87
  {
82
88
  const xs: readonly Readonly<{ v: 1 | 2 | 3 }>[] = [
83
89
  { v: 2 },
84
90
  { v: 1 },
85
91
  { v: 3 },
86
92
  ] as const;
93
+
87
94
  const result = xs.find((x) => x.v === 1);
88
95
 
89
96
  expectType<typeof result, Readonly<{ v: 1 | 2 | 3 }> | undefined>('=');
@@ -97,6 +104,7 @@ describe('Array.find', () => {
97
104
  describe('Array.findIndex', () => {
98
105
  {
99
106
  const xs = [{ v: 2 }, { v: 1 }, { v: 3 }] as const;
107
+
100
108
  const result = xs.findIndex((x) => x.v === 1);
101
109
 
102
110
  expectType<typeof result, number>('=');
@@ -105,12 +113,14 @@ describe('Array.findIndex', () => {
105
113
  expect(result).toBe(1);
106
114
  });
107
115
  }
116
+
108
117
  {
109
118
  const xs: readonly Readonly<{ v: 1 | 2 | 3 }>[] = [
110
119
  { v: 2 },
111
120
  { v: 1 },
112
121
  { v: 3 },
113
122
  ] as const;
123
+
114
124
  const result = xs.findIndex((x) => x.v === 1);
115
125
 
116
126
  expectType<typeof result, number>('=');
@@ -124,6 +134,7 @@ describe('Array.findIndex', () => {
124
134
  describe('Array.filter', () => {
125
135
  {
126
136
  const xs = [1, 2, 3] as const;
137
+
127
138
  const filtered = xs.filter((x): x is 1 | 3 => x % 2 === 1);
128
139
 
129
140
  expectType<typeof filtered, (1 | 3)[]>('=');
@@ -135,6 +146,7 @@ describe('Array.filter', () => {
135
146
 
136
147
  {
137
148
  const xs = [1, 2, 3] as const;
149
+
138
150
  const filtered = xs.filter((x) => x % 2 === 1);
139
151
 
140
152
  expectType<typeof filtered, (1 | 2 | 3)[]>('=');