ts-data-forge 3.3.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 (424) 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 +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 +1 -0
  83. package/dist/entry-point.d.mts.map +1 -1
  84. package/dist/entry-point.mjs +2 -1
  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/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 +12 -126
  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/package.json +47 -39
  300. package/src/array/impl/array-utils-creation.mts +192 -0
  301. package/src/array/{array-utils-creation.test.mts → impl/array-utils-creation.test.mts} +121 -72
  302. package/src/array/impl/array-utils-element-access.mts +115 -0
  303. package/src/array/impl/array-utils-element-access.test.mts +151 -0
  304. package/src/array/impl/array-utils-iterators.mts +79 -0
  305. package/src/array/impl/array-utils-iterators.test.mts +98 -0
  306. package/src/array/impl/array-utils-modification.mts +434 -0
  307. package/src/array/{array-utils-modification.test.mts → impl/array-utils-modification.test.mts} +41 -28
  308. package/src/array/{array-utils-overload-type-error.test.mts → impl/array-utils-overload-type-error.test.mts} +33 -33
  309. package/src/array/impl/array-utils-reducing-value.mts +551 -0
  310. package/src/array/{array-utils-reducing-value.test.mts → impl/array-utils-reducing-value.test.mts} +45 -50
  311. package/src/array/impl/array-utils-search.mts +509 -0
  312. package/src/array/impl/array-utils-search.test.mts +346 -0
  313. package/src/array/impl/array-utils-set-op.mts +166 -0
  314. package/src/array/{array-utils-set-op.test.mts → impl/array-utils-set-op.test.mts} +42 -35
  315. package/src/array/impl/array-utils-size.mts +30 -0
  316. package/src/array/impl/array-utils-size.test.mts +9 -0
  317. package/src/array/impl/array-utils-slice-clamped.mts +51 -0
  318. package/src/array/{array-utils-slice-clamped.test.mts → impl/array-utils-slice-clamped.test.mts} +12 -12
  319. package/src/array/impl/array-utils-slicing.mts +275 -0
  320. package/src/array/impl/array-utils-slicing.test.mts +158 -0
  321. package/src/array/impl/array-utils-transformation.mts +746 -0
  322. package/src/array/{array-utils-transformation.test.mts → impl/array-utils-transformation.test.mts} +662 -889
  323. package/src/array/impl/array-utils-validation.mts +241 -0
  324. package/src/array/{array-utils-validation.test.mts → impl/array-utils-validation.test.mts} +194 -107
  325. package/src/array/{array.test.mts → impl/array.test.mts} +2 -2
  326. package/src/array/impl/index.mts +12 -0
  327. package/src/array/index.mts +1 -1
  328. package/src/collections/imap-mapped.mts +99 -265
  329. package/src/collections/imap.mts +477 -174
  330. package/src/collections/imap.test.mts +12 -19
  331. package/src/collections/iset-mapped.mts +892 -358
  332. package/src/collections/iset.mts +429 -213
  333. package/src/collections/queue.mts +174 -200
  334. package/src/collections/stack.mts +172 -245
  335. package/src/collections/stack.test.mts +9 -1
  336. package/src/entry-point.mts +1 -0
  337. package/src/expect-type.mts +43 -172
  338. package/src/functional/match.mts +35 -145
  339. package/src/functional/optional.mts +285 -163
  340. package/src/functional/optional.test.mts +4 -1
  341. package/src/functional/pipe.mts +60 -113
  342. package/src/functional/result.mts +452 -351
  343. package/src/functional/result.test.mts +9 -2
  344. package/src/globals.d.mts +12 -5
  345. package/src/guard/has-key.mts +23 -74
  346. package/src/guard/is-non-empty-string.mts +20 -87
  347. package/src/guard/is-non-null-object.mts +14 -84
  348. package/src/guard/is-non-null-object.test.mts +1 -1
  349. package/src/guard/is-primitive.mts +13 -126
  350. package/src/guard/is-primitive.test.mts +1 -1
  351. package/src/guard/is-record.mts +21 -132
  352. package/src/guard/is-type.mts +201 -238
  353. package/src/guard/is-type.test.mts +7 -7
  354. package/src/guard/key-is-in.mts +22 -139
  355. package/src/index.mts +0 -1
  356. package/src/iterator/range.mts +29 -62
  357. package/src/json/json.mts +202 -134
  358. package/src/json/json.test.mts +1 -3
  359. package/src/number/branded-types/finite-number.mts +27 -159
  360. package/src/number/branded-types/int.mts +122 -120
  361. package/src/number/branded-types/int16.mts +22 -30
  362. package/src/number/branded-types/int16.test.mts +24 -24
  363. package/src/number/branded-types/int32.mts +22 -31
  364. package/src/number/branded-types/int32.test.mts +39 -39
  365. package/src/number/branded-types/non-negative-finite-number.mts +31 -39
  366. package/src/number/branded-types/non-negative-int16.mts +24 -34
  367. package/src/number/branded-types/non-negative-int16.test.mts +16 -16
  368. package/src/number/branded-types/non-negative-int32.mts +26 -35
  369. package/src/number/branded-types/non-negative-int32.test.mts +30 -30
  370. package/src/number/branded-types/non-zero-finite-number.mts +25 -40
  371. package/src/number/branded-types/non-zero-int.mts +15 -30
  372. package/src/number/branded-types/non-zero-int16.mts +27 -35
  373. package/src/number/branded-types/non-zero-int16.test.mts +26 -26
  374. package/src/number/branded-types/non-zero-int32.mts +29 -36
  375. package/src/number/branded-types/non-zero-int32.test.mts +45 -42
  376. package/src/number/branded-types/non-zero-safe-int.mts +39 -40
  377. package/src/number/branded-types/non-zero-uint16.mts +24 -35
  378. package/src/number/branded-types/non-zero-uint16.test.mts +16 -16
  379. package/src/number/branded-types/non-zero-uint32.mts +24 -35
  380. package/src/number/branded-types/non-zero-uint32.test.mts +28 -28
  381. package/src/number/branded-types/positive-finite-number.mts +29 -43
  382. package/src/number/branded-types/positive-int.mts +134 -124
  383. package/src/number/branded-types/positive-int16.mts +24 -35
  384. package/src/number/branded-types/positive-int16.test.mts +14 -14
  385. package/src/number/branded-types/positive-int32.mts +24 -35
  386. package/src/number/branded-types/positive-int32.test.mts +26 -26
  387. package/src/number/branded-types/positive-safe-int.mts +160 -34
  388. package/src/number/branded-types/positive-uint16.mts +24 -35
  389. package/src/number/branded-types/positive-uint16.test.mts +16 -16
  390. package/src/number/branded-types/positive-uint32.mts +26 -36
  391. package/src/number/branded-types/positive-uint32.test.mts +31 -28
  392. package/src/number/branded-types/safe-int.mts +142 -101
  393. package/src/number/branded-types/safe-uint.mts +25 -34
  394. package/src/number/branded-types/uint.mts +121 -30
  395. package/src/number/branded-types/uint16.mts +26 -34
  396. package/src/number/branded-types/uint16.test.mts +16 -16
  397. package/src/number/branded-types/uint32.mts +26 -68
  398. package/src/number/branded-types/uint32.test.mts +28 -28
  399. package/src/number/enum/int8.mts +39 -170
  400. package/src/number/enum/uint8.mts +46 -155
  401. package/src/number/num.mts +157 -212
  402. package/src/number/num.test.mts +4 -4
  403. package/src/number/refined-number-utils.mts +109 -26
  404. package/src/object/object.mts +130 -212
  405. package/src/object/object.test.mts +29 -0
  406. package/src/others/cast-mutable.mts +13 -89
  407. package/src/others/cast-mutable.test.mts +80 -0
  408. package/src/others/cast-readonly.mts +13 -169
  409. package/src/others/if-then.mts +6 -83
  410. package/src/others/map-nullable.mts +12 -136
  411. package/src/others/map-nullable.test.mts +6 -6
  412. package/src/others/memoize-function.mts +14 -157
  413. package/src/others/tuple.mts +33 -151
  414. package/src/others/unknown-to-string.mts +12 -126
  415. package/src/others/unknown-to-string.test.mts +13 -1
  416. package/src/promise/promise.mts +34 -21
  417. package/src/promise/promise.test.mts +43 -0
  418. package/dist/array/array-utils.d.mts +0 -2956
  419. package/dist/array/array-utils.d.mts.map +0 -1
  420. package/dist/array/array-utils.mjs +0 -1838
  421. package/dist/array/array-utils.mjs.map +0 -1
  422. package/src/array/array-utils-search.test.mts +0 -169
  423. package/src/array/array-utils-slicing.test.mts +0 -274
  424. package/src/array/array-utils.mts +0 -4834
