ts-data-forge 9.0.0 → 10.0.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 (447) hide show
  1. package/README.md +1 -1
  2. package/dist/array/impl/array-utils-creation.d.mts +4 -4
  3. package/dist/array/impl/array-utils-creation.d.mts.map +1 -1
  4. package/dist/array/impl/array-utils-creation.mjs +17 -112
  5. package/dist/array/impl/array-utils-creation.mjs.map +1 -1
  6. package/dist/array/impl/array-utils-element-access.d.mts.map +1 -1
  7. package/dist/array/impl/array-utils-element-access.mjs +22 -61
  8. package/dist/array/impl/array-utils-element-access.mjs.map +1 -1
  9. package/dist/array/impl/array-utils-iterators.d.mts.map +1 -1
  10. package/dist/array/impl/array-utils-iterators.mjs +9 -63
  11. package/dist/array/impl/array-utils-iterators.mjs.map +1 -1
  12. package/dist/array/impl/array-utils-modification.d.mts +7 -7
  13. package/dist/array/impl/array-utils-modification.d.mts.map +1 -1
  14. package/dist/array/impl/array-utils-modification.mjs +78 -78
  15. package/dist/array/impl/array-utils-modification.mjs.map +1 -1
  16. package/dist/array/impl/array-utils-reducing-value.mjs +95 -89
  17. package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -1
  18. package/dist/array/impl/array-utils-search.mjs +100 -92
  19. package/dist/array/impl/array-utils-search.mjs.map +1 -1
  20. package/dist/array/impl/array-utils-set-op.d.mts.map +1 -1
  21. package/dist/array/impl/array-utils-set-op.mjs +31 -141
  22. package/dist/array/impl/array-utils-set-op.mjs.map +1 -1
  23. package/dist/array/impl/array-utils-size.d.mts.map +1 -1
  24. package/dist/array/impl/array-utils-size.mjs +4 -8
  25. package/dist/array/impl/array-utils-size.mjs.map +1 -1
  26. package/dist/array/impl/array-utils-slice-clamped.mjs +11 -12
  27. package/dist/array/impl/array-utils-slice-clamped.mjs.map +1 -1
  28. package/dist/array/impl/array-utils-slicing.d.mts.map +1 -1
  29. package/dist/array/impl/array-utils-slicing.mjs +44 -96
  30. package/dist/array/impl/array-utils-slicing.mjs.map +1 -1
  31. package/dist/array/impl/array-utils-transformation.d.mts +4 -4
  32. package/dist/array/impl/array-utils-transformation.d.mts.map +1 -1
  33. package/dist/array/impl/array-utils-transformation.mjs +150 -292
  34. package/dist/array/impl/array-utils-transformation.mjs.map +1 -1
  35. package/dist/array/impl/array-utils-validation.d.mts +17 -17
  36. package/dist/array/impl/array-utils-validation.d.mts.map +1 -1
  37. package/dist/array/impl/array-utils-validation.mjs +23 -174
  38. package/dist/array/impl/array-utils-validation.mjs.map +1 -1
  39. package/dist/array/impl/index.mjs +1 -1
  40. package/dist/collections/imap-mapped.d.mts.map +1 -1
  41. package/dist/collections/imap-mapped.mjs +243 -330
  42. package/dist/collections/imap-mapped.mjs.map +1 -1
  43. package/dist/collections/imap.d.mts.map +1 -1
  44. package/dist/collections/imap.mjs +190 -275
  45. package/dist/collections/imap.mjs.map +1 -1
  46. package/dist/collections/iset-mapped.d.mts +1 -1
  47. package/dist/collections/iset-mapped.d.mts.map +1 -1
  48. package/dist/collections/iset-mapped.mjs +222 -444
  49. package/dist/collections/iset-mapped.mjs.map +1 -1
  50. package/dist/collections/iset.d.mts +1 -1
  51. package/dist/collections/iset.d.mts.map +1 -1
  52. package/dist/collections/iset.mjs +158 -324
  53. package/dist/collections/iset.mjs.map +1 -1
  54. package/dist/collections/queue.d.mts.map +1 -1
  55. package/dist/collections/queue.mjs +106 -178
  56. package/dist/collections/queue.mjs.map +1 -1
  57. package/dist/collections/stack.d.mts.map +1 -1
  58. package/dist/collections/stack.mjs +95 -165
  59. package/dist/collections/stack.mjs.map +1 -1
  60. package/dist/entry-point.mjs +2 -0
  61. package/dist/entry-point.mjs.map +1 -1
  62. package/dist/expect-type.d.mts +1 -1
  63. package/dist/expect-type.d.mts.map +1 -1
  64. package/dist/expect-type.mjs +1 -69
  65. package/dist/expect-type.mjs.map +1 -1
  66. package/dist/functional/match.mjs +9 -9
  67. package/dist/functional/match.mjs.map +1 -1
  68. package/dist/functional/optional/impl/optional-expect-to-be.mjs +13 -14
  69. package/dist/functional/optional/impl/optional-expect-to-be.mjs.map +1 -1
  70. package/dist/functional/optional/impl/optional-filter.mjs +14 -15
  71. package/dist/functional/optional/impl/optional-filter.mjs.map +1 -1
  72. package/dist/functional/optional/impl/optional-flat-map.mjs +10 -11
  73. package/dist/functional/optional/impl/optional-flat-map.mjs.map +1 -1
  74. package/dist/functional/optional/impl/optional-from-nullable.d.mts.map +1 -1
  75. package/dist/functional/optional/impl/optional-from-nullable.mjs +1 -25
  76. package/dist/functional/optional/impl/optional-from-nullable.mjs.map +1 -1
  77. package/dist/functional/optional/impl/optional-is-none.d.mts.map +1 -1
  78. package/dist/functional/optional/impl/optional-is-none.mjs +0 -19
  79. package/dist/functional/optional/impl/optional-is-none.mjs.map +1 -1
  80. package/dist/functional/optional/impl/optional-is-optional.d.mts.map +1 -1
  81. package/dist/functional/optional/impl/optional-is-optional.mjs +1 -23
  82. package/dist/functional/optional/impl/optional-is-optional.mjs.map +1 -1
  83. package/dist/functional/optional/impl/optional-is-some.d.mts.map +1 -1
  84. package/dist/functional/optional/impl/optional-is-some.mjs +0 -20
  85. package/dist/functional/optional/impl/optional-is-some.mjs.map +1 -1
  86. package/dist/functional/optional/impl/optional-map.mjs +13 -14
  87. package/dist/functional/optional/impl/optional-map.mjs.map +1 -1
  88. package/dist/functional/optional/impl/optional-none.mjs +0 -16
  89. package/dist/functional/optional/impl/optional-none.mjs.map +1 -1
  90. package/dist/functional/optional/impl/optional-or-else.mjs +10 -11
  91. package/dist/functional/optional/impl/optional-or-else.mjs.map +1 -1
  92. package/dist/functional/optional/impl/optional-some.d.mts.map +1 -1
  93. package/dist/functional/optional/impl/optional-some.mjs +2 -21
  94. package/dist/functional/optional/impl/optional-some.mjs.map +1 -1
  95. package/dist/functional/optional/impl/optional-to-nullable.d.mts.map +1 -1
  96. package/dist/functional/optional/impl/optional-to-nullable.mjs +1 -27
  97. package/dist/functional/optional/impl/optional-to-nullable.mjs.map +1 -1
  98. package/dist/functional/optional/impl/optional-unwrap-or.mjs +9 -10
  99. package/dist/functional/optional/impl/optional-unwrap-or.mjs.map +1 -1
  100. package/dist/functional/optional/impl/optional-unwrap-throw.d.mts.map +1 -1
  101. package/dist/functional/optional/impl/optional-unwrap-throw.mjs +4 -32
  102. package/dist/functional/optional/impl/optional-unwrap-throw.mjs.map +1 -1
  103. package/dist/functional/optional/impl/optional-unwrap.mjs +4 -4
  104. package/dist/functional/optional/impl/optional-unwrap.mjs.map +1 -1
  105. package/dist/functional/optional/impl/optional-zip.d.mts.map +1 -1
  106. package/dist/functional/optional/impl/optional-zip.mjs +1 -35
  107. package/dist/functional/optional/impl/optional-zip.mjs.map +1 -1
  108. package/dist/functional/optional/impl/tag.mjs +2 -3
  109. package/dist/functional/optional/impl/tag.mjs.map +1 -1
  110. package/dist/functional/pipe.d.mts.map +1 -1
  111. package/dist/functional/pipe.mjs +9 -34
  112. package/dist/functional/pipe.mjs.map +1 -1
  113. package/dist/functional/result/impl/result-err.d.mts.map +1 -1
  114. package/dist/functional/result/impl/result-err.mjs +2 -27
  115. package/dist/functional/result/impl/result-err.mjs.map +1 -1
  116. package/dist/functional/result/impl/result-expect-to-be.mjs +13 -15
  117. package/dist/functional/result/impl/result-expect-to-be.mjs.map +1 -1
  118. package/dist/functional/result/impl/result-flat-map.mjs +16 -16
  119. package/dist/functional/result/impl/result-flat-map.mjs.map +1 -1
  120. package/dist/functional/result/impl/result-fold.mjs +16 -16
  121. package/dist/functional/result/impl/result-fold.mjs.map +1 -1
  122. package/dist/functional/result/impl/result-from-promise.d.mts.map +1 -1
  123. package/dist/functional/result/impl/result-from-promise.mjs +4 -31
  124. package/dist/functional/result/impl/result-from-promise.mjs.map +1 -1
  125. package/dist/functional/result/impl/result-from-throwable.d.mts.map +1 -1
  126. package/dist/functional/result/impl/result-from-throwable.mjs +8 -38
  127. package/dist/functional/result/impl/result-from-throwable.mjs.map +1 -1
  128. package/dist/functional/result/impl/result-is-err.d.mts.map +1 -1
  129. package/dist/functional/result/impl/result-is-err.mjs +0 -19
  130. package/dist/functional/result/impl/result-is-err.mjs.map +1 -1
  131. package/dist/functional/result/impl/result-is-ok.d.mts.map +1 -1
  132. package/dist/functional/result/impl/result-is-ok.mjs +0 -19
  133. package/dist/functional/result/impl/result-is-ok.mjs.map +1 -1
  134. package/dist/functional/result/impl/result-is-result.d.mts.map +1 -1
  135. package/dist/functional/result/impl/result-is-result.mjs +1 -23
  136. package/dist/functional/result/impl/result-is-result.mjs.map +1 -1
  137. package/dist/functional/result/impl/result-map-err.mjs +16 -16
  138. package/dist/functional/result/impl/result-map-err.mjs.map +1 -1
  139. package/dist/functional/result/impl/result-map.mjs +16 -16
  140. package/dist/functional/result/impl/result-map.mjs.map +1 -1
  141. package/dist/functional/result/impl/result-ok.d.mts.map +1 -1
  142. package/dist/functional/result/impl/result-ok.mjs +2 -27
  143. package/dist/functional/result/impl/result-ok.mjs.map +1 -1
  144. package/dist/functional/result/impl/result-or-else.mjs +10 -12
  145. package/dist/functional/result/impl/result-or-else.mjs.map +1 -1
  146. package/dist/functional/result/impl/result-swap.d.mts.map +1 -1
  147. package/dist/functional/result/impl/result-swap.mjs +4 -22
  148. package/dist/functional/result/impl/result-swap.mjs.map +1 -1
  149. package/dist/functional/result/impl/result-to-optional.d.mts.map +1 -1
  150. package/dist/functional/result/impl/result-to-optional.mjs +0 -27
  151. package/dist/functional/result/impl/result-to-optional.mjs.map +1 -1
  152. package/dist/functional/result/impl/result-unwrap-err-or.mjs +9 -11
  153. package/dist/functional/result/impl/result-unwrap-err-or.mjs.map +1 -1
  154. package/dist/functional/result/impl/result-unwrap-err-throw.d.mts.map +1 -1
  155. package/dist/functional/result/impl/result-unwrap-err-throw.mjs +13 -40
  156. package/dist/functional/result/impl/result-unwrap-err-throw.mjs.map +1 -1
  157. package/dist/functional/result/impl/result-unwrap-err.d.mts.map +1 -1
  158. package/dist/functional/result/impl/result-unwrap-err.mjs +4 -32
  159. package/dist/functional/result/impl/result-unwrap-err.mjs.map +1 -1
  160. package/dist/functional/result/impl/result-unwrap-ok-or.mjs +9 -11
  161. package/dist/functional/result/impl/result-unwrap-ok-or.mjs.map +1 -1
  162. package/dist/functional/result/impl/result-unwrap-ok.mjs +4 -4
  163. package/dist/functional/result/impl/result-unwrap-ok.mjs.map +1 -1
  164. package/dist/functional/result/impl/result-unwrap-throw.d.mts.map +1 -1
  165. package/dist/functional/result/impl/result-unwrap-throw.mjs +4 -35
  166. package/dist/functional/result/impl/result-unwrap-throw.mjs.map +1 -1
  167. package/dist/functional/result/impl/result-zip.d.mts.map +1 -1
  168. package/dist/functional/result/impl/result-zip.mjs +1 -34
  169. package/dist/functional/result/impl/result-zip.mjs.map +1 -1
  170. package/dist/functional/result/impl/tag.mjs +2 -3
  171. package/dist/functional/result/impl/tag.mjs.map +1 -1
  172. package/dist/functional/ternary-result/impl/tag.mjs +3 -5
  173. package/dist/functional/ternary-result/impl/tag.mjs.map +1 -1
  174. package/dist/functional/ternary-result/impl/ternary-result-err.d.mts.map +1 -1
  175. package/dist/functional/ternary-result/impl/ternary-result-err.mjs +2 -15
  176. package/dist/functional/ternary-result/impl/ternary-result-err.mjs.map +1 -1
  177. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.mjs +13 -13
  178. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.mjs.map +1 -1
  179. package/dist/functional/ternary-result/impl/ternary-result-flat-map.mjs +27 -26
  180. package/dist/functional/ternary-result/impl/ternary-result-flat-map.mjs.map +1 -1
  181. package/dist/functional/ternary-result/impl/ternary-result-fold.mjs +21 -22
  182. package/dist/functional/ternary-result/impl/ternary-result-fold.mjs.map +1 -1
  183. package/dist/functional/ternary-result/impl/ternary-result-from-promise.d.mts.map +1 -1
  184. package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs +4 -20
  185. package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs.map +1 -1
  186. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.d.mts.map +1 -1
  187. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs +7 -25
  188. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs.map +1 -1
  189. package/dist/functional/ternary-result/impl/ternary-result-is-err.d.mts.map +1 -1
  190. package/dist/functional/ternary-result/impl/ternary-result-is-err.mjs +0 -17
  191. package/dist/functional/ternary-result/impl/ternary-result-is-err.mjs.map +1 -1
  192. package/dist/functional/ternary-result/impl/ternary-result-is-ok.d.mts.map +1 -1
  193. package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs +0 -19
  194. package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs.map +1 -1
  195. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.d.mts.map +1 -1
  196. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs +1 -25
  197. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs.map +1 -1
  198. package/dist/functional/ternary-result/impl/ternary-result-is-warn.d.mts.map +1 -1
  199. package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs +0 -18
  200. package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs.map +1 -1
  201. package/dist/functional/ternary-result/impl/ternary-result-map-err.mjs +13 -15
  202. package/dist/functional/ternary-result/impl/ternary-result-map-err.mjs.map +1 -1
  203. package/dist/functional/ternary-result/impl/ternary-result-map-warn.mjs +18 -18
  204. package/dist/functional/ternary-result/impl/ternary-result-map-warn.mjs.map +1 -1
  205. package/dist/functional/ternary-result/impl/ternary-result-map.mjs +21 -22
  206. package/dist/functional/ternary-result/impl/ternary-result-map.mjs.map +1 -1
  207. package/dist/functional/ternary-result/impl/ternary-result-ok.d.mts.map +1 -1
  208. package/dist/functional/ternary-result/impl/ternary-result-ok.mjs +2 -16
  209. package/dist/functional/ternary-result/impl/ternary-result-ok.mjs.map +1 -1
  210. package/dist/functional/ternary-result/impl/ternary-result-or-else.mjs +9 -9
  211. package/dist/functional/ternary-result/impl/ternary-result-or-else.mjs.map +1 -1
  212. package/dist/functional/ternary-result/impl/ternary-result-to-optional.d.mts.map +1 -1
  213. package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs +4 -22
  214. package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs.map +1 -1
  215. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.mjs +9 -9
  216. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.mjs.map +1 -1
  217. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.d.mts.map +1 -1
  218. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs +12 -27
  219. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs.map +1 -1
  220. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.d.mts.map +1 -1
  221. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs +4 -19
  222. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs.map +1 -1
  223. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mjs +9 -9
  224. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mjs.map +1 -1
  225. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.mjs +4 -5
  226. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.mjs.map +1 -1
  227. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.d.mts.map +1 -1
  228. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs +15 -27
  229. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs.map +1 -1
  230. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mjs +9 -9
  231. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mjs.map +1 -1
  232. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.d.mts.map +1 -1
  233. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs +10 -24
  234. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs.map +1 -1
  235. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.d.mts.map +1 -1
  236. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs +4 -19
  237. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs.map +1 -1
  238. package/dist/functional/ternary-result/impl/ternary-result-warn.d.mts.map +1 -1
  239. package/dist/functional/ternary-result/impl/ternary-result-warn.mjs +3 -19
  240. package/dist/functional/ternary-result/impl/ternary-result-warn.mjs.map +1 -1
  241. package/dist/functional/ternary-result/impl/ternary-result-zip.d.mts.map +1 -1
  242. package/dist/functional/ternary-result/impl/ternary-result-zip.mjs +14 -45
  243. package/dist/functional/ternary-result/impl/ternary-result-zip.mjs.map +1 -1
  244. package/dist/functional/ternary-result/impl/variant-name.d.mts +1 -1
  245. package/dist/functional/ternary-result/impl/variant-name.d.mts.map +1 -1
  246. package/dist/functional/ternary-result/impl/variant-name.mjs +8 -9
  247. package/dist/functional/ternary-result/impl/variant-name.mjs.map +1 -1
  248. package/dist/guard/as-length-bounded-array.d.mts +117 -0
  249. package/dist/guard/as-length-bounded-array.d.mts.map +1 -0
  250. package/dist/guard/as-length-bounded-array.mjs +37 -0
  251. package/dist/guard/as-length-bounded-array.mjs.map +1 -0
  252. package/dist/guard/has-key.d.mts.map +1 -1
  253. package/dist/guard/has-key.mjs +0 -41
  254. package/dist/guard/has-key.mjs.map +1 -1
  255. package/dist/guard/index.d.mts +2 -0
  256. package/dist/guard/index.d.mts.map +1 -1
  257. package/dist/guard/index.mjs +2 -0
  258. package/dist/guard/index.mjs.map +1 -1
  259. package/dist/guard/is-length-bounded-array.d.mts +159 -0
  260. package/dist/guard/is-length-bounded-array.d.mts.map +1 -0
  261. package/dist/guard/is-length-bounded-array.mjs +7 -0
  262. package/dist/guard/is-length-bounded-array.mjs.map +1 -0
  263. package/dist/guard/is-length-bounded-string.d.mts +5 -6
  264. package/dist/guard/is-length-bounded-string.d.mts.map +1 -1
  265. package/dist/guard/is-length-bounded-string.mjs +0 -157
  266. package/dist/guard/is-length-bounded-string.mjs.map +1 -1
  267. package/dist/guard/is-non-empty-string.d.mts +1 -1
  268. package/dist/guard/is-non-empty-string.d.mts.map +1 -1
  269. package/dist/guard/is-non-empty-string.mjs +1 -38
  270. package/dist/guard/is-non-empty-string.mjs.map +1 -1
  271. package/dist/guard/is-non-null-object.d.mts.map +1 -1
  272. package/dist/guard/is-non-null-object.mjs +1 -35
  273. package/dist/guard/is-non-null-object.mjs.map +1 -1
  274. package/dist/guard/is-primitive.d.mts.map +1 -1
  275. package/dist/guard/is-primitive.mjs +12 -43
  276. package/dist/guard/is-primitive.mjs.map +1 -1
  277. package/dist/guard/is-record.d.mts.map +1 -1
  278. package/dist/guard/is-record.mjs +0 -86
  279. package/dist/guard/is-record.mjs.map +1 -1
  280. package/dist/guard/is-type.d.mts.map +1 -1
  281. package/dist/guard/is-type.mjs +12 -399
  282. package/dist/guard/is-type.mjs.map +1 -1
  283. package/dist/guard/key-is-in.d.mts.map +1 -1
  284. package/dist/guard/key-is-in.mjs +0 -40
  285. package/dist/guard/key-is-in.mjs.map +1 -1
  286. package/dist/index.mjs +2 -0
  287. package/dist/index.mjs.map +1 -1
  288. package/dist/iterator/range.mjs +16 -16
  289. package/dist/iterator/range.mjs.map +1 -1
  290. package/dist/json/json.d.mts.map +1 -1
  291. package/dist/json/json.mjs +52 -340
  292. package/dist/json/json.mjs.map +1 -1
  293. package/dist/number/branded-types/finite-number.d.mts +3 -3
  294. package/dist/number/branded-types/finite-number.mjs +135 -154
  295. package/dist/number/branded-types/finite-number.mjs.map +1 -1
  296. package/dist/number/branded-types/int.d.mts +4 -4
  297. package/dist/number/branded-types/int.mjs +205 -245
  298. package/dist/number/branded-types/int.mjs.map +1 -1
  299. package/dist/number/branded-types/int16.d.mts +15 -15
  300. package/dist/number/branded-types/int16.mjs +116 -123
  301. package/dist/number/branded-types/int16.mjs.map +1 -1
  302. package/dist/number/branded-types/int32.d.mts +11 -11
  303. package/dist/number/branded-types/int32.mjs +116 -123
  304. package/dist/number/branded-types/int32.mjs.map +1 -1
  305. package/dist/number/branded-types/negative-finite-number.d.mts +4 -4
  306. package/dist/number/branded-types/negative-finite-number.mjs +129 -144
  307. package/dist/number/branded-types/negative-finite-number.mjs.map +1 -1
  308. package/dist/number/branded-types/negative-int.d.mts +5 -5
  309. package/dist/number/branded-types/negative-int.mjs +94 -113
  310. package/dist/number/branded-types/negative-int.mjs.map +1 -1
  311. package/dist/number/branded-types/negative-safe-int.d.mts +5 -5
  312. package/dist/number/branded-types/negative-safe-int.mjs +103 -124
  313. package/dist/number/branded-types/negative-safe-int.mjs.map +1 -1
  314. package/dist/number/branded-types/non-negative-finite-number.d.mts +5 -5
  315. package/dist/number/branded-types/non-negative-finite-number.mjs +136 -142
  316. package/dist/number/branded-types/non-negative-finite-number.mjs.map +1 -1
  317. package/dist/number/branded-types/non-negative-int16.d.mts +16 -16
  318. package/dist/number/branded-types/non-negative-int16.mjs +109 -118
  319. package/dist/number/branded-types/non-negative-int16.mjs.map +1 -1
  320. package/dist/number/branded-types/non-negative-int32.d.mts +12 -12
  321. package/dist/number/branded-types/non-negative-int32.mjs +110 -119
  322. package/dist/number/branded-types/non-negative-int32.mjs.map +1 -1
  323. package/dist/number/branded-types/non-positive-finite-number.d.mts +3 -3
  324. package/dist/number/branded-types/non-positive-finite-number.mjs +120 -124
  325. package/dist/number/branded-types/non-positive-finite-number.mjs.map +1 -1
  326. package/dist/number/branded-types/non-positive-int.d.mts +4 -4
  327. package/dist/number/branded-types/non-positive-int.mjs +167 -212
  328. package/dist/number/branded-types/non-positive-int.mjs.map +1 -1
  329. package/dist/number/branded-types/non-positive-safe-int.d.mts +4 -4
  330. package/dist/number/branded-types/non-positive-safe-int.mjs +95 -106
  331. package/dist/number/branded-types/non-positive-safe-int.mjs.map +1 -1
  332. package/dist/number/branded-types/non-zero-finite-number.d.mts +4 -4
  333. package/dist/number/branded-types/non-zero-finite-number.mjs +114 -123
  334. package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -1
  335. package/dist/number/branded-types/non-zero-int.d.mts +2 -2
  336. package/dist/number/branded-types/non-zero-int.mjs +72 -83
  337. package/dist/number/branded-types/non-zero-int.mjs.map +1 -1
  338. package/dist/number/branded-types/non-zero-int16.d.mts +7 -7
  339. package/dist/number/branded-types/non-zero-int16.mjs +96 -107
  340. package/dist/number/branded-types/non-zero-int16.mjs.map +1 -1
  341. package/dist/number/branded-types/non-zero-int32.d.mts +5 -5
  342. package/dist/number/branded-types/non-zero-int32.mjs +97 -108
  343. package/dist/number/branded-types/non-zero-int32.mjs.map +1 -1
  344. package/dist/number/branded-types/non-zero-safe-int.d.mts +2 -2
  345. package/dist/number/branded-types/non-zero-safe-int.mjs +100 -111
  346. package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -1
  347. package/dist/number/branded-types/non-zero-uint16.d.mts +8 -8
  348. package/dist/number/branded-types/non-zero-uint16.mjs +96 -107
  349. package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -1
  350. package/dist/number/branded-types/non-zero-uint32.d.mts +6 -6
  351. package/dist/number/branded-types/non-zero-uint32.mjs +96 -107
  352. package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -1
  353. package/dist/number/branded-types/positive-finite-number.d.mts +8 -8
  354. package/dist/number/branded-types/positive-finite-number.mjs +139 -141
  355. package/dist/number/branded-types/positive-finite-number.mjs.map +1 -1
  356. package/dist/number/branded-types/positive-int.d.mts +11 -11
  357. package/dist/number/branded-types/positive-int.mjs +228 -271
  358. package/dist/number/branded-types/positive-int.mjs.map +1 -1
  359. package/dist/number/branded-types/positive-int16.d.mts +19 -19
  360. package/dist/number/branded-types/positive-int16.mjs +109 -118
  361. package/dist/number/branded-types/positive-int16.mjs.map +1 -1
  362. package/dist/number/branded-types/positive-int32.d.mts +15 -15
  363. package/dist/number/branded-types/positive-int32.mjs +109 -118
  364. package/dist/number/branded-types/positive-int32.mjs.map +1 -1
  365. package/dist/number/branded-types/positive-safe-int.d.mts +11 -11
  366. package/dist/number/branded-types/positive-safe-int.mjs +244 -275
  367. package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
  368. package/dist/number/branded-types/positive-uint16.d.mts +17 -17
  369. package/dist/number/branded-types/positive-uint16.mjs +109 -118
  370. package/dist/number/branded-types/positive-uint16.mjs.map +1 -1
  371. package/dist/number/branded-types/positive-uint32.d.mts +13 -13
  372. package/dist/number/branded-types/positive-uint32.mjs +110 -119
  373. package/dist/number/branded-types/positive-uint32.mjs.map +1 -1
  374. package/dist/number/branded-types/safe-int.d.mts +4 -4
  375. package/dist/number/branded-types/safe-int.mjs +251 -292
  376. package/dist/number/branded-types/safe-int.mjs.map +1 -1
  377. package/dist/number/branded-types/safe-uint.d.mts +8 -8
  378. package/dist/number/branded-types/safe-uint.mjs +111 -119
  379. package/dist/number/branded-types/safe-uint.mjs.map +1 -1
  380. package/dist/number/branded-types/uint.d.mts +8 -8
  381. package/dist/number/branded-types/uint.mjs +198 -225
  382. package/dist/number/branded-types/uint.mjs.map +1 -1
  383. package/dist/number/branded-types/uint16.d.mts +14 -14
  384. package/dist/number/branded-types/uint16.mjs +109 -119
  385. package/dist/number/branded-types/uint16.mjs.map +1 -1
  386. package/dist/number/branded-types/uint32.d.mts +10 -10
  387. package/dist/number/branded-types/uint32.mjs +110 -117
  388. package/dist/number/branded-types/uint32.mjs.map +1 -1
  389. package/dist/number/enum/int8.mjs +119 -145
  390. package/dist/number/enum/int8.mjs.map +1 -1
  391. package/dist/number/enum/uint8.mjs +107 -121
  392. package/dist/number/enum/uint8.mjs.map +1 -1
  393. package/dist/number/num.d.mts +2 -2
  394. package/dist/number/num.d.mts.map +1 -1
  395. package/dist/number/num.mjs +76 -537
  396. package/dist/number/num.mjs.map +1 -1
  397. package/dist/number/refined-number-utils.d.mts +1 -1
  398. package/dist/number/refined-number-utils.d.mts.map +1 -1
  399. package/dist/number/refined-number-utils.mjs +127 -263
  400. package/dist/number/refined-number-utils.mjs.map +1 -1
  401. package/dist/object/object.d.mts.map +1 -1
  402. package/dist/object/object.mjs +107 -222
  403. package/dist/object/object.mjs.map +1 -1
  404. package/dist/others/cast-mutable.d.mts.map +1 -1
  405. package/dist/others/cast-mutable.mjs +8 -37
  406. package/dist/others/cast-mutable.mjs.map +1 -1
  407. package/dist/others/cast-readonly.d.mts.map +1 -1
  408. package/dist/others/cast-readonly.mjs +8 -36
  409. package/dist/others/cast-readonly.mjs.map +1 -1
  410. package/dist/others/debounce-function.d.mts.map +1 -1
  411. package/dist/others/debounce-function.mjs +7 -16
  412. package/dist/others/debounce-function.mjs.map +1 -1
  413. package/dist/others/fast-deep-equal.d.mts.map +1 -1
  414. package/dist/others/fast-deep-equal.mjs +43 -59
  415. package/dist/others/fast-deep-equal.mjs.map +1 -1
  416. package/dist/others/if-then.d.mts.map +1 -1
  417. package/dist/others/if-then.mjs +0 -29
  418. package/dist/others/if-then.mjs.map +1 -1
  419. package/dist/others/map-nullable.mjs +9 -9
  420. package/dist/others/map-nullable.mjs.map +1 -1
  421. package/dist/others/memoize-function.mjs +12 -12
  422. package/dist/others/memoize-function.mjs.map +1 -1
  423. package/dist/others/tuple.d.mts.map +1 -1
  424. package/dist/others/tuple.mjs +0 -50
  425. package/dist/others/tuple.mjs.map +1 -1
  426. package/dist/others/unknown-to-string.d.mts.map +1 -1
  427. package/dist/others/unknown-to-string.mjs +41 -88
  428. package/dist/others/unknown-to-string.mjs.map +1 -1
  429. package/dist/promise/promise.d.mts.map +1 -1
  430. package/dist/promise/promise.mjs +4 -49
  431. package/dist/promise/promise.mjs.map +1 -1
  432. package/package.json +14 -13
  433. package/src/array/impl/array-utils-creation.mts +3 -3
  434. package/src/array/impl/array-utils-modification.mts +7 -7
  435. package/src/array/impl/array-utils-modification.test.mts +4 -4
  436. package/src/array/impl/array-utils-transformation.mts +4 -4
  437. package/src/array/impl/array-utils-transformation.test.mts +7 -7
  438. package/src/array/impl/array-utils-validation.mts +24 -24
  439. package/src/array/impl/array-utils-validation.test.mts +94 -92
  440. package/src/collections/queue.test.mts +1 -1
  441. package/src/guard/as-length-bounded-array.mts +190 -0
  442. package/src/guard/as-length-bounded-array.test.mts +118 -0
  443. package/src/guard/index.mts +2 -0
  444. package/src/guard/is-length-bounded-array.mts +195 -0
  445. package/src/guard/is-length-bounded-array.test.mts +169 -0
  446. package/src/guard/is-length-bounded-string.mts +6 -6
  447. package/src/object/object.test.mts +3 -3
