ts-data-forge 14.6.0 → 14.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (409) hide show
  1. package/dist/array/impl/array-utils-creation.mjs +126 -26
  2. package/dist/array/impl/array-utils-creation.mjs.map +1 -1
  3. package/dist/array/impl/array-utils-element-access.mjs +63 -30
  4. package/dist/array/impl/array-utils-element-access.mjs.map +1 -1
  5. package/dist/array/impl/array-utils-iterators.mjs +69 -53
  6. package/dist/array/impl/array-utils-iterators.mjs.map +1 -1
  7. package/dist/array/impl/array-utils-length-bounded-array-cast.mjs +109 -73
  8. package/dist/array/impl/array-utils-length-bounded-array-cast.mjs.map +1 -1
  9. package/dist/array/impl/array-utils-length-bounded-array-guard.mjs +71 -33
  10. package/dist/array/impl/array-utils-length-bounded-array-guard.mjs.map +1 -1
  11. package/dist/array/impl/array-utils-length-bounded-tuple-cast.mjs +102 -73
  12. package/dist/array/impl/array-utils-length-bounded-tuple-cast.mjs.map +1 -1
  13. package/dist/array/impl/array-utils-length-bounded-tuple-guard.mjs +77 -33
  14. package/dist/array/impl/array-utils-length-bounded-tuple-guard.mjs.map +1 -1
  15. package/dist/array/impl/array-utils-modification.mjs +75 -122
  16. package/dist/array/impl/array-utils-modification.mjs.map +1 -1
  17. package/dist/array/impl/array-utils-reducing-value.mjs +100 -150
  18. package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -1
  19. package/dist/array/impl/array-utils-search.mjs +110 -134
  20. package/dist/array/impl/array-utils-search.mjs.map +1 -1
  21. package/dist/array/impl/array-utils-set-op.mjs +146 -38
  22. package/dist/array/impl/array-utils-set-op.mjs.map +1 -1
  23. package/dist/array/impl/array-utils-size.mjs +10 -8
  24. package/dist/array/impl/array-utils-size.mjs.map +1 -1
  25. package/dist/array/impl/array-utils-slice-clamped.mjs +13 -50
  26. package/dist/array/impl/array-utils-slice-clamped.mjs.map +1 -1
  27. package/dist/array/impl/array-utils-slicing.mjs +94 -78
  28. package/dist/array/impl/array-utils-slicing.mjs.map +1 -1
  29. package/dist/array/impl/array-utils-transformation.mjs +291 -199
  30. package/dist/array/impl/array-utils-transformation.mjs.map +1 -1
  31. package/dist/array/impl/array-utils-validation.mjs +54 -56
  32. package/dist/array/impl/array-utils-validation.mjs.map +1 -1
  33. package/dist/array/impl/index.mjs +17 -17
  34. package/dist/array/impl/index.mjs.map +1 -1
  35. package/dist/array/index.mjs +2 -3
  36. package/dist/array/index.mjs.map +1 -1
  37. package/dist/collections/imap-mapped.mjs +335 -291
  38. package/dist/collections/imap-mapped.mjs.map +1 -1
  39. package/dist/collections/imap.mjs +280 -239
  40. package/dist/collections/imap.mjs.map +1 -1
  41. package/dist/collections/index.mjs +7 -7
  42. package/dist/collections/index.mjs.map +1 -1
  43. package/dist/collections/iset-mapped.d.mts.map +1 -1
  44. package/dist/collections/iset-mapped.mjs +448 -263
  45. package/dist/collections/iset-mapped.mjs.map +1 -1
  46. package/dist/collections/iset.mjs +328 -201
  47. package/dist/collections/iset.mjs.map +1 -1
  48. package/dist/collections/queue.mjs +183 -151
  49. package/dist/collections/queue.mjs.map +1 -1
  50. package/dist/collections/stack.mjs +169 -140
  51. package/dist/collections/stack.mjs.map +1 -1
  52. package/dist/entry-point.mjs +4 -77
  53. package/dist/entry-point.mjs.map +1 -1
  54. package/dist/expect-type.mjs +70 -4
  55. package/dist/expect-type.mjs.map +1 -1
  56. package/dist/functional/async-result/async-result.mjs +2 -3
  57. package/dist/functional/async-result/async-result.mjs.map +1 -1
  58. package/dist/functional/async-result/impl/async-result-flat-map.mjs +19 -21
  59. package/dist/functional/async-result/impl/async-result-flat-map.mjs.map +1 -1
  60. package/dist/functional/async-result/impl/async-result-from-promise.mjs +9 -10
  61. package/dist/functional/async-result/impl/async-result-from-promise.mjs.map +1 -1
  62. package/dist/functional/async-result/impl/async-result-from-throwable.mjs +12 -14
  63. package/dist/functional/async-result/impl/async-result-from-throwable.mjs.map +1 -1
  64. package/dist/functional/async-result/impl/async-result-map-err.mjs +16 -19
  65. package/dist/functional/async-result/impl/async-result-map-err.mjs.map +1 -1
  66. package/dist/functional/async-result/impl/async-result-map.mjs +16 -19
  67. package/dist/functional/async-result/impl/async-result-map.mjs.map +1 -1
  68. package/dist/functional/async-result/impl/async-result-unwrap-or.mjs +36 -9
  69. package/dist/functional/async-result/impl/async-result-unwrap-or.mjs.map +1 -1
  70. package/dist/functional/async-result/impl/index.mjs +8 -7
  71. package/dist/functional/async-result/impl/index.mjs.map +1 -1
  72. package/dist/functional/async-result/impl/types.mjs +2 -2
  73. package/dist/functional/async-result/impl/types.mjs.map +1 -1
  74. package/dist/functional/async-result/index.mjs +2 -3
  75. package/dist/functional/async-result/index.mjs.map +1 -1
  76. package/dist/functional/index.mjs +7 -11
  77. package/dist/functional/index.mjs.map +1 -1
  78. package/dist/functional/match.mjs +27 -13
  79. package/dist/functional/match.mjs.map +1 -1
  80. package/dist/functional/optional/impl/index.mjs +19 -18
  81. package/dist/functional/optional/impl/index.mjs.map +1 -1
  82. package/dist/functional/optional/impl/optional-expect-to-be.mjs +16 -18
  83. package/dist/functional/optional/impl/optional-expect-to-be.mjs.map +1 -1
  84. package/dist/functional/optional/impl/optional-filter.mjs +17 -19
  85. package/dist/functional/optional/impl/optional-filter.mjs.map +1 -1
  86. package/dist/functional/optional/impl/optional-flat-map.mjs +13 -15
  87. package/dist/functional/optional/impl/optional-flat-map.mjs.map +1 -1
  88. package/dist/functional/optional/impl/optional-from-nullable.mjs +26 -5
  89. package/dist/functional/optional/impl/optional-from-nullable.mjs.map +1 -1
  90. package/dist/functional/optional/impl/optional-is-none.mjs +21 -5
  91. package/dist/functional/optional/impl/optional-is-none.mjs.map +1 -1
  92. package/dist/functional/optional/impl/optional-is-optional.mjs +26 -8
  93. package/dist/functional/optional/impl/optional-is-optional.mjs.map +1 -1
  94. package/dist/functional/optional/impl/optional-is-some.mjs +22 -5
  95. package/dist/functional/optional/impl/optional-is-some.mjs.map +1 -1
  96. package/dist/functional/optional/impl/optional-map.mjs +16 -18
  97. package/dist/functional/optional/impl/optional-map.mjs.map +1 -1
  98. package/dist/functional/optional/impl/optional-match.mjs +16 -18
  99. package/dist/functional/optional/impl/optional-match.mjs.map +1 -1
  100. package/dist/functional/optional/impl/optional-none.mjs +18 -5
  101. package/dist/functional/optional/impl/optional-none.mjs.map +1 -1
  102. package/dist/functional/optional/impl/optional-or-else.mjs +13 -15
  103. package/dist/functional/optional/impl/optional-or-else.mjs.map +1 -1
  104. package/dist/functional/optional/impl/optional-some.mjs +23 -7
  105. package/dist/functional/optional/impl/optional-some.mjs.map +1 -1
  106. package/dist/functional/optional/impl/optional-to-nullable.mjs +28 -5
  107. package/dist/functional/optional/impl/optional-to-nullable.mjs.map +1 -1
  108. package/dist/functional/optional/impl/optional-unwrap-or.mjs +12 -14
  109. package/dist/functional/optional/impl/optional-unwrap-or.mjs.map +1 -1
  110. package/dist/functional/optional/impl/optional-unwrap-throw.mjs +34 -9
  111. package/dist/functional/optional/impl/optional-unwrap-throw.mjs.map +1 -1
  112. package/dist/functional/optional/impl/optional-unwrap.mjs +6 -9
  113. package/dist/functional/optional/impl/optional-unwrap.mjs.map +1 -1
  114. package/dist/functional/optional/impl/optional-zip.mjs +36 -5
  115. package/dist/functional/optional/impl/optional-zip.mjs.map +1 -1
  116. package/dist/functional/optional/impl/tag.mjs +4 -5
  117. package/dist/functional/optional/impl/tag.mjs.map +1 -1
  118. package/dist/functional/optional/impl/types.mjs +2 -2
  119. package/dist/functional/optional/impl/types.mjs.map +1 -1
  120. package/dist/functional/optional/index.mjs +2 -3
  121. package/dist/functional/optional/index.mjs.map +1 -1
  122. package/dist/functional/optional/optional.mjs +2 -3
  123. package/dist/functional/optional/optional.mjs.map +1 -1
  124. package/dist/functional/pipe.mjs +42 -14
  125. package/dist/functional/pipe.mjs.map +1 -1
  126. package/dist/functional/result/impl/index.mjs +28 -27
  127. package/dist/functional/result/impl/index.mjs.map +1 -1
  128. package/dist/functional/result/impl/result-err.mjs +29 -7
  129. package/dist/functional/result/impl/result-err.mjs.map +1 -1
  130. package/dist/functional/result/impl/result-expect-to-be.mjs +17 -18
  131. package/dist/functional/result/impl/result-expect-to-be.mjs.map +1 -1
  132. package/dist/functional/result/impl/result-flat-map.mjs +18 -21
  133. package/dist/functional/result/impl/result-flat-map.mjs.map +1 -1
  134. package/dist/functional/result/impl/result-fold.mjs +18 -21
  135. package/dist/functional/result/impl/result-fold.mjs.map +1 -1
  136. package/dist/functional/result/impl/result-from-optional.mjs +17 -20
  137. package/dist/functional/result/impl/result-from-optional.mjs.map +1 -1
  138. package/dist/functional/result/impl/result-from-promise.mjs +37 -8
  139. package/dist/functional/result/impl/result-from-promise.mjs.map +1 -1
  140. package/dist/functional/result/impl/result-from-throwable.mjs +41 -14
  141. package/dist/functional/result/impl/result-from-throwable.mjs.map +1 -1
  142. package/dist/functional/result/impl/result-is-err.mjs +21 -5
  143. package/dist/functional/result/impl/result-is-err.mjs.map +1 -1
  144. package/dist/functional/result/impl/result-is-ok.mjs +21 -5
  145. package/dist/functional/result/impl/result-is-ok.mjs.map +1 -1
  146. package/dist/functional/result/impl/result-is-result.mjs +25 -7
  147. package/dist/functional/result/impl/result-is-result.mjs.map +1 -1
  148. package/dist/functional/result/impl/result-map-err.mjs +18 -21
  149. package/dist/functional/result/impl/result-map-err.mjs.map +1 -1
  150. package/dist/functional/result/impl/result-map.mjs +18 -21
  151. package/dist/functional/result/impl/result-map.mjs.map +1 -1
  152. package/dist/functional/result/impl/result-match.mjs +17 -21
  153. package/dist/functional/result/impl/result-match.mjs.map +1 -1
  154. package/dist/functional/result/impl/result-ok.mjs +29 -7
  155. package/dist/functional/result/impl/result-ok.mjs.map +1 -1
  156. package/dist/functional/result/impl/result-or-else.mjs +14 -15
  157. package/dist/functional/result/impl/result-or-else.mjs.map +1 -1
  158. package/dist/functional/result/impl/result-safe-try.mjs +32 -21
  159. package/dist/functional/result/impl/result-safe-try.mjs.map +1 -1
  160. package/dist/functional/result/impl/result-safe-unwrap.mjs +40 -12
  161. package/dist/functional/result/impl/result-safe-unwrap.mjs.map +1 -1
  162. package/dist/functional/result/impl/result-swap.mjs +23 -8
  163. package/dist/functional/result/impl/result-swap.mjs.map +1 -1
  164. package/dist/functional/result/impl/result-to-optional.mjs +30 -7
  165. package/dist/functional/result/impl/result-to-optional.mjs.map +1 -1
  166. package/dist/functional/result/impl/result-unwrap-err-or.mjs +13 -14
  167. package/dist/functional/result/impl/result-unwrap-err-or.mjs.map +1 -1
  168. package/dist/functional/result/impl/result-unwrap-err-throw.mjs +43 -20
  169. package/dist/functional/result/impl/result-unwrap-err-throw.mjs.map +1 -1
  170. package/dist/functional/result/impl/result-unwrap-err.mjs +33 -8
  171. package/dist/functional/result/impl/result-unwrap-err.mjs.map +1 -1
  172. package/dist/functional/result/impl/result-unwrap-ok-or.mjs +13 -14
  173. package/dist/functional/result/impl/result-unwrap-ok-or.mjs.map +1 -1
  174. package/dist/functional/result/impl/result-unwrap-ok.mjs +6 -9
  175. package/dist/functional/result/impl/result-unwrap-ok.mjs.map +1 -1
  176. package/dist/functional/result/impl/result-unwrap-throw.mjs +38 -11
  177. package/dist/functional/result/impl/result-unwrap-throw.mjs.map +1 -1
  178. package/dist/functional/result/impl/result-zip.mjs +35 -5
  179. package/dist/functional/result/impl/result-zip.mjs.map +1 -1
  180. package/dist/functional/result/impl/tag.mjs +4 -5
  181. package/dist/functional/result/impl/tag.mjs.map +1 -1
  182. package/dist/functional/result/impl/types.mjs +2 -2
  183. package/dist/functional/result/impl/types.mjs.map +1 -1
  184. package/dist/functional/result/index.mjs +2 -3
  185. package/dist/functional/result/index.mjs.map +1 -1
  186. package/dist/functional/result/result.mjs +2 -3
  187. package/dist/functional/result/result.mjs.map +1 -1
  188. package/dist/functional/ternary-result/impl/index.mjs +29 -28
  189. package/dist/functional/ternary-result/impl/index.mjs.map +1 -1
  190. package/dist/functional/ternary-result/impl/tag.mjs +6 -6
  191. package/dist/functional/ternary-result/impl/tag.mjs.map +1 -1
  192. package/dist/functional/ternary-result/impl/ternary-result-err.mjs +17 -7
  193. package/dist/functional/ternary-result/impl/ternary-result-err.mjs.map +1 -1
  194. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.mjs +15 -18
  195. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.mjs.map +1 -1
  196. package/dist/functional/ternary-result/impl/ternary-result-flat-map.mjs +28 -32
  197. package/dist/functional/ternary-result/impl/ternary-result-flat-map.mjs.map +1 -1
  198. package/dist/functional/ternary-result/impl/ternary-result-fold.mjs +24 -26
  199. package/dist/functional/ternary-result/impl/ternary-result-fold.mjs.map +1 -1
  200. package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs +21 -8
  201. package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs.map +1 -1
  202. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs +28 -13
  203. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs.map +1 -1
  204. package/dist/functional/ternary-result/impl/ternary-result-is-err.mjs +19 -5
  205. package/dist/functional/ternary-result/impl/ternary-result-is-err.mjs.map +1 -1
  206. package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs +21 -5
  207. package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs.map +1 -1
  208. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs +28 -8
  209. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs.map +1 -1
  210. package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs +20 -5
  211. package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs.map +1 -1
  212. package/dist/functional/ternary-result/impl/ternary-result-map-err.mjs +17 -18
  213. package/dist/functional/ternary-result/impl/ternary-result-map-err.mjs.map +1 -1
  214. package/dist/functional/ternary-result/impl/ternary-result-map-warn.mjs +20 -23
  215. package/dist/functional/ternary-result/impl/ternary-result-map-warn.mjs.map +1 -1
  216. package/dist/functional/ternary-result/impl/ternary-result-map.mjs +24 -26
  217. package/dist/functional/ternary-result/impl/ternary-result-map.mjs.map +1 -1
  218. package/dist/functional/ternary-result/impl/ternary-result-ok.mjs +18 -7
  219. package/dist/functional/ternary-result/impl/ternary-result-ok.mjs.map +1 -1
  220. package/dist/functional/ternary-result/impl/ternary-result-or-else.mjs +11 -14
  221. package/dist/functional/ternary-result/impl/ternary-result-or-else.mjs.map +1 -1
  222. package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs +24 -10
  223. package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs.map +1 -1
  224. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.mjs +11 -14
  225. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.mjs.map +1 -1
  226. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs +30 -19
  227. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs.map +1 -1
  228. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs +20 -8
  229. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs.map +1 -1
  230. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mjs +11 -14
  231. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mjs.map +1 -1
  232. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.mjs +7 -9
  233. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.mjs.map +1 -1
  234. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs +30 -22
  235. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs.map +1 -1
  236. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mjs +11 -14
  237. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mjs.map +1 -1
  238. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs +27 -17
  239. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs.map +1 -1
  240. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs +20 -8
  241. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs.map +1 -1
  242. package/dist/functional/ternary-result/impl/ternary-result-warn.mjs +21 -8
  243. package/dist/functional/ternary-result/impl/ternary-result-warn.mjs.map +1 -1
  244. package/dist/functional/ternary-result/impl/ternary-result-zip.mjs +47 -19
  245. package/dist/functional/ternary-result/impl/ternary-result-zip.mjs.map +1 -1
  246. package/dist/functional/ternary-result/impl/types.mjs +2 -2
  247. package/dist/functional/ternary-result/impl/types.mjs.map +1 -1
  248. package/dist/functional/ternary-result/impl/variant-name.mjs +12 -14
  249. package/dist/functional/ternary-result/impl/variant-name.mjs.map +1 -1
  250. package/dist/functional/ternary-result/index.mjs +2 -3
  251. package/dist/functional/ternary-result/index.mjs.map +1 -1
  252. package/dist/functional/ternary-result/ternary-result.mjs +2 -3
  253. package/dist/functional/ternary-result/ternary-result.mjs.map +1 -1
  254. package/dist/guard/has-key.mjs +43 -4
  255. package/dist/guard/has-key.mjs.map +1 -1
  256. package/dist/guard/index.mjs +8 -8
  257. package/dist/guard/index.mjs.map +1 -1
  258. package/dist/guard/is-non-empty-string.mjs +39 -4
  259. package/dist/guard/is-non-empty-string.mjs.map +1 -1
  260. package/dist/guard/is-non-null-object.mjs +36 -4
  261. package/dist/guard/is-non-null-object.mjs.map +1 -1
  262. package/dist/guard/is-primitive.mjs +46 -15
  263. package/dist/guard/is-primitive.mjs.map +1 -1
  264. package/dist/guard/is-record.mjs +89 -6
  265. package/dist/guard/is-record.mjs.map +1 -1
  266. package/dist/guard/is-type.mjs +404 -19
  267. package/dist/guard/is-type.mjs.map +1 -1
  268. package/dist/guard/key-is-in.mjs +42 -4
  269. package/dist/guard/key-is-in.mjs.map +1 -1
  270. package/dist/index.mjs +12 -65
  271. package/dist/index.mjs.map +1 -1
  272. package/dist/iterator/index.mjs +2 -2
  273. package/dist/iterator/index.mjs.map +1 -1
  274. package/dist/iterator/range.mjs +19 -57
  275. package/dist/iterator/range.mjs.map +1 -1
  276. package/dist/json/index.mjs +2 -2
  277. package/dist/json/index.mjs.map +1 -1
  278. package/dist/json/json.mjs +346 -105
  279. package/dist/json/json.mjs.map +1 -1
  280. package/dist/number/branded-types/finite-number.mjs +148 -137
  281. package/dist/number/branded-types/finite-number.mjs.map +1 -1
  282. package/dist/number/branded-types/index.mjs +33 -33
  283. package/dist/number/branded-types/index.mjs.map +1 -1
  284. package/dist/number/branded-types/int.mjs +245 -209
  285. package/dist/number/branded-types/int.mjs.map +1 -1
  286. package/dist/number/branded-types/int16.mjs +141 -131
  287. package/dist/number/branded-types/int16.mjs.map +1 -1
  288. package/dist/number/branded-types/int32.mjs +141 -131
  289. package/dist/number/branded-types/int32.mjs.map +1 -1
  290. package/dist/number/branded-types/negative-finite-number.mjs +155 -149
  291. package/dist/number/branded-types/negative-finite-number.mjs.map +1 -1
  292. package/dist/number/branded-types/negative-int.mjs +125 -110
  293. package/dist/number/branded-types/negative-int.mjs.map +1 -1
  294. package/dist/number/branded-types/negative-safe-int.mjs +126 -115
  295. package/dist/number/branded-types/negative-safe-int.mjs.map +1 -1
  296. package/dist/number/branded-types/non-negative-finite-number.mjs +164 -154
  297. package/dist/number/branded-types/non-negative-finite-number.mjs.map +1 -1
  298. package/dist/number/branded-types/non-negative-int16.mjs +137 -125
  299. package/dist/number/branded-types/non-negative-int16.mjs.map +1 -1
  300. package/dist/number/branded-types/non-negative-int32.mjs +137 -125
  301. package/dist/number/branded-types/non-negative-int32.mjs.map +1 -1
  302. package/dist/number/branded-types/non-positive-finite-number.mjs +143 -139
  303. package/dist/number/branded-types/non-positive-finite-number.mjs.map +1 -1
  304. package/dist/number/branded-types/non-positive-int.mjs +116 -99
  305. package/dist/number/branded-types/non-positive-int.mjs.map +1 -1
  306. package/dist/number/branded-types/non-positive-safe-int.mjs +118 -107
  307. package/dist/number/branded-types/non-positive-safe-int.mjs.map +1 -1
  308. package/dist/number/branded-types/non-zero-finite-number.mjs +144 -129
  309. package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -1
  310. package/dist/number/branded-types/non-zero-int.mjs +102 -82
  311. package/dist/number/branded-types/non-zero-int.mjs.map +1 -1
  312. package/dist/number/branded-types/non-zero-int16.mjs +118 -105
  313. package/dist/number/branded-types/non-zero-int16.mjs.map +1 -1
  314. package/dist/number/branded-types/non-zero-int32.mjs +118 -105
  315. package/dist/number/branded-types/non-zero-int32.mjs.map +1 -1
  316. package/dist/number/branded-types/non-zero-safe-int.mjs +122 -108
  317. package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -1
  318. package/dist/number/branded-types/non-zero-uint16.mjs +118 -104
  319. package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -1
  320. package/dist/number/branded-types/non-zero-uint32.mjs +118 -104
  321. package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -1
  322. package/dist/number/branded-types/positive-finite-number.mjs +167 -160
  323. package/dist/number/branded-types/positive-finite-number.mjs.map +1 -1
  324. package/dist/number/branded-types/positive-int.mjs +260 -224
  325. package/dist/number/branded-types/positive-int.mjs.map +1 -1
  326. package/dist/number/branded-types/positive-int16.mjs +134 -122
  327. package/dist/number/branded-types/positive-int16.mjs.map +1 -1
  328. package/dist/number/branded-types/positive-int32.mjs +134 -122
  329. package/dist/number/branded-types/positive-int32.mjs.map +1 -1
  330. package/dist/number/branded-types/positive-safe-int.mjs +292 -258
  331. package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
  332. package/dist/number/branded-types/positive-uint16.mjs +134 -122
  333. package/dist/number/branded-types/positive-uint16.mjs.map +1 -1
  334. package/dist/number/branded-types/positive-uint32.mjs +134 -122
  335. package/dist/number/branded-types/positive-uint32.mjs.map +1 -1
  336. package/dist/number/branded-types/safe-int.mjs +284 -255
  337. package/dist/number/branded-types/safe-int.mjs.map +1 -1
  338. package/dist/number/branded-types/safe-uint.mjs +135 -124
  339. package/dist/number/branded-types/safe-uint.mjs.map +1 -1
  340. package/dist/number/branded-types/uint.mjs +248 -211
  341. package/dist/number/branded-types/uint.mjs.map +1 -1
  342. package/dist/number/branded-types/uint16.mjs +132 -121
  343. package/dist/number/branded-types/uint16.mjs.map +1 -1
  344. package/dist/number/branded-types/uint32.mjs +132 -121
  345. package/dist/number/branded-types/uint32.mjs.map +1 -1
  346. package/dist/number/enum/index.mjs +3 -3
  347. package/dist/number/enum/index.mjs.map +1 -1
  348. package/dist/number/enum/int8.mjs +146 -131
  349. package/dist/number/enum/int8.mjs.map +1 -1
  350. package/dist/number/enum/uint8.mjs +133 -119
  351. package/dist/number/enum/uint8.mjs.map +1 -1
  352. package/dist/number/index.mjs +6 -37
  353. package/dist/number/index.mjs.map +1 -1
  354. package/dist/number/num-arithmetic-types.mjs +42 -1
  355. package/dist/number/num-arithmetic-types.mjs.map +1 -1
  356. package/dist/number/num.mjs +541 -83
  357. package/dist/number/num.mjs.map +1 -1
  358. package/dist/number/refined-number-utils.mjs +294 -133
  359. package/dist/number/refined-number-utils.mjs.map +1 -1
  360. package/dist/object/index.mjs +2 -2
  361. package/dist/object/index.mjs.map +1 -1
  362. package/dist/object/object.mjs +355 -202
  363. package/dist/object/object.mjs.map +1 -1
  364. package/dist/others/cast-mutable.mjs +38 -11
  365. package/dist/others/cast-mutable.mjs.map +1 -1
  366. package/dist/others/cast-readonly.mjs +37 -11
  367. package/dist/others/cast-readonly.mjs.map +1 -1
  368. package/dist/others/debounce-function.mjs +22 -11
  369. package/dist/others/debounce-function.mjs.map +1 -1
  370. package/dist/others/fast-deep-equal.mjs +70 -51
  371. package/dist/others/fast-deep-equal.mjs.map +1 -1
  372. package/dist/others/if-then.mjs +32 -5
  373. package/dist/others/if-then.mjs.map +1 -1
  374. package/dist/others/index.mjs +10 -10
  375. package/dist/others/index.mjs.map +1 -1
  376. package/dist/others/map-nullable.mjs +11 -13
  377. package/dist/others/map-nullable.mjs.map +1 -1
  378. package/dist/others/memoize-function.mjs +14 -16
  379. package/dist/others/memoize-function.mjs.map +1 -1
  380. package/dist/others/tuple.mjs +52 -4
  381. package/dist/others/tuple.mjs.map +1 -1
  382. package/dist/others/unknown-to-string.mjs +91 -47
  383. package/dist/others/unknown-to-string.mjs.map +1 -1
  384. package/dist/promise/index.mjs +2 -2
  385. package/dist/promise/index.mjs.map +1 -1
  386. package/dist/promise/promise.mjs +51 -10
  387. package/dist/promise/promise.mjs.map +1 -1
  388. package/dist/string/index.mjs +2 -2
  389. package/dist/string/index.mjs.map +1 -1
  390. package/dist/string/str.mjs +250 -83
  391. package/dist/string/str.mjs.map +1 -1
  392. package/dist/types.mjs +3 -2
  393. package/dist/types.mjs.map +1 -1
  394. package/package.json +5 -6
  395. package/src/array/impl/array-utils-length-constraint-preservation.test.mts +2 -2
  396. package/src/collections/imap-mapped.mts +4 -4
  397. package/src/collections/imap.mts +1 -1
  398. package/src/collections/imap.test.mts +1 -1
  399. package/src/collections/iset-mapped.mts +2 -1
  400. package/src/collections/iset.mts +1 -1
  401. package/src/functional/async-result.test.mts +3 -2
  402. package/src/functional/optional.test.mts +2 -1
  403. package/src/functional/result.test.mts +0 -2
  404. package/src/guard/is-non-empty-string.test.mts +2 -2
  405. package/src/guard/is-non-null-object.test.mts +3 -3
  406. package/src/guard/is-primitive.test.mts +3 -3
  407. package/src/guard/is-type.test.mts +3 -3
  408. package/src/json/json.test.mts +1 -1
  409. package/src/number/enum/int8.mts +1 -1
