ts-data-forge 3.2.0 → 3.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (426) hide show
  1. package/README.md +45 -21
  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 +61 -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 +214 -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 +160 -0
  21. package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -0
  22. package/dist/array/impl/array-utils-search.d.mts +179 -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 +331 -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 -253
  59. package/dist/collections/imap-mapped.d.mts.map +1 -1
  60. package/dist/collections/imap-mapped.mjs +33 -164
  61. package/dist/collections/imap-mapped.mjs.map +1 -1
  62. package/dist/collections/imap.d.mts +436 -163
  63. package/dist/collections/imap.d.mts.map +1 -1
  64. package/dist/collections/imap.mjs +74 -94
  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 -135
  75. package/dist/collections/queue.d.mts.map +1 -1
  76. package/dist/collections/queue.mjs +55 -156
  77. package/dist/collections/queue.mjs.map +1 -1
  78. package/dist/collections/stack.d.mts +154 -154
  79. package/dist/collections/stack.d.mts.map +1 -1
  80. package/dist/collections/stack.mjs +54 -203
  81. package/dist/collections/stack.mjs.map +1 -1
  82. package/dist/entry-point.d.mts +3 -0
  83. package/dist/entry-point.d.mts.map +1 -0
  84. package/dist/entry-point.mjs +62 -0
  85. package/dist/entry-point.mjs.map +1 -0
  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/match.d.mts +35 -140
  91. package/dist/functional/match.d.mts.map +1 -1
  92. package/dist/functional/match.mjs.map +1 -1
  93. package/dist/functional/optional.d.mts +282 -160
  94. package/dist/functional/optional.d.mts.map +1 -1
  95. package/dist/functional/optional.mjs +131 -71
  96. package/dist/functional/optional.mjs.map +1 -1
  97. package/dist/functional/pipe.d.mts +59 -113
  98. package/dist/functional/pipe.d.mts.map +1 -1
  99. package/dist/functional/pipe.mjs.map +1 -1
  100. package/dist/functional/result.d.mts +433 -332
  101. package/dist/functional/result.d.mts.map +1 -1
  102. package/dist/functional/result.mjs +233 -239
  103. package/dist/functional/result.mjs.map +1 -1
  104. package/dist/globals.d.mts +12 -5
  105. package/dist/guard/has-key.d.mts +23 -74
  106. package/dist/guard/has-key.d.mts.map +1 -1
  107. package/dist/guard/has-key.mjs +23 -74
  108. package/dist/guard/has-key.mjs.map +1 -1
  109. package/dist/guard/is-non-empty-string.d.mts +20 -87
  110. package/dist/guard/is-non-empty-string.d.mts.map +1 -1
  111. package/dist/guard/is-non-empty-string.mjs +20 -87
  112. package/dist/guard/is-non-empty-string.mjs.map +1 -1
  113. package/dist/guard/is-non-null-object.d.mts +14 -84
  114. package/dist/guard/is-non-null-object.d.mts.map +1 -1
  115. package/dist/guard/is-non-null-object.mjs +14 -84
  116. package/dist/guard/is-non-null-object.mjs.map +1 -1
  117. package/dist/guard/is-primitive.d.mts +13 -126
  118. package/dist/guard/is-primitive.d.mts.map +1 -1
  119. package/dist/guard/is-primitive.mjs +13 -126
  120. package/dist/guard/is-primitive.mjs.map +1 -1
  121. package/dist/guard/is-record.d.mts +21 -132
  122. package/dist/guard/is-record.d.mts.map +1 -1
  123. package/dist/guard/is-record.mjs +21 -132
  124. package/dist/guard/is-record.mjs.map +1 -1
  125. package/dist/guard/is-type.d.mts +201 -238
  126. package/dist/guard/is-type.d.mts.map +1 -1
  127. package/dist/guard/is-type.mjs +201 -238
  128. package/dist/guard/is-type.mjs.map +1 -1
  129. package/dist/guard/key-is-in.d.mts +22 -139
  130. package/dist/guard/key-is-in.d.mts.map +1 -1
  131. package/dist/guard/key-is-in.mjs +22 -139
  132. package/dist/guard/key-is-in.mjs.map +1 -1
  133. package/dist/index.d.mts +0 -1
  134. package/dist/index.d.mts.map +1 -1
  135. package/dist/index.mjs +0 -1
  136. package/dist/index.mjs.map +1 -1
  137. package/dist/iterator/range.d.mts +29 -62
  138. package/dist/iterator/range.d.mts.map +1 -1
  139. package/dist/iterator/range.mjs.map +1 -1
  140. package/dist/json/json.d.mts +191 -121
  141. package/dist/json/json.d.mts.map +1 -1
  142. package/dist/json/json.mjs +238 -136
  143. package/dist/json/json.mjs.map +1 -1
  144. package/dist/number/branded-types/finite-number.d.mts +24 -156
  145. package/dist/number/branded-types/finite-number.d.mts.map +1 -1
  146. package/dist/number/branded-types/finite-number.mjs +27 -159
  147. package/dist/number/branded-types/finite-number.mjs.map +1 -1
  148. package/dist/number/branded-types/int.d.mts +122 -120
  149. package/dist/number/branded-types/int.d.mts.map +1 -1
  150. package/dist/number/branded-types/int.mjs +122 -120
  151. package/dist/number/branded-types/int.mjs.map +1 -1
  152. package/dist/number/branded-types/int16.d.mts +22 -30
  153. package/dist/number/branded-types/int16.d.mts.map +1 -1
  154. package/dist/number/branded-types/int16.mjs +22 -30
  155. package/dist/number/branded-types/int16.mjs.map +1 -1
  156. package/dist/number/branded-types/int32.d.mts +22 -31
  157. package/dist/number/branded-types/int32.d.mts.map +1 -1
  158. package/dist/number/branded-types/int32.mjs +22 -31
  159. package/dist/number/branded-types/int32.mjs.map +1 -1
  160. package/dist/number/branded-types/non-negative-finite-number.d.mts +28 -36
  161. package/dist/number/branded-types/non-negative-finite-number.d.mts.map +1 -1
  162. package/dist/number/branded-types/non-negative-finite-number.mjs +31 -39
  163. package/dist/number/branded-types/non-negative-finite-number.mjs.map +1 -1
  164. package/dist/number/branded-types/non-negative-int16.d.mts +24 -34
  165. package/dist/number/branded-types/non-negative-int16.d.mts.map +1 -1
  166. package/dist/number/branded-types/non-negative-int16.mjs +24 -34
  167. package/dist/number/branded-types/non-negative-int16.mjs.map +1 -1
  168. package/dist/number/branded-types/non-negative-int32.d.mts +26 -35
  169. package/dist/number/branded-types/non-negative-int32.d.mts.map +1 -1
  170. package/dist/number/branded-types/non-negative-int32.mjs +26 -35
  171. package/dist/number/branded-types/non-negative-int32.mjs.map +1 -1
  172. package/dist/number/branded-types/non-zero-finite-number.d.mts +22 -37
  173. package/dist/number/branded-types/non-zero-finite-number.d.mts.map +1 -1
  174. package/dist/number/branded-types/non-zero-finite-number.mjs +25 -40
  175. package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -1
  176. package/dist/number/branded-types/non-zero-int.d.mts +15 -30
  177. package/dist/number/branded-types/non-zero-int.d.mts.map +1 -1
  178. package/dist/number/branded-types/non-zero-int.mjs +15 -30
  179. package/dist/number/branded-types/non-zero-int.mjs.map +1 -1
  180. package/dist/number/branded-types/non-zero-int16.d.mts +27 -35
  181. package/dist/number/branded-types/non-zero-int16.d.mts.map +1 -1
  182. package/dist/number/branded-types/non-zero-int16.mjs +27 -35
  183. package/dist/number/branded-types/non-zero-int16.mjs.map +1 -1
  184. package/dist/number/branded-types/non-zero-int32.d.mts +29 -36
  185. package/dist/number/branded-types/non-zero-int32.d.mts.map +1 -1
  186. package/dist/number/branded-types/non-zero-int32.mjs +29 -36
  187. package/dist/number/branded-types/non-zero-int32.mjs.map +1 -1
  188. package/dist/number/branded-types/non-zero-safe-int.d.mts +37 -38
  189. package/dist/number/branded-types/non-zero-safe-int.d.mts.map +1 -1
  190. package/dist/number/branded-types/non-zero-safe-int.mjs +39 -40
  191. package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -1
  192. package/dist/number/branded-types/non-zero-uint16.d.mts +24 -35
  193. package/dist/number/branded-types/non-zero-uint16.d.mts.map +1 -1
  194. package/dist/number/branded-types/non-zero-uint16.mjs +24 -35
  195. package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -1
  196. package/dist/number/branded-types/non-zero-uint32.d.mts +24 -35
  197. package/dist/number/branded-types/non-zero-uint32.d.mts.map +1 -1
  198. package/dist/number/branded-types/non-zero-uint32.mjs +24 -35
  199. package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -1
  200. package/dist/number/branded-types/positive-finite-number.d.mts +26 -40
  201. package/dist/number/branded-types/positive-finite-number.d.mts.map +1 -1
  202. package/dist/number/branded-types/positive-finite-number.mjs +29 -43
  203. package/dist/number/branded-types/positive-finite-number.mjs.map +1 -1
  204. package/dist/number/branded-types/positive-int.d.mts +133 -123
  205. package/dist/number/branded-types/positive-int.d.mts.map +1 -1
  206. package/dist/number/branded-types/positive-int.mjs +133 -123
  207. package/dist/number/branded-types/positive-int.mjs.map +1 -1
  208. package/dist/number/branded-types/positive-int16.d.mts +24 -35
  209. package/dist/number/branded-types/positive-int16.d.mts.map +1 -1
  210. package/dist/number/branded-types/positive-int16.mjs +24 -35
  211. package/dist/number/branded-types/positive-int16.mjs.map +1 -1
  212. package/dist/number/branded-types/positive-int32.d.mts +24 -35
  213. package/dist/number/branded-types/positive-int32.d.mts.map +1 -1
  214. package/dist/number/branded-types/positive-int32.mjs +24 -35
  215. package/dist/number/branded-types/positive-int32.mjs.map +1 -1
  216. package/dist/number/branded-types/positive-safe-int.d.mts +159 -33
  217. package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -1
  218. package/dist/number/branded-types/positive-safe-int.mjs +160 -34
  219. package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
  220. package/dist/number/branded-types/positive-uint16.d.mts +24 -35
  221. package/dist/number/branded-types/positive-uint16.d.mts.map +1 -1
  222. package/dist/number/branded-types/positive-uint16.mjs +24 -35
  223. package/dist/number/branded-types/positive-uint16.mjs.map +1 -1
  224. package/dist/number/branded-types/positive-uint32.d.mts +26 -36
  225. package/dist/number/branded-types/positive-uint32.d.mts.map +1 -1
  226. package/dist/number/branded-types/positive-uint32.mjs +26 -36
  227. package/dist/number/branded-types/positive-uint32.mjs.map +1 -1
  228. package/dist/number/branded-types/safe-int.d.mts +140 -99
  229. package/dist/number/branded-types/safe-int.d.mts.map +1 -1
  230. package/dist/number/branded-types/safe-int.mjs +142 -101
  231. package/dist/number/branded-types/safe-int.mjs.map +1 -1
  232. package/dist/number/branded-types/safe-uint.d.mts +24 -33
  233. package/dist/number/branded-types/safe-uint.d.mts.map +1 -1
  234. package/dist/number/branded-types/safe-uint.mjs +25 -34
  235. package/dist/number/branded-types/safe-uint.mjs.map +1 -1
  236. package/dist/number/branded-types/uint.d.mts +121 -30
  237. package/dist/number/branded-types/uint.d.mts.map +1 -1
  238. package/dist/number/branded-types/uint.mjs +121 -30
  239. package/dist/number/branded-types/uint.mjs.map +1 -1
  240. package/dist/number/branded-types/uint16.d.mts +26 -34
  241. package/dist/number/branded-types/uint16.d.mts.map +1 -1
  242. package/dist/number/branded-types/uint16.mjs +26 -34
  243. package/dist/number/branded-types/uint16.mjs.map +1 -1
  244. package/dist/number/branded-types/uint32.d.mts +26 -68
  245. package/dist/number/branded-types/uint32.d.mts.map +1 -1
  246. package/dist/number/branded-types/uint32.mjs +26 -68
  247. package/dist/number/branded-types/uint32.mjs.map +1 -1
  248. package/dist/number/enum/int8.d.mts +37 -101
  249. package/dist/number/enum/int8.d.mts.map +1 -1
  250. package/dist/number/enum/int8.mjs +39 -170
  251. package/dist/number/enum/int8.mjs.map +1 -1
  252. package/dist/number/enum/uint8.d.mts +45 -55
  253. package/dist/number/enum/uint8.d.mts.map +1 -1
  254. package/dist/number/enum/uint8.mjs +46 -155
  255. package/dist/number/enum/uint8.mjs.map +1 -1
  256. package/dist/number/num.d.mts +145 -206
  257. package/dist/number/num.d.mts.map +1 -1
  258. package/dist/number/num.mjs +143 -199
  259. package/dist/number/num.mjs.map +1 -1
  260. package/dist/number/refined-number-utils.d.mts +97 -21
  261. package/dist/number/refined-number-utils.d.mts.map +1 -1
  262. package/dist/number/refined-number-utils.mjs +91 -20
  263. package/dist/number/refined-number-utils.mjs.map +1 -1
  264. package/dist/object/object.d.mts +126 -208
  265. package/dist/object/object.d.mts.map +1 -1
  266. package/dist/object/object.mjs +68 -102
  267. package/dist/object/object.mjs.map +1 -1
  268. package/dist/others/cast-mutable.d.mts +12 -88
  269. package/dist/others/cast-mutable.d.mts.map +1 -1
  270. package/dist/others/cast-mutable.mjs +13 -89
  271. package/dist/others/cast-mutable.mjs.map +1 -1
  272. package/dist/others/cast-readonly.d.mts +12 -168
  273. package/dist/others/cast-readonly.d.mts.map +1 -1
  274. package/dist/others/cast-readonly.mjs +13 -169
  275. package/dist/others/cast-readonly.mjs.map +1 -1
  276. package/dist/others/if-then.d.mts +6 -83
  277. package/dist/others/if-then.d.mts.map +1 -1
  278. package/dist/others/if-then.mjs +6 -83
  279. package/dist/others/if-then.mjs.map +1 -1
  280. package/dist/others/map-nullable.d.mts +12 -136
  281. package/dist/others/map-nullable.d.mts.map +1 -1
  282. package/dist/others/map-nullable.mjs.map +1 -1
  283. package/dist/others/memoize-function.d.mts +14 -157
  284. package/dist/others/memoize-function.d.mts.map +1 -1
  285. package/dist/others/memoize-function.mjs +14 -157
  286. package/dist/others/memoize-function.mjs.map +1 -1
  287. package/dist/others/tuple.d.mts +33 -151
  288. package/dist/others/tuple.d.mts.map +1 -1
  289. package/dist/others/tuple.mjs +33 -151
  290. package/dist/others/tuple.mjs.map +1 -1
  291. package/dist/others/unknown-to-string.d.mts +11 -125
  292. package/dist/others/unknown-to-string.d.mts.map +1 -1
  293. package/dist/others/unknown-to-string.mjs +14 -127
  294. package/dist/others/unknown-to-string.mjs.map +1 -1
  295. package/dist/promise/promise.d.mts +33 -20
  296. package/dist/promise/promise.d.mts.map +1 -1
  297. package/dist/promise/promise.mjs +34 -21
  298. package/dist/promise/promise.mjs.map +1 -1
  299. package/dist/types.d.mts +1 -1
  300. package/package.json +54 -50
  301. package/src/array/impl/array-utils-creation.mts +192 -0
  302. package/src/array/{array-utils-creation.test.mts → impl/array-utils-creation.test.mts} +121 -72
  303. package/src/array/impl/array-utils-element-access.mts +115 -0
  304. package/src/array/impl/array-utils-element-access.test.mts +151 -0
  305. package/src/array/impl/array-utils-iterators.mts +79 -0
  306. package/src/array/impl/array-utils-iterators.test.mts +98 -0
  307. package/src/array/impl/array-utils-modification.mts +434 -0
  308. package/src/array/{array-utils-modification.test.mts → impl/array-utils-modification.test.mts} +41 -28
  309. package/src/array/{array-utils-overload-type-error.test.mts → impl/array-utils-overload-type-error.test.mts} +33 -33
  310. package/src/array/impl/array-utils-reducing-value.mts +551 -0
  311. package/src/array/{array-utils-reducing-value.test.mts → impl/array-utils-reducing-value.test.mts} +45 -50
  312. package/src/array/impl/array-utils-search.mts +509 -0
  313. package/src/array/impl/array-utils-search.test.mts +346 -0
  314. package/src/array/impl/array-utils-set-op.mts +166 -0
  315. package/src/array/{array-utils-set-op.test.mts → impl/array-utils-set-op.test.mts} +42 -35
  316. package/src/array/impl/array-utils-size.mts +30 -0
  317. package/src/array/impl/array-utils-size.test.mts +9 -0
  318. package/src/array/impl/array-utils-slice-clamped.mts +51 -0
  319. package/src/array/{array-utils-slice-clamped.test.mts → impl/array-utils-slice-clamped.test.mts} +12 -12
  320. package/src/array/impl/array-utils-slicing.mts +275 -0
  321. package/src/array/impl/array-utils-slicing.test.mts +158 -0
  322. package/src/array/impl/array-utils-transformation.mts +746 -0
  323. package/src/array/{array-utils-transformation.test.mts → impl/array-utils-transformation.test.mts} +662 -889
  324. package/src/array/impl/array-utils-validation.mts +241 -0
  325. package/src/array/{array-utils-validation.test.mts → impl/array-utils-validation.test.mts} +194 -107
  326. package/src/array/{array.test.mts → impl/array.test.mts} +2 -2
  327. package/src/array/impl/index.mts +12 -0
  328. package/src/array/index.mts +1 -1
  329. package/src/collections/imap-mapped.mts +99 -265
  330. package/src/collections/imap.mts +477 -174
  331. package/src/collections/imap.test.mts +12 -19
  332. package/src/collections/iset-mapped.mts +892 -358
  333. package/src/collections/iset.mts +429 -213
  334. package/src/collections/queue.mts +174 -200
  335. package/src/collections/stack.mts +172 -245
  336. package/src/collections/stack.test.mts +9 -1
  337. package/src/entry-point.mts +2 -0
  338. package/src/expect-type.mts +43 -172
  339. package/src/functional/match.mts +35 -145
  340. package/src/functional/optional.mts +285 -163
  341. package/src/functional/optional.test.mts +4 -1
  342. package/src/functional/pipe.mts +60 -113
  343. package/src/functional/result.mts +452 -351
  344. package/src/functional/result.test.mts +9 -2
  345. package/src/globals.d.mts +12 -5
  346. package/src/guard/has-key.mts +23 -74
  347. package/src/guard/is-non-empty-string.mts +20 -87
  348. package/src/guard/is-non-null-object.mts +14 -84
  349. package/src/guard/is-non-null-object.test.mts +1 -1
  350. package/src/guard/is-primitive.mts +13 -126
  351. package/src/guard/is-primitive.test.mts +1 -1
  352. package/src/guard/is-record.mts +21 -132
  353. package/src/guard/is-record.test.mts +0 -1
  354. package/src/guard/is-type.mts +201 -238
  355. package/src/guard/is-type.test.mts +7 -7
  356. package/src/guard/key-is-in.mts +22 -139
  357. package/src/index.mts +0 -1
  358. package/src/iterator/range.mts +29 -62
  359. package/src/json/json.mts +202 -134
  360. package/src/json/json.test.mts +1 -3
  361. package/src/number/branded-types/finite-number.mts +27 -159
  362. package/src/number/branded-types/int.mts +122 -120
  363. package/src/number/branded-types/int16.mts +22 -30
  364. package/src/number/branded-types/int16.test.mts +24 -24
  365. package/src/number/branded-types/int32.mts +22 -31
  366. package/src/number/branded-types/int32.test.mts +39 -39
  367. package/src/number/branded-types/non-negative-finite-number.mts +31 -39
  368. package/src/number/branded-types/non-negative-int16.mts +24 -34
  369. package/src/number/branded-types/non-negative-int16.test.mts +16 -16
  370. package/src/number/branded-types/non-negative-int32.mts +26 -35
  371. package/src/number/branded-types/non-negative-int32.test.mts +30 -30
  372. package/src/number/branded-types/non-zero-finite-number.mts +25 -40
  373. package/src/number/branded-types/non-zero-int.mts +15 -30
  374. package/src/number/branded-types/non-zero-int16.mts +27 -35
  375. package/src/number/branded-types/non-zero-int16.test.mts +26 -26
  376. package/src/number/branded-types/non-zero-int32.mts +29 -36
  377. package/src/number/branded-types/non-zero-int32.test.mts +45 -42
  378. package/src/number/branded-types/non-zero-safe-int.mts +39 -40
  379. package/src/number/branded-types/non-zero-uint16.mts +24 -35
  380. package/src/number/branded-types/non-zero-uint16.test.mts +16 -16
  381. package/src/number/branded-types/non-zero-uint32.mts +24 -35
  382. package/src/number/branded-types/non-zero-uint32.test.mts +28 -28
  383. package/src/number/branded-types/positive-finite-number.mts +29 -43
  384. package/src/number/branded-types/positive-int.mts +134 -124
  385. package/src/number/branded-types/positive-int16.mts +24 -35
  386. package/src/number/branded-types/positive-int16.test.mts +14 -14
  387. package/src/number/branded-types/positive-int32.mts +24 -35
  388. package/src/number/branded-types/positive-int32.test.mts +26 -26
  389. package/src/number/branded-types/positive-safe-int.mts +160 -34
  390. package/src/number/branded-types/positive-uint16.mts +24 -35
  391. package/src/number/branded-types/positive-uint16.test.mts +16 -16
  392. package/src/number/branded-types/positive-uint32.mts +26 -36
  393. package/src/number/branded-types/positive-uint32.test.mts +31 -28
  394. package/src/number/branded-types/safe-int.mts +142 -101
  395. package/src/number/branded-types/safe-uint.mts +25 -34
  396. package/src/number/branded-types/uint.mts +121 -30
  397. package/src/number/branded-types/uint16.mts +26 -34
  398. package/src/number/branded-types/uint16.test.mts +16 -16
  399. package/src/number/branded-types/uint32.mts +26 -68
  400. package/src/number/branded-types/uint32.test.mts +28 -28
  401. package/src/number/enum/int8.mts +39 -170
  402. package/src/number/enum/uint8.mts +46 -155
  403. package/src/number/num.mts +157 -212
  404. package/src/number/num.test.mts +4 -4
  405. package/src/number/refined-number-utils.mts +109 -26
  406. package/src/object/object.mts +130 -212
  407. package/src/object/object.test.mts +29 -0
  408. package/src/others/cast-mutable.mts +13 -89
  409. package/src/others/cast-mutable.test.mts +80 -0
  410. package/src/others/cast-readonly.mts +13 -169
  411. package/src/others/if-then.mts +6 -83
  412. package/src/others/map-nullable.mts +12 -136
  413. package/src/others/map-nullable.test.mts +6 -6
  414. package/src/others/memoize-function.mts +14 -157
  415. package/src/others/tuple.mts +33 -151
  416. package/src/others/unknown-to-string.mts +15 -127
  417. package/src/others/unknown-to-string.test.mts +14 -2
  418. package/src/promise/promise.mts +34 -21
  419. package/src/promise/promise.test.mts +43 -0
  420. package/dist/array/array-utils.d.mts +0 -2956
  421. package/dist/array/array-utils.d.mts.map +0 -1
  422. package/dist/array/array-utils.mjs +0 -1838
  423. package/dist/array/array-utils.mjs.map +0 -1
  424. package/src/array/array-utils-search.test.mts +0 -169
  425. package/src/array/array-utils-slicing.test.mts +0 -274
  426. package/src/array/array-utils.mts +0 -4834
