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
@@ -3,170 +3,240 @@ import { Result } from '../functional/index.mjs';
3
3
  * A collection of type-safe JSON utility functions that provide safe parsing,
4
4
  * stringification, and manipulation of JSON data. All functions return `Result`
5
5
  * types to handle errors without throwing exceptions.
6
- *
7
- * @example Basic usage
8
- * ```typescript
9
- * import { Json, Result } from 'ts-data-forge';
10
- *
11
- * // Parse JSON safely
12
- * const parseResult = Json.parse('{"name": "Alice", "age": 30}');
13
- * if (Result.isOk(parseResult)) {
14
- * console.log(parseResult.value); // { name: 'Alice', age: 30 }
15
- * }
16
- *
17
- * // Stringify with error handling
18
- * const stringifyResult = Json.stringify({ name: 'Bob', age: 25 });
19
- * if (Result.isOk(stringifyResult)) {
20
- * console.log(stringifyResult.value); // '{"name":"Bob","age":25}'
21
- * }
22
- * ```
23
6
  */
24
7
  export declare namespace Json {
25
8
  /**
26
- * Safely converts a JSON string into a JavaScript value without throwing exceptions.
27
- *
28
- * This function provides type-safe JSON parsing by wrapping the native `JSON.parse`
29
- * in a `Result` type, allowing you to handle parsing errors gracefully without
30
- * try-catch blocks.
31
- *
32
- * @param text - A valid JSON string to parse. Can contain any valid JSON data type:
33
- * primitives (string, number, boolean, null), arrays, or objects.
34
- * @param reviver - Optional function that transforms parsed values. Called for each
35
- * key-value pair in the JSON. The function receives the key name and parsed value,
36
- * and should return the transformed value. For nested objects, inner objects are
37
- * processed before outer objects.
38
- * @returns A `Result<JsonValue, string>` containing:
39
- * - On success: `Result.ok(parsedValue)` where `parsedValue` is the parsed JSON
40
- * - On failure: `Result.err(errorMessage)` where `errorMessage` describes the parsing error
9
+ * Safely converts a JSON string into a JavaScript value without throwing
10
+ * exceptions.
41
11
  *
42
- * @example
43
- * ```typescript
44
- * const result = Json.parse('{"name": "John", "age": 30}');
45
- * if (Result.isOk(result)) {
46
- * console.log(result.value.name); // 'John'
47
- * }
48
- * ```
12
+ * This function provides type-safe JSON parsing by wrapping the native
13
+ * `JSON.parse` in a `Result` type, allowing you to handle parsing errors
14
+ * gracefully without try-catch blocks.
49
15
  *
50
16
  * @example
51
- * ```typescript
52
- * const invalid = Json.parse('invalid json');
53
- * if (Result.isErr(invalid)) {
54
- * console.log('Parse failed:', invalid.value);
17
+ *
18
+ * ```ts
19
+ * const validJson = '{"name": "Alice", "age": 30}';
20
+ * const invalidJson = '{invalid json}';
21
+ *
22
+ * const parsed = Json.parse(validJson);
23
+ * const failed = Json.parse(invalidJson);
24
+ *
25
+ * assert.ok(Result.isOk(parsed));
26
+ * if (Result.isOk(parsed)) {
27
+ * assert.deepStrictEqual(parsed.value, { name: 'Alice', age: 30 });
55
28
  * }
29
+ *
30
+ * assert.ok(Result.isErr(failed));
31
+ *
32
+ * // With reviver
33
+ * const jsonWithDate = '{"created": "2024-01-01T00:00:00.000Z"}';
34
+ * const withReviver = Json.parse(jsonWithDate, (key, value) => {
35
+ * if (key === 'created' && typeof value === 'string') {
36
+ * return new Date(value);
37
+ * }
38
+ * return value;
39
+ * });
40
+ *
41
+ * assert.ok(Result.isOk(withReviver));
56
42
  * ```
43
+ *
44
+ * @param text - A valid JSON string to parse. Can contain any valid JSON data
45
+ * type: primitives (string, number, boolean, null), arrays, or objects.
46
+ * @param reviver - Optional function that transforms parsed values. Called
47
+ * for each key-value pair in the JSON. The function receives the key name
48
+ * and parsed value, and should return the transformed value. For nested
49
+ * objects, inner objects are processed before outer objects.
50
+ * @returns A `Result<JsonValue, string>` containing:
51
+ *
52
+ * - On success: `Result.ok(parsedValue)` where `parsedValue` is the parsed JSON
53
+ * - On failure: `Result.err(errorMessage)` where `errorMessage` describes the
54
+ * parsing error
57
55
  */
58
56
  const parse: (text: string, reviver?: (this: unknown, key: string, value: JsonValue) => unknown) => Result<JsonValue, string>;
59
57
  /**
60
- * Safely converts a JavaScript value to a JSON string without throwing exceptions.
61
- *
62
- * This function provides type-safe JSON stringification by wrapping the native
63
- * `JSON.stringify` in a `Result` type, allowing you to handle serialization errors
64
- * gracefully (such as circular references or BigInt values).
65
- *
66
- * @param value - The JavaScript value to serialize. Can be any value that JSON.stringify
67
- * accepts: primitives, objects, arrays. Non-serializable values (functions, undefined,
68
- * symbols) will be omitted or converted to null according to JSON.stringify behavior.
69
- * @param replacer - Optional function that transforms values during serialization.
70
- * Called for each key-value pair. Should return the value to be serialized, or
71
- * undefined to omit the property from the result.
72
- * @param space - Optional parameter for formatting the output JSON:
73
- * - Number (1-10): Number of spaces to indent each level
74
- * - String: String to use for indentation (first 10 characters)
75
- * - undefined/null: No formatting (compact output)
76
- * @returns A `Result<string, string>` containing:
77
- * - On success: `Result.ok(jsonString)` where `jsonString` is the serialized JSON
78
- * - On failure: `Result.err(errorMessage)` where `errorMessage` describes the error
58
+ * Safely converts a JavaScript value to a JSON string without throwing
59
+ * exceptions.
60
+ *
61
+ * This function provides type-safe JSON stringification by wrapping the
62
+ * native `JSON.stringify` in a `Result` type, allowing you to handle
63
+ * serialization errors gracefully (such as circular references or BigInt
64
+ * values).
79
65
  *
80
66
  * @example
81
- * ```typescript
82
- * const obj = { name: 'John', age: 30 };
83
- * const result = Json.stringify(obj);
84
- * if (Result.isOk(result)) {
85
- * console.log(result.value); // '{"name":"John","age":30}'
67
+ *
68
+ * ```ts
69
+ * const data = { name: 'Bob', age: 25, active: true };
70
+ *
71
+ * // Basic stringify
72
+ * const basic = Json.stringify(data);
73
+ * assert.ok(Result.isOk(basic));
74
+ * if (Result.isOk(basic)) {
75
+ * assert(basic.value === '{"name":"Bob","age":25,"active":true}');
86
76
  * }
87
- * ```
88
77
  *
89
- * @example Error handling
90
- * ```typescript
91
- * const circular: any = { name: 'test' };
92
- * circular.self = circular;
93
- * const error = Json.stringify(circular);
94
- * if (Result.isErr(error)) {
95
- * console.log('Stringify failed:', error.value);
78
+ * // With formatting
79
+ * const formatted = Json.stringify(data, undefined, 2);
80
+ * assert.ok(Result.isOk(formatted));
81
+ *
82
+ * // With replacer
83
+ * const filtered = Json.stringify(data, (key, value) => {
84
+ * if (key === 'age') return undefined; // omit age field
85
+ * return value;
86
+ * });
87
+ *
88
+ * assert.ok(Result.isOk(filtered));
89
+ * if (Result.isOk(filtered)) {
90
+ * assert.ok(!filtered.value.includes('age'));
96
91
  * }
97
92
  * ```
98
- */
99
- const stringify: (value: unknown, replacer?: (this: unknown, key: string, val: unknown) => unknown, space?: UintRangeInclusive<1, 10> | string) => Result<string, string>;
100
- /**
101
- * Safely converts a JavaScript value to a JSON string, including only the specified properties.
102
93
  *
103
- * This function provides selective serialization by allowing you to specify exactly which
104
- * object properties should be included in the resulting JSON. It's useful for creating
105
- * filtered or minimal representations of objects, such as for API responses or logging.
94
+ * @param value - The JavaScript value to serialize. Can be any value that
95
+ * JSON.stringify accepts: primitives, objects, arrays. Non-serializable
96
+ * values (functions, undefined, symbols) will be omitted or converted to
97
+ * null according to JSON.stringify behavior.
98
+ * @param replacer - Optional function that transforms values during
99
+ * serialization. Called for each key-value pair. Should return the value to
100
+ * be serialized, or undefined to omit the property from the result.
101
+ * @param space - Optional parameter for formatting the output JSON:
106
102
  *
107
- * @param value - The JavaScript value to serialize. While any value is accepted,
108
- * the property filtering only applies to objects and nested objects.
109
- * @param propertiesToBeSelected - Optional array of property names (strings) and array
110
- * indices (numbers) to include in the serialization. If provided, only these properties
111
- * will appear in the output JSON. If undefined, all properties are included.
112
- * @param space - Optional formatting parameter:
113
103
  * - Number (1-10): Number of spaces to indent each level
114
104
  * - String: String to use for indentation (first 10 characters)
115
- * - undefined/null: No formatting (compact output)
105
+ * - Undefined/null: No formatting (compact output)
106
+ *
116
107
  * @returns A `Result<string, string>` containing:
117
- * - On success: `Result.ok(jsonString)` with only selected properties
118
- * - On failure: `Result.err(errorMessage)` describing the serialization error
108
+ *
109
+ * - On success: `Result.ok(jsonString)` where `jsonString` is the serialized
110
+ * JSON
111
+ * - On failure: `Result.err(errorMessage)` where `errorMessage` describes the
112
+ * error
113
+ */
114
+ const stringify: (value: unknown, replacer?: (this: unknown, key: string, val: unknown) => unknown, space?: UintRangeInclusive<1, 10> | string) => Result<string, string>;
115
+ /**
116
+ * Safely converts a JavaScript value to a JSON string, including only the
117
+ * specified properties.
118
+ *
119
+ * This function provides selective serialization by allowing you to specify
120
+ * exactly which object properties should be included in the resulting JSON.
121
+ * It's useful for creating filtered or minimal representations of objects,
122
+ * such as for API responses or logging.
119
123
  *
120
124
  * @example
121
- * ```typescript
125
+ *
126
+ * ```ts
122
127
  * const user = {
123
128
  * id: 1,
124
- * name: 'Alice',
125
- * email: 'alice@example.com',
126
- * password: 'secret123'
129
+ * name: 'Charlie',
130
+ * email: 'charlie@example.com',
131
+ * password: 'secret123',
132
+ * role: 'admin',
127
133
  * };
128
134
  *
129
- * const publicFields = Json.stringifySelected(user, ['id', 'name', 'email']);
130
- * if (Result.isOk(publicFields)) {
131
- * console.log(publicFields.value);
132
- * // '{"id":1,"name":"Alice","email":"alice@example.com"}'
135
+ * // Select only safe properties to serialize
136
+ * const safeJson = Json.stringifySelected(user, ['id', 'name', 'role']);
137
+ *
138
+ * assert.ok(Result.isOk(safeJson));
139
+ * if (Result.isOk(safeJson)) {
140
+ * const parsed: unknown = JSON.parse(safeJson.value);
141
+ * assert.deepStrictEqual(parsed, {
142
+ * id: 1,
143
+ * name: 'Charlie',
144
+ * role: 'admin',
145
+ * });
146
+ * assert.ok(!safeJson.value.includes('password'));
147
+ * assert.ok(!safeJson.value.includes('email'));
133
148
  * }
134
- * ```
135
- */
136
- const stringifySelected: (value: unknown, propertiesToBeSelected?: readonly (number | string)[], space?: UintRangeInclusive<1, 10> | string) => Result<string, string>;
137
- /**
138
- * Safely converts a JavaScript record to a JSON string with keys sorted alphabetically at all levels.
139
149
  *
140
- * This function creates deterministic JSON output by ensuring that object keys appear in
141
- * alphabetical order at every level of nesting. This is particularly useful for creating
142
- * consistent output for comparison, hashing, caching, or when you need reproducible JSON
143
- * representations across different JavaScript engines or runs.
150
+ * // With formatting
151
+ * const formatted = Json.stringifySelected(user, ['id', 'name'], 2);
152
+ * assert.ok(Result.isOk(formatted));
153
+ * ```
144
154
  *
145
- * @param value - An object (`UnknownRecord`) to serialize. Must be a plain object
146
- * (not an array, primitive, or null). Nested objects and arrays within the object
147
- * will also have their keys sorted alphabetically.
155
+ * @param value - The JavaScript value to serialize. While any value is
156
+ * accepted, the property filtering only applies to objects and nested
157
+ * objects.
158
+ * @param propertiesToBeSelected - Optional array of property names (strings)
159
+ * and array indices (numbers) to include in the serialization. If provided,
160
+ * only these properties will appear in the output JSON. If undefined, all
161
+ * properties are included.
148
162
  * @param space - Optional formatting parameter:
163
+ *
149
164
  * - Number (1-10): Number of spaces to indent each level
150
165
  * - String: String to use for indentation (first 10 characters)
151
- * - undefined/null: No formatting (compact output)
166
+ * - Undefined/null: No formatting (compact output)
167
+ *
152
168
  * @returns A `Result<string, string>` containing:
153
- * - On success: `Result.ok(jsonString)` with all object keys sorted alphabetically
169
+ *
170
+ * - On success: `Result.ok(jsonString)` with only selected properties
154
171
  * - On failure: `Result.err(errorMessage)` describing the serialization error
172
+ */
173
+ const stringifySelected: (value: unknown, propertiesToBeSelected?: readonly (number | string)[], space?: UintRangeInclusive<1, 10> | string) => Result<string, string>;
174
+ /**
175
+ * Safely converts a JavaScript record to a JSON string with keys sorted
176
+ * alphabetically at all levels.
177
+ *
178
+ * This function creates deterministic JSON output by ensuring that object
179
+ * keys appear in alphabetical order at every level of nesting. This is
180
+ * particularly useful for creating consistent output for comparison, hashing,
181
+ * caching, or when you need reproducible JSON representations across
182
+ * different JavaScript engines or runs.
155
183
  *
156
184
  * @example
157
- * ```typescript
158
- * const unsortedObj = {
159
- * zebra: 'animal',
160
- * apple: 'fruit',
161
- * banana: 'fruit'
185
+ *
186
+ * ```ts
187
+ * const unorderedData = {
188
+ * zebra: 1,
189
+ * apple: 2,
190
+ * mango: 3,
191
+ * nested: {
192
+ * zulu: 'z',
193
+ * alpha: 'a',
194
+ * beta: 'b',
195
+ * },
162
196
  * };
163
197
  *
164
- * const sorted = Json.stringifySortedKey(unsortedObj);
198
+ * // Keys will be sorted alphabetically at all levels
199
+ * const sorted = Json.stringifySortedKey(unorderedData);
200
+ *
201
+ * assert.ok(Result.isOk(sorted));
165
202
  * if (Result.isOk(sorted)) {
166
- * console.log(sorted.value);
167
- * // '{"apple":"fruit","banana":"fruit","zebra":"animal"}'
203
+ * // Keys should appear in alphabetical order
204
+ * const expected =
205
+ * '{"apple":2,"mango":3,"nested":{"alpha":"a","beta":"b","zulu":"z"},"zebra":1}';
206
+ * assert(sorted.value === expected);
207
+ * }
208
+ *
209
+ * // With formatting
210
+ * const formatted = Json.stringifySortedKey(unorderedData, 2);
211
+ * assert.ok(Result.isOk(formatted));
212
+ * if (Result.isOk(formatted)) {
213
+ * // Check that keys are in order (first key should be "apple")
214
+ * assert.ok(
215
+ * formatted.value.indexOf('"apple"') < formatted.value.indexOf('"mango"'),
216
+ * );
217
+ * assert.ok(
218
+ * formatted.value.indexOf('"mango"') < formatted.value.indexOf('"nested"'),
219
+ * );
220
+ * assert.ok(
221
+ * formatted.value.indexOf('"nested"') < formatted.value.indexOf('"zebra"'),
222
+ * );
168
223
  * }
169
224
  * ```
225
+ *
226
+ * @param value - An object (`UnknownRecord`) to serialize. Must be a plain
227
+ * object (not an array, primitive, or null). Nested objects and arrays
228
+ * within the object will also have their keys sorted alphabetically.
229
+ * @param space - Optional formatting parameter:
230
+ *
231
+ * - Number (1-10): Number of spaces to indent each level
232
+ * - String: String to use for indentation (first 10 characters)
233
+ * - Undefined/null: No formatting (compact output)
234
+ *
235
+ * @returns A `Result<string, string>` containing:
236
+ *
237
+ * - On success: `Result.ok(jsonString)` with all object keys sorted
238
+ * alphabetically
239
+ * - On failure: `Result.err(errorMessage)` describing the serialization error
170
240
  */
171
241
  const stringifySortedKey: (value: UnknownRecord, space?: UintRangeInclusive<1, 10> | string) => Result<string, string>;
172
242
  }