@@ -1,7 +1,90 @@
1
1
  import { isNonNullObject } from './is-non-null-object.mjs';
2
-
3
- const isRecord = (u) => isNonNullObject(u) && !Array.isArray(u);
4
- const isMutableRecord = isRecord;
5
-
6
- export { isMutableRecord, isRecord };
7
- //# sourceMappingURL=is-record.mjs.map
2
+ /**
3
+ * Type guard that checks if a value is a record — a non-null, non-array
4
+ * object — and narrows it to `UnknownRecord` (= `ReadonlyRecord<string,
5
+ * unknown>`).
6
+ *
7
+ * This function is designed to be combined with {@link hasKey} to probe
8
+ * values of type `unknown` (e.g. parsed JSON, caught errors, external data)
9
+ * in a type-safe way: `if (isRecord(u) && hasKey(u, 'some-key')) { ... }`.
10
+ *
11
+ * **Type Narrowing Behavior:**
12
+ *
13
+ * - Narrows `unknown` to `UnknownRecord` (= `ReadonlyRecord<string, unknown>`)
14
+ * - Excludes `null`, `undefined`, primitives, and functions
15
+ * - Excludes arrays: arrays have no string index signature, so they are not
16
+ * assignable to `UnknownRecord`; admitting them at runtime would be
17
+ * inconsistent with the narrowed type
18
+ * - Returns `true` for every other non-null object, including dictionary
19
+ * objects created with `Object.create(null)` and instances such as `Date`,
20
+ * `RegExp`, `Map`, `Set`, `Error`, and user-defined classes
21
+ *
22
+ * **Why non-plain objects are included:** since every property of
23
+ * `UnknownRecord` is typed `unknown`, reading properties from any object
24
+ * through this narrowing is type-safe, and `hasKey` (backed by
25
+ * `Object.hasOwn`) answers own-property questions correctly on any object
26
+ * (e.g. `Map` entries are not own properties, so `hasKey` correctly returns
27
+ * `false` for them). Restricting the guard to plain objects would require
28
+ * prototype checks that misjudge cross-realm objects and would prevent
29
+ * probing useful instances such as `Error` subclasses.
30
+ *
31
+ * **Implementation:** `isNonNullObject(u) && !Array.isArray(u)`.
32
+ *
33
+ * @example
34
+ *
35
+ * ```ts
36
+ * const entries: readonly unknown[] = [
37
+ * { id: 1 },
38
+ * [1, 2],
39
+ * 'str',
40
+ * 0,
41
+ * null,
42
+ * ] as const;
43
+ *
44
+ * const records = entries.filter(isRecord);
45
+ *
46
+ * assert.deepStrictEqual(records, [{ id: 1 }]);
47
+ * ```
48
+ *
49
+ * @param u - The value to check
50
+ * @returns `true` if `u` is a non-null, non-array object, `false` otherwise.
51
+ * When `true`, TypeScript narrows the type to `UnknownRecord`.
52
+ * @see {@link isNonNullObject} - For checking any non-null object (includes arrays)
53
+ * @see {@link hasKey} - For checking if a record has specific keys
54
+ */
55
+ export const isRecord = (u) => isNonNullObject(u) && !Array.isArray(u);
56
+ /**
57
+ * Type guard that checks if a value is a mutable record.
58
+ *
59
+ * This function has the same runtime behavior as {@link isRecord} (non-null,
60
+ * non-array object check), but narrows the type to `MutableRecord<string,
61
+ * unknown>`, which is useful when you need to add or overwrite properties on
62
+ * the narrowed object.
63
+ *
64
+ * **Type Narrowing Behavior:**
65
+ *
66
+ * - Narrows `unknown` to `MutableRecord<string, unknown>`
67
+ * - Excludes `null`, `undefined`, primitives, functions, and arrays
68
+ * - Returns `true` for every other non-null object (see {@link isRecord} for
69
+ * details on non-plain objects such as `Date`, `Map`, and `Set`)
70
+ *
71
+ * **Implementation:** This is a type alias for {@link isRecord}.
72
+ *
73
+ * @example
74
+ *
75
+ * ```ts
76
+ * const obj: unknown = { foo: 1 } as const;
77
+ *
78
+ * if (isMutableRecord(obj)) {
79
+ * obj['bar'] = 2; // Safe: obj is now known to be a mutable record
80
+ * }
81
+ * ```
82
+ *
83
+ * @param u - The value to check
84
+ * @returns `true` if `u` is a non-null, non-array object, `false` otherwise.
85
+ * When `true`, TypeScript narrows the type to `MutableRecord<string,
86
+ * unknown>`.
87
+ * @see {@link isRecord} - For the underlying implementation and more details
88
+ */
89
+ export const isMutableRecord = isRecord;
90
+ //# sourceMappingURL=is-record.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"is-record.mjs","sources":["../../src/guard/is-record.mts"],"sourcesContent":["import { type MutableRecord, type UnknownRecord } from 'ts-type-forge';\nimport { isNonNullObject } from './is-non-null-object.mjs';\n\n/**\n * Type guard that checks if a value is a record — a non-null, non-array\n * object — and narrows it to `UnknownRecord` (= `ReadonlyRecord<string,\n * unknown>`).\n *\n * This function is designed to be combined with {@link hasKey} to probe\n * values of type `unknown` (e.g. parsed JSON, caught errors, external data)\n * in a type-safe way: `if (isRecord(u) && hasKey(u, 'some-key')) { ... }`.\n *\n * **Type Narrowing Behavior:**\n *\n * - Narrows `unknown` to `UnknownRecord` (= `ReadonlyRecord<string, unknown>`)\n * - Excludes `null`, `undefined`, primitives, and functions\n * - Excludes arrays: arrays have no string index signature, so they are not\n * assignable to `UnknownRecord`; admitting them at runtime would be\n * inconsistent with the narrowed type\n * - Returns `true` for every other non-null object, including dictionary\n * objects created with `Object.create(null)` and instances such as `Date`,\n * `RegExp`, `Map`, `Set`, `Error`, and user-defined classes\n *\n * **Why non-plain objects are included:** since every property of\n * `UnknownRecord` is typed `unknown`, reading properties from any object\n * through this narrowing is type-safe, and `hasKey` (backed by\n * `Object.hasOwn`) answers own-property questions correctly on any object\n * (e.g. `Map` entries are not own properties, so `hasKey` correctly returns\n * `false` for them). Restricting the guard to plain objects would require\n * prototype checks that misjudge cross-realm objects and would prevent\n * probing useful instances such as `Error` subclasses.\n *\n * **Implementation:** `isNonNullObject(u) && !Array.isArray(u)`.\n *\n * @example\n *\n * ```ts\n * const entries: readonly unknown[] = [\n * { id: 1 },\n * [1, 2],\n * 'str',\n * 0,\n * null,\n * ] as const;\n *\n * const records = entries.filter(isRecord);\n *\n * assert.deepStrictEqual(records, [{ id: 1 }]);\n * ```\n *\n * @param u - The value to check\n * @returns `true` if `u` is a non-null, non-array object, `false` otherwise.\n * When `true`, TypeScript narrows the type to `UnknownRecord`.\n * @see {@link isNonNullObject} - For checking any non-null object (includes arrays)\n * @see {@link hasKey} - For checking if a record has specific keys\n */\nexport const isRecord = (u: unknown): u is UnknownRecord =>\n isNonNullObject(u) && !Array.isArray(u);\n\n/**\n * Type guard that checks if a value is a mutable record.\n *\n * This function has the same runtime behavior as {@link isRecord} (non-null,\n * non-array object check), but narrows the type to `MutableRecord<string,\n * unknown>`, which is useful when you need to add or overwrite properties on\n * the narrowed object.\n *\n * **Type Narrowing Behavior:**\n *\n * - Narrows `unknown` to `MutableRecord<string, unknown>`\n * - Excludes `null`, `undefined`, primitives, functions, and arrays\n * - Returns `true` for every other non-null object (see {@link isRecord} for\n * details on non-plain objects such as `Date`, `Map`, and `Set`)\n *\n * **Implementation:** This is a type alias for {@link isRecord}.\n *\n * @example\n *\n * ```ts\n * const obj: unknown = { foo: 1 } as const;\n *\n * if (isMutableRecord(obj)) {\n * obj['bar'] = 2; // Safe: obj is now known to be a mutable record\n * }\n * ```\n *\n * @param u - The value to check\n * @returns `true` if `u` is a non-null, non-array object, `false` otherwise.\n * When `true`, TypeScript narrows the type to `MutableRecord<string,\n * unknown>`.\n * @see {@link isRecord} - For the underlying implementation and more details\n */\nexport const isMutableRecord: (\n u: unknown,\n) => u is MutableRecord<string, unknown> = isRecord;\n"],"names":[],"mappings":";;AAwDO,MAAM,QAAA,GAAW,CAAC,CAAA,KACvB,eAAA,CAAgB,CAAC,CAAA,IAAK,CAAC,KAAA,CAAM,OAAA,CAAQ,CAAC;AAmCjC,MAAM,eAAA,GAE8B;;;;"}
1
+ {"version":3,"file":"is-record.mjs","sourceRoot":"","sources":["../../src/guard/is-record.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAsB,EAAE,CACzD,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,CAAC,MAAM,eAAe,GAEe,QAAQ,CAAC"}
@@ -1,19 +1,404 @@
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";
13
- const isNull = (u) => u === null;
14
- const isNotNull = (u) => u !== null;
15
- const isNullish = (u) => u == null;
16
- const isNonNullish = (u) => u != null;
17
-
18
- export { isBigint, isBoolean, isNonNullish, isNotBigint, isNotBoolean, isNotNull, isNotNumber, isNotString, isNotSymbol, isNotUndefined, isNull, isNullish, isNumber, isString, isSymbol, isUndefined };
19
- //# sourceMappingURL=is-type.mjs.map
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
+ export 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
+ export 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
+ export 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
+ export 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
+ export 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
+ export 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
+ export 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
+ export 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
+ export 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
+ export 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
+ export 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
+ export 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
+ */
314
+ export 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
+ export 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
+ export 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
+ export const isNonNullish = (u) => u != null;
404
+ //# sourceMappingURL=is-type.mjs.map
@@ -1 +1 @@
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
+ {"version":3,"file":"is-type.mjs","sourceRoot":"","sources":["../../src/guard/is-type.mts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAU,EAAkB,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAK,CAAI,EAAqC,EAAE,CAC5E,CAAC,KAAK,SAAS,CAAC;AAElB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAU,EAAgB,EAAE,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC;AAE9E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAK,CAAI,EAAmC,EAAE,CACxE,OAAO,CAAC,KAAK,SAAS,CAAC;AAEzB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAK,CAAI,EAAkC,EAAE,CACtE,OAAO,CAAC,KAAK,QAAQ,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAK,CAAI,EAAkC,EAAE,CACtE,OAAO,CAAC,KAAK,QAAQ,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAK,CAAI,EAAkC,EAAE,CACtE,OAAO,CAAC,KAAK,QAAQ,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAK,CAAI,EAAkC,EAAE,CACtE,OAAO,CAAC,KAAK,QAAQ,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAU,EAAa,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAK,CAAW,EAAU,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAU,EAAyB,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAK,CAAI,EAAuB,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC"}
@@ -1,4 +1,42 @@
1
- const keyIsIn = (key, obj) => Object.hasOwn(obj, key);
2
-
3
- export { keyIsIn };
4
- //# sourceMappingURL=key-is-in.mjs.map
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
+ export const keyIsIn = (key, obj) => Object.hasOwn(obj, key);
42
+ //# sourceMappingURL=key-is-in.mjs.map
@@ -1 +1 @@
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;;;;"}
1
+ {"version":3,"file":"key-is-in.mjs","sourceRoot":"","sources":["../../src/guard/key-is-in.mts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAIrB,GAAM,EACN,GAAM,EACuB,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC"}