@@ -1,158 +1,40 @@
1
1
  /**
2
- * Creates a readonly tuple from the given arguments with precise literal type inference.
3
- *
4
- * This utility function provides a concise way to create tuples while preserving
5
- * exact literal types. Without this function, TypeScript would infer arrays with
6
- * widened types instead of tuples with literal types.
7
- *
8
- * **Key benefits:**
9
- * - Preserves literal types (e.g., `1` instead of `number`)
10
- * - Creates readonly tuples for immutability
11
- * - Provides better type inference than array literals
12
- * - Zero runtime overhead - just returns the arguments
2
+ * Creates a readonly tuple from the given arguments with precise literal type
3
+ * inference. It is a convenient shorthand for `[...args] as const`.
4
+ *
5
+ * @example
6
+ *
7
+ * ```ts
8
+ * // Create a tuple with literal types preserved
9
+ * const coordinates = tp(10, 20, 30);
10
+ * expectType<typeof coordinates, readonly [10, 20, 30]>('=');
11
+ * expectType<typeof coordinates, readonly number[]>('!=');
12
+ * assert.deepStrictEqual(coordinates, [10, 20, 30]);
13
+ *
14
+ * // The following two are equivalent
15
+ * const a = tp(1, 2);
16
+ * const b = [1, 2] as const;
17
+ * expectType<typeof a, typeof b>('=');
18
+ * assert.deepStrictEqual(a, b);
19
+ *
20
+ * // Without tp, type would be number[]
21
+ * const point = tp('x', 42, true);
22
+ * expectType<typeof point, readonly ['x', 42, true]>('=');
23
+ * assert.deepStrictEqual(point, ['x', 42, true]);
24
+ *
25
+ * // Useful for creating const tuples
26
+ * const rgb = tp(255, 128, 0);
27
+ * expectType<typeof rgb, readonly [255, 128, 0]>('=');
28
+ *
29
+ * assert(rgb[0] === 255);
30
+ * assert(rgb[1] === 128);
31
+ * assert(rgb[2] === 0);
32
+ * ```
13
33
  *
14
34
  * @template T - A tuple type with literal types inferred from the arguments
15
35
  * @param args - The elements to include in the tuple (variadic)
16
- * @returns A readonly tuple containing the provided arguments with preserved literal types
17
- *
18
- * @example Basic tuple creation with literal types
19
- * ```typescript
20
- * // Without tp: types are widened
21
- * const arr = [1, 'hello', true]; // (string | number | boolean)[]
22
- *
23
- * // With tp: exact literal types preserved
24
- * const tuple = tp(1, 'hello', true); // readonly [1, 'hello', true]
25
- * const coords = tp(10, 20); // readonly [10, 20]
26
- * const single = tp('only'); // readonly ['only']
27
- * const empty = tp(); // readonly []
28
- *
29
- * // TypeScript knows exact values at compile time
30
- * type First = typeof tuple[0]; // 1 (literal type)
31
- * type Second = typeof tuple[1]; // 'hello' (literal type)
32
- * ```
33
- *
34
- * @example Creating type-safe coordinate systems
35
- * ```typescript
36
- * // 2D coordinates
37
- * const point2D = tp(10, 20);
38
- * const [x, y] = point2D; // x: 10, y: 20
39
- *
40
- * // 3D coordinates
41
- * const point3D = tp(10, 20, 30);
42
- * const [x3, y3, z3] = point3D; // Exact types preserved
43
- *
44
- * // Named coordinate system
45
- * const namedPoint = tp('x', 100, 'y', 200);
46
- * // Type: readonly ['x', 100, 'y', 200]
47
- * ```
48
- *
49
- * @example Building type-safe data structures
50
- * ```typescript
51
- * // Creating a type-safe map structure
52
- * const colorMap = [
53
- * tp('red', '#FF0000'),
54
- * tp('green', '#00FF00'),
55
- * tp('blue', '#0000FF')
56
- * ] as const;
57
- * // Type: readonly [readonly ['red', '#FF0000'], ...]
58
- *
59
- * // Type-safe event system
60
- * type EventTuple = readonly ['click', MouseEvent] | readonly ['change', Event];
61
- * const event = tp('click', new MouseEvent('click')) as EventTuple;
62
- * ```
63
- *
64
- * @example Function argument patterns
65
- * ```typescript
66
- * // Functions expecting exact tuple types
67
- * function processCoordinate(coord: readonly [number, number]): void {
68
- * const [x, y] = coord;
69
- * console.log(`Processing point at (${x}, ${y})`);
70
- * }
71
- *
72
- * processCoordinate(tp(10, 20)); // ✅ Type-safe
73
- * processCoordinate([10, 20]); // ❌ Error: number[] not assignable
74
- *
75
- * // Pattern matching with tuples
76
- * function handleMessage(msg: readonly ['error', string] | readonly ['success', any]) {
77
- * if (msg[0] === 'error') {
78
- * console.error(msg[1]); // TypeScript knows msg[1] is string
79
- * } else {
80
- * console.log('Success:', msg[1]);
81
- * }
82
- * }
83
- *
84
- * handleMessage(tp('error', 'Failed to load'));
85
- * handleMessage(tp('success', { id: 123 }));
86
- * ```
87
- *
88
- * @example Advanced type inference
89
- * ```typescript
90
- * // Const assertions comparison
91
- * const tuple1 = [1, 2, 3]; // number[]
92
- * const tuple2 = [1, 2, 3] as const; // readonly [1, 2, 3]
93
- * const tuple3 = tp(1, 2, 3); // readonly [1, 2, 3]
94
- *
95
- * // Building complex types
96
- * const config = tp(
97
- * tp('host', 'localhost'),
98
- * tp('port', 3000),
99
- * tp('secure', true)
100
- * );
101
- * // Type: readonly [
102
- * // readonly ['host', 'localhost'],
103
- * // readonly ['port', 3000],
104
- * // readonly ['secure', true]
105
- * // ]
106
- *
107
- * // Type-safe destructuring
108
- * const [[, host], [, port], [, secure]] = config;
109
- * // host: 'localhost', port: 3000, secure: true
110
- * ```
111
- *
112
- * @example Integration with other utilities
113
- * ```typescript
114
- * import { pipe } from '../functional/pipe';
115
- * import { Result } from '../functional/result';
116
- *
117
- * // Type-safe error handling
118
- * function divide(a: number, b: number): Result<number, string> {
119
- * if (b === 0) return Result.err('Division by zero');
120
- * return Result.ok(a / b);
121
- * }
122
- *
123
- * const calculation = tp(10, 2);
124
- * const result = divide(...calculation); // Spread tuple as arguments
125
- *
126
- * // Building pipelines with tuples
127
- * const pipeline = pipe(tp(5, 10))
128
- * .map(([a, b]) => tp(a + b, a * b))
129
- * .map(([sum, product]) => tp('sum', sum, 'product', product))
130
- * .value;
131
- * // Type: readonly ['sum', 15, 'product', 50]
132
- * ```
133
- *
134
- * @example Common patterns and use cases
135
- * ```typescript
136
- * // React-style state tuples
137
- * const useState = <T>(initial: T) => tp(initial, (value: T) => void 0);
138
- * const [count, setCount] = useState(0);
139
- *
140
- * // Redux-style actions
141
- * const incrementAction = tp('INCREMENT', { amount: 1 });
142
- * const decrementAction = tp('DECREMENT', { amount: 1 });
143
- *
144
- * // Database query results
145
- * const queryResult = tp(
146
- * true, // success
147
- * [{ id: 1, name: 'John' }], // data
148
- * null // error
149
- * );
150
- *
151
- * // Configuration flags
152
- * const features = tp('darkMode', 'analytics', 'notifications');
153
- * const enabledFeatures = features.filter(f => isEnabled(f));
154
- * ```
155
- *
36
+ * @returns A readonly tuple containing the provided arguments with preserved
37
+ * literal types
156
38
  * @see https://www.typescriptlang.org/docs/handbook/2/objects.html#tuple-types
157
39
  */