@@ -1,405 +1,18 @@
1
- /**
2
- * Type guard that checks if a value is `undefined`.
3
- *
4
- * **Type Narrowing Behavior:**
5
- *
6
- * - Narrows the input type to `undefined` when `true`
7
- * - Useful for explicit undefined checks
8
- *
9
- * @example
10
- *
11
- * ```ts
12
- * const values: readonly (number | undefined)[] = [1, undefined, 2] as const;
13
- *
14
- * const undefinedValues = values.filter(isUndefined);
15
- *
16
- * assert.deepStrictEqual(undefinedValues, [undefined]);
17
- * ```
18
- *
19
- * @param u - The value to check
20
- * @returns `true` if `u` is `undefined`, `false` otherwise. When `true`,
21
- * TypeScript narrows the type to `undefined`.
22
- */
23
- const isUndefined = (u) => u === undefined;
24
- /**
25
- * Type guard that checks if a value is not `undefined`.
26
- *
27
- * **Type Narrowing Behavior:**
28
- *
29
- * - Excludes `undefined` from the input type when `true`
30
- * - Preserves all other types in the union
31
- * - Commonly used to filter out undefined values
32
- *
33
- * @example
34
- *
35
- * ```ts
36
- * const values: readonly (number | undefined)[] = [1, undefined, 2] as const;
37
- *
38
- * const definedValues = values.filter(isNotUndefined);
39
- *
40
- * assert.deepStrictEqual(definedValues, [1, 2]);
41
- * ```
42
- *
43
- * @template T - The type of the input value
44
- * @param u - The value to check
45
- * @returns `true` if `u` is not `undefined`, `false` otherwise. When `true`,
46
- * TypeScript excludes `undefined` from the type.
47
- */
48
- const isNotUndefined = (u) => u !== undefined;
49
- /**
50
- * Type guard that checks if a value is a boolean.
51
- *
52
- * **Type Narrowing Behavior:**
53
- *
54
- * - Narrows `unknown` to `boolean` when `true`
55
- * - Preserves literal boolean types (`true | false`)
56
- *
57
- * @example
58
- *
59
- * ```ts
60
- * const flags: readonly unknown[] = [true, 'no', false] as const;
61
- *
62
- * const booleans = flags.filter(isBoolean);
63
- *
64
- * assert.deepStrictEqual(booleans, [true, false]);
65
- * ```
66
- *
67
- * @param u - The value to check
68
- * @returns `true` if `u` is a boolean, `false` otherwise. When `true`,
69
- * TypeScript narrows the type to `boolean`.
70
- */
71
- const isBoolean = (u) => typeof u === 'boolean';
72
- /**
73
- * Type guard that checks if a value is not a boolean.
74
- *
75
- * **Type Narrowing Behavior:**
76
- *
77
- * - Excludes `boolean` from the input type when `true`
78
- * - Preserves all other types in the union
79
- *
80
- * @example
81
- *
82
- * ```ts
83
- * const flags: readonly unknown[] = [true, 'no', false] as const;
84
- *
85
- * const nonBooleans = flags.filter(isNotBoolean);
86
- *
87
- * assert.deepStrictEqual(nonBooleans, ['no']);
88
- * ```
89
- *
90
- * @template T - The type of the input value
91
- * @param u - The value to check
92
- * @returns `true` if `u` is not a boolean, `false` otherwise. When `true`,
93
- * TypeScript excludes `boolean` from the type.
94
- */
95
- const isNotBoolean = (u) => typeof u !== 'boolean';
96
- /**
97
- * Type guard that checks if a value is a number.
98
- *
99
- * **Type Narrowing Behavior:**
100
- *
101
- * - Narrows `unknown` to `number` when `true`
102
- * - Includes `NaN`, `Infinity`, and `-Infinity` as valid numbers
103
- * - Preserves literal number types when possible
104
- *
105
- * @example
106
- *
107
- * ```ts
108
- * const mixed: readonly unknown[] = [1, '2', 3] as const;
109
- *
110
- * const numbers = mixed.filter(isNumber);
111
- *
112
- * assert.deepStrictEqual(numbers, [1, 3]);
113
- * ```
114
- *
115
- * @param u - The value to check
116
- * @returns `true` if `u` is a number, `false` otherwise. When `true`,
117
- * TypeScript narrows the type to `number`.
118
- */
119
- const isNumber = (u) => typeof u === 'number';
120
- /**
121
- * Type guard that checks if a value is not a number.
122
- *
123
- * **Type Narrowing Behavior:**
124
- *
125
- * - Excludes `number` from the input type when `true`
126
- * - Preserves all other types in the union
127
- *
128
- * @example
129
- *
130
- * ```ts
131
- * const mixed: readonly unknown[] = [1, '2', 3] as const;
132
- *
133
- * const nonNumbers = mixed.filter(isNotNumber);
134
- *
135
- * assert.deepStrictEqual(nonNumbers, ['2']);
136
- * ```
137
- *
138
- * @template T - The type of the input value
139
- * @param u - The value to check
140
- * @returns `true` if `u` is not a number, `false` otherwise. When `true`,
141
- * TypeScript excludes `number` from the type.
142
- */
143
- const isNotNumber = (u) => typeof u !== 'number';
144
- /**
145
- * Type guard that checks if a value is a bigint.
146
- *
147
- * **Type Narrowing Behavior:**
148
- *
149
- * - Narrows `unknown` to `bigint` when `true`
150
- * - Identifies values created with `BigInt()` constructor or `n` suffix
151
- *
152
- * @example
153
- *
154
- * ```ts
155
- * const values: readonly unknown[] = [1n, 2, 3n] as const;
156
- *
157
- * const bigints = values.filter(isBigint);
158
- *
159
- * assert.deepStrictEqual(bigints, [1n, 3n]);
160
- * ```
161
- *
162
- * @param u - The value to check
163
- * @returns `true` if `u` is a bigint, `false` otherwise. When `true`,
164
- * TypeScript narrows the type to `bigint`.
165
- */
166
- const isBigint = (u) => typeof u === 'bigint';
167
- /**
168
- * Type guard that checks if a value is not a bigint.
169
- *
170
- * **Type Narrowing Behavior:**
171
- *
172
- * - Excludes `bigint` from the input type when `true`
173
- * - Preserves all other types in the union
174
- *
175
- * @example
176
- *
177
- * ```ts
178
- * const values: readonly unknown[] = [1n, 2, 3n] as const;
179
- *
180
- * const nonBigints = values.filter(isNotBigint);
181
- *
182
- * assert.deepStrictEqual(nonBigints, [2]);
183
- * ```
184
- *
185
- * @template T - The type of the input value
186
- * @param u - The value to check
187
- * @returns `true` if `u` is not a bigint, `false` otherwise. When `true`,
188
- * TypeScript excludes `bigint` from the type.
189
- */
190
- const isNotBigint = (u) => typeof u !== 'bigint';
191
- /**
192
- * Type guard that checks if a value is a string.
193
- *
194
- * **Type Narrowing Behavior:**
195
- *
196
- * - Narrows `unknown` to `string` when `true`
197
- * - Preserves literal string types when possible
198
- * - Includes empty strings
199
- *
200
- * @example
201
- *
202
- * ```ts
203
- * const values: readonly unknown[] = ['Ada', 42, 'Lovelace'] as const;
204
- *
205
- * const strings = values.filter(isString);
206
- *
207
- * assert.deepStrictEqual(strings, ['Ada', 'Lovelace']);
208
- * ```
209
- *
210
- * @param u - The value to check
211
- * @returns `true` if `u` is a string, `false` otherwise. When `true`,
212
- * TypeScript narrows the type to `string`.
213
- */
214
- const isString = (u) => typeof u === 'string';
215
- /**
216
- * Type guard that checks if a value is not a string.
217
- *
218
- * **Type Narrowing Behavior:**
219
- *
220
- * - Excludes `string` from the input type when `true`
221
- * - Preserves all other types in the union
222
- *
223
- * @example
224
- *
225
- * ```ts
226
- * const values: readonly unknown[] = ['Ada', 42, 'Lovelace'] as const;
227
- *
228
- * const nonStrings = values.filter(isNotString);
229
- *
230
- * assert.deepStrictEqual(nonStrings, [42]);
231
- * ```
232
- *
233
- * @template T - The type of the input value
234
- * @param u - The value to check
235
- * @returns `true` if `u` is not a string, `false` otherwise. When `true`,
236
- * TypeScript excludes `string` from the type.
237
- */
238
- const isNotString = (u) => typeof u !== 'string';
239
- /**
240
- * Type guard that checks if a value is a symbol.
241
- *
242
- * **Type Narrowing Behavior:**
243
- *
244
- * - Narrows `unknown` to `symbol` when `true`
245
- * - Identifies values created with `Symbol()` constructor
246
- *
247
- * @example
248
- *
249
- * ```ts
250
- * const id = Symbol('id');
251
- *
252
- * const shared = Symbol.for('shared');
253
- *
254
- * const tokens: readonly unknown[] = [id, 'shared', shared] as const;
255
- *
256
- * const symbols = tokens.filter(isSymbol);
257
- *
258
- * assert.deepStrictEqual(symbols, [id, shared]);
259
- * ```
260
- *
261
- * @param u - The value to check
262
- * @returns `true` if `u` is a symbol, `false` otherwise. When `true`,
263
- * TypeScript narrows the type to `symbol`.
264
- */
265
- const isSymbol = (u) => typeof u === 'symbol';
266
- /**
267
- * Type guard that checks if a value is not a symbol.
268
- *
269
- * **Type Narrowing Behavior:**
270
- *
271
- * - Excludes `symbol` from the input type when `true`
272
- * - Preserves all other types in the union
273
- *
274
- * @example
275
- *
276
- * ```ts
277
- * const id = Symbol('id');
278
- *
279
- * const tokens: readonly unknown[] = [id, 'shared'] as const;
280
- *
281
- * const nonSymbols = tokens.filter(isNotSymbol);
282
- *
283
- * assert.deepStrictEqual(nonSymbols, ['shared']);
284
- * ```
285
- *
286
- * @template T - The type of the input value
287
- * @param u - The value to check
288
- * @returns `true` if `u` is not a symbol, `false` otherwise. When `true`,
289
- * TypeScript excludes `symbol` from the type.
290
- */
291
- const isNotSymbol = (u) => typeof u !== 'symbol';
292
- /**
293
- * Type guard that checks if a value is `null`.
294
- *
295
- * **Type Narrowing Behavior:**
296
- *
297
- * - Narrows the input type to `null` when `true`
298
- * - Useful for explicit null checks
299
- *
300
- * @example
301
- *
302
- * ```ts
303
- * const values: readonly (number | null)[] = [null, 5] as const;
304
- *
305
- * const nullValues = values.filter(isNull);
306
- *
307
- * assert.deepStrictEqual(nullValues, [null]);
308
- * ```
309
- *
310
- * @param u - The value to check
311
- * @returns `true` if `u` is `null`, `false` otherwise. When `true`, TypeScript
312
- * narrows the type to `null`.
313
- */
1
+ const isUndefined = (u) => u === void 0;
2
+ const isNotUndefined = (u) => u !== void 0;
3
+ const isBoolean = (u) => typeof u === "boolean";
4
+ const isNotBoolean = (u) => typeof u !== "boolean";
5
+ const isNumber = (u) => typeof u === "number";
6
+ const isNotNumber = (u) => typeof u !== "number";
7
+ const isBigint = (u) => typeof u === "bigint";
8
+ const isNotBigint = (u) => typeof u !== "bigint";
9
+ const isString = (u) => typeof u === "string";
10
+ const isNotString = (u) => typeof u !== "string";
11
+ const isSymbol = (u) => typeof u === "symbol";
12
+ const isNotSymbol = (u) => typeof u !== "symbol";
314
13
  const isNull = (u) => u === null;
