ts-data-forge 3.3.0 → 4.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 (664) hide show
  1. package/README.md +37 -13
  2. package/dist/array/impl/array-utils-creation.d.mts +116 -0
  3. package/dist/array/impl/array-utils-creation.d.mts.map +1 -0
  4. package/dist/array/impl/array-utils-creation.mjs +110 -0
  5. package/dist/array/impl/array-utils-creation.mjs.map +1 -0
  6. package/dist/array/impl/array-utils-element-access.d.mts +60 -0
  7. package/dist/array/impl/array-utils-element-access.d.mts.map +1 -0
  8. package/dist/array/impl/array-utils-element-access.mjs +66 -0
  9. package/dist/array/impl/array-utils-element-access.mjs.map +1 -0
  10. package/dist/array/impl/array-utils-iterators.d.mts +59 -0
  11. package/dist/array/impl/array-utils-iterators.d.mts.map +1 -0
  12. package/dist/array/impl/array-utils-iterators.mjs +104 -0
  13. package/dist/array/impl/array-utils-iterators.mjs.map +1 -0
  14. package/dist/array/impl/array-utils-modification.d.mts +154 -0
  15. package/dist/array/impl/array-utils-modification.d.mts.map +1 -0
  16. package/dist/array/impl/array-utils-modification.mjs +139 -0
  17. package/dist/array/impl/array-utils-modification.mjs.map +1 -0
  18. package/dist/array/impl/array-utils-reducing-value.d.mts +213 -0
  19. package/dist/array/impl/array-utils-reducing-value.d.mts.map +1 -0
  20. package/dist/array/impl/array-utils-reducing-value.mjs +162 -0
  21. package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -0
  22. package/dist/array/impl/array-utils-search.d.mts +178 -0
  23. package/dist/array/impl/array-utils-search.d.mts.map +1 -0
  24. package/dist/array/impl/array-utils-search.mjs +153 -0
  25. package/dist/array/impl/array-utils-search.mjs.map +1 -0
  26. package/dist/array/impl/array-utils-set-op.d.mts +100 -0
  27. package/dist/array/impl/array-utils-set-op.d.mts.map +1 -0
  28. package/dist/array/impl/array-utils-set-op.mjs +137 -0
  29. package/dist/array/impl/array-utils-set-op.mjs.map +1 -0
  30. package/dist/array/impl/array-utils-size.d.mts +24 -0
  31. package/dist/array/impl/array-utils-size.d.mts.map +1 -0
  32. package/dist/array/impl/array-utils-size.mjs +28 -0
  33. package/dist/array/impl/array-utils-size.mjs.map +1 -0
  34. package/dist/array/impl/array-utils-slice-clamped.d.mts +18 -0
  35. package/dist/array/impl/array-utils-slice-clamped.d.mts.map +1 -0
  36. package/dist/array/impl/array-utils-slice-clamped.mjs +49 -0
  37. package/dist/array/impl/array-utils-slice-clamped.mjs.map +1 -0
  38. package/dist/array/impl/array-utils-slicing.d.mts +120 -0
  39. package/dist/array/impl/array-utils-slicing.d.mts.map +1 -0
  40. package/dist/array/impl/array-utils-slicing.mjs +140 -0
  41. package/dist/array/impl/array-utils-slicing.mjs.map +1 -0
  42. package/dist/array/impl/array-utils-transformation.d.mts +348 -0
  43. package/dist/array/impl/array-utils-transformation.d.mts.map +1 -0
  44. package/dist/array/impl/array-utils-transformation.mjs +329 -0
  45. package/dist/array/impl/array-utils-transformation.mjs.map +1 -0
  46. package/dist/array/impl/array-utils-validation.d.mts +149 -0
  47. package/dist/array/impl/array-utils-validation.d.mts.map +1 -0
  48. package/dist/array/impl/array-utils-validation.mjs +166 -0
  49. package/dist/array/impl/array-utils-validation.mjs.map +1 -0
  50. package/dist/array/impl/index.d.mts +13 -0
  51. package/dist/array/impl/index.d.mts.map +1 -0
  52. package/dist/array/impl/index.mjs +13 -0
  53. package/dist/array/impl/index.mjs.map +1 -0
  54. package/dist/array/index.d.mts +1 -1
  55. package/dist/array/index.d.mts.map +1 -1
  56. package/dist/array/index.mjs +2 -1
  57. package/dist/array/index.mjs.map +1 -1
  58. package/dist/collections/imap-mapped.d.mts +83 -254
  59. package/dist/collections/imap-mapped.d.mts.map +1 -1
  60. package/dist/collections/imap-mapped.mjs +40 -170
  61. package/dist/collections/imap-mapped.mjs.map +1 -1
  62. package/dist/collections/imap.d.mts +436 -164
  63. package/dist/collections/imap.d.mts.map +1 -1
  64. package/dist/collections/imap.mjs +83 -101
  65. package/dist/collections/imap.mjs.map +1 -1
  66. package/dist/collections/iset-mapped.d.mts +828 -345
  67. package/dist/collections/iset-mapped.d.mts.map +1 -1
  68. package/dist/collections/iset-mapped.mjs +200 -242
  69. package/dist/collections/iset-mapped.mjs.map +1 -1
  70. package/dist/collections/iset.d.mts +397 -205
  71. package/dist/collections/iset.d.mts.map +1 -1
  72. package/dist/collections/iset.mjs +102 -184
  73. package/dist/collections/iset.mjs.map +1 -1
  74. package/dist/collections/queue.d.mts +155 -136
  75. package/dist/collections/queue.d.mts.map +1 -1
  76. package/dist/collections/queue.mjs +59 -160
  77. package/dist/collections/queue.mjs.map +1 -1
  78. package/dist/collections/stack.d.mts +154 -155
  79. package/dist/collections/stack.d.mts.map +1 -1
  80. package/dist/collections/stack.mjs +58 -207
  81. package/dist/collections/stack.mjs.map +1 -1
  82. package/dist/entry-point.d.mts +2 -0
  83. package/dist/entry-point.d.mts.map +1 -1
  84. package/dist/entry-point.mjs +8 -5
  85. package/dist/entry-point.mjs.map +1 -1
  86. package/dist/expect-type.d.mts +43 -172
  87. package/dist/expect-type.d.mts.map +1 -1
  88. package/dist/expect-type.mjs +43 -172
  89. package/dist/expect-type.mjs.map +1 -1
  90. package/dist/functional/index.d.mts +2 -2
  91. package/dist/functional/index.d.mts.map +1 -1
  92. package/dist/functional/index.mjs +4 -2
  93. package/dist/functional/index.mjs.map +1 -1
  94. package/dist/functional/match.d.mts +35 -140
  95. package/dist/functional/match.d.mts.map +1 -1
  96. package/dist/functional/match.mjs.map +1 -1
  97. package/dist/functional/optional/impl/index.d.mts +18 -0
  98. package/dist/functional/optional/impl/index.d.mts.map +1 -0
  99. package/dist/functional/optional/impl/index.mjs +17 -0
  100. package/dist/functional/optional/impl/index.mjs.map +1 -0
  101. package/dist/functional/optional/impl/optional-expect-to-be.d.mts +29 -0
  102. package/dist/functional/optional/impl/optional-expect-to-be.d.mts.map +1 -0
  103. package/dist/functional/optional/impl/optional-expect-to-be.mjs +25 -0
  104. package/dist/functional/optional/impl/optional-expect-to-be.mjs.map +1 -0
  105. package/dist/functional/optional/impl/optional-filter.d.mts +29 -0
  106. package/dist/functional/optional/impl/optional-filter.d.mts.map +1 -0
  107. package/dist/functional/optional/impl/optional-filter.mjs +28 -0
  108. package/dist/functional/optional/impl/optional-filter.mjs.map +1 -0
  109. package/dist/functional/optional/impl/optional-flat-map.d.mts +33 -0
  110. package/dist/functional/optional/impl/optional-flat-map.d.mts.map +1 -0
  111. package/dist/functional/optional/impl/optional-flat-map.mjs +21 -0
  112. package/dist/functional/optional/impl/optional-flat-map.mjs.map +1 -0
  113. package/dist/functional/optional/impl/optional-from-nullable.d.mts +24 -0
  114. package/dist/functional/optional/impl/optional-from-nullable.d.mts.map +1 -0
  115. package/dist/functional/optional/impl/optional-from-nullable.mjs +29 -0
  116. package/dist/functional/optional/impl/optional-from-nullable.mjs.map +1 -0
  117. package/dist/functional/optional/impl/optional-is-none.d.mts +22 -0
  118. package/dist/functional/optional/impl/optional-is-none.d.mts.map +1 -0
  119. package/dist/functional/optional/impl/optional-is-none.mjs +25 -0
  120. package/dist/functional/optional/impl/optional-is-none.mjs.map +1 -0
  121. package/dist/functional/optional/impl/optional-is-optional.d.mts +18 -0
  122. package/dist/functional/optional/impl/optional-is-optional.d.mts.map +1 -0
  123. package/dist/functional/optional/impl/optional-is-optional.mjs +27 -0
  124. package/dist/functional/optional/impl/optional-is-optional.mjs.map +1 -0
  125. package/dist/functional/optional/impl/optional-is-some.d.mts +22 -0
  126. package/dist/functional/optional/impl/optional-is-some.d.mts.map +1 -0
  127. package/dist/functional/optional/impl/optional-is-some.mjs +25 -0
  128. package/dist/functional/optional/impl/optional-is-some.mjs.map +1 -0
  129. package/dist/functional/optional/impl/optional-map.d.mts +31 -0
  130. package/dist/functional/optional/impl/optional-map.d.mts.map +1 -0
  131. package/dist/functional/optional/impl/optional-map.mjs +25 -0
  132. package/dist/functional/optional/impl/optional-map.mjs.map +1 -0
  133. package/dist/functional/optional/impl/optional-none.d.mts +16 -0
  134. package/dist/functional/optional/impl/optional-none.d.mts.map +1 -0
  135. package/dist/functional/optional/impl/optional-none.mjs +20 -0
  136. package/dist/functional/optional/impl/optional-none.mjs.map +1 -0
  137. package/dist/functional/optional/impl/optional-or-else.d.mts +35 -0
  138. package/dist/functional/optional/impl/optional-or-else.d.mts.map +1 -0
  139. package/dist/functional/optional/impl/optional-or-else.mjs +19 -0
  140. package/dist/functional/optional/impl/optional-or-else.mjs.map +1 -0
  141. package/dist/functional/optional/impl/optional-some.d.mts +19 -0
  142. package/dist/functional/optional/impl/optional-some.d.mts.map +1 -0
  143. package/dist/functional/optional/impl/optional-some.mjs +26 -0
  144. package/dist/functional/optional/impl/optional-some.mjs.map +1 -0
  145. package/dist/functional/optional/impl/optional-to-nullable.d.mts +27 -0
  146. package/dist/functional/optional/impl/optional-to-nullable.d.mts.map +1 -0
  147. package/dist/functional/optional/impl/optional-to-nullable.mjs +31 -0
  148. package/dist/functional/optional/impl/optional-to-nullable.mjs.map +1 -0
  149. package/dist/functional/optional/impl/optional-unwrap-or.d.mts +33 -0
  150. package/dist/functional/optional/impl/optional-unwrap-or.d.mts.map +1 -0
  151. package/dist/functional/optional/impl/optional-unwrap-or.mjs +19 -0
  152. package/dist/functional/optional/impl/optional-unwrap-or.mjs.map +1 -0
  153. package/dist/functional/optional/impl/optional-unwrap-throw.d.mts +29 -0
  154. package/dist/functional/optional/impl/optional-unwrap-throw.d.mts.map +1 -0
  155. package/dist/functional/optional/impl/optional-unwrap-throw.mjs +38 -0
  156. package/dist/functional/optional/impl/optional-unwrap-throw.mjs.map +1 -0
  157. package/dist/functional/optional/impl/optional-unwrap.d.mts +28 -0
  158. package/dist/functional/optional/impl/optional-unwrap.d.mts.map +1 -0
  159. package/dist/functional/optional/impl/optional-unwrap.mjs +11 -0
  160. package/dist/functional/optional/impl/optional-unwrap.mjs.map +1 -0
  161. package/dist/functional/optional/impl/optional-zip.d.mts +31 -0
  162. package/dist/functional/optional/impl/optional-zip.d.mts.map +1 -0
  163. package/dist/functional/optional/impl/optional-zip.mjs +39 -0
  164. package/dist/functional/optional/impl/optional-zip.mjs.map +1 -0
  165. package/dist/functional/optional/impl/tag.d.mts +5 -0
  166. package/dist/functional/optional/impl/tag.d.mts.map +1 -0
  167. package/dist/functional/optional/impl/tag.mjs +7 -0
  168. package/dist/functional/optional/impl/tag.mjs.map +1 -0
  169. package/dist/functional/optional/impl/types.d.mts +22 -0
  170. package/dist/functional/optional/impl/types.d.mts.map +1 -0
  171. package/dist/functional/optional/impl/types.mjs +2 -0
  172. package/dist/functional/optional/impl/types.mjs.map +1 -0
  173. package/dist/functional/optional/index.d.mts +2 -0
  174. package/dist/functional/optional/index.d.mts.map +1 -0
  175. package/dist/functional/optional/index.mjs +3 -0
  176. package/dist/functional/optional/index.mjs.map +1 -0
  177. package/dist/functional/pipe.d.mts +63 -117
  178. package/dist/functional/pipe.d.mts.map +1 -1
  179. package/dist/functional/pipe.mjs +4 -3
  180. package/dist/functional/pipe.mjs.map +1 -1
  181. package/dist/functional/result/impl/index.d.mts +24 -0
  182. package/dist/functional/result/impl/index.d.mts.map +1 -0
  183. package/dist/functional/result/impl/index.mjs +23 -0
  184. package/dist/functional/result/impl/index.mjs.map +1 -0
  185. package/dist/functional/result/impl/result-err.d.mts +25 -0
  186. package/dist/functional/result/impl/result-err.d.mts.map +1 -0
  187. package/dist/functional/result/impl/result-err.mjs +32 -0
  188. package/dist/functional/result/impl/result-err.mjs.map +1 -0
  189. package/dist/functional/result/impl/result-expect-to-be.d.mts +27 -0
  190. package/dist/functional/result/impl/result-expect-to-be.d.mts.map +1 -0
  191. package/dist/functional/result/impl/result-expect-to-be.mjs +26 -0
  192. package/dist/functional/result/impl/result-expect-to-be.mjs.map +1 -0
  193. package/dist/functional/result/impl/result-flat-map.d.mts +39 -0
  194. package/dist/functional/result/impl/result-flat-map.d.mts.map +1 -0
  195. package/dist/functional/result/impl/result-flat-map.mjs +24 -0
  196. package/dist/functional/result/impl/result-flat-map.mjs.map +1 -0
  197. package/dist/functional/result/impl/result-fold.d.mts +45 -0
  198. package/dist/functional/result/impl/result-fold.d.mts.map +1 -0
  199. package/dist/functional/result/impl/result-fold.mjs +26 -0
  200. package/dist/functional/result/impl/result-fold.mjs.map +1 -0
  201. package/dist/functional/result/impl/result-from-promise.d.mts +32 -0
  202. package/dist/functional/result/impl/result-from-promise.d.mts.map +1 -0
  203. package/dist/functional/result/impl/result-from-promise.mjs +32 -0
  204. package/dist/functional/result/impl/result-from-promise.mjs.map +1 -0
  205. package/dist/functional/result/impl/result-from-throwable.d.mts +29 -0
  206. package/dist/functional/result/impl/result-from-throwable.d.mts.map +1 -0
  207. package/dist/functional/result/impl/result-from-throwable.mjs +46 -0
  208. package/dist/functional/result/impl/result-from-throwable.mjs.map +1 -0
  209. package/dist/functional/result/impl/result-is-err.d.mts +20 -0
  210. package/dist/functional/result/impl/result-is-err.d.mts.map +1 -0
  211. package/dist/functional/result/impl/result-is-err.mjs +23 -0
  212. package/dist/functional/result/impl/result-is-err.mjs.map +1 -0
  213. package/dist/functional/result/impl/result-is-ok.d.mts +20 -0
  214. package/dist/functional/result/impl/result-is-ok.d.mts.map +1 -0
  215. package/dist/functional/result/impl/result-is-ok.mjs +23 -0
  216. package/dist/functional/result/impl/result-is-ok.mjs.map +1 -0
  217. package/dist/functional/result/impl/result-is-result.d.mts +17 -0
  218. package/dist/functional/result/impl/result-is-result.d.mts.map +1 -0
  219. package/dist/functional/result/impl/result-is-result.mjs +26 -0
  220. package/dist/functional/result/impl/result-is-result.mjs.map +1 -0
  221. package/dist/functional/result/impl/result-map-err.d.mts +33 -0
  222. package/dist/functional/result/impl/result-map-err.d.mts.map +1 -0
  223. package/dist/functional/result/impl/result-map-err.mjs +25 -0
  224. package/dist/functional/result/impl/result-map-err.mjs.map +1 -0
  225. package/dist/functional/result/impl/result-map.d.mts +34 -0
  226. package/dist/functional/result/impl/result-map.d.mts.map +1 -0
  227. package/dist/functional/result/impl/result-map.mjs +25 -0
  228. package/dist/functional/result/impl/result-map.mjs.map +1 -0
  229. package/dist/functional/result/impl/result-ok.d.mts +25 -0
  230. package/dist/functional/result/impl/result-ok.d.mts.map +1 -0
  231. package/dist/functional/result/impl/result-ok.mjs +32 -0
  232. package/dist/functional/result/impl/result-ok.mjs.map +1 -0
  233. package/dist/functional/result/impl/result-or-else.d.mts +32 -0
  234. package/dist/functional/result/impl/result-or-else.d.mts.map +1 -0
  235. package/dist/functional/result/impl/result-or-else.mjs +20 -0
  236. package/dist/functional/result/impl/result-or-else.mjs.map +1 -0
  237. package/dist/functional/result/impl/result-swap.d.mts +20 -0
  238. package/dist/functional/result/impl/result-swap.d.mts.map +1 -0
  239. package/dist/functional/result/impl/result-swap.mjs +28 -0
  240. package/dist/functional/result/impl/result-swap.mjs.map +1 -0
  241. package/dist/functional/result/impl/result-to-optional.d.mts +28 -0
  242. package/dist/functional/result/impl/result-to-optional.d.mts.map +1 -0
  243. package/dist/functional/result/impl/result-to-optional.mjs +34 -0
  244. package/dist/functional/result/impl/result-to-optional.mjs.map +1 -0
  245. package/dist/functional/result/impl/result-unwrap-err-or.d.mts +29 -0
  246. package/dist/functional/result/impl/result-unwrap-err-or.d.mts.map +1 -0
  247. package/dist/functional/result/impl/result-unwrap-err-or.mjs +20 -0
  248. package/dist/functional/result/impl/result-unwrap-err-or.mjs.map +1 -0
  249. package/dist/functional/result/impl/result-unwrap-err-throw.d.mts +30 -0
  250. package/dist/functional/result/impl/result-unwrap-err-throw.d.mts.map +1 -0
  251. package/dist/functional/result/impl/result-unwrap-err-throw.mjs +47 -0
  252. package/dist/functional/result/impl/result-unwrap-err-throw.mjs.map +1 -0
  253. package/dist/functional/result/impl/result-unwrap-err.d.mts +31 -0
  254. package/dist/functional/result/impl/result-unwrap-err.d.mts.map +1 -0
  255. package/dist/functional/result/impl/result-unwrap-err.mjs +36 -0
  256. package/dist/functional/result/impl/result-unwrap-err.mjs.map +1 -0
  257. package/dist/functional/result/impl/result-unwrap-ok-or.d.mts +29 -0
  258. package/dist/functional/result/impl/result-unwrap-ok-or.d.mts.map +1 -0
  259. package/dist/functional/result/impl/result-unwrap-ok-or.mjs +20 -0
  260. package/dist/functional/result/impl/result-unwrap-ok-or.mjs.map +1 -0
  261. package/dist/functional/result/impl/result-unwrap-ok.d.mts +23 -0
  262. package/dist/functional/result/impl/result-unwrap-ok.d.mts.map +1 -0
  263. package/dist/functional/result/impl/result-unwrap-ok.mjs +11 -0
  264. package/dist/functional/result/impl/result-unwrap-ok.mjs.map +1 -0
  265. package/dist/functional/result/impl/result-unwrap-throw.d.mts +30 -0
  266. package/dist/functional/result/impl/result-unwrap-throw.d.mts.map +1 -0
  267. package/dist/functional/result/impl/result-unwrap-throw.mjs +41 -0
  268. package/dist/functional/result/impl/result-unwrap-throw.mjs.map +1 -0
  269. package/dist/functional/result/impl/result-zip.d.mts +29 -0
  270. package/dist/functional/result/impl/result-zip.d.mts.map +1 -0
  271. package/dist/functional/result/impl/result-zip.mjs +38 -0
  272. package/dist/functional/result/impl/result-zip.mjs.map +1 -0
  273. package/dist/functional/result/impl/tag.d.mts +5 -0
  274. package/dist/functional/result/impl/tag.d.mts.map +1 -0
  275. package/dist/functional/result/impl/tag.mjs +7 -0
  276. package/dist/functional/result/impl/tag.mjs.map +1 -0
  277. package/dist/functional/result/impl/types.d.mts +29 -0
  278. package/dist/functional/result/impl/types.d.mts.map +1 -0
  279. package/dist/functional/result/impl/types.mjs +2 -0
  280. package/dist/functional/result/impl/types.mjs.map +1 -0
  281. package/dist/functional/result/index.d.mts +2 -0
  282. package/dist/functional/result/index.d.mts.map +1 -0
  283. package/dist/functional/result/index.mjs +3 -0
  284. package/dist/functional/result/index.mjs.map +1 -0
  285. package/dist/globals.d.mts +95 -5
  286. package/dist/guard/has-key.d.mts +23 -74
  287. package/dist/guard/has-key.d.mts.map +1 -1
  288. package/dist/guard/has-key.mjs +23 -74
  289. package/dist/guard/has-key.mjs.map +1 -1
  290. package/dist/guard/is-non-empty-string.d.mts +20 -87
  291. package/dist/guard/is-non-empty-string.d.mts.map +1 -1
  292. package/dist/guard/is-non-empty-string.mjs +20 -87
  293. package/dist/guard/is-non-empty-string.mjs.map +1 -1
  294. package/dist/guard/is-non-null-object.d.mts +14 -84
  295. package/dist/guard/is-non-null-object.d.mts.map +1 -1
  296. package/dist/guard/is-non-null-object.mjs +14 -84
  297. package/dist/guard/is-non-null-object.mjs.map +1 -1
  298. package/dist/guard/is-primitive.d.mts +13 -126
  299. package/dist/guard/is-primitive.d.mts.map +1 -1
  300. package/dist/guard/is-primitive.mjs +13 -126
  301. package/dist/guard/is-primitive.mjs.map +1 -1
  302. package/dist/guard/is-record.d.mts +21 -132
  303. package/dist/guard/is-record.d.mts.map +1 -1
  304. package/dist/guard/is-record.mjs +21 -132
  305. package/dist/guard/is-record.mjs.map +1 -1
  306. package/dist/guard/is-type.d.mts +201 -238
  307. package/dist/guard/is-type.d.mts.map +1 -1
  308. package/dist/guard/is-type.mjs +201 -238
  309. package/dist/guard/is-type.mjs.map +1 -1
  310. package/dist/guard/key-is-in.d.mts +22 -139
  311. package/dist/guard/key-is-in.d.mts.map +1 -1
  312. package/dist/guard/key-is-in.mjs +22 -139
  313. package/dist/guard/key-is-in.mjs.map +1 -1
  314. package/dist/index.d.mts +0 -2
  315. package/dist/index.d.mts.map +1 -1
  316. package/dist/index.mjs +0 -5
  317. package/dist/index.mjs.map +1 -1
  318. package/dist/iterator/range.d.mts +29 -62
  319. package/dist/iterator/range.d.mts.map +1 -1
  320. package/dist/iterator/range.mjs.map +1 -1
  321. package/dist/json/json.d.mts +191 -122
  322. package/dist/json/json.d.mts.map +1 -1
  323. package/dist/json/json.mjs +246 -144
  324. package/dist/json/json.mjs.map +1 -1
  325. package/dist/number/branded-types/finite-number.d.mts +24 -156
  326. package/dist/number/branded-types/finite-number.d.mts.map +1 -1
  327. package/dist/number/branded-types/finite-number.mjs +28 -160
  328. package/dist/number/branded-types/finite-number.mjs.map +1 -1
  329. package/dist/number/branded-types/int.d.mts +122 -120
  330. package/dist/number/branded-types/int.d.mts.map +1 -1
  331. package/dist/number/branded-types/int.mjs +123 -121
  332. package/dist/number/branded-types/int.mjs.map +1 -1
  333. package/dist/number/branded-types/int16.d.mts +22 -30
  334. package/dist/number/branded-types/int16.d.mts.map +1 -1
  335. package/dist/number/branded-types/int16.mjs +23 -31
  336. package/dist/number/branded-types/int16.mjs.map +1 -1
  337. package/dist/number/branded-types/int32.d.mts +22 -31
  338. package/dist/number/branded-types/int32.d.mts.map +1 -1
  339. package/dist/number/branded-types/int32.mjs +23 -32
  340. package/dist/number/branded-types/int32.mjs.map +1 -1
  341. package/dist/number/branded-types/non-negative-finite-number.d.mts +28 -36
  342. package/dist/number/branded-types/non-negative-finite-number.d.mts.map +1 -1
  343. package/dist/number/branded-types/non-negative-finite-number.mjs +32 -40
  344. package/dist/number/branded-types/non-negative-finite-number.mjs.map +1 -1
  345. package/dist/number/branded-types/non-negative-int16.d.mts +24 -34
  346. package/dist/number/branded-types/non-negative-int16.d.mts.map +1 -1
  347. package/dist/number/branded-types/non-negative-int16.mjs +25 -35
  348. package/dist/number/branded-types/non-negative-int16.mjs.map +1 -1
  349. package/dist/number/branded-types/non-negative-int32.d.mts +26 -35
  350. package/dist/number/branded-types/non-negative-int32.d.mts.map +1 -1
  351. package/dist/number/branded-types/non-negative-int32.mjs +27 -36
  352. package/dist/number/branded-types/non-negative-int32.mjs.map +1 -1
  353. package/dist/number/branded-types/non-zero-finite-number.d.mts +22 -37
  354. package/dist/number/branded-types/non-zero-finite-number.d.mts.map +1 -1
  355. package/dist/number/branded-types/non-zero-finite-number.mjs +26 -41
  356. package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -1
  357. package/dist/number/branded-types/non-zero-int.d.mts +15 -30
  358. package/dist/number/branded-types/non-zero-int.d.mts.map +1 -1
  359. package/dist/number/branded-types/non-zero-int.mjs +16 -31
  360. package/dist/number/branded-types/non-zero-int.mjs.map +1 -1
  361. package/dist/number/branded-types/non-zero-int16.d.mts +27 -35
  362. package/dist/number/branded-types/non-zero-int16.d.mts.map +1 -1
  363. package/dist/number/branded-types/non-zero-int16.mjs +28 -36
  364. package/dist/number/branded-types/non-zero-int16.mjs.map +1 -1
  365. package/dist/number/branded-types/non-zero-int32.d.mts +29 -36
  366. package/dist/number/branded-types/non-zero-int32.d.mts.map +1 -1
  367. package/dist/number/branded-types/non-zero-int32.mjs +30 -37
  368. package/dist/number/branded-types/non-zero-int32.mjs.map +1 -1
  369. package/dist/number/branded-types/non-zero-safe-int.d.mts +37 -38
  370. package/dist/number/branded-types/non-zero-safe-int.d.mts.map +1 -1
  371. package/dist/number/branded-types/non-zero-safe-int.mjs +40 -41
  372. package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -1
  373. package/dist/number/branded-types/non-zero-uint16.d.mts +24 -35
  374. package/dist/number/branded-types/non-zero-uint16.d.mts.map +1 -1
  375. package/dist/number/branded-types/non-zero-uint16.mjs +25 -36
  376. package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -1
  377. package/dist/number/branded-types/non-zero-uint32.d.mts +24 -35
  378. package/dist/number/branded-types/non-zero-uint32.d.mts.map +1 -1
  379. package/dist/number/branded-types/non-zero-uint32.mjs +25 -36
  380. package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -1
  381. package/dist/number/branded-types/positive-finite-number.d.mts +26 -40
  382. package/dist/number/branded-types/positive-finite-number.d.mts.map +1 -1
  383. package/dist/number/branded-types/positive-finite-number.mjs +30 -44
  384. package/dist/number/branded-types/positive-finite-number.mjs.map +1 -1
  385. package/dist/number/branded-types/positive-int.d.mts +133 -123
  386. package/dist/number/branded-types/positive-int.d.mts.map +1 -1
  387. package/dist/number/branded-types/positive-int.mjs +134 -124
  388. package/dist/number/branded-types/positive-int.mjs.map +1 -1
  389. package/dist/number/branded-types/positive-int16.d.mts +24 -35
  390. package/dist/number/branded-types/positive-int16.d.mts.map +1 -1
  391. package/dist/number/branded-types/positive-int16.mjs +25 -36
  392. package/dist/number/branded-types/positive-int16.mjs.map +1 -1
  393. package/dist/number/branded-types/positive-int32.d.mts +24 -35
  394. package/dist/number/branded-types/positive-int32.d.mts.map +1 -1
  395. package/dist/number/branded-types/positive-int32.mjs +25 -36
  396. package/dist/number/branded-types/positive-int32.mjs.map +1 -1
  397. package/dist/number/branded-types/positive-safe-int.d.mts +159 -33
  398. package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -1
  399. package/dist/number/branded-types/positive-safe-int.mjs +161 -35
  400. package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
  401. package/dist/number/branded-types/positive-uint16.d.mts +24 -35
  402. package/dist/number/branded-types/positive-uint16.d.mts.map +1 -1
  403. package/dist/number/branded-types/positive-uint16.mjs +25 -36
  404. package/dist/number/branded-types/positive-uint16.mjs.map +1 -1
  405. package/dist/number/branded-types/positive-uint32.d.mts +26 -36
  406. package/dist/number/branded-types/positive-uint32.d.mts.map +1 -1
  407. package/dist/number/branded-types/positive-uint32.mjs +27 -37
  408. package/dist/number/branded-types/positive-uint32.mjs.map +1 -1
  409. package/dist/number/branded-types/safe-int.d.mts +140 -99
  410. package/dist/number/branded-types/safe-int.d.mts.map +1 -1
  411. package/dist/number/branded-types/safe-int.mjs +143 -102
  412. package/dist/number/branded-types/safe-int.mjs.map +1 -1
  413. package/dist/number/branded-types/safe-uint.d.mts +24 -33
  414. package/dist/number/branded-types/safe-uint.d.mts.map +1 -1
  415. package/dist/number/branded-types/safe-uint.mjs +26 -35
  416. package/dist/number/branded-types/safe-uint.mjs.map +1 -1
  417. package/dist/number/branded-types/uint.d.mts +121 -30
  418. package/dist/number/branded-types/uint.d.mts.map +1 -1
  419. package/dist/number/branded-types/uint.mjs +122 -31
  420. package/dist/number/branded-types/uint.mjs.map +1 -1
  421. package/dist/number/branded-types/uint16.d.mts +26 -34
  422. package/dist/number/branded-types/uint16.d.mts.map +1 -1
  423. package/dist/number/branded-types/uint16.mjs +27 -35
  424. package/dist/number/branded-types/uint16.mjs.map +1 -1
  425. package/dist/number/branded-types/uint32.d.mts +26 -68
  426. package/dist/number/branded-types/uint32.d.mts.map +1 -1
  427. package/dist/number/branded-types/uint32.mjs +27 -69
  428. package/dist/number/branded-types/uint32.mjs.map +1 -1
  429. package/dist/number/enum/int8.d.mts +37 -101
  430. package/dist/number/enum/int8.d.mts.map +1 -1
  431. package/dist/number/enum/int8.mjs +40 -171
  432. package/dist/number/enum/int8.mjs.map +1 -1
  433. package/dist/number/enum/uint8.d.mts +45 -55
  434. package/dist/number/enum/uint8.d.mts.map +1 -1
  435. package/dist/number/enum/uint8.mjs +47 -156
  436. package/dist/number/enum/uint8.mjs.map +1 -1
  437. package/dist/number/num.d.mts +145 -206
  438. package/dist/number/num.d.mts.map +1 -1
  439. package/dist/number/num.mjs +143 -199
  440. package/dist/number/num.mjs.map +1 -1
  441. package/dist/number/refined-number-utils.d.mts +97 -21
  442. package/dist/number/refined-number-utils.d.mts.map +1 -1
  443. package/dist/number/refined-number-utils.mjs +91 -22
  444. package/dist/number/refined-number-utils.mjs.map +1 -1
  445. package/dist/object/object.d.mts +126 -208
  446. package/dist/object/object.d.mts.map +1 -1
  447. package/dist/object/object.mjs +68 -102
  448. package/dist/object/object.mjs.map +1 -1
  449. package/dist/others/cast-mutable.d.mts +12 -88
  450. package/dist/others/cast-mutable.d.mts.map +1 -1
  451. package/dist/others/cast-mutable.mjs +13 -89
  452. package/dist/others/cast-mutable.mjs.map +1 -1
  453. package/dist/others/cast-readonly.d.mts +12 -168
  454. package/dist/others/cast-readonly.d.mts.map +1 -1
  455. package/dist/others/cast-readonly.mjs +13 -169
  456. package/dist/others/cast-readonly.mjs.map +1 -1
  457. package/dist/others/if-then.d.mts +6 -83
  458. package/dist/others/if-then.d.mts.map +1 -1
  459. package/dist/others/if-then.mjs +6 -83
  460. package/dist/others/if-then.mjs.map +1 -1
  461. package/dist/others/map-nullable.d.mts +12 -136
  462. package/dist/others/map-nullable.d.mts.map +1 -1
  463. package/dist/others/map-nullable.mjs.map +1 -1
  464. package/dist/others/memoize-function.d.mts +14 -157
  465. package/dist/others/memoize-function.d.mts.map +1 -1
  466. package/dist/others/memoize-function.mjs +14 -157
  467. package/dist/others/memoize-function.mjs.map +1 -1
  468. package/dist/others/tuple.d.mts +33 -151
  469. package/dist/others/tuple.d.mts.map +1 -1
  470. package/dist/others/tuple.mjs +33 -151
  471. package/dist/others/tuple.mjs.map +1 -1
  472. package/dist/others/unknown-to-string.d.mts +11 -125
  473. package/dist/others/unknown-to-string.d.mts.map +1 -1
  474. package/dist/others/unknown-to-string.mjs +12 -126
  475. package/dist/others/unknown-to-string.mjs.map +1 -1
  476. package/dist/promise/promise.d.mts +33 -21
  477. package/dist/promise/promise.d.mts.map +1 -1
  478. package/dist/promise/promise.mjs +36 -24
  479. package/dist/promise/promise.mjs.map +1 -1
  480. package/package.json +58 -44
  481. package/src/array/impl/array-utils-creation.mts +192 -0
  482. package/src/array/{array-utils-creation.test.mts → impl/array-utils-creation.test.mts} +121 -72
  483. package/src/array/impl/array-utils-element-access.mts +115 -0
  484. package/src/array/impl/array-utils-element-access.test.mts +151 -0
  485. package/src/array/impl/array-utils-iterators.mts +79 -0
  486. package/src/array/impl/array-utils-iterators.test.mts +98 -0
  487. package/src/array/impl/array-utils-modification.mts +434 -0
  488. package/src/array/{array-utils-modification.test.mts → impl/array-utils-modification.test.mts} +41 -28
  489. package/src/array/{array-utils-overload-type-error.test.mts → impl/array-utils-overload-type-error.test.mts} +33 -33
  490. package/src/array/impl/array-utils-reducing-value.mts +535 -0
  491. package/src/array/{array-utils-reducing-value.test.mts → impl/array-utils-reducing-value.test.mts} +53 -58
  492. package/src/array/impl/array-utils-search.mts +509 -0
  493. package/src/array/impl/array-utils-search.test.mts +346 -0
  494. package/src/array/impl/array-utils-set-op.mts +166 -0
  495. package/src/array/{array-utils-set-op.test.mts → impl/array-utils-set-op.test.mts} +42 -35
  496. package/src/array/impl/array-utils-size.mts +30 -0
  497. package/src/array/impl/array-utils-size.test.mts +9 -0
  498. package/src/array/impl/array-utils-slice-clamped.mts +51 -0
  499. package/src/array/{array-utils-slice-clamped.test.mts → impl/array-utils-slice-clamped.test.mts} +13 -13
  500. package/src/array/impl/array-utils-slicing.mts +275 -0
  501. package/src/array/impl/array-utils-slicing.test.mts +158 -0
  502. package/src/array/impl/array-utils-transformation.mts +746 -0
  503. package/src/array/{array-utils-transformation.test.mts → impl/array-utils-transformation.test.mts} +662 -889
  504. package/src/array/impl/array-utils-validation.mts +241 -0
  505. package/src/array/{array-utils-validation.test.mts → impl/array-utils-validation.test.mts} +194 -107
  506. package/src/array/{array.test.mts → impl/array.test.mts} +2 -2
  507. package/src/array/impl/index.mts +12 -0
  508. package/src/array/index.mts +1 -1
  509. package/src/collections/imap-mapped.mts +99 -265
  510. package/src/collections/imap.mts +477 -174
  511. package/src/collections/imap.test.mts +12 -19
  512. package/src/collections/iset-mapped.mts +892 -358
  513. package/src/collections/iset.mts +429 -213
  514. package/src/collections/queue.mts +174 -200
  515. package/src/collections/stack.mts +172 -245
  516. package/src/collections/stack.test.mts +9 -1
  517. package/src/entry-point.mts +2 -0
  518. package/src/expect-type.mts +43 -172
  519. package/src/functional/index.mts +2 -2
  520. package/src/functional/match.mts +35 -145
  521. package/src/functional/optional/impl/index.mts +17 -0
  522. package/src/functional/optional/impl/optional-expect-to-be.mts +65 -0
  523. package/src/functional/optional/impl/optional-filter.mts +71 -0
  524. package/src/functional/optional/impl/optional-flat-map.mts +67 -0
  525. package/src/functional/optional/impl/optional-from-nullable.mts +28 -0
  526. package/src/functional/optional/impl/optional-is-none.mts +25 -0
  527. package/src/functional/optional/impl/optional-is-optional.mts +27 -0
  528. package/src/functional/optional/impl/optional-is-some.mts +25 -0
  529. package/src/functional/optional/impl/optional-map.mts +69 -0
  530. package/src/functional/optional/impl/optional-none.mts +17 -0
  531. package/src/functional/optional/impl/optional-or-else.mts +73 -0
  532. package/src/functional/optional/impl/optional-some.mts +23 -0
  533. package/src/functional/optional/impl/optional-to-nullable.mts +31 -0
  534. package/src/functional/optional/impl/optional-unwrap-or.mts +64 -0
  535. package/src/functional/optional/impl/optional-unwrap-throw.mts +39 -0
  536. package/src/functional/optional/impl/optional-unwrap.mts +41 -0
  537. package/src/functional/optional/impl/optional-zip.mts +40 -0
  538. package/src/functional/optional/impl/tag.mts +6 -0
  539. package/src/functional/optional/impl/types.mts +28 -0
  540. package/src/functional/optional/index.mts +1 -0
  541. package/src/functional/optional.test.mts +11 -9
  542. package/src/functional/pipe.mts +65 -118
  543. package/src/functional/pipe.test.mts +1 -1
  544. package/src/functional/result/impl/index.mts +23 -0
  545. package/src/functional/result/impl/result-err.mts +29 -0
  546. package/src/functional/result/impl/result-expect-to-be.mts +63 -0
  547. package/src/functional/result/impl/result-flat-map.mts +79 -0
  548. package/src/functional/result/impl/result-fold.mts +95 -0
  549. package/src/functional/result/impl/result-from-promise.mts +39 -0
  550. package/src/functional/result/impl/result-from-throwable.mts +42 -0
  551. package/src/functional/result/impl/result-is-err.mts +23 -0
  552. package/src/functional/result/impl/result-is-ok.mts +23 -0
  553. package/src/functional/result/impl/result-is-result.mts +23 -0
  554. package/src/functional/result/impl/result-map-err.mts +72 -0
  555. package/src/functional/result/impl/result-map.mts +73 -0
  556. package/src/functional/result/impl/result-ok.mts +29 -0
  557. package/src/functional/result/impl/result-or-else.mts +63 -0
  558. package/src/functional/result/impl/result-swap.mts +28 -0
  559. package/src/functional/result/impl/result-to-optional.mts +34 -0
  560. package/src/functional/result/impl/result-unwrap-err-or.mts +60 -0
  561. package/src/functional/result/impl/result-unwrap-err-throw.mts +53 -0
  562. package/src/functional/result/impl/result-unwrap-err.mts +36 -0
  563. package/src/functional/result/impl/result-unwrap-ok-or.mts +60 -0
  564. package/src/functional/result/impl/result-unwrap-ok.mts +35 -0
  565. package/src/functional/result/impl/result-unwrap-throw.mts +43 -0
  566. package/src/functional/result/impl/result-zip.mts +39 -0
  567. package/src/functional/result/impl/tag.mts +6 -0
  568. package/src/functional/result/impl/types.mts +35 -0
  569. package/src/functional/result/index.mts +1 -0
  570. package/src/functional/result.test.mts +14 -6
  571. package/src/globals.d.mts +95 -5
  572. package/src/guard/has-key.mts +23 -74
  573. package/src/guard/is-non-empty-string.mts +20 -87
  574. package/src/guard/is-non-empty-string.test.mts +1 -1
  575. package/src/guard/is-non-null-object.mts +14 -84
  576. package/src/guard/is-non-null-object.test.mts +4 -4
  577. package/src/guard/is-primitive.mts +13 -126
  578. package/src/guard/is-primitive.test.mts +4 -4
  579. package/src/guard/is-record.mts +21 -132
  580. package/src/guard/is-type.mts +201 -238
  581. package/src/guard/is-type.test.mts +10 -10
  582. package/src/guard/key-is-in.mts +22 -139
  583. package/src/index.mts +0 -2
  584. package/src/iterator/range.mts +29 -62
  585. package/src/json/json.mts +202 -134
  586. package/src/json/json.test.mts +1 -3
  587. package/src/number/branded-types/finite-number.mts +34 -166
  588. package/src/number/branded-types/int.mts +129 -127
  589. package/src/number/branded-types/int16.mts +31 -39
  590. package/src/number/branded-types/int16.test.mts +24 -24
  591. package/src/number/branded-types/int32.mts +31 -40
  592. package/src/number/branded-types/int32.test.mts +39 -39
  593. package/src/number/branded-types/non-negative-finite-number.mts +39 -47
  594. package/src/number/branded-types/non-negative-int16.mts +33 -43
  595. package/src/number/branded-types/non-negative-int16.test.mts +16 -16
  596. package/src/number/branded-types/non-negative-int32.mts +35 -44
  597. package/src/number/branded-types/non-negative-int32.test.mts +30 -30
  598. package/src/number/branded-types/non-zero-finite-number.mts +32 -47
  599. package/src/number/branded-types/non-zero-int.mts +22 -37
  600. package/src/number/branded-types/non-zero-int16.mts +36 -44
  601. package/src/number/branded-types/non-zero-int16.test.mts +26 -26
  602. package/src/number/branded-types/non-zero-int32.mts +38 -45
  603. package/src/number/branded-types/non-zero-int32.test.mts +45 -42
  604. package/src/number/branded-types/non-zero-safe-int.mts +48 -49
  605. package/src/number/branded-types/non-zero-uint16.mts +33 -44
  606. package/src/number/branded-types/non-zero-uint16.test.mts +16 -16
  607. package/src/number/branded-types/non-zero-uint32.mts +33 -44
  608. package/src/number/branded-types/non-zero-uint32.test.mts +28 -28
  609. package/src/number/branded-types/positive-finite-number.mts +37 -51
  610. package/src/number/branded-types/positive-int.mts +142 -132
  611. package/src/number/branded-types/positive-int16.mts +33 -44
  612. package/src/number/branded-types/positive-int16.test.mts +14 -14
  613. package/src/number/branded-types/positive-int32.mts +33 -44
  614. package/src/number/branded-types/positive-int32.test.mts +26 -26
  615. package/src/number/branded-types/positive-safe-int.mts +169 -43
  616. package/src/number/branded-types/positive-uint16.mts +33 -44
  617. package/src/number/branded-types/positive-uint16.test.mts +16 -16
  618. package/src/number/branded-types/positive-uint32.mts +35 -45
  619. package/src/number/branded-types/positive-uint32.test.mts +31 -28
  620. package/src/number/branded-types/safe-int.mts +151 -110
  621. package/src/number/branded-types/safe-uint.mts +34 -43
  622. package/src/number/branded-types/uint.mts +129 -38
  623. package/src/number/branded-types/uint16.mts +35 -43
  624. package/src/number/branded-types/uint16.test.mts +16 -16
  625. package/src/number/branded-types/uint32.mts +35 -77
  626. package/src/number/branded-types/uint32.test.mts +28 -28
  627. package/src/number/enum/int8.mts +42 -173
  628. package/src/number/enum/int8.test.mts +9 -9
  629. package/src/number/enum/uint8.mts +49 -158
  630. package/src/number/enum/uint8.test.mts +8 -8
  631. package/src/number/num.mts +157 -212
  632. package/src/number/num.test.mts +4 -4
  633. package/src/number/refined-number-utils.mts +109 -26
  634. package/src/object/object.mts +130 -212
  635. package/src/object/object.test.mts +29 -0
  636. package/src/others/cast-mutable.mts +13 -89
  637. package/src/others/cast-mutable.test.mts +80 -0
  638. package/src/others/cast-readonly.mts +13 -169
  639. package/src/others/if-then.mts +6 -83
  640. package/src/others/map-nullable.mts +12 -136
  641. package/src/others/map-nullable.test.mts +6 -6
  642. package/src/others/memoize-function.mts +14 -157
  643. package/src/others/tuple.mts +33 -151
  644. package/src/others/unknown-to-string.mts +12 -126
  645. package/src/others/unknown-to-string.test.mts +13 -1
  646. package/src/promise/promise.mts +34 -21
  647. package/src/promise/promise.test.mts +43 -0
  648. package/dist/array/array-utils.d.mts +0 -2956
  649. package/dist/array/array-utils.d.mts.map +0 -1
  650. package/dist/array/array-utils.mjs +0 -1838
  651. package/dist/array/array-utils.mjs.map +0 -1
  652. package/dist/functional/optional.d.mts +0 -360
  653. package/dist/functional/optional.d.mts.map +0 -1
  654. package/dist/functional/optional.mjs +0 -268
  655. package/dist/functional/optional.mjs.map +0 -1
  656. package/dist/functional/result.d.mts +0 -611
  657. package/dist/functional/result.d.mts.map +0 -1
  658. package/dist/functional/result.mjs +0 -545
  659. package/dist/functional/result.mjs.map +0 -1
  660. package/src/array/array-utils-search.test.mts +0 -169
  661. package/src/array/array-utils-slicing.test.mts +0 -274
  662. package/src/array/array-utils.mts +0 -4834
  663. package/src/functional/optional.mts +0 -591
  664. package/src/functional/result.mts +0 -986
