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,23 +1,28 @@
1
1
  import { Optional } from '../functional/index.mjs';
2
2
  /**
3
- * Interface for a high-performance stack with LIFO (Last-In, First-Out) behavior.
3
+ * Interface for a high-performance stack with LIFO (Last-In, First-Out)
4
+ * behavior.
4
5
  *
5
- * This interface defines a mutable stack data structure where elements are added to and removed
6
- * from the top, following the Last-In, First-Out principle. The implementation uses a dynamic
7
- * array for optimal performance, providing O(1) operations for both push and pop operations.
6
+ * This interface defines a mutable stack data structure where elements are
7
+ * added to and removed from the top, following the Last-In, First-Out
8
+ * principle. The implementation uses a dynamic array for optimal performance,
9
+ * providing O(1) operations for both push and pop operations.
8
10
  *
9
11
  * **LIFO Behavior:**
12
+ *
10
13
  * - **push**: Adds elements to the top of the stack
11
14
  * - **pop**: Removes and returns elements from the top of the stack
12
15
  * - The last element added is the first element to be removed
13
16
  *
14
17
  * **Performance Characteristics:**
15
- * - push: O(1) amortized (O(n) when buffer needs resizing)
16
- * - pop: O(1) always
17
- * - size/isEmpty: O(1) always
18
+ *
19
+ * - Push: O(1) amortized (O(n) when buffer needs resizing)
20
+ * - Pop: O(1) always
21
+ * - Size/isEmpty: O(1) always
18
22
  * - Memory efficient with automatic garbage collection of removed elements
19
23
  *
20
24
  * **Use Cases:**
25
+ *
21
26
  * - Function call management and recursion
22
27
  * - Undo/redo functionality
23
28
  * - Expression evaluation and parsing
@@ -26,63 +31,137 @@ import { Optional } from '../functional/index.mjs';
26
31
  * - Browser history management
27
32
  *
28
33
  * @template T The type of elements stored in the stack.
29
- *
30
- * @example
31
- * ```typescript
32
- * import { createStack, Stack } from './stack';
33
- *
34
- * // Example 1: Basic LIFO operations
35
- * const operationStack: Stack<string> = createStack<string>();
36
- *
37
- * operationStack.push("operation1"); // Add to top
38
- * operationStack.push("operation2"); // Add to top
39
- * operationStack.push("operation3"); // Add to top
40
- *
41
- * console.log(operationStack.size); // Output: 3
42
- *
43
- * // Process operations in LIFO order
44
- * console.log(operationStack.pop().unwrap()); // "operation3" (last in, first out)
45
- * console.log(operationStack.pop().unwrap()); // "operation2"
46
- * console.log(operationStack.size); // Output: 1
47
- *
48
- * // Example 2: Undo functionality
49
- * type Action = { type: string; data: any; timestamp: number };
50
- * const undoStack: Stack<Action> = createStack<Action>();
51
- *
52
- * undoStack.push({ type: "delete", data: { id: 123 }, timestamp: Date.now() });
53
- * undoStack.push({ type: "edit", data: { field: "name", oldValue: "old" }, timestamp: Date.now() });
54
- *
55
- * // Undo last action
56
- * if (!undoStack.isEmpty) {
57
- * const lastAction = undoStack.pop().unwrap();
58
- * console.log(`Undoing: ${lastAction.type}`);
59
- * }
60
- * ```
61
34
  */