158
40
  export declare const tp: <const T extends readonly unknown[]>(...args: T) => Readonly<T>;
@@ -1 +1 @@
1
- {"version":3,"file":"tuple.d.mts","sourceRoot":"","sources":["../../src/others/tuple.mts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4JG;AACH,eAAO,MAAM,EAAE,GAAI,KAAK,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,EACnD,GAAG,MAAM,CAAC,KACT,QAAQ,CAAC,CAAC,CAAS,CAAC"}
1
+ {"version":3,"file":"tuple.d.mts","sourceRoot":"","sources":["../../src/others/tuple.mts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,eAAO,MAAM,EAAE,GAAI,KAAK,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,EACnD,GAAG,MAAM,CAAC,KACT,QAAQ,CAAC,CAAC,CAAS,CAAC"}
@@ -1,158 +1,40 @@
1
1
  /**
2
- * Creates a readonly tuple from the given arguments with precise literal type inference.
3
- *
4
- * This utility function provides a concise way to create tuples while preserving
5
- * exact literal types. Without this function, TypeScript would infer arrays with
6
- * widened types instead of tuples with literal types.
7
- *
8
- * **Key benefits:**
9
- * - Preserves literal types (e.g., `1` instead of `number`)
10
- * - Creates readonly tuples for immutability
11
- * - Provides better type inference than array literals
12
- * - Zero runtime overhead - just returns the arguments
2
+ * Creates a readonly tuple from the given arguments with precise literal type
3
+ * inference. It is a convenient shorthand for `[...args] as const`.
4
+ *
5
+ * @example
6
+ *
7
+ * ```ts
8
+ * // Create a tuple with literal types preserved
9
+ * const coordinates = tp(10, 20, 30);
10
+ * expectType<typeof coordinates, readonly [10, 20, 30]>('=');
11
+ * expectType<typeof coordinates, readonly number[]>('!=');
12
+ * assert.deepStrictEqual(coordinates, [10, 20, 30]);
13
+ *
14
+ * // The following two are equivalent
15
+ * const a = tp(1, 2);
16
+ * const b = [1, 2] as const;
17
+ * expectType<typeof a, typeof b>('=');
18
+ * assert.deepStrictEqual(a, b);
19
+ *
20
+ * // Without tp, type would be number[]
21
+ * const point = tp('x', 42, true);
22
+ * expectType<typeof point, readonly ['x', 42, true]>('=');
23
+ * assert.deepStrictEqual(point, ['x', 42, true]);
24
+ *
25
+ * // Useful for creating const tuples
26
+ * const rgb = tp(255, 128, 0);
27
+ * expectType<typeof rgb, readonly [255, 128, 0]>('=');
28
+ *
29
+ * assert(rgb[0] === 255);
30
+ * assert(rgb[1] === 128);
31
+ * assert(rgb[2] === 0);
32
+ * ```
13
33
  *
14
34
  * @template T - A tuple type with literal types inferred from the arguments
15
35
  * @param args - The elements to include in the tuple (variadic)
16
- * @returns A readonly tuple containing the provided arguments with preserved literal types
17
- *
18
- * @example Basic tuple creation with literal types
19
- * ```typescript
20
- * // Without tp: types are widened
21
- * const arr = [1, 'hello', true]; // (string | number | boolean)[]
22
- *
23
- * // With tp: exact literal types preserved
24
- * const tuple = tp(1, 'hello', true); // readonly [1, 'hello', true]
25
- * const coords = tp(10, 20); // readonly [10, 20]
26
- * const single = tp('only'); // readonly ['only']
27
- * const empty = tp(); // readonly []
28
- *
29
- * // TypeScript knows exact values at compile time
30
- * type First = typeof tuple[0]; // 1 (literal type)
31
- * type Second = typeof tuple[1]; // 'hello' (literal type)
32
- * ```
33
- *
34
- * @example Creating type-safe coordinate systems
35
- * ```typescript
36
- * // 2D coordinates
37
- * const point2D = tp(10, 20);
38
- * const [x, y] = point2D; // x: 10, y: 20
39
- *
40
- * // 3D coordinates
41
- * const point3D = tp(10, 20, 30);
42
- * const [x3, y3, z3] = point3D; // Exact types preserved
43
- *
44
- * // Named coordinate system
45
- * const namedPoint = tp('x', 100, 'y', 200);
46
- * // Type: readonly ['x', 100, 'y', 200]
47
- * ```
48
- *
49
- * @example Building type-safe data structures
50
- * ```typescript
51
- * // Creating a type-safe map structure
52
- * const colorMap = [
53
- * tp('red', '#FF0000'),
54
- * tp('green', '#00FF00'),
55
- * tp('blue', '#0000FF')
56
- * ] as const;
57
- * // Type: readonly [readonly ['red', '#FF0000'], ...]
58
- *
59
- * // Type-safe event system
60
- * type EventTuple = readonly ['click', MouseEvent] | readonly ['change', Event];
61
- * const event = tp('click', new MouseEvent('click')) as EventTuple;
62
- * ```
63
- *
64
- * @example Function argument patterns
65
- * ```typescript
66
- * // Functions expecting exact tuple types
67
- * function processCoordinate(coord: readonly [number, number]): void {
68
- * const [x, y] = coord;
69
- * console.log(`Processing point at (${x}, ${y})`);
70
- * }
71
- *
72
- * processCoordinate(tp(10, 20)); // ✅ Type-safe
73
- * processCoordinate([10, 20]); // ❌ Error: number[] not assignable
74
- *
75
- * // Pattern matching with tuples
76
- * function handleMessage(msg: readonly ['error', string] | readonly ['success', any]) {
77
- * if (msg[0] === 'error') {
78
- * console.error(msg[1]); // TypeScript knows msg[1] is string
79
- * } else {
80
- * console.log('Success:', msg[1]);
81
- * }
82
- * }
83
- *
84
- * handleMessage(tp('error', 'Failed to load'));
85
- * handleMessage(tp('success', { id: 123 }));
86
- * ```
87
- *
88
- * @example Advanced type inference
89
- * ```typescript
90
- * // Const assertions comparison
91
- * const tuple1 = [1, 2, 3]; // number[]
92
- * const tuple2 = [1, 2, 3] as const; // readonly [1, 2, 3]
93
- * const tuple3 = tp(1, 2, 3); // readonly [1, 2, 3]
94
- *
95
- * // Building complex types
96
- * const config = tp(
97
- * tp('host', 'localhost'),
98
- * tp('port', 3000),
99
- * tp('secure', true)
100
- * );
101
- * // Type: readonly [
102
- * // readonly ['host', 'localhost'],
103
- * // readonly ['port', 3000],
104
- * // readonly ['secure', true]
105
- * // ]
106
- *
107
- * // Type-safe destructuring
108
- * const [[, host], [, port], [, secure]] = config;
109
- * // host: 'localhost', port: 3000, secure: true
110
- * ```
111
- *
112
- * @example Integration with other utilities
113
- * ```typescript
114
- * import { pipe } from '../functional/pipe';
115
- * import { Result } from '../functional/result';
116
- *
117
- * // Type-safe error handling
118
- * function divide(a: number, b: number): Result<number, string> {
119
- * if (b === 0) return Result.err('Division by zero');
120
- * return Result.ok(a / b);
121
- * }
122
- *
123
- * const calculation = tp(10, 2);
124
- * const result = divide(...calculation); // Spread tuple as arguments
125
- *
126
- * // Building pipelines with tuples
127
- * const pipeline = pipe(tp(5, 10))
128
- * .map(([a, b]) => tp(a + b, a * b))
129
- * .map(([sum, product]) => tp('sum', sum, 'product', product))
130
- * .value;
131
- * // Type: readonly ['sum', 15, 'product', 50]
132
- * ```
133
- *
134
- * @example Common patterns and use cases
135
- * ```typescript
136
- * // React-style state tuples
137
- * const useState = <T>(initial: T) => tp(initial, (value: T) => void 0);
138
- * const [count, setCount] = useState(0);
139
- *
140
- * // Redux-style actions
141
- * const incrementAction = tp('INCREMENT', { amount: 1 });
142
- * const decrementAction = tp('DECREMENT', { amount: 1 });
143
- *
144
- * // Database query results
145
- * const queryResult = tp(
146
- * true, // success
147
- * [{ id: 1, name: 'John' }], // data
148
- * null // error
149
- * );
150
- *
151
- * // Configuration flags
152
- * const features = tp('darkMode', 'analytics', 'notifications');
153
- * const enabledFeatures = features.filter(f => isEnabled(f));
154
- * ```
155
- *
36
+ * @returns A readonly tuple containing the provided arguments with preserved
37
+ * literal types
156
38
  * @see https://www.typescriptlang.org/docs/handbook/2/objects.html#tuple-types
157
39
  */
158
40
  const tp = (...args) => args;
@@ -1 +1 @@
1
- {"version":3,"file":"tuple.mjs","sources":["../../src/others/tuple.mts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4JG;AACI,MAAM,EAAE,GAAG,CAChB,GAAG,IAAO,KACM;;;;"}
1
+ {"version":3,"file":"tuple.mjs","sources":["../../src/others/tuple.mts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCG;AACI,MAAM,EAAE,GAAG,CAChB,GAAG,IAAO,KACM;;;;"}
@@ -1,11 +1,13 @@
1
1
  /**
2
2
  * Converts an unknown value to its string representation in a type-safe manner.
3
3
  *
4
- * This function handles all JavaScript types and provides consistent string conversion
5
- * with proper error handling for edge cases like circular references. Unlike naive
6
- * toString() calls, this function never throws and handles all value types gracefully.
4
+ * This function handles all JavaScript types and provides consistent string
5
+ * conversion with proper error handling for edge cases like circular
6
+ * references. Unlike naive toString() calls, this function never throws and
7
+ * handles all value types gracefully.
7
8
  *
8
9
  * **Type conversion rules:**
10
+ *
9
11
  * - Strings: returned as-is
10
12
  * - Numbers, booleans, bigints: converted via toString()
11
13
  * - Symbols: converted to their description string
@@ -16,129 +18,13 @@
16
18
  *
17
19
  * @param value - The unknown value to convert to string
18
20
  * @param options - Optional configuration for the conversion
19
- * @param options.prettyPrintObject - If true, objects are formatted with 2-space indentation
20
- * @returns The string representation of the value. For circular references or non-serializable objects, returns an error message string
21
- *
22
- * @example Basic type conversions
23
- * ```typescript
24
- * // Primitive types
25
- * unknownToString('hello'); // 'hello'
26
- * unknownToString(123); // '123'
27
- * unknownToString(true); // 'true'
28
- * unknownToString(null); // 'null'
29
- * unknownToString(undefined); // 'undefined'
30
- * unknownToString(Symbol('test')); // 'Symbol(test)'
31
- * unknownToString(123n); // '123'
32
- *
33
- * // Function conversion
34
- * const fn = () => 'test';
35
- * unknownToString(fn); // "() => 'test'"
36
- * ```
37
- *
38
- * @example Object stringification
39
- * ```typescript
40
- * // Simple object
41
- * const obj = { a: 1, b: 'hello', c: [1, 2, 3] };
42
- * const result = unknownToString(obj);
43
- * console.log(result); // '{"a":1,"b":"hello","c":[1,2,3]}'
44
- *
45
- * // Pretty printing
46
- * const prettyResult = unknownToString(obj, { prettyPrintObject: true });
47
- * console.log(prettyResult);
48
- * // {
49
- * // "a": 1,
50
- * // "b": "hello",
51
- * // "c": [
52
- * // 1,
53
- * // 2,
54
- * // 3
55
- * // ]
56
- * // }
57
- * ```
58
- *
59
- * @example Error handling for circular references
60
- * ```typescript
61
- * // Circular reference
62
- * const circular: any = { name: 'parent' };
63
- * circular.self = circular;
64
- *
65
- * const result = unknownToString(circular);
66
- * console.log(result); // "Converting circular structure to JSON"
67
- *
68
- * @example Logging and debugging utilities
69
- * ```typescript
70
- * // Type-safe logger
71
- * class Logger {
72
- * log(message: string, data?: unknown): void {
73
- * const timestamp = new Date().toISOString();
74
- * const dataStr = data !== undefined
75
- * ? unknownToString(data, { prettyPrintObject: true })
76
- * : '';
77
- *
78
- * console.log(`[${timestamp}] ${message}`, dataStr);
79
- * }
80
- * }
81
- *
82
- * const logger = new Logger();
83
- * logger.log('User data:', { id: 123, name: 'John' });
84
- * ```
85
- *
86
- * @example API response formatting
87
- * ```typescript
88
- * // Safe error response formatting
89
- * function formatErrorResponse(error: unknown): string {
90
- * const errorStr = unknownToString(error, { prettyPrintObject: true });
91
- *
92
- * return JSON.stringify({
93
- * success: false,
94
- * error: errorStr
95
- * });
96
- * }
97
- *
98
- * try {
99
- * // some operation
100
- * } catch (error) {
101
- * const response = formatErrorResponse(error);
102
- * res.status(500).send(response);
103
- * }
104
- * ```
105
- *
106
- * @example Working with special objects
107
- * ```typescript
108
- * // Date objects
109
- * unknownToString(new Date('2023-01-01'));
110
- * // '"2023-01-01T00:00:00.000Z"' - JSON stringified
111
- *
112
- * // Regular expressions
113
- * unknownToString(/test/gi);
114
- * // '{}' - RegExp has no enumerable properties
115
- *
116
- * // Arrays
117
- * unknownToString([1, 'two', { three: 3 }]);
118
- * // '[1,"two",{"three":3}]'
119
- *
120
- * // Map and Set (converted to empty objects by JSON.stringify)
121
- * unknownToString(new Map([['a', 1]])); // '{}'
122
- * unknownToString(new Set([1, 2, 3])); // '{}'
123
- * ```
124
- *
125
- * @example Using with validation
126
- * ```typescript
127
- * // Simple validation helper
128
- * function validateAndStringify(input: unknown): string {
129
- * const str = unknownToString(input);
130
- * const trimmed = str.trim();
131
- *
132
- * if (trimmed.length === 0) {
133
- * throw new Error('Empty string');
134
- * }
135
- *
136
- * return trimmed;
137
- * }
138
- * ```
21
+ * @param options.prettyPrintObject - If true, objects are formatted with
22
+ * 2-space indentation
23
+ * @returns The string representation of the value. For circular references or
24
+ * non-serializable objects, returns an error message string
139
25
  *
140
- * **Error Handling:**
141
- * Circular references and non-serializable objects return descriptive error messages instead of throwing
26
+ * **Error Handling:** Circular references and non-serializable objects return
27
+ * descriptive error messages instead of throwing
142
28
  * @see JSON.stringify - Underlying serialization for objects
143
29
  */
144
30
  export declare const unknownToString: (value: unknown, options?: Partial<Readonly<{
@@ -1 +1 @@
1
- {"version":3,"file":"unknown-to-string.d.mts","sourceRoot":"","sources":["../../src/others/unknown-to-string.mts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8IG;AACH,eAAO,MAAM,eAAe,GAC1B,OAAO,OAAO,EACd,UAAU,OAAO,CAAC,QAAQ,CAAC;IAAE,iBAAiB,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC,KAC1D,MAiCF,CAAC"}
1
+ {"version":3,"file":"unknown-to-string.d.mts","sourceRoot":"","sources":["../../src/others/unknown-to-string.mts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,eAAe,GAC1B,OAAO,OAAO,EACd,UAAU,OAAO,CAAC,QAAQ,CAAC;IAAE,iBAAiB,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC,KAC1D,MAiCF,CAAC"}