@@ -1,146 +1,33 @@
1
1
  /**
2
2
  * Type guard that checks if a value is a primitive type.
3
3
  *
4
- * This function identifies JavaScript primitive types, which are immutable data types that are
5
- * not objects. The primitive types are: `string`, `number`, `boolean`, `undefined`, `symbol`,
6
- * `bigint`, and `null`.
4
+ * This function identifies JavaScript primitive types, which are immutable data
5
+ * types that are not objects. The primitive types are: `string`, `number`,
6
+ * `boolean`, `undefined`, `symbol`, `bigint`, and `null`.
7
7
  *
8
- * **Important Note:** Although `null` has `typeof null === "object"` due to a historical
9
- * JavaScript quirk, this function correctly identifies `null` as a primitive value.
8
+ * **Important Note:** Although `null` has `typeof null === "object"` due to a
9
+ * historical JavaScript quirk, this function correctly identifies `null` as a
10
+ * primitive value.
10
11
  *
11
12
  * **Type Narrowing Behavior:**
13
+ *
12
14
  * - Narrows the input type to `Primitive` (union of all primitive types)
13
15
  * - Excludes object types, arrays, functions, and other non-primitive values
14
16
  * - Includes `null` despite its misleading `typeof` result
15
17
  *
16
- * @param u - The value to check
17
- * @returns `true` if `u` is a primitive type, `false` otherwise.
18
- * When `true`, TypeScript narrows the type to `Primitive`.
19
- *
20
18
  * @example
21
- * Basic usage with different value types:
22
- * ```typescript
23
- * isPrimitive("hello"); // true (string)
24
- * isPrimitive(42); // true (number)
25
- * isPrimitive(true); // true (boolean)
26
- * isPrimitive(undefined); // true (undefined)
27
- * isPrimitive(Symbol('test')); // true (symbol)
28
- * isPrimitive(123n); // true (bigint)
29
- * isPrimitive(null); // true (null is primitive despite typeof quirk)
30
- *
31
- * isPrimitive({}); // false (object)
32
- * isPrimitive([]); // false (array)
33
- * isPrimitive(() => {}); // false (function)
34
- * isPrimitive(new Date()); // false (object instance)
35
- * isPrimitive(/regex/); // false (RegExp object)
36
- * ```
37
19
  *
38
- * @example
39
- * Type guard usage for separating primitives from objects:
40
- * ```typescript
41
- * const values: unknown[] = [
42
- * 'string',
43
- * 42,
44
- * true,
45
- * null,
46
- * undefined,
47
- * {},
48
- * [],
49
- * new Date()
50
- * ];
20
+ * ```ts
21
+ * const values: readonly unknown[] = [42, 'Ada', null, { id: 1 }] as const;
51
22
  *
52
23
  * const primitives = values.filter(isPrimitive);
53
- * const objects = values.filter(value => !isPrimitive(value));
54
- *
55
- * primitives.forEach(primitive => {
56
- * // primitive is now typed as Primitive
57
- * console.log('Primitive value:', primitive);
58
- * console.log('Type:', typeof primitive);
59
- * });
60
- * ```
61
- *
62
- * @example
63
- * Deep cloning detection - primitives don't need cloning:
64
- * ```typescript
65
- * function deepClone<T>(value: T): T {
66
- * if (isPrimitive(value)) {
67
- * // Primitives are immutable, return as-is
68
- * return value;
69
- * }
70
24
  *
71
- * // Handle object cloning for non-primitives
72
- * if (Array.isArray(value)) {
73
- * return value.map(deepClone) as T;
74
- * }
75
- *
76
- * if (isRecord(value)) {
77
- * const cloned = {} as T;
78
- * for (const key in value) {
79
- * if (Object.hasOwn(value, key)) {
80
- * cloned[key] = deepClone(value[key]);
81
- * }
82
- * }
83
- * return cloned;
84
- * }
85
- *
86
- * // For other object types, return as-is or implement specific cloning
87
- * return value;
88
- * }
89
- * ```
90
- *
91
- * @example
92
- * Serialization helpers:
93
- * ```typescript
94
- * function canSerializeDirectly(value: unknown): boolean {
95
- * if (isPrimitive(value)) {
96
- * // Most primitives can be serialized directly
97
- * return typeof value !== 'symbol' && typeof value !== 'bigint';
98
- * }
99
- * return false;
100
- * }
101
- *
102
- * function safeStringify(value: unknown): string {
103
- * if (isPrimitive(value)) {
104
- * if (value === null) return 'null';
105
- * if (value === undefined) return 'undefined';
106
- * if (typeof value === 'symbol') return value.toString();
107
- * if (typeof value === 'bigint') return value.toString() + 'n';
108
- * return String(value);
109
- * }
110
- *
111
- * return JSON.stringify(value);
112
- * }
25
+ * assert.deepStrictEqual(primitives, [42, 'Ada', null]);
113
26
  * ```
114
27
  *
115
- * @example
116
- * Type narrowing in conditional logic:
117
- * ```typescript
118
- * function processValue(value: unknown): string {
119
- * if (isPrimitive(value)) {
120
- * // value is now Primitive type
121
- * switch (typeof value) {
122
- * case 'string':
123
- * return `String: ${value}`;
124
- * case 'number':
125
- * return `Number: ${value}`;
126
- * case 'boolean':
127
- * return `Boolean: ${value}`;
128
- * case 'undefined':
129
- * return 'Undefined';
130
- * case 'symbol':
131
- * return `Symbol: ${value.description || 'unnamed'}`;
132
- * case 'bigint':
133
- * return `BigInt: ${value}n`;
134
- * case 'object': // This is null
135
- * return 'Null';
136
- * default:
137
- * return 'Unknown primitive';
138
- * }
139
- * } else {
140
- * return `Object: ${value?.constructor?.name || 'Unknown'}`;
141
- * }
142
- * }
143
- * ```
28
+ * @param u - The value to check
29
+ * @returns `true` if `u` is a primitive type, `false` otherwise. When `true`,
30
+ * TypeScript narrows the type to `Primitive`.
144
31
  */