62
35
  export type Stack<T> = Readonly<{
63
- /** Checks if the stack is empty. */
36
+ /**
37
+ * Checks if the stack is empty.
38
+ *
39
+ * @example
40
+ *
41
+ * ```ts
42
+ * const stack = createStack<string>();
43
+ *
44
+ * assert.ok(stack.isEmpty);
45
+ * assert(stack.size === 0);
46
+ *
47
+ * stack.push('first');
48
+ * // eslint-disable-next-line unicorn/prefer-single-call
49
+ * stack.push('second');
50
+ *
51
+ * assert.notOk(stack.isEmpty);
52
+ * assert(stack.size === 2);
53
+ * assert.deepStrictEqual(stack.pop(), Optional.some('second'));
54
+ * assert.deepStrictEqual(stack.pop(), Optional.some('first'));
55
+ * assert.deepStrictEqual(stack.pop(), Optional.none);
56
+ *
57
+ * const seededStack = createStack([10, 20, 30]);
58
+ *
59
+ * assert(seededStack.size === 3);
60
+ * assert.deepStrictEqual(seededStack.pop(), Optional.some(30));
61
+ * ```
62
+ */
64
63
  isEmpty: boolean;
65
- /** The number of elements in the stack. */
64
+ /**
65
+ * The number of elements in the stack.
66
+ *
67
+ * @example
68
+ *
69
+ * ```ts
70
+ * const stack = createStack<string>();
71
+ *
72
+ * assert.ok(stack.isEmpty);
73
+ * assert(stack.size === 0);
74
+ *
75
+ * stack.push('first');
76
+ * // eslint-disable-next-line unicorn/prefer-single-call
77
+ * stack.push('second');
78
+ *
79
+ * assert.notOk(stack.isEmpty);
80
+ * assert(stack.size === 2);
81
+ * assert.deepStrictEqual(stack.pop(), Optional.some('second'));
82
+ * assert.deepStrictEqual(stack.pop(), Optional.some('first'));
83
+ * assert.deepStrictEqual(stack.pop(), Optional.none);
84
+ *
85
+ * const seededStack = createStack([10, 20, 30]);
86
+ *
87
+ * assert(seededStack.size === 3);
88
+ * assert.deepStrictEqual(seededStack.pop(), Optional.some(30));
89
+ * ```
90
+ */
66
91
  size: SizeType.Arr;
67
92
  /**
68
93
  * Removes and returns the element at the top of the stack.
69
- * @returns The element at the top of the stack, or `Optional.none` if the stack is empty.
94
+ *
95
+ * @example
96
+ *
97
+ * ```ts
98
+ * const stack = createStack<string>();
99
+ *
100
+ * assert.ok(stack.isEmpty);
101
+ * assert(stack.size === 0);
102
+ *
103
+ * stack.push('first');
104
+ * // eslint-disable-next-line unicorn/prefer-single-call
105
+ * stack.push('second');
106
+ *
107
+ * assert.notOk(stack.isEmpty);
108
+ * assert(stack.size === 2);
109
+ * assert.deepStrictEqual(stack.pop(), Optional.some('second'));
110
+ * assert.deepStrictEqual(stack.pop(), Optional.some('first'));
111
+ * assert.deepStrictEqual(stack.pop(), Optional.none);
112
+ *
113
+ * const seededStack = createStack([10, 20, 30]);
114
+ *
115
+ * assert(seededStack.size === 3);
116
+ * assert.deepStrictEqual(seededStack.pop(), Optional.some(30));
117
+ * ```
118
+ *
119
+ * @returns The element at the top of the stack, or `Optional.none` if the
120
+ * stack is empty.
70
121
  */
71
122
  pop: () => Optional<T>;
72
123
  /**
73
124
  * Adds an element to the top of the stack.
125
+ *
126
+ * @example
127
+ *
128
+ * ```ts
129
+ * const stack = createStack<string>();
130
+ *
131
+ * assert.ok(stack.isEmpty);
132
+ * assert(stack.size === 0);
133
+ *
134
+ * stack.push('first');
135
+ * // eslint-disable-next-line unicorn/prefer-single-call
136
+ * stack.push('second');
137
+ *
138
+ * assert.notOk(stack.isEmpty);
139
+ * assert(stack.size === 2);
140
+ * assert.deepStrictEqual(stack.pop(), Optional.some('second'));
141
+ * assert.deepStrictEqual(stack.pop(), Optional.some('first'));
142
+ * assert.deepStrictEqual(stack.pop(), Optional.none);
143
+ *
144
+ * const seededStack = createStack([10, 20, 30]);
145
+ *
146
+ * assert(seededStack.size === 3);
147
+ * assert.deepStrictEqual(seededStack.pop(), Optional.some(30));
148
+ * ```
149
+ *
74
150
  * @param value The element to add.
75
151
  */
76
152
  push: (value: T) => void;
77
153
  }>;