315
- /**
316
- * Type guard that checks if a value is not `null`.
317
- *
318
- * **Type Narrowing Behavior:**
319
- *
320
- * - Excludes `null` from the input type when `true`
321
- * - Preserves all other types including `undefined`
322
- * - Commonly used to filter out null values
323
- *
324
- * @example
325
- *
326
- * ```ts
327
- * const values: readonly (number | null)[] = [null, 5] as const;
328
- *
329
- * const nonNullValues = values.filter(isNotNull);
330
- *
331
- * assert.deepStrictEqual(nonNullValues, [5]);
332
- * ```
333
- *
334
- * @template T - The type of the input value (which could be `null`)
335
- * @param u - The value to check
336
- * @returns `true` if `u` is not `null`, `false` otherwise. When `true`,
337
- * TypeScript excludes `null` from the type.
338
- */
339
14
  const isNotNull = (u) => u !== null;
340
- /**
341
- * Type guard that checks if a value is `null` or `undefined` (nullish).
342
- *
343
- * This function uses the loose equality operator (`==`) to check for both
344
- * `null` and `undefined` in a single comparison, which is the standard
345
- * JavaScript idiom for nullish checks.
346
- *
347
- * **Type Narrowing Behavior:**
348
- *
349
- * - Narrows the input type to `null | undefined` when `true`
350
- * - Useful for checking if a value is "nullish" (either null or undefined)
351
- *
352
- * @example
353
- *
354
- * ```ts
355
- * const values: readonly (string | null | undefined)[] = [
356
- * 'Ada',
357
- * null,
358
- * undefined,
359
- * ] as const;
360
- *
361
- * const nullishValues = values.filter(isNullish);
362
- *
363
- * assert.deepStrictEqual(nullishValues, [null, undefined]);
364
- * ```
365
- *
366
- * @param u - The value to check
367
- * @returns `true` if `u` is `null` or `undefined`, `false` otherwise. When
368
- * `true`, TypeScript narrows the type to `null | undefined`.
369
- */
370
15
  const isNullish = (u) => u == null;