@@ -1 +1 @@
1
- {"version":3,"file":"result.mjs","sources":["../../src/functional/result.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"result.mjs","sources":["../../src/functional/result.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1,14 +1,21 @@
1
- /* eslint-disable import/unambiguous */
2
-
3
1
  /// <reference types="ts-type-forge" />
4
2
 
5
3
  type SmallPositiveInt = WithSmallInt<PositiveInt>;
6
4
 
7
- /**
8
- * Represents the type of keys that can be used in a standard JavaScript Map.
9
- */
5
+ /** Represents the type of keys that can be used in a standard JavaScript Map. */
10
6
  type MapSetKeyType = Primitive;
11
7
 
8
+ type ArrayIndex<Ar extends readonly unknown[]> =
9
+ IsFixedLengthList<Ar> extends true ? IndexOfTuple<Ar> : SizeType.Arr;
10
+
11
+ type ArgArrayIndex<Ar extends readonly unknown[]> =
12
+ IsFixedLengthList<Ar> extends true ? IndexOfTuple<Ar> : SizeType.ArgArr;
13
+
14
+ type ArgArrayIndexWithNegative<Ar extends readonly unknown[]> =
15
+ IsFixedLengthList<Ar> extends true
16
+ ? IndexOfTuple<[...Ar, 0]> | NegativeIndexOfTuple<Ar>
17
+ : SizeType.ArgArrWithNegative;
18
+
12
19
  // https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/length
13
20
  // https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/length
14
21
  // Max array length : 2^32 - 1
@@ -1,91 +1,40 @@
1
1
  /**
2
- * Type guard function that checks if an object has a specific key as its own property.
2
+ * Type guard function that checks if an object has a specific key as its own
3
+ * property.
3
4
  *
4
- * This function uses `Object.hasOwn()` to check if the given object has the specified key
5
- * as its own property (not inherited). It acts as a type guard that narrows the type of the
6
- * object to guarantee the key exists, enabling type-safe property access.
5
+ * This function uses `Object.hasOwn()` to check if the given object has the
6
+ * specified key as its own property (not inherited). It acts as a type guard
7
+ * that narrows the type of the object to guarantee the key exists, enabling
8
+ * type-safe property access.
7
9
  *
8
10
  * **Type Narrowing Behavior:**
9
- * - When the guard returns `true`, TypeScript narrows the object type to include the checked key
11
+ *
12
+ * - When the guard returns `true`, TypeScript narrows the object type to include
13
+ * the checked key
10
14
  * - For union types, only union members that contain the key are preserved
11
15
  * - The key's value type is preserved from the original object type when possible
12
16
  *
13
- * @template R - The type of the input object, must extend UnknownRecord
14
- * @template K - The type of the key to check for, must extend PropertyKey (string | number | symbol)
15
- * @param obj - The object to check for the presence of the key
16
- * @param key - The key to check for in the object
17
- * @returns `true` if the object has the specified key as its own property, `false` otherwise.
18
- * When `true`, TypeScript narrows the object type to guarantee the key exists.
19
- *
20
17
  * @example
21
- * Basic usage with known object structure:
22
- * ```typescript
23
- * const obj = { a: 1, b: 'hello' };
24
- *
25
- * if (hasKey(obj, 'a')) {
26
- * // obj is narrowed to guarantee 'a' exists
27
- * console.log(obj.a); // TypeScript knows 'a' exists and is type number
28
- * // No need for optional chaining or undefined checks
29
- * }
30
18
  *
31
- * if (hasKey(obj, 'c')) {
32
- * // This block won't execute at runtime
33
- * console.log(obj.c); // But TypeScript would know 'c' exists if it did
34
- * }
35
- * ```
36
- *
37
- * @example
38
- * Working with dynamic objects and unknown keys:
39
- * ```typescript
40
- * const dynamicObj: Record<string, unknown> = { x: 10, y: 20 };
41
- * const userInput: string = getUserInput();
19
+ * ```ts
20
+ * const maybeUser: { id?: number; name?: string } = { id: 42 };
42
21
  *
43
- * if (hasKey(dynamicObj, userInput)) {
44
- * // Safe to access the dynamic key
45
- * const value = dynamicObj[userInput]; // Type: unknown
46
- * console.log(`Value for ${userInput}:`, value);
22
+ * if (hasKey(maybeUser, 'id')) {
23
+ * // `maybeUser` is now known to have an `id` property.
24
+ * assert(maybeUser.id === 42);
47
25
  * } else {
48
- * console.log(`Key '${userInput}' not found`);
49
- * }
50
- * ```
51
- *
52
- * @example
53
- * Type narrowing with union types:
54
- * ```typescript
55
- * type UserPreferences =
56
- * | { theme: 'dark'; notifications: boolean }
57
- * | { theme: 'light' }
58
- * | { autoSave: true; interval: number };
59
- *
60
- * const preferences: UserPreferences = getPreferences();
61
- *
62
- * if (hasKey(preferences, 'theme')) {
63
- * // preferences is narrowed to the first two union members
64
- * console.log(preferences.theme); // 'dark' | 'light'
65
- * }
66
- *
67
- * if (hasKey(preferences, 'autoSave')) {
68
- * // preferences is narrowed to the third union member
69
- * console.log(preferences.interval); // number (we know this exists)
70
- * }
71
- * ```
72
- *
73
- * @example
74
- * Basic usage with isRecord for progressive narrowing:
75
- * ```typescript
76
- * const data: unknown = parseApiResponse();
77
- *
78
- * if (isRecord(data) && hasKey(data, 'user')) {
79
- * // data is now Record<string, unknown> with guaranteed 'user' key
80
- * const user = data.user;
81
- *
82
- * if (isRecord(user) && hasKey(user, 'name')) {
83
- * // Safely access nested properties
84
- * console.log('User name:', user.name);
85
- * }
26
+ * assert.fail('Expected the object to contain the id key.');
86
27
  * }
87
28
  * ```
88
29
  *
30
+ * @template R - The type of the input object, must extend UnknownRecord
31
+ * @template K - The type of the key to check for, must extend PropertyKey
32
+ * (string | number | symbol)
33
+ * @param obj - The object to check for the presence of the key
34
+ * @param key - The key to check for in the object
35
+ * @returns `true` if the object has the specified key as its own property,
36
+ * `false` otherwise. When `true`, TypeScript narrows the object type to
37
+ * guarantee the key exists.
89
38
  * @see {@link keyIsIn} - Similar function that narrows the key type instead of the object type
90
39
  */
91
40
  export declare const hasKey: <const R extends UnknownRecord, const K extends PropertyKey>(obj: R, key: K) => obj is HasKeyReturnType<R, K>;
@@ -1 +1 @@
1
- {"version":3,"file":"has-key.d.mts","sourceRoot":"","sources":["../../src/guard/has-key.mts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyFG;AACH,eAAO,MAAM,MAAM,GACjB,KAAK,CAAC,CAAC,SAAS,aAAa,EAC7B,KAAK,CAAC,CAAC,SAAS,WAAW,EAE3B,KAAK,CAAC,EACN,KAAK,CAAC,KACL,GAAG,IAAI,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAA4B,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,CAC1B,CAAC,SAAS,aAAa,EACvB,CAAC,SAAS,WAAW,IACnB,CAAC,SAAS,CAAC,GACX,CAAC,SAAS,MAAM,CAAC,GACf,MAAM,SAAS,MAAM,CAAC,GACpB,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GACjC,MAAM,SAAS,MAAM,CAAC,GACpB,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GACjC,MAAM,SAAS,MAAM,CAAC,GACpB,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GACjC,CAAC,GACP,KAAK,GACP,KAAK,CAAC"}
1
+ {"version":3,"file":"has-key.d.mts","sourceRoot":"","sources":["../../src/guard/has-key.mts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,eAAO,MAAM,MAAM,GACjB,KAAK,CAAC,CAAC,SAAS,aAAa,EAC7B,KAAK,CAAC,CAAC,SAAS,WAAW,EAE3B,KAAK,CAAC,EACN,KAAK,CAAC,KACL,GAAG,IAAI,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAA4B,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,CAC1B,CAAC,SAAS,aAAa,EACvB,CAAC,SAAS,WAAW,IACnB,CAAC,SAAS,CAAC,GACX,CAAC,SAAS,MAAM,CAAC,GACf,MAAM,SAAS,MAAM,CAAC,GACpB,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GACjC,MAAM,SAAS,MAAM,CAAC,GACpB,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GACjC,MAAM,SAAS,MAAM,CAAC,GACpB,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GACjC,CAAC,GACP,KAAK,GACP,KAAK,CAAC"}
@@ -1,91 +1,40 @@
1
1
  /**
2
- * Type guard function that checks if an object has a specific key as its own property.
2
+ * Type guard function that checks if an object has a specific key as its own
3
+ * property.
3
4
  *
4
- * This function uses `Object.hasOwn()` to check if the given object has the specified key
5
- * as its own property (not inherited). It acts as a type guard that narrows the type of the
6
- * object to guarantee the key exists, enabling type-safe property access.
5
+ * This function uses `Object.hasOwn()` to check if the given object has the
6
+ * specified key as its own property (not inherited). It acts as a type guard
7
+ * that narrows the type of the object to guarantee the key exists, enabling
8
+ * type-safe property access.
7
9
  *
8
10
  * **Type Narrowing Behavior:**
9
- * - When the guard returns `true`, TypeScript narrows the object type to include the checked key
11
+ *
12
+ * - When the guard returns `true`, TypeScript narrows the object type to include
13
+ * the checked key
10
14
  * - For union types, only union members that contain the key are preserved
11
15
  * - The key's value type is preserved from the original object type when possible
12
16
  *
13
- * @template R - The type of the input object, must extend UnknownRecord
14
- * @template K - The type of the key to check for, must extend PropertyKey (string | number | symbol)
15
- * @param obj - The object to check for the presence of the key
16
- * @param key - The key to check for in the object
17
- * @returns `true` if the object has the specified key as its own property, `false` otherwise.
18
- * When `true`, TypeScript narrows the object type to guarantee the key exists.
19
- *
20
17
  * @example
21
- * Basic usage with known object structure:
22
- * ```typescript
23
- * const obj = { a: 1, b: 'hello' };
24
- *
25
- * if (hasKey(obj, 'a')) {
26
- * // obj is narrowed to guarantee 'a' exists
27
- * console.log(obj.a); // TypeScript knows 'a' exists and is type number
28
- * // No need for optional chaining or undefined checks
29
- * }
30
18
  *
31
- * if (hasKey(obj, 'c')) {
32
- * // This block won't execute at runtime
33
- * console.log(obj.c); // But TypeScript would know 'c' exists if it did
34
- * }
35
- * ```
36
- *
37
- * @example
38
- * Working with dynamic objects and unknown keys:
39
- * ```typescript
40
- * const dynamicObj: Record<string, unknown> = { x: 10, y: 20 };
41
- * const userInput: string = getUserInput();
19
+ * ```ts
20
+ * const maybeUser: { id?: number; name?: string } = { id: 42 };
42
21
  *
43
- * if (hasKey(dynamicObj, userInput)) {
44
- * // Safe to access the dynamic key
45
- * const value = dynamicObj[userInput]; // Type: unknown
46
- * console.log(`Value for ${userInput}:`, value);
22
+ * if (hasKey(maybeUser, 'id')) {
23
+ * // `maybeUser` is now known to have an `id` property.
24
+ * assert(maybeUser.id === 42);
47
25
  * } else {
48
- * console.log(`Key '${userInput}' not found`);
49
- * }
50
- * ```
51
- *
52
- * @example
53
- * Type narrowing with union types:
54
- * ```typescript
55
- * type UserPreferences =
56
- * | { theme: 'dark'; notifications: boolean }
57
- * | { theme: 'light' }
58
- * | { autoSave: true; interval: number };
59
- *
60
- * const preferences: UserPreferences = getPreferences();
61
- *
62
- * if (hasKey(preferences, 'theme')) {
63
- * // preferences is narrowed to the first two union members
64
- * console.log(preferences.theme); // 'dark' | 'light'
65
- * }
66
- *
67
- * if (hasKey(preferences, 'autoSave')) {
68
- * // preferences is narrowed to the third union member
69
- * console.log(preferences.interval); // number (we know this exists)
70
- * }
71
- * ```
72
- *
73
- * @example
74
- * Basic usage with isRecord for progressive narrowing:
75
- * ```typescript
76
- * const data: unknown = parseApiResponse();
77
- *
78
- * if (isRecord(data) && hasKey(data, 'user')) {
79
- * // data is now Record<string, unknown> with guaranteed 'user' key
80
- * const user = data.user;
81
- *
82
- * if (isRecord(user) && hasKey(user, 'name')) {
83
- * // Safely access nested properties
84
- * console.log('User name:', user.name);
85
- * }
26
+ * assert.fail('Expected the object to contain the id key.');
86
27
  * }
87
28
  * ```
88
29
  *
30
+ * @template R - The type of the input object, must extend UnknownRecord
31
+ * @template K - The type of the key to check for, must extend PropertyKey
32
+ * (string | number | symbol)
33
+ * @param obj - The object to check for the presence of the key
34
+ * @param key - The key to check for in the object
35
+ * @returns `true` if the object has the specified key as its own property,
36
+ * `false` otherwise. When `true`, TypeScript narrows the object type to
37
+ * guarantee the key exists.
89
38
  * @see {@link keyIsIn} - Similar function that narrows the key type instead of the object type
90
39
  */
91
40
  const hasKey = (obj, key) => Object.hasOwn(obj, key);
@@ -1 +1 @@
1
- {"version":3,"file":"has-key.mjs","sources":["../../src/guard/has-key.mts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyFG;AACI,MAAM,MAAM,GAAG,CAIpB,GAAM,EACN,GAAM,KAC4B,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG;;;;"}
1
+ {"version":3,"file":"has-key.mjs","sources":["../../src/guard/has-key.mts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCG;AACI,MAAM,MAAM,GAAG,CAIpB,GAAM,EACN,GAAM,KAC4B,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG;;;;"}
@@ -1,106 +1,39 @@
1
1
  /**
2
2
  * Type guard that checks if a value is a non-empty string.
3
3
  *
4
- * This function performs both a type check (ensuring the value is a string) and a length check
5
- * (ensuring the string is not empty). It acts as a type guard that narrows the input type to
6
- * exclude `null`, `undefined`, and empty strings.
4
+ * This function performs both a type check (ensuring the value is a string) and
5
+ * a length check (ensuring the string is not empty). It acts as a type guard
6
+ * that narrows the input type to exclude `null`, `undefined`, and empty
7
+ * strings.
7
8
  *
8
9
  * **Type Narrowing Behavior:**
10
+ *
9
11
  * - Eliminates `null` and `undefined` from the type
10
12
  * - Excludes empty string (`""`) from the type
11
13
  * - Preserves literal string types when possible
12
14
  * - Whitespace-only strings are considered non-empty
13
15
  *
14
- * @template S - The input type, which can include `string`, `null`, or `undefined`
15
- * @param s - The value to check
16
- * @returns `true` if `s` is a string with length > 0, `false` otherwise.
17
- * When `true`, TypeScript narrows the type to exclude empty strings and nullish values.
18
- *
19
- * @example
20
- * Basic usage with different string types:
21
- * ```typescript
22
- * isNonEmptyString("hello"); // true
23
- * isNonEmptyString(" "); // true (whitespace is considered non-empty)
24
- * isNonEmptyString("\t\n"); // true (whitespace characters are non-empty)
25
- * isNonEmptyString(""); // false
26
- * isNonEmptyString(null); // false
27
- * isNonEmptyString(undefined); // false
28
- * ```
29
- *
30
- * @example
31
- * Type guard usage with nullable strings:
32
- * ```typescript
33
- * const userInput: string | null | undefined = getUserInput();
34
- *
35
- * if (isNonEmptyString(userInput)) {
36
- * // userInput is now typed as non-empty string
37
- * console.log(userInput.charAt(0)); // Safe to access string methods
38
- * console.log(userInput.toUpperCase()); // No need for null checks
39
- * const length = userInput.length; // Guaranteed to be > 0
40
- * } else {
41
- * console.log('No valid input provided');
42
- * }
43
- * ```
44
- *
45
- * @example
46
- * Working with literal string types:
47
- * ```typescript
48
- * type Status = "active" | "inactive" | "" | null;
49
- * const status: Status = getStatus();
50
- *
51
- * if (isNonEmptyString(status)) {
52
- * // status is now typed as "active" | "inactive"
53
- * console.log(`Status is: ${status}`);
54
- * }
55
- * ```
56
- *
57
16
  * @example
58
- * Form validation patterns:
59
- * ```typescript
60
- * interface FormData {
61
- * name?: string;
62
- * email?: string;
63
- * phone?: string;
64
- * }
65
- *
66
- * function validateForm(data: FormData): string[] {
67
- * const errors: string[] = [];
68
- *
69
- * if (!isNonEmptyString(data.name)) {
70
- * errors.push('Name is required');
71
- * }
72
- *
73
- * if (!isNonEmptyString(data.email)) {
74
- * errors.push('Email is required');
75
- * } else if (!data.email.includes('@')) {
76
- * // Safe to access string methods after guard
77
- * errors.push('Invalid email format');
78
- * }
79
17
  *
80
- * return errors;
81
- * }
82
- * ```
83
- *
84
- * @example
85
- * Filtering arrays of potentially empty strings:
86
- * ```typescript
87
- * const responses: (string | null | undefined)[] = [
88
- * "hello",
89
- * "",
90
- * "world",
91
- * null,
18
+ * ```ts
19
+ * const words: readonly (string | undefined)[] = [
20
+ * 'Ada',
92
21
  * undefined,
93
- * " "
94
- * ];
22
+ * '',
23
+ * 'Lovelace',
24
+ * ] as const;
95
25
  *
96
- * const validResponses = responses.filter(isNonEmptyString);
97
- * // validResponses is now string[] containing ["hello", "world", " "]
26
+ * const nonEmpty = words.filter(isNonEmptyString);
98
27
  *
99
- * validResponses.forEach(response => {
100
- * // Each response is guaranteed to be a non-empty string
101
- * console.log(response.trim().toUpperCase());
102
- * });
28
+ * assert.deepStrictEqual(nonEmpty, ['Ada', 'Lovelace']);
103
29
  * ```
30
+ *
31
+ * @template S - The input type, which can include `string`, `null`, or
32
+ * `undefined`
33
+ * @param s - The value to check
34
+ * @returns `true` if `s` is a string with length > 0, `false` otherwise. When
35
+ * `true`, TypeScript narrows the type to exclude empty strings and nullish
36
+ * values.
104
37
  */
105
38
  export declare const isNonEmptyString: <S extends string | null | undefined>(s: S) => s is RelaxedExclude<NonNullable<S>, "">;
106
39
  //# sourceMappingURL=is-non-empty-string.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"is-non-empty-string.d.mts","sourceRoot":"","sources":["../../src/guard/is-non-empty-string.mts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuGG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,MAAM,GAAG,IAAI,GAAG,SAAS,EAClE,GAAG,CAAC,KACH,CAAC,IAAI,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CACF,CAAC"}
1
+ {"version":3,"file":"is-non-empty-string.d.mts","sourceRoot":"","sources":["../../src/guard/is-non-empty-string.mts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,MAAM,GAAG,IAAI,GAAG,SAAS,EAClE,GAAG,CAAC,KACH,CAAC,IAAI,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CACF,CAAC"}
@@ -1,106 +1,39 @@
1
1
  /**
2
2
  * Type guard that checks if a value is a non-empty string.
3
3
  *
4
- * This function performs both a type check (ensuring the value is a string) and a length check
5
- * (ensuring the string is not empty). It acts as a type guard that narrows the input type to
6
- * exclude `null`, `undefined`, and empty strings.
4
+ * This function performs both a type check (ensuring the value is a string) and
5
+ * a length check (ensuring the string is not empty). It acts as a type guard
6
+ * that narrows the input type to exclude `null`, `undefined`, and empty
7
+ * strings.
7
8
  *
8
9
  * **Type Narrowing Behavior:**
10
+ *
9
11
  * - Eliminates `null` and `undefined` from the type
10
12
  * - Excludes empty string (`""`) from the type
11
13
  * - Preserves literal string types when possible
12
14
  * - Whitespace-only strings are considered non-empty
13
15
  *
14
- * @template S - The input type, which can include `string`, `null`, or `undefined`
15
- * @param s - The value to check
16
- * @returns `true` if `s` is a string with length > 0, `false` otherwise.
17
- * When `true`, TypeScript narrows the type to exclude empty strings and nullish values.
18
- *
19
- * @example
20
- * Basic usage with different string types:
21
- * ```typescript
22
- * isNonEmptyString("hello"); // true
23
- * isNonEmptyString(" "); // true (whitespace is considered non-empty)
24
- * isNonEmptyString("\t\n"); // true (whitespace characters are non-empty)
25
- * isNonEmptyString(""); // false
26
- * isNonEmptyString(null); // false
27
- * isNonEmptyString(undefined); // false
28
- * ```
29
- *
30
- * @example
31
- * Type guard usage with nullable strings:
32
- * ```typescript
33
- * const userInput: string | null | undefined = getUserInput();
34
- *
35
- * if (isNonEmptyString(userInput)) {
36
- * // userInput is now typed as non-empty string
37
- * console.log(userInput.charAt(0)); // Safe to access string methods
38
- * console.log(userInput.toUpperCase()); // No need for null checks
39
- * const length = userInput.length; // Guaranteed to be > 0
40
- * } else {
41
- * console.log('No valid input provided');
42
- * }
43
- * ```
44
- *
45
- * @example
46
- * Working with literal string types:
47
- * ```typescript
48
- * type Status = "active" | "inactive" | "" | null;
49
- * const status: Status = getStatus();
50
- *
51
- * if (isNonEmptyString(status)) {
52
- * // status is now typed as "active" | "inactive"
53
- * console.log(`Status is: ${status}`);
54
- * }
55
- * ```
56
- *
57
16
  * @example
58
- * Form validation patterns:
59
- * ```typescript
60
- * interface FormData {
61
- * name?: string;
62
- * email?: string;
63
- * phone?: string;
64
- * }
65
- *
66
- * function validateForm(data: FormData): string[] {
67
- * const errors: string[] = [];
68
- *
69
- * if (!isNonEmptyString(data.name)) {
70
- * errors.push('Name is required');
71
- * }
72
- *
73
- * if (!isNonEmptyString(data.email)) {
74
- * errors.push('Email is required');
75
- * } else if (!data.email.includes('@')) {
76
- * // Safe to access string methods after guard
77
- * errors.push('Invalid email format');
78
- * }
79
17
  *
80
- * return errors;
81
- * }
82
- * ```
83
- *
84
- * @example
85
- * Filtering arrays of potentially empty strings:
86
- * ```typescript
87
- * const responses: (string | null | undefined)[] = [
88
- * "hello",
89
- * "",
90
- * "world",
91
- * null,
18
+ * ```ts
19
+ * const words: readonly (string | undefined)[] = [
20
+ * 'Ada',
92
21
  * undefined,
93
- * " "
94
- * ];
22
+ * '',
23
+ * 'Lovelace',
24
+ * ] as const;
95
25
  *
96
- * const validResponses = responses.filter(isNonEmptyString);
97
- * // validResponses is now string[] containing ["hello", "world", " "]
26
+ * const nonEmpty = words.filter(isNonEmptyString);
98
27
  *
99
- * validResponses.forEach(response => {
100
- * // Each response is guaranteed to be a non-empty string
101
- * console.log(response.trim().toUpperCase());
102
- * });
28
+ * assert.deepStrictEqual(nonEmpty, ['Ada', 'Lovelace']);
103
29
  * ```
30
+ *
31
+ * @template S - The input type, which can include `string`, `null`, or
32
+ * `undefined`
33
+ * @param s - The value to check
34
+ * @returns `true` if `s` is a string with length > 0, `false` otherwise. When
35
+ * `true`, TypeScript narrows the type to exclude empty strings and nullish
36
+ * values.
104
37
  */
105
38
  const isNonEmptyString = (s) => typeof s === 'string' && s.length > 0;
106
39
 
@@ -1 +1 @@
1
- {"version":3,"file":"is-non-empty-string.mjs","sources":["../../src/guard/is-non-empty-string.mts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuGG;AACI,MAAM,gBAAgB,GAAG,CAC9B,CAAI,KAEJ,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG;;;;"}
1
+ {"version":3,"file":"is-non-empty-string.mjs","sources":["../../src/guard/is-non-empty-string.mts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCG;AACI,MAAM,gBAAgB,GAAG,CAC9B,CAAI,KAEJ,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG;;;;"}