78
154
  /**
79
- * Creates a new Stack instance with LIFO (Last-In, First-Out) behavior using a high-performance dynamic array.
155
+ * Creates a new Stack instance with LIFO (Last-In, First-Out) behavior using a
156
+ * high-performance dynamic array.
80
157
  *
81
- * This factory function creates an optimized stack implementation that maintains excellent performance
82
- * characteristics for both push and pop operations. The underlying dynamic array automatically
83
- * resizes to accommodate growing workloads while providing predictable O(1) operations.
158
+ * This factory function creates an optimized stack implementation that
159
+ * maintains excellent performance characteristics for both push and pop
160
+ * operations. The underlying dynamic array automatically resizes to accommodate
161
+ * growing workloads while providing predictable O(1) operations.
84
162
  *
85
163
  * **Implementation Features:**
164
+ *
86
165
  * - **O(1) push operations** (amortized - occasionally O(n) when resizing)
87
166
  * - **O(1) pop operations** (always)
88
167
  * - **Automatic buffer resizing** - starts at 8 elements, doubles when full
@@ -90,121 +169,42 @@ export type Stack<T> = Readonly<{
90
169
  * - **Dynamic array design** - eliminates need for complex memory management
91
170
  *
92
171
  * **Performance Benefits:**
172
+ *
93
173
  * - No array shifting required for stack operations
94
174
  * - Minimal memory allocation overhead
95
175
  * - Predictable performance under high load
96
176
  * - Efficient memory usage with automatic cleanup
97
177
  *
98
- * @template T The type of elements stored in the stack.
99
- * @param initialValues Optional array of initial elements to populate the stack.
100
- * Elements will be popped in reverse order of how they appear in the array
101
- * (last array element will be popped first).
102
- * If provided, the initial buffer capacity will be at least twice the array length.
103
- * @returns A new Stack instance optimized for high-performance LIFO operations.
104
- *
105
178
  * @example
106
- * ```typescript
107
- * import { createStack } from './stack';
108
- *
109
- * // Example 1: Function call simulation
110
- * type FunctionCall = { name: string; args: any[]; context: any };
111
- * const callStack = createStack<FunctionCall>();
112
- *
113
- * // Simulate function calls (push onto stack)
114
- * callStack.push({ name: "main", args: [], context: {} }); // O(1)
115
- * callStack.push({ name: "processData", args: [data], context: {} }); // O(1)
116
- * callStack.push({ name: "validateInput", args: [input], context: {} }); // O(1)
117
- *
118
- * // Simulate function returns (pop from stack)
119
- * while (!callStack.isEmpty) {
120
- * const call = callStack.pop().unwrap(); // O(1)
121
- * console.log(`Returning from: ${call.name}`);
122
- * }
123
- * // Output:
124
- * // Returning from: validateInput
125
- * // Returning from: processData
126
- * // Returning from: main
127
- *
128
- * // Example 2: Expression evaluation with operator precedence
129
- * const operatorStack = createStack<string>();
130
- * const operandStack = createStack<number>();
131
- *
132
- * // Simulate parsing "3 + 4 * 2"
133
- * operandStack.push(3);
134
- * operatorStack.push("+");
135
- * operandStack.push(4);
136
- * operatorStack.push("*"); // Higher precedence
137
- * operandStack.push(2);
138
- *
139
- * // Process higher precedence first (LIFO)
140
- * const op = operatorStack.pop().unwrap(); // "*"
141
- * const b = operandStack.pop().unwrap(); // 2
142
- * const a = operandStack.pop().unwrap(); // 4
143
- * operandStack.push(a * b); // Push result: 8
144
- *
145
- * // Example 3: Undo/Redo functionality
146
- * type EditAction = {
147
- * type: 'insert' | 'delete' | 'modify';
148
- * position: number;
149
- * oldValue: string;
150
- * newValue: string;
151
- * };
152
- *
153
- * const undoStack = createStack<EditAction>();
154
- * const redoStack = createStack<EditAction>();
155
- *
156
- * // Perform edits (push to undo stack)
157
- * const edit1: EditAction = { type: 'insert', position: 0, oldValue: '', newValue: 'Hello' };
158
- * const edit2: EditAction = { type: 'insert', position: 5, oldValue: '', newValue: ' World' };
159
- *
160
- * undoStack.push(edit1);
161
- * undoStack.push(edit2);
162
- *
163
- * // Undo last edit
164
- * if (!undoStack.isEmpty) {
165
- * const lastEdit = undoStack.pop().unwrap();
166
- * redoStack.push(lastEdit);
167
- * console.log(`Undid: ${lastEdit.type} at position ${lastEdit.position}`);
168
- * }
169
- *
170
- * // Example 4: High-throughput data processing
171
- * const processingStack = createStack<number>();
172
- *
173
- * // Add large amount of data (demonstrates amortized O(1) performance)
174
- * for (const i of range(100000)) {
175
- * processingStack.push(i); // Each push is O(1) amortized
176
- * }
177
- *
178
- * // Process data in LIFO order
179
- * let processedCount = 0;
180
- * while (!processingStack.isEmpty) {
181
- * const value = processingStack.pop().unwrap(); // O(1)
182
- * // Process value...
183
- * processedCount++;
184
- * }
185
- * console.log(`Processed ${processedCount} items`); // 100000
186
- *
187
- * // Example 5: Stack with pre-populated data
188
- * const historyStack = createStack<string>([
189
- * "page1.html",
190
- * "page2.html",
191
- * "page3.html",
192
- * "page4.html"
193
- * ]);
194
- *
195
- * console.log(historyStack.size); // Output: 4
196
- *
197
- * // Navigate back through history (LIFO order)
198
- * while (!historyStack.isEmpty) {
199
- * const page = historyStack.pop().unwrap();
200
- * console.log(`Going back to: ${page}`);
201
- * }
202
- * // Output:
203
- * // Going back to: page4.html (last added, first removed)
204
- * // Going back to: page3.html
205
- * // Going back to: page2.html
206
- * // Going back to: page1.html
179
+ *
180
+ * ```ts
181
+ * const stack = createStack<string>();
182
+ *
183
+ * assert.ok(stack.isEmpty);
184
+ * assert(stack.size === 0);
185
+ *
186
+ * stack.push('first');
187
+ * // eslint-disable-next-line unicorn/prefer-single-call
188
+ * stack.push('second');
189
+ *
190
+ * assert.notOk(stack.isEmpty);
191
+ * assert(stack.size === 2);
192
+ * assert.deepStrictEqual(stack.pop(), Optional.some('second'));
193
+ * assert.deepStrictEqual(stack.pop(), Optional.some('first'));
194
+ * assert.deepStrictEqual(stack.pop(), Optional.none);
195
+ *
196
+ * const seededStack = createStack([10, 20, 30]);
197
+ *
198
+ * assert(seededStack.size === 3);
199
+ * assert.deepStrictEqual(seededStack.pop(), Optional.some(30));
207
200
  * ```
201
+ *
202
+ * @template T The type of elements stored in the stack.
203
+ * @param initialValues Optional array of initial elements to populate the
204
+ * stack. Elements will be popped in reverse order of how they appear in the
205
+ * array (last array element will be popped first). If provided, the initial
206
+ * buffer capacity will be at least twice the array length.
207
+ * @returns A new Stack instance optimized for high-performance LIFO operations.
208
208
  */
209
209
  export declare const createStack: <T>(initialValues?: readonly T[]) => Stack<T>;
210
210
  //# sourceMappingURL=stack.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stack.d.mts","sourceRoot":"","sources":["../../src/collections/stack.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAInD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC;IAC9B,oCAAoC;IACpC,OAAO,EAAE,OAAO,CAAC;IAEjB,2CAA2C;IAC3C,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC;IAEnB;;;OAGG;IACH,GAAG,EAAE,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEvB;;;OAGG;IACH,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;CAC1B,CAAC,CAAC;AAiNH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkIG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,EAAG,gBAAgB,SAAS,CAAC,EAAE,KAAG,KAAK,CAAC,CAAC,CACpC,CAAC"}
1
+ {"version":3,"file":"stack.d.mts","sourceRoot":"","sources":["../../src/collections/stack.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAInD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC;IAC9B;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC;IAEnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,GAAG,EAAE,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;CAC1B,CAAC,CAAC;AAwIH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,EAAG,gBAAgB,SAAS,CAAC,EAAE,KAAG,KAAK,CAAC,CAAC,CACpC,CAAC"}