371
- /**
372
- * Type guard that checks if a value is not `null` or `undefined` (non-nullish).
373
- *
374
- * This function uses the loose inequality operator (`!=`) to check that a value
375
- * is neither `null` nor `undefined` in a single comparison. This is equivalent
376
- * to TypeScript's `NonNullable<T>` utility type.
377
- *
378
- * **Type Narrowing Behavior:**
379
- *
380
- * - Excludes both `null` and `undefined` from the input type when `true`
381
- * - Equivalent to applying TypeScript's `NonNullable<T>` utility type
382
- * - Commonly used to filter out nullish values from arrays
383
- *
384
- * @example
385
- *
386
- * ```ts
387
- * const values: readonly (string | null | undefined)[] = [
388
- * 'Ada',
389
- * null,
390
- * undefined,
391
- * ] as const;
392
- *
393
- * const definedValues = values.filter(isNonNullish);
394
- *
395
- * assert.deepStrictEqual(definedValues, ['Ada']);
396
- * ```
397
- *
398
- * @template T - The type of the input value
399
- * @param u - The value to check
400
- * @returns `true` if `u` is not `null` and not `undefined`, `false` otherwise.
401
- * When `true`, TypeScript narrows the type to `NonNullable<T>`.
402
- */
403
16
  const isNonNullish = (u) => u != null;