145
32
  export declare const isPrimitive: (u: unknown) => u is Primitive;
146
33
  //# sourceMappingURL=is-primitive.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"is-primitive.d.mts","sourceRoot":"","sources":["../../src/guard/is-primitive.mts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+IG;AACH,eAAO,MAAM,WAAW,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,SAa7C,CAAC"}
1
+ {"version":3,"file":"is-primitive.d.mts","sourceRoot":"","sources":["../../src/guard/is-primitive.mts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,WAAW,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,SAa7C,CAAC"}
@@ -1,146 +1,33 @@
1
1
  /**
2
2
  * Type guard that checks if a value is a primitive type.
3
3
  *
4
- * This function identifies JavaScript primitive types, which are immutable data types that are
5
- * not objects. The primitive types are: `string`, `number`, `boolean`, `undefined`, `symbol`,
6
- * `bigint`, and `null`.
4
+ * This function identifies JavaScript primitive types, which are immutable data
5
+ * types that are not objects. The primitive types are: `string`, `number`,
6
+ * `boolean`, `undefined`, `symbol`, `bigint`, and `null`.
7
7
  *
8
- * **Important Note:** Although `null` has `typeof null === "object"` due to a historical
9
- * JavaScript quirk, this function correctly identifies `null` as a primitive value.
8
+ * **Important Note:** Although `null` has `typeof null === "object"` due to a
9
+ * historical JavaScript quirk, this function correctly identifies `null` as a
10
+ * primitive value.
10
11
  *
11
12
  * **Type Narrowing Behavior:**
13
+ *
12
14
  * - Narrows the input type to `Primitive` (union of all primitive types)
13
15
  * - Excludes object types, arrays, functions, and other non-primitive values
14
16
  * - Includes `null` despite its misleading `typeof` result
15
17
  *
16
- * @param u - The value to check
17
- * @returns `true` if `u` is a primitive type, `false` otherwise.
18
- * When `true`, TypeScript narrows the type to `Primitive`.
19
- *
20
18
  * @example
21
- * Basic usage with different value types:
22
- * ```typescript
23
- * isPrimitive("hello"); // true (string)
24
- * isPrimitive(42); // true (number)
25
- * isPrimitive(true); // true (boolean)
26
- * isPrimitive(undefined); // true (undefined)
27
- * isPrimitive(Symbol('test')); // true (symbol)
28
- * isPrimitive(123n); // true (bigint)
29
- * isPrimitive(null); // true (null is primitive despite typeof quirk)
30
- *
31
- * isPrimitive({}); // false (object)
32
- * isPrimitive([]); // false (array)
33
- * isPrimitive(() => {}); // false (function)
34
- * isPrimitive(new Date()); // false (object instance)
35
- * isPrimitive(/regex/); // false (RegExp object)
36
- * ```
37
19
  *
38
- * @example
39
- * Type guard usage for separating primitives from objects:
40
- * ```typescript
41
- * const values: unknown[] = [
42
- * 'string',
43
- * 42,
44
- * true,
45
- * null,
46
- * undefined,
47
- * {},
48
- * [],
49
- * new Date()
50
- * ];
20
+ * ```ts
21
+ * const values: readonly unknown[] = [42, 'Ada', null, { id: 1 }] as const;
51
22
  *
52
23
  * const primitives = values.filter(isPrimitive);
53
- * const objects = values.filter(value => !isPrimitive(value));
54
- *
55
- * primitives.forEach(primitive => {
56
- * // primitive is now typed as Primitive
57
- * console.log('Primitive value:', primitive);
58
- * console.log('Type:', typeof primitive);
59
- * });
60
- * ```
61
- *
62
- * @example
63
- * Deep cloning detection - primitives don't need cloning:
64
- * ```typescript
65
- * function deepClone<T>(value: T): T {
66
- * if (isPrimitive(value)) {
67
- * // Primitives are immutable, return as-is
68
- * return value;
69
- * }
70
24
  *
71
- * // Handle object cloning for non-primitives
72
- * if (Array.isArray(value)) {
73
- * return value.map(deepClone) as T;
74
- * }
75
- *
76
- * if (isRecord(value)) {
77
- * const cloned = {} as T;
78
- * for (const key in value) {
79
- * if (Object.hasOwn(value, key)) {
80
- * cloned[key] = deepClone(value[key]);
81
- * }
82
- * }
83
- * return cloned;
84
- * }
85
- *
86
- * // For other object types, return as-is or implement specific cloning
87
- * return value;
88
- * }
89
- * ```
90
- *
91
- * @example
92
- * Serialization helpers:
93
- * ```typescript
94
- * function canSerializeDirectly(value: unknown): boolean {
95
- * if (isPrimitive(value)) {
96
- * // Most primitives can be serialized directly
97
- * return typeof value !== 'symbol' && typeof value !== 'bigint';
98
- * }
99
- * return false;
100
- * }
101
- *
102
- * function safeStringify(value: unknown): string {
103
- * if (isPrimitive(value)) {
104
- * if (value === null) return 'null';
105
- * if (value === undefined) return 'undefined';
106
- * if (typeof value === 'symbol') return value.toString();
107
- * if (typeof value === 'bigint') return value.toString() + 'n';
108
- * return String(value);
109
- * }
110
- *
111
- * return JSON.stringify(value);
112
- * }
25
+ * assert.deepStrictEqual(primitives, [42, 'Ada', null]);
113
26
  * ```
114
27
  *
115
- * @example
116
- * Type narrowing in conditional logic:
117
- * ```typescript
118
- * function processValue(value: unknown): string {
119
- * if (isPrimitive(value)) {
120
- * // value is now Primitive type
121
- * switch (typeof value) {
122
- * case 'string':
123
- * return `String: ${value}`;
124
- * case 'number':
125
- * return `Number: ${value}`;
126
- * case 'boolean':
127
- * return `Boolean: ${value}`;
128
- * case 'undefined':
129
- * return 'Undefined';
130
- * case 'symbol':
131
- * return `Symbol: ${value.description || 'unnamed'}`;
132
- * case 'bigint':
133
- * return `BigInt: ${value}n`;
134
- * case 'object': // This is null
135
- * return 'Null';
136
- * default:
137
- * return 'Unknown primitive';
138
- * }
139
- * } else {
140
- * return `Object: ${value?.constructor?.name || 'Unknown'}`;
141
- * }
142
- * }
143
- * ```
28
+ * @param u - The value to check
29
+ * @returns `true` if `u` is a primitive type, `false` otherwise. When `true`,
30
+ * TypeScript narrows the type to `Primitive`.
144
31
  */
145
32
  const isPrimitive = (u) => {
146
33
  switch (typeof u) {
@@ -1 +1 @@
1
- {"version":3,"file":"is-primitive.mjs","sources":["../../src/guard/is-primitive.mts"],"sourcesContent":[null],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+IG;AACI,MAAM,WAAW,GAAG,CAAC,CAAU,KAAoB;IACxD,QAAQ,OAAO,CAAC;AACd,QAAA,KAAK,QAAQ;AACb,QAAA,KAAK,QAAQ;AACb,QAAA,KAAK,SAAS;AACd,QAAA,KAAK,WAAW;AAChB,QAAA,KAAK,QAAQ;AACb,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,IAAI;AACb,QAAA,KAAK,UAAU;AACf,QAAA,KAAK,QAAQ;YACX,OAAO,CAAC,KAAK,IAAI;;AAEvB;;;;"}
1
+ {"version":3,"file":"is-primitive.mjs","sources":["../../src/guard/is-primitive.mts"],"sourcesContent":[null],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BG;AACI,MAAM,WAAW,GAAG,CAAC,CAAU,KAAoB;IACxD,QAAQ,OAAO,CAAC;AACd,QAAA,KAAK,QAAQ;AACb,QAAA,KAAK,QAAQ;AACb,QAAA,KAAK,SAAS;AACd,QAAA,KAAK,WAAW;AAChB,QAAA,KAAK,QAAQ;AACb,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,IAAI;AACb,QAAA,KAAK,UAAU;AACf,QAAA,KAAK,QAAQ;YACX,OAAO,CAAC,KAAK,IAAI;;AAEvB;;;;"}
@@ -1,149 +1,38 @@
1
1
  /**
2
- * Type guard that checks if a value is a plain object (record) - a non-null object that is not an array.
2
+ * Type guard that checks if a value is a plain object (record) - a non-null
3
+ * object that is not an array.
3
4
  *
4
- * This function is useful for identifying "plain" JavaScript objects (also called records or
5
- * dictionaries) - objects that are typically used as key-value collections. It excludes arrays,
6
- * functions, and special object types like Date, RegExp, etc., focusing on objects that can be
7
- * safely treated as property collections.
5
+ * This function is useful for identifying "plain" JavaScript objects (also
6
+ * called records or dictionaries) - objects that are typically used as
7
+ * key-value collections. It excludes arrays, functions, and special object
8
+ * types like Date, RegExp, etc., focusing on objects that can be safely treated
9
+ * as property collections.
8
10
  *
9
11
  * **Type Narrowing Behavior:**
10
- * - Narrows `unknown` to `UnknownRecord` (equivalent to `Record<PropertyKey, unknown>`)
12
+ *
13
+ * - Narrows `unknown` to `UnknownRecord` (equivalent to `Record<PropertyKey,
14
+ * unknown>`)
11
15
  * - Excludes `null`, `undefined`, primitives, arrays, and functions
12
- * - Returns `true` for plain objects `{}`, object literals, and objects created with `Object.create()`
16
+ * - Returns `true` for plain objects `{}`, object literals, and objects created
17
+ * with `Object.create()`
13
18
  * - Returns `false` for arrays, even though they are technically objects
14
19
  *
15
- * **Implementation:** Uses `isNonNullObject()` to check for objects, then `Array.isArray()` to exclude arrays.
16
- *
17
- * @param u - The value to check
18
- * @returns `true` if `u` is a non-null object and not an array, `false` otherwise.
19
- * When `true`, TypeScript narrows the type to `UnknownRecord`.
20
- *
21
- * @example
22
- * Basic usage with different value types:
23
- * ```typescript
24
- * isRecord({}); // true (empty object)
25
- * isRecord({ name: 'John' }); // true (object literal)
26
- * isRecord(Object.create(null)); // true (object created with Object.create)
27
- * isRecord(new Object()); // true (object constructor)
28
- *
29
- * isRecord([]); // false (array)
30
- * isRecord([1, 2, 3]); // false (array with elements)
31
- * isRecord(null); // false (null)
32
- * isRecord(undefined); // false (undefined)
33
- * isRecord("string"); // false (primitive)
34
- * isRecord(42); // false (primitive)
35
- * isRecord(() => {}); // false (function)
36
- * isRecord(new Date()); // false (Date object - not a plain record)
37
- * isRecord(/regex/); // false (RegExp object)
38
- * ```
39
- *
40
- * @example
41
- * Type guard usage for safe property access:
42
- * ```typescript
43
- * const apiResponse: unknown = await fetchUserData();
44
- *
45
- * if (isRecord(apiResponse)) {
46
- * // apiResponse is now typed as UnknownRecord
47
- * console.log('Response keys:', Object.keys(apiResponse));
48
- *
49
- * // Safe to access properties (though values are still unknown)
50
- * const userId = apiResponse.id; // Type: unknown
51
- * const userName = apiResponse.name; // Type: unknown
52
- *
53
- * // You can combine with other type guards for further narrowing
54
- * if (hasKey(apiResponse, 'id') && isString(apiResponse.id)) {
55
- * console.log('User ID:', apiResponse.id); // Now safely typed as string
56
- * }
57
- * } else {
58
- * console.log('API response is not a valid object');
59
- * }
60
- * ```
61
- *
62
- * @example
63
- * Filtering mixed arrays to find plain objects:
64
- * ```typescript
65
- * const mixedData: unknown[] = [
66
- * { type: 'user', name: 'Alice' },
67
- * [1, 2, 3],
68
- * 'string',
69
- * { type: 'admin', permissions: ['read', 'write'] },
70
- * new Date(),
71
- * null,
72
- * { id: 123 }
73
- * ];
74
- *
75
- * const records = mixedData.filter(isRecord);
76
- * // records contains only the plain objects:
77
- * // [{ type: 'user', name: 'Alice' }, { type: 'admin', permissions: [...] }, { id: 123 }]
78
- *
79
- * records.forEach(record => {
80
- * // Each record is guaranteed to be UnknownRecord
81
- * const keys = Object.keys(record);
82
- * console.log('Object keys:', keys);
83
- * });
84
- * ```
20
+ * **Implementation:** Uses `isNonNullObject()` to check for objects, then
21
+ * `Array.isArray()` to exclude arrays.
85
22
  *
86
23
  * @example
87
- * Progressive validation of nested structures:
88
- * ```typescript
89
- * interface User {
90
- * id: string;
91
- * profile: {
92
- * name: string;
93
- * email: string;
94
- * };
95
- * }
96
- *
97
- * function validateUser(data: unknown): User | null {
98
- * if (!isRecord(data)) {
99
- * return null;
100
- * }
101
- *
102
- * // data is now UnknownRecord
103
- * if (!hasKey(data, 'id') || !isString(data.id)) {
104
- * return null;
105
- * }
106
24
  *
107
- * if (!hasKey(data, 'profile') || !isRecord(data.profile)) {
108
- * return null;
109
- * }
25
+ * ```ts
26
+ * const entries: unknown[] = [{ id: 1 }, ['tuple']];
110
27
  *
111
- * const profile = data.profile;
112
- * if (!hasKey(profile, 'name') || !isString(profile.name) ||
113
- * !hasKey(profile, 'email') || !isString(profile.email)) {
114
- * return null;
115
- * }
28
+ * const records = entries.filter(isRecord);
116
29
  *
117
- * return {
118
- * id: data.id,
119
- * profile: {
120
- * name: profile.name,
121
- * email: profile.email
122
- * }
123
- * };
124
- * }
125
- * ```
126
- *
127
- * @example
128
- * Object transformation and mapping:
129
- * ```typescript
130
- * function transformRecords(data: unknown[]): Record<string, unknown>[] {
131
- * return data
132
- * .filter(isRecord) // Keep only plain objects
133
- * .map(record => {
134
- * // Transform each record
135
- * const transformed: Record<string, unknown> = {};
136
- *
137
- * for (const [key, value] of Object.entries(record)) {
138
- * // Apply some transformation logic
139
- * transformed[key.toLowerCase()] = value;
140
- * }
141
- *
142
- * return transformed;
143
- * });
144
- * }
30
+ * assert.deepStrictEqual(records, [{ id: 1 }]);
145
31
  * ```
146
32
  *
33
+ * @param u - The value to check
34
+ * @returns `true` if `u` is a non-null object and not an array, `false`
35
+ * otherwise. When `true`, TypeScript narrows the type to `UnknownRecord`.
147
36
  * @see {@link isNonNullObject} - For checking any object type (includes arrays)
148
37
  * @see {@link hasKey} - For checking if a record has specific keys
149
38
  */
@@ -1 +1 @@
1
- {"version":3,"file":"is-record.d.mts","sourceRoot":"","sources":["../../src/guard/is-record.mts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoJG;AACH,eAAO,MAAM,QAAQ,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,aACF,CAAC"}
1
+ {"version":3,"file":"is-record.d.mts","sourceRoot":"","sources":["../../src/guard/is-record.mts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,eAAO,MAAM,QAAQ,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,aACF,CAAC"}
@@ -1,151 +1,40 @@
1
1
  import { isNonNullObject } from './is-non-null-object.mjs';
2
2
 
3
3
  /**
4
- * Type guard that checks if a value is a plain object (record) - a non-null object that is not an array.
4
+ * Type guard that checks if a value is a plain object (record) - a non-null
5
+ * object that is not an array.
5
6
  *
6
- * This function is useful for identifying "plain" JavaScript objects (also called records or
7
- * dictionaries) - objects that are typically used as key-value collections. It excludes arrays,
8
- * functions, and special object types like Date, RegExp, etc., focusing on objects that can be
9
- * safely treated as property collections.
7
+ * This function is useful for identifying "plain" JavaScript objects (also
8
+ * called records or dictionaries) - objects that are typically used as
9
+ * key-value collections. It excludes arrays, functions, and special object
10
+ * types like Date, RegExp, etc., focusing on objects that can be safely treated
11
+ * as property collections.
10
12
  *
11
13
  * **Type Narrowing Behavior:**
12
- * - Narrows `unknown` to `UnknownRecord` (equivalent to `Record<PropertyKey, unknown>`)
14
+ *
15
+ * - Narrows `unknown` to `UnknownRecord` (equivalent to `Record<PropertyKey,
16
+ * unknown>`)
13
17
  * - Excludes `null`, `undefined`, primitives, arrays, and functions
14
- * - Returns `true` for plain objects `{}`, object literals, and objects created with `Object.create()`
18
+ * - Returns `true` for plain objects `{}`, object literals, and objects created
19
+ * with `Object.create()`
15
20
  * - Returns `false` for arrays, even though they are technically objects
16
21
  *
17
- * **Implementation:** Uses `isNonNullObject()` to check for objects, then `Array.isArray()` to exclude arrays.
18
- *
19
- * @param u - The value to check
20
- * @returns `true` if `u` is a non-null object and not an array, `false` otherwise.
21
- * When `true`, TypeScript narrows the type to `UnknownRecord`.
22
- *
23
- * @example
24
- * Basic usage with different value types:
25
- * ```typescript
26
- * isRecord({}); // true (empty object)
27
- * isRecord({ name: 'John' }); // true (object literal)
28
- * isRecord(Object.create(null)); // true (object created with Object.create)
29
- * isRecord(new Object()); // true (object constructor)
30
- *
31
- * isRecord([]); // false (array)
32
- * isRecord([1, 2, 3]); // false (array with elements)
33
- * isRecord(null); // false (null)
34
- * isRecord(undefined); // false (undefined)
35
- * isRecord("string"); // false (primitive)
36
- * isRecord(42); // false (primitive)
37
- * isRecord(() => {}); // false (function)
38
- * isRecord(new Date()); // false (Date object - not a plain record)
39
- * isRecord(/regex/); // false (RegExp object)
40
- * ```
41
- *
42
- * @example
43
- * Type guard usage for safe property access:
44
- * ```typescript
45
- * const apiResponse: unknown = await fetchUserData();
46
- *
47
- * if (isRecord(apiResponse)) {
48
- * // apiResponse is now typed as UnknownRecord
49
- * console.log('Response keys:', Object.keys(apiResponse));
50
- *
51
- * // Safe to access properties (though values are still unknown)
52
- * const userId = apiResponse.id; // Type: unknown
53
- * const userName = apiResponse.name; // Type: unknown
54
- *
55
- * // You can combine with other type guards for further narrowing
56
- * if (hasKey(apiResponse, 'id') && isString(apiResponse.id)) {
57
- * console.log('User ID:', apiResponse.id); // Now safely typed as string
58
- * }
59
- * } else {
60
- * console.log('API response is not a valid object');
61
- * }
62
- * ```
63
- *
64
- * @example
65
- * Filtering mixed arrays to find plain objects:
66
- * ```typescript
67
- * const mixedData: unknown[] = [
68
- * { type: 'user', name: 'Alice' },
69
- * [1, 2, 3],
70
- * 'string',
71
- * { type: 'admin', permissions: ['read', 'write'] },
72
- * new Date(),
73
- * null,
74
- * { id: 123 }
75
- * ];
76
- *
77
- * const records = mixedData.filter(isRecord);
78
- * // records contains only the plain objects:
79
- * // [{ type: 'user', name: 'Alice' }, { type: 'admin', permissions: [...] }, { id: 123 }]
80
- *
81
- * records.forEach(record => {
82
- * // Each record is guaranteed to be UnknownRecord
83
- * const keys = Object.keys(record);
84
- * console.log('Object keys:', keys);
85
- * });
86
- * ```
22
+ * **Implementation:** Uses `isNonNullObject()` to check for objects, then
23
+ * `Array.isArray()` to exclude arrays.
87
24
  *
88
25
  * @example
89
- * Progressive validation of nested structures:
90
- * ```typescript
91
- * interface User {
92
- * id: string;
93
- * profile: {
94
- * name: string;
95
- * email: string;
96
- * };
97
- * }
98
- *
99
- * function validateUser(data: unknown): User | null {
100
- * if (!isRecord(data)) {
101
- * return null;
102
- * }
103
- *
104
- * // data is now UnknownRecord
105
- * if (!hasKey(data, 'id') || !isString(data.id)) {
106
- * return null;
107
- * }
108
26
  *
109
- * if (!hasKey(data, 'profile') || !isRecord(data.profile)) {
110
- * return null;
111
- * }
27
+ * ```ts
28
+ * const entries: unknown[] = [{ id: 1 }, ['tuple']];
112
29
  *
113
- * const profile = data.profile;
114
- * if (!hasKey(profile, 'name') || !isString(profile.name) ||
115
- * !hasKey(profile, 'email') || !isString(profile.email)) {
116
- * return null;
117
- * }
30
+ * const records = entries.filter(isRecord);
118
31
  *
119
- * return {
120
- * id: data.id,
121
- * profile: {
122
- * name: profile.name,
123
- * email: profile.email
124
- * }
125
- * };
126
- * }
127
- * ```
128
- *
129
- * @example
130
- * Object transformation and mapping:
131
- * ```typescript
132
- * function transformRecords(data: unknown[]): Record<string, unknown>[] {
133
- * return data
134
- * .filter(isRecord) // Keep only plain objects
135
- * .map(record => {
136
- * // Transform each record
137
- * const transformed: Record<string, unknown> = {};
138
- *
139
- * for (const [key, value] of Object.entries(record)) {
140
- * // Apply some transformation logic
141
- * transformed[key.toLowerCase()] = value;
142
- * }
143
- *
144
- * return transformed;
145
- * });
146
- * }
32
+ * assert.deepStrictEqual(records, [{ id: 1 }]);
147
33
  * ```
148
34
  *
35
+ * @param u - The value to check
36
+ * @returns `true` if `u` is a non-null object and not an array, `false`
37
+ * otherwise. When `true`, TypeScript narrows the type to `UnknownRecord`.
149
38
  * @see {@link isNonNullObject} - For checking any object type (includes arrays)
150
39
  * @see {@link hasKey} - For checking if a record has specific keys
151
40
  */
@@ -1 +1 @@
1
- {"version":3,"file":"is-record.mjs","sources":["../../src/guard/is-record.mts"],"sourcesContent":[null],"names":[],"mappings":";;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoJG;MACU,QAAQ,GAAG,CAAC,CAAU,KACjC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;;;;"}
1
+ {"version":3,"file":"is-record.mjs","sources":["../../src/guard/is-record.mts"],"sourcesContent":[null],"names":[],"mappings":";;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCG;MACU,QAAQ,GAAG,CAAC,CAAU,KACjC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;;;;"}