@@ -1 +1 @@
1
- {"version":3,"file":"json.d.mts","sourceRoot":"","sources":["../../src/json/json.mts"],"names":[],"mappings":"AACA,OAAO,EAAQ,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAIvD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,yBAAiB,IAAI,CAAC;IACpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACI,MAAM,KAAK,GAChB,MAAM,MAAM,EACZ,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,KAAK,OAAO,KAClE,MAAM,CAAC,SAAS,EAAE,MAAM,CAa1B,CAAC;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAuCG;IACI,MAAM,SAAS,GACpB,OAAO,OAAO,EACd,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,KAAK,OAAO,EAChE,QAAQ,kBAAkB,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,KACzC,MAAM,CAAC,MAAM,EAAE,MAAM,CAOvB,CAAC;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACI,MAAM,iBAAiB,GAC5B,OAAO,OAAO,EACd,yBAAyB,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EACrD,QAAQ,kBAAkB,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,KACzC,MAAM,CAAC,MAAM,EAAE,MAAM,CASvB,CAAC;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACI,MAAM,kBAAkB,GAC7B,OAAO,aAAa,EACpB,QAAQ,kBAAkB,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,KACzC,MAAM,CAAC,MAAM,EAAE,MAAM,CAMvB,CAAC;CACH"}
1
+ {"version":3,"file":"json.d.mts","sourceRoot":"","sources":["../../src/json/json.mts"],"names":[],"mappings":"AACA,OAAO,EAAQ,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAIvD;;;;GAIG;AACH,yBAAiB,IAAI,CAAC;IACpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+CG;IACI,MAAM,KAAK,GAChB,MAAM,MAAM,EACZ,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,KAAK,OAAO,KAClE,MAAM,CAAC,SAAS,EAAE,MAAM,CAa1B,CAAC;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwDG;IACI,MAAM,SAAS,GACpB,OAAO,OAAO,EACd,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,KAAK,OAAO,EAChE,QAAQ,kBAAkB,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,KACzC,MAAM,CAAC,MAAM,EAAE,MAAM,CAOvB,CAAC;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAyDG;IACI,MAAM,iBAAiB,GAC5B,OAAO,OAAO,EACd,yBAAyB,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EACrD,QAAQ,kBAAkB,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,KACzC,MAAM,CAAC,MAAM,EAAE,MAAM,CASvB,CAAC;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkEG;IACI,MAAM,kBAAkB,GAC7B,OAAO,aAAa,EACpB,QAAQ,kBAAkB,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,KACzC,MAAM,CAAC,MAAM,EAAE,MAAM,CAMvB,CAAC;CACH"}