404
17
 
405
18
  export { isBigint, isBoolean, isNonNullish, isNotBigint, isNotBoolean, isNotNull, isNotNumber, isNotString, isNotSymbol, isNotUndefined, isNull, isNullish, isNumber, isString, isSymbol, isUndefined };
@@ -1 +1 @@
1
- {"version":3,"file":"is-type.mjs","sources":["../../src/guard/is-type.mts"],"sourcesContent":[null],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;AAqBG;AACI,MAAM,WAAW,GAAG,CAAC,CAAU,KAAqB,CAAC,KAAK;AAEjE;;;;;;;;;;;;;;;;;;;;;;;AAuBG;AACI,MAAM,cAAc,GAAG,CAAK,CAAI,KACrC,CAAC,KAAK;AAER;;;;;;;;;;;;;;;;;;;;;AAqBG;AACI,MAAM,SAAS,GAAG,CAAC,CAAU,KAAmB,OAAO,CAAC,KAAK;AAEpE;;;;;;;;;;;;;;;;;;;;;;AAsBG;AACI,MAAM,YAAY,GAAG,CAAK,CAAI,KACnC,OAAO,CAAC,KAAK;AAEf;;;;;;;;;;;;;;;;;;;;;;AAsBG;AACI,MAAM,QAAQ,GAAG,CAAC,CAAU,KAAkB,OAAO,CAAC,KAAK;AAElE;;;;;;;;;;;;;;;;;;;;;;AAsBG;AACI,MAAM,WAAW,GAAG,CAAK,CAAI,KAClC,OAAO,CAAC,KAAK;AAEf;;;;;;;;;;;;;;;;;;;;;AAqBG;AACI,MAAM,QAAQ,GAAG,CAAC,CAAU,KAAkB,OAAO,CAAC,KAAK;AAElE;;;;;;;;;;;;;;;;;;;;;;AAsBG;AACI,MAAM,WAAW,GAAG,CAAK,CAAI,KAClC,OAAO,CAAC,KAAK;AAEf;;;;;;;;;;;;;;;;;;;;;;AAsBG;AACI,MAAM,QAAQ,GAAG,CAAC,CAAU,KAAkB,OAAO,CAAC,KAAK;AAElE;;;;;;;;;;;;;;;;;;;;;;AAsBG;AACI,MAAM,WAAW,GAAG,CAAK,CAAI,KAClC,OAAO,CAAC,KAAK;AAEf;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;AACI,MAAM,QAAQ,GAAG,CAAC,CAAU,KAAkB,OAAO,CAAC,KAAK;AAElE;;;;;;;;;;;;;;;;;;;;;;;;AAwBG;AACI,MAAM,WAAW,GAAG,CAAK,CAAI,KAClC,OAAO,CAAC,KAAK;AAEf;;;;;;;;;;;;;;;;;;;;;AAqBG;AACI,MAAM,MAAM,GAAG,CAAC,CAAU,KAAgB,CAAC,KAAK;AAEvD;;;;;;;;;;;;;;;;;;;;;;;AAuBG;AACI,MAAM,SAAS,GAAG,CAAK,CAAW,KAAa,CAAC,KAAK;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BG;AACI,MAAM,SAAS,GAAG,CAAC,CAAU,KAA4B,CAAC,IAAI;AAErE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BG;AACI,MAAM,YAAY,GAAG,CAAK,CAAI,KAA0B,CAAC,IAAI;;;;"}
1
+ {"version":3,"file":"is-type.mjs","sources":["../../src/guard/is-type.mts"],"sourcesContent":["import { type RelaxedExclude } from 'ts-type-forge';\n\n/**\n * Type guard that checks if a value is `undefined`.\n *\n * **Type Narrowing Behavior:**\n *\n * - Narrows the input type to `undefined` when `true`\n * - Useful for explicit undefined checks\n *\n * @example\n *\n * ```ts\n * const values: readonly (number | undefined)[] = [1, undefined, 2] as const;\n *\n * const undefinedValues = values.filter(isUndefined);\n *\n * assert.deepStrictEqual(undefinedValues, [undefined]);\n * ```\n *\n * @param u - The value to check\n * @returns `true` if `u` is `undefined`, `false` otherwise. When `true`,\n * TypeScript narrows the type to `undefined`.\n */\nexport const isUndefined = (u: unknown): u is undefined => u === undefined;\n\n/**\n * Type guard that checks if a value is not `undefined`.\n *\n * **Type Narrowing Behavior:**\n *\n * - Excludes `undefined` from the input type when `true`\n * - Preserves all other types in the union\n * - Commonly used to filter out undefined values\n *\n * @example\n *\n * ```ts\n * const values: readonly (number | undefined)[] = [1, undefined, 2] as const;\n *\n * const definedValues = values.filter(isNotUndefined);\n *\n * assert.deepStrictEqual(definedValues, [1, 2]);\n * ```\n *\n * @template T - The type of the input value\n * @param u - The value to check\n * @returns `true` if `u` is not `undefined`, `false` otherwise. When `true`,\n * TypeScript excludes `undefined` from the type.\n */\nexport const isNotUndefined = <T,>(u: T): u is RelaxedExclude<T, undefined> =>\n u !== undefined;\n\n/**\n * Type guard that checks if a value is a boolean.\n *\n * **Type Narrowing Behavior:**\n *\n * - Narrows `unknown` to `boolean` when `true`\n * - Preserves literal boolean types (`true | false`)\n *\n * @example\n *\n * ```ts\n * const flags: readonly unknown[] = [true, 'no', false] as const;\n *\n * const booleans = flags.filter(isBoolean);\n *\n * assert.deepStrictEqual(booleans, [true, false]);\n * ```\n *\n * @param u - The value to check\n * @returns `true` if `u` is a boolean, `false` otherwise. When `true`,\n * TypeScript narrows the type to `boolean`.\n */\nexport const isBoolean = (u: unknown): u is boolean => typeof u === 'boolean';\n\n/**\n * Type guard that checks if a value is not a boolean.\n *\n * **Type Narrowing Behavior:**\n *\n * - Excludes `boolean` from the input type when `true`\n * - Preserves all other types in the union\n *\n * @example\n *\n * ```ts\n * const flags: readonly unknown[] = [true, 'no', false] as const;\n *\n * const nonBooleans = flags.filter(isNotBoolean);\n *\n * assert.deepStrictEqual(nonBooleans, ['no']);\n * ```\n *\n * @template T - The type of the input value\n * @param u - The value to check\n * @returns `true` if `u` is not a boolean, `false` otherwise. When `true`,\n * TypeScript excludes `boolean` from the type.\n */\nexport const isNotBoolean = <T,>(u: T): u is RelaxedExclude<T, boolean> =>\n typeof u !== 'boolean';\n\n/**\n * Type guard that checks if a value is a number.\n *\n * **Type Narrowing Behavior:**\n *\n * - Narrows `unknown` to `number` when `true`\n * - Includes `NaN`, `Infinity`, and `-Infinity` as valid numbers\n * - Preserves literal number types when possible\n *\n * @example\n *\n * ```ts\n * const mixed: readonly unknown[] = [1, '2', 3] as const;\n *\n * const numbers = mixed.filter(isNumber);\n *\n * assert.deepStrictEqual(numbers, [1, 3]);\n * ```\n *\n * @param u - The value to check\n * @returns `true` if `u` is a number, `false` otherwise. When `true`,\n * TypeScript narrows the type to `number`.\n */\nexport const isNumber = (u: unknown): u is number => typeof u === 'number';\n\n/**\n * Type guard that checks if a value is not a number.\n *\n * **Type Narrowing Behavior:**\n *\n * - Excludes `number` from the input type when `true`\n * - Preserves all other types in the union\n *\n * @example\n *\n * ```ts\n * const mixed: readonly unknown[] = [1, '2', 3] as const;\n *\n * const nonNumbers = mixed.filter(isNotNumber);\n *\n * assert.deepStrictEqual(nonNumbers, ['2']);\n * ```\n *\n * @template T - The type of the input value\n * @param u - The value to check\n * @returns `true` if `u` is not a number, `false` otherwise. When `true`,\n * TypeScript excludes `number` from the type.\n */\nexport const isNotNumber = <T,>(u: T): u is RelaxedExclude<T, number> =>\n typeof u !== 'number';\n\n/**\n * Type guard that checks if a value is a bigint.\n *\n * **Type Narrowing Behavior:**\n *\n * - Narrows `unknown` to `bigint` when `true`\n * - Identifies values created with `BigInt()` constructor or `n` suffix\n *\n * @example\n *\n * ```ts\n * const values: readonly unknown[] = [1n, 2, 3n] as const;\n *\n * const bigints = values.filter(isBigint);\n *\n * assert.deepStrictEqual(bigints, [1n, 3n]);\n * ```\n *\n * @param u - The value to check\n * @returns `true` if `u` is a bigint, `false` otherwise. When `true`,\n * TypeScript narrows the type to `bigint`.\n */\nexport const isBigint = (u: unknown): u is bigint => typeof u === 'bigint';\n\n/**\n * Type guard that checks if a value is not a bigint.\n *\n * **Type Narrowing Behavior:**\n *\n * - Excludes `bigint` from the input type when `true`\n * - Preserves all other types in the union\n *\n * @example\n *\n * ```ts\n * const values: readonly unknown[] = [1n, 2, 3n] as const;\n *\n * const nonBigints = values.filter(isNotBigint);\n *\n * assert.deepStrictEqual(nonBigints, [2]);\n * ```\n *\n * @template T - The type of the input value\n * @param u - The value to check\n * @returns `true` if `u` is not a bigint, `false` otherwise. When `true`,\n * TypeScript excludes `bigint` from the type.\n */\nexport const isNotBigint = <T,>(u: T): u is RelaxedExclude<T, bigint> =>\n typeof u !== 'bigint';\n\n/**\n * Type guard that checks if a value is a string.\n *\n * **Type Narrowing Behavior:**\n *\n * - Narrows `unknown` to `string` when `true`\n * - Preserves literal string types when possible\n * - Includes empty strings\n *\n * @example\n *\n * ```ts\n * const values: readonly unknown[] = ['Ada', 42, 'Lovelace'] as const;\n *\n * const strings = values.filter(isString);\n *\n * assert.deepStrictEqual(strings, ['Ada', 'Lovelace']);\n * ```\n *\n * @param u - The value to check\n * @returns `true` if `u` is a string, `false` otherwise. When `true`,\n * TypeScript narrows the type to `string`.\n */\nexport const isString = (u: unknown): u is string => typeof u === 'string';\n\n/**\n * Type guard that checks if a value is not a string.\n *\n * **Type Narrowing Behavior:**\n *\n * - Excludes `string` from the input type when `true`\n * - Preserves all other types in the union\n *\n * @example\n *\n * ```ts\n * const values: readonly unknown[] = ['Ada', 42, 'Lovelace'] as const;\n *\n * const nonStrings = values.filter(isNotString);\n *\n * assert.deepStrictEqual(nonStrings, [42]);\n * ```\n *\n * @template T - The type of the input value\n * @param u - The value to check\n * @returns `true` if `u` is not a string, `false` otherwise. When `true`,\n * TypeScript excludes `string` from the type.\n */\nexport const isNotString = <T,>(u: T): u is RelaxedExclude<T, string> =>\n typeof u !== 'string';\n\n/**\n * Type guard that checks if a value is a symbol.\n *\n * **Type Narrowing Behavior:**\n *\n * - Narrows `unknown` to `symbol` when `true`\n * - Identifies values created with `Symbol()` constructor\n *\n * @example\n *\n * ```ts\n * const id = Symbol('id');\n *\n * const shared = Symbol.for('shared');\n *\n * const tokens: readonly unknown[] = [id, 'shared', shared] as const;\n *\n * const symbols = tokens.filter(isSymbol);\n *\n * assert.deepStrictEqual(symbols, [id, shared]);\n * ```\n *\n * @param u - The value to check\n * @returns `true` if `u` is a symbol, `false` otherwise. When `true`,\n * TypeScript narrows the type to `symbol`.\n */\nexport const isSymbol = (u: unknown): u is symbol => typeof u === 'symbol';\n\n/**\n * Type guard that checks if a value is not a symbol.\n *\n * **Type Narrowing Behavior:**\n *\n * - Excludes `symbol` from the input type when `true`\n * - Preserves all other types in the union\n *\n * @example\n *\n * ```ts\n * const id = Symbol('id');\n *\n * const tokens: readonly unknown[] = [id, 'shared'] as const;\n *\n * const nonSymbols = tokens.filter(isNotSymbol);\n *\n * assert.deepStrictEqual(nonSymbols, ['shared']);\n * ```\n *\n * @template T - The type of the input value\n * @param u - The value to check\n * @returns `true` if `u` is not a symbol, `false` otherwise. When `true`,\n * TypeScript excludes `symbol` from the type.\n */\nexport const isNotSymbol = <T,>(u: T): u is RelaxedExclude<T, symbol> =>\n typeof u !== 'symbol';\n\n/**\n * Type guard that checks if a value is `null`.\n *\n * **Type Narrowing Behavior:**\n *\n * - Narrows the input type to `null` when `true`\n * - Useful for explicit null checks\n *\n * @example\n *\n * ```ts\n * const values: readonly (number | null)[] = [null, 5] as const;\n *\n * const nullValues = values.filter(isNull);\n *\n * assert.deepStrictEqual(nullValues, [null]);\n * ```\n *\n * @param u - The value to check\n * @returns `true` if `u` is `null`, `false` otherwise. When `true`, TypeScript\n * narrows the type to `null`.\n */\nexport const isNull = (u: unknown): u is null => u === null;\n\n/**\n * Type guard that checks if a value is not `null`.\n *\n * **Type Narrowing Behavior:**\n *\n * - Excludes `null` from the input type when `true`\n * - Preserves all other types including `undefined`\n * - Commonly used to filter out null values\n *\n * @example\n *\n * ```ts\n * const values: readonly (number | null)[] = [null, 5] as const;\n *\n * const nonNullValues = values.filter(isNotNull);\n *\n * assert.deepStrictEqual(nonNullValues, [5]);\n * ```\n *\n * @template T - The type of the input value (which could be `null`)\n * @param u - The value to check\n * @returns `true` if `u` is not `null`, `false` otherwise. When `true`,\n * TypeScript excludes `null` from the type.\n */\nexport const isNotNull = <T,>(u: T | null): u is T => u !== null;\n\n/**\n * Type guard that checks if a value is `null` or `undefined` (nullish).\n *\n * This function uses the loose equality operator (`==`) to check for both\n * `null` and `undefined` in a single comparison, which is the standard\n * JavaScript idiom for nullish checks.\n *\n * **Type Narrowing Behavior:**\n *\n * - Narrows the input type to `null | undefined` when `true`\n * - Useful for checking if a value is \"nullish\" (either null or undefined)\n *\n * @example\n *\n * ```ts\n * const values: readonly (string | null | undefined)[] = [\n * 'Ada',\n * null,\n * undefined,\n * ] as const;\n *\n * const nullishValues = values.filter(isNullish);\n *\n * assert.deepStrictEqual(nullishValues, [null, undefined]);\n * ```\n *\n * @param u - The value to check\n * @returns `true` if `u` is `null` or `undefined`, `false` otherwise. When\n * `true`, TypeScript narrows the type to `null | undefined`.\n */\nexport const isNullish = (u: unknown): u is null | undefined => u == null;\n\n/**\n * Type guard that checks if a value is not `null` or `undefined` (non-nullish).\n *\n * This function uses the loose inequality operator (`!=`) to check that a value\n * is neither `null` nor `undefined` in a single comparison. This is equivalent\n * to TypeScript's `NonNullable<T>` utility type.\n *\n * **Type Narrowing Behavior:**\n *\n * - Excludes both `null` and `undefined` from the input type when `true`\n * - Equivalent to applying TypeScript's `NonNullable<T>` utility type\n * - Commonly used to filter out nullish values from arrays\n *\n * @example\n *\n * ```ts\n * const values: readonly (string | null | undefined)[] = [\n * 'Ada',\n * null,\n * undefined,\n * ] as const;\n *\n * const definedValues = values.filter(isNonNullish);\n *\n * assert.deepStrictEqual(definedValues, ['Ada']);\n * ```\n *\n * @template T - The type of the input value\n * @param u - The value to check\n * @returns `true` if `u` is not `null` and not `undefined`, `false` otherwise.\n * When `true`, TypeScript narrows the type to `NonNullable<T>`.\n */\nexport const isNonNullish = <T,>(u: T): u is NonNullable<T> => u != null;\n"],"names":[],"mappings":"AAwBO,MAAM,WAAA,GAAc,CAAC,CAAA,KAA+B,CAAA,KAAM;AA0B1D,MAAM,cAAA,GAAiB,CAAK,CAAA,KACjC,CAAA,KAAM;AAwBD,MAAM,SAAA,GAAY,CAAC,CAAA,KAA6B,OAAO,CAAA,KAAM;AAyB7D,MAAM,YAAA,GAAe,CAAK,CAAA,KAC/B,OAAO,CAAA,KAAM;AAyBR,MAAM,QAAA,GAAW,CAAC,CAAA,KAA4B,OAAO,CAAA,KAAM;AAyB3D,MAAM,WAAA,GAAc,CAAK,CAAA,KAC9B,OAAO,CAAA,KAAM;AAwBR,MAAM,QAAA,GAAW,CAAC,CAAA,KAA4B,OAAO,CAAA,KAAM;AAyB3D,MAAM,WAAA,GAAc,CAAK,CAAA,KAC9B,OAAO,CAAA,KAAM;AAyBR,MAAM,QAAA,GAAW,CAAC,CAAA,KAA4B,OAAO,CAAA,KAAM;AAyB3D,MAAM,WAAA,GAAc,CAAK,CAAA,KAC9B,OAAO,CAAA,KAAM;AA4BR,MAAM,QAAA,GAAW,CAAC,CAAA,KAA4B,OAAO,CAAA,KAAM;AA2B3D,MAAM,WAAA,GAAc,CAAK,CAAA,KAC9B,OAAO,CAAA,KAAM;AAwBR,MAAM,MAAA,GAAS,CAAC,CAAA,KAA0B,CAAA,KAAM;AA0BhD,MAAM,SAAA,GAAY,CAAK,CAAA,KAAwB,CAAA,KAAM;AAgCrD,MAAM,SAAA,GAAY,CAAC,CAAA,KAAsC,CAAA,IAAK;AAkC9D,MAAM,YAAA,GAAe,CAAK,CAAA,KAA8B,CAAA,IAAK;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"key-is-in.d.mts","sourceRoot":"","sources":["../../src/guard/key-is-in.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,eAAO,MAAM,OAAO,GAClB,KAAK,CAAC,CAAC,SAAS,WAAW,EAC3B,KAAK,CAAC,CAAC,SAAS,aAAa,EAE7B,KAAK,CAAC,EACN,KAAK,CAAC,KACL,GAAG,IAAI,CAAC,GAAG,MAAM,OAAO,GAA8B,CAAC"}
1
+ {"version":3,"file":"key-is-in.d.mts","sourceRoot":"","sources":["../../src/guard/key-is-in.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,eAAO,MAAM,OAAO,GAClB,KAAK,CAAC,CAAC,SAAS,WAAW,EAC3B,KAAK,CAAC,CAAC,SAAS,aAAa,OAExB,CAAC,OACD,CAAC,KACL,GAAG,IAAI,CAAC,GAAG,MAAM,OAAO,GAA8B,CAAC"}
@@ -1,43 +1,3 @@
1
- /**
2
- * Type guard that checks if a key exists as an own property in an object.
3
- *
4
- * This function is similar to `hasKey()` but with reversed parameter order and
5
- * different type narrowing behavior. While `hasKey()` narrows the object type,
6
- * `keyIsIn()` narrows the key type to be a valid key of the given object.
7
- *
8
- * **Type Narrowing Behavior:**
9
- *
10
- * - Narrows the key type to be a key that exists in the object (`K & keyof R`)
11
- * - Useful when you have a dynamic key and want to ensure it's valid for a
12
- * specific object
13
- * - The object type remains unchanged
14
- *
15
- * **Implementation:** Uses `Object.hasOwn()` to check for own properties (not
16
- * inherited).
17
- *
18
- * @example
19
- *
20
- * ```ts
21
- * const user = { id: 1, name: 'Ada' } as const;
22
- *
23
- * const maybeKey: string = 'name';
24
- *
25
- * if (keyIsIn(maybeKey, user)) {
26
- * assert.isTrue(user[maybeKey] === 'Ada');
27
- * } else {
28
- * assert.fail();
29
- * }
30
- * ```
31
- *
32
- * @template K - The type of the key to check, must extend PropertyKey (string |
33
- * number | symbol)
34
- * @template R - The type of the record (object), must extend UnknownRecord
35
- * @param key - The key to check for
36
- * @param obj - The object to check within
37
- * @returns `true` if `key` is an own property of `obj`, `false` otherwise. When
38
- * `true`, TypeScript narrows the key type to be a valid key of the object.
39
- * @see {@link hasKey} - Similar function that narrows the object type instead of the key type
40
- */
41
1
  const keyIsIn = (key, obj) => Object.hasOwn(obj, key);
42
2
 
43
3
  export { keyIsIn };
@@ -1 +1 @@
1
- {"version":3,"file":"key-is-in.mjs","sources":["../../src/guard/key-is-in.mts"],"sourcesContent":[null],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCG;AACI,MAAM,OAAO,GAAG,CAIrB,GAAM,EACN,GAAM,KAC0B,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG;;;;"}
1
+ {"version":3,"file":"key-is-in.mjs","sources":["../../src/guard/key-is-in.mts"],"sourcesContent":["import { type UnknownRecord } from 'ts-type-forge';\n\n/**\n * Type guard that checks if a key exists as an own property in an object.\n *\n * This function is similar to `hasKey()` but with reversed parameter order and\n * different type narrowing behavior. While `hasKey()` narrows the object type,\n * `keyIsIn()` narrows the key type to be a valid key of the given object.\n *\n * **Type Narrowing Behavior:**\n *\n * - Narrows the key type to be a key that exists in the object (`K & keyof R`)\n * - Useful when you have a dynamic key and want to ensure it's valid for a\n * specific object\n * - The object type remains unchanged\n *\n * **Implementation:** Uses `Object.hasOwn()` to check for own properties (not\n * inherited).\n *\n * @example\n *\n * ```ts\n * const user = { id: 1, name: 'Ada' } as const;\n *\n * const maybeKey: string = 'name';\n *\n * if (keyIsIn(maybeKey, user)) {\n * assert.isTrue(user[maybeKey] === 'Ada');\n * } else {\n * assert.fail();\n * }\n * ```\n *\n * @template K - The type of the key to check, must extend PropertyKey (string |\n * number | symbol)\n * @template R - The type of the record (object), must extend UnknownRecord\n * @param key - The key to check for\n * @param obj - The object to check within\n * @returns `true` if `key` is an own property of `obj`, `false` otherwise. When\n * `true`, TypeScript narrows the key type to be a valid key of the object.\n * @see {@link hasKey} - Similar function that narrows the object type instead of the key type\n */\nexport const keyIsIn = <\n const K extends PropertyKey,\n const R extends UnknownRecord,\n>(\n key: K,\n obj: R,\n): key is K & keyof typeof obj => Object.hasOwn(obj, key);\n"],"names":[],"mappings":"AA0CO,MAAM,UAAU,CAIrB,GAAA,EACA,QACgC,MAAA,CAAO,MAAA,CAAO,KAAK,GAAG;;;;"}
package/dist/index.mjs CHANGED
@@ -5,7 +5,9 @@ export { ISet } from './collections/iset.mjs';
5
5
  export { createQueue } from './collections/queue.mjs';
6
6
  export { createStack } from './collections/stack.mjs';
7
7
  export { expectType } from './expect-type.mjs';
8
+ export { asBoundedLengthArray, asFixedLengthArray, asMaxLengthArray, asMinLengthArray } from './guard/as-length-bounded-array.mjs';
8
9
  export { hasKey } from './guard/has-key.mjs';
10
+ export { isBoundedLengthArray, isFixedLengthArray, isMaxLengthArray, isMinLengthArray } from './guard/is-length-bounded-array.mjs';
9
11
  export { isBoundedLengthString, isFixedLengthString, isMaxLengthString, isMinLengthString } from './guard/is-length-bounded-string.mjs';
10
12
  export { isNonEmptyString } from './guard/is-non-empty-string.mjs';
11
13
  export { isNonNullObject } from './guard/is-non-null-object.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -36,23 +36,23 @@ import '../number/num.mjs';
36
36
  import '../number/refined-number-utils.mjs';
37
37
 
38
38
  function* range(...args) {
39
- switch (args.length) {
40
- case 1: {
41
- const [end] = args;
42
- for (const i of range(0, end, 1)) {
43
- yield i;
44
- }
45
- break;
46
- }
47
- case 2:
48
- // falls through
49
- case 3: {
50
- const [start, end, step = 1] = args;
51
- for (let mut_i = asSafeInt(start); step > 0 ? mut_i < end : mut_i > end; mut_i = SafeInt.add(mut_i, asSafeInt(step))) {
52
- yield mut_i;
53
- }
54
- }
39
+ switch (args.length) {
40
+ case 1: {
41
+ const [end] = args;
42
+ for (const i of range(0, end, 1)) {
43
+ yield i;
44
+ }
45
+ break;
55
46
  }
47
+ case 2:
48
+ // falls through
49
+ case 3: {
50
+ const [start, end, step = 1] = args;
51
+ for (let mut_i = asSafeInt(start); step > 0 ? mut_i < end : mut_i > end; mut_i = SafeInt.add(mut_i, asSafeInt(step))) {
52
+ yield mut_i;
53
+ }
54
+ }
55
+ }
56
56
  }
57
57
 
58
58
  export { range };
@@ -1 +1 @@
1
- {"version":3,"file":"range.mjs","sources":["../../src/iterator/range.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAsFiB,KAAK,CACpB,GAAG,IAME,EAAA;AAEL,IAAA,QAAQ,IAAI,CAAC,MAAM;QACjB,KAAK,CAAC,EAAE;AACN,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI;AAElB,YAAA,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE;AAChC,gBAAA,MAAM,CAAC;YACT;YAEA;QACF;AAEA,QAAA,KAAK,CAAC;;QAGN,KAAK,CAAC,EAAE;YACN,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI;AAEnC,YAAA,KACE,IAAI,KAAK,GAAY,SAAS,CAAC,KAAK,CAAC,EACrC,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,EACpC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,EAC3C;AACA,gBAAA,MAAM,KAAK;YACb;QACF;;AAEJ;;;;"}
1
+ {"version":3,"file":"range.mjs","sources":["../../src/iterator/range.mts"],"sourcesContent":["import {\n type NonZeroSafeInt,\n type PositiveSafeInt,\n type SafeUint,\n type WithSmallInt,\n} from 'ts-type-forge';\nimport { SafeInt, asSafeInt } from '../number/index.mjs';\n\n/**\n * Generates a sequence of numbers within a specified range using a generator\n * function.\n *\n * This function creates a generator that yields numbers from `start`\n * (inclusive) to `end` (exclusive) with the specified `step`\n * increment/decrement. The function implements the JavaScript iterator\n * protocol, making it compatible with for-of loops, spread operator,\n * Array.from(), and other iterator consumers.\n *\n * The function has two overloaded signatures:\n *\n * 1. For non-negative ranges: accepts SafeUint parameters and optional positive\n * step\n * 2. For general ranges: accepts SafeInt parameters and optional non-zero step\n *\n * **Generator Behavior:**\n *\n * - Yields values lazily (computed on-demand)\n * - Returns `void` when iteration completes\n * - Does not accept sent values (next parameter is ignored)\n * - Automatically handles direction based on step sign and start/end relationship\n *\n * **Step Parameter Behavior:**\n *\n * - Positive step: iterates from start toward end (start < end expected)\n * - Negative step: iterates from start toward end (start > end expected)\n * - Zero step: not allowed (NonZeroSafeInt constraint)\n * - Default step: 1 (positive direction)\n *\n * **Edge Cases:**\n *\n * - When start equals end: yields no values (empty sequence)\n * - When step direction conflicts with start/end relationship: yields no values\n * - All parameters must be safe integers (within JavaScript's safe integer range)\n *\n * @example\n *\n * ```ts\n * const zeroToThree = Array.from(range(0, 3));\n *\n * const threeToZero = Array.from(range(3, 0, -1));\n *\n * const defaultEnd = Array.from(range(4));\n *\n * assert.deepStrictEqual(zeroToThree, [0, 1, 2]);\n *\n * assert.deepStrictEqual(threeToZero, [3, 2, 1]);\n *\n * assert.deepStrictEqual(defaultEnd, [0, 1, 2, 3]);\n * ```\n *\n * @template T - The specific SafeInt or SafeUint type being generated\n * @param start - The starting number of the sequence (inclusive). Must be a\n * safe integer.\n * @param end - The end number of the sequence (exclusive). Must be a safe\n * integer.\n * @param step - The increment or decrement value. Defaults to 1. Must be\n * non-zero safe integer.\n * @returns A Generator object that yields safe integers in the specified range.\n */\nexport function range(\n end: WithSmallInt<SafeUint, MaxInt>,\n): Generator<SafeUint, void, unknown>;\n\nexport function range(\n start: WithSmallInt<SafeUint, MaxInt>,\n end: WithSmallInt<SafeUint, MaxInt>,\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n step?: WithSmallInt<PositiveSafeInt, MaxInt>,\n): Generator<SafeUint, void, unknown>;\n\nexport function range(\n start: WithSmallInt<SafeInt, MaxInt>,\n end: WithSmallInt<SafeInt, MaxInt>,\n step?: WithSmallInt<NonZeroSafeInt, MaxInt>,\n): Generator<SafeInt, void, unknown>;\n\nexport function* range(\n ...args:\n | readonly [end: WithSmallInt<SafeInt, MaxInt>]\n | readonly [\n start: WithSmallInt<SafeInt, MaxInt>,\n end: WithSmallInt<SafeInt, MaxInt>,\n step?: WithSmallInt<NonZeroSafeInt, MaxInt>,\n ]\n): Generator<SafeInt, void, unknown> {\n switch (args.length) {\n case 1: {\n const [end] = args;\n\n for (const i of range(0, end, 1)) {\n yield i;\n }\n\n break;\n }\n\n case 2:\n\n // falls through\n case 3: {\n const [start, end, step = 1] = args;\n\n for (\n let mut_i: SafeInt = asSafeInt(start);\n step > 0 ? mut_i < end : mut_i > end;\n mut_i = SafeInt.add(mut_i, asSafeInt(step))\n ) {\n yield mut_i;\n }\n }\n }\n}\n\ntype MaxInt = 512;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsFO,UAAU,SACZ,IAAA,EAOgC;AACnC,EAAA,QAAQ,KAAK,MAAA;AAAQ,IACnB,KAAK,CAAA,EAAG;AACN,MAAA,MAAM,CAAC,GAAG,CAAA,GAAI,IAAA;AAEd,MAAA,KAAA,MAAW,CAAA,IAAK,KAAA,CAAM,CAAA,EAAG,GAAA,EAAK,CAAC,CAAA,EAAG;AAChC,QAAA,MAAM,CAAA;AAAA,MACR;AAEA,MAAA;AAAA,IACF;AAAA,IAEA,KAAK,CAAA;AAAA;AAAA,IAGL,KAAK,CAAA,EAAG;AACN,MAAA,MAAM,CAAC,KAAA,EAAO,GAAA,EAAK,IAAA,GAAO,CAAC,CAAA,GAAI,IAAA;AAE/B,MAAA,KAAA,IACM,QAAiB,SAAA,CAAU,KAAK,CAAA,EACpC,IAAA,GAAO,IAAI,KAAA,GAAQ,GAAA,GAAM,KAAA,GAAQ,GAAA,EACjC,QAAQ,OAAA,CAAQ,GAAA,CAAI,OAAO,SAAA,CAAU,IAAI,CAAC,CAAA,EAC1C;AACA,QAAA,MAAM,KAAA;AAAA,MACR;AAAA,IACF;AAAA;AAEJ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"json.d.mts","sourceRoot":"","sources":["../../src/json/json.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,aAAa,EACnB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAQ,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAIvD;;;;GAIG;AACH,yBAAiB,IAAI,CAAC;IACpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoDG;IACI,MAAM,KAAK,GAChB,MAAM,MAAM,EACZ,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,KAAK,OAAO,KAClE,MAAM,CAAC,SAAS,EAAE,MAAM,CAc1B,CAAC;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+DG;IACI,MAAM,SAAS,GACpB,OAAO,OAAO,EACd,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,KAAK,OAAO,EAChE,QAAQ,kBAAkB,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,KACzC,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,MAAM,CAQnC,CAAC;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgEG;IACI,MAAM,iBAAiB,GAC5B,OAAO,OAAO,EACd,yBAAyB,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EACrD,QAAQ,kBAAkB,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,KACzC,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,MAAM,CAUnC,CAAC;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4EG;IACI,MAAM,kBAAkB,GAC7B,OAAO,aAAa,EACpB,QAAQ,kBAAkB,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,KACzC,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,MAAM,CAMnC,CAAC;CACH"}
1
+ {"version":3,"file":"json.d.mts","sourceRoot":"","sources":["../../src/json/json.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,aAAa,EACnB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAQ,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAIvD;;;;GAIG;AACH,yBAAiB,IAAI,CAAC;IACpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoDG;IACI,MAAM,KAAK,SACV,MAAM,YACF,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,KAAK,OAAO,KAClE,MAAM,CAAC,SAAS,EAAE,MAAM,CAc1B,CAAC;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+DG;IACI,MAAM,SAAS,UACb,OAAO,aACH,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,KAAK,OAAO,UACxD,kBAAkB,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,KACzC,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,MAAM,CAQnC,CAAC;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgEG;IACI,MAAM,iBAAiB,UACrB,OAAO,2BACW,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,UAC7C,kBAAkB,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,KACzC,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,MAAM,CAUnC,CAAC;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4EG;IACI,MAAM,kBAAkB,UACtB,aAAa,UACZ,kBAAkB,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,KACzC,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,MAAM,CAMnC,CAAC;CACH"}