@vielzeug/toolkit 1.1.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (764) hide show
  1. package/README.md +325 -452
  2. package/dist/array/chunk.cjs +2 -2
  3. package/dist/array/chunk.cjs.map +1 -1
  4. package/dist/array/chunk.d.ts +29 -0
  5. package/dist/array/chunk.d.ts.map +1 -0
  6. package/dist/array/chunk.js +22 -24
  7. package/dist/array/chunk.js.map +1 -1
  8. package/dist/array/contains.cjs +2 -2
  9. package/dist/array/contains.cjs.map +1 -1
  10. package/dist/array/contains.d.ts +19 -0
  11. package/dist/array/contains.d.ts.map +1 -0
  12. package/dist/array/contains.js +12 -9
  13. package/dist/array/contains.js.map +1 -1
  14. package/dist/array/fold.cjs +2 -0
  15. package/dist/array/fold.cjs.map +1 -0
  16. package/dist/array/fold.d.ts +21 -0
  17. package/dist/array/fold.d.ts.map +1 -0
  18. package/dist/array/fold.js +19 -0
  19. package/dist/array/fold.js.map +1 -0
  20. package/dist/array/group.cjs +2 -2
  21. package/dist/array/group.cjs.map +1 -1
  22. package/dist/array/group.d.ts +19 -0
  23. package/dist/array/group.d.ts.map +1 -0
  24. package/dist/array/group.js +18 -15
  25. package/dist/array/group.js.map +1 -1
  26. package/dist/array/index.d.ts +16 -0
  27. package/dist/array/index.d.ts.map +1 -0
  28. package/dist/array/keyBy.cjs +2 -0
  29. package/dist/array/keyBy.cjs.map +1 -0
  30. package/dist/array/keyBy.d.ts +20 -0
  31. package/dist/array/keyBy.d.ts.map +1 -0
  32. package/dist/array/keyBy.js +19 -0
  33. package/dist/array/keyBy.js.map +1 -0
  34. package/dist/array/list.cjs +2 -2
  35. package/dist/array/list.cjs.map +1 -1
  36. package/dist/array/list.d.ts +58 -0
  37. package/dist/array/list.d.ts.map +1 -0
  38. package/dist/array/list.js +103 -106
  39. package/dist/array/list.js.map +1 -1
  40. package/dist/array/pick.cjs +2 -2
  41. package/dist/array/pick.cjs.map +1 -1
  42. package/dist/array/pick.d.ts +19 -0
  43. package/dist/array/pick.d.ts.map +1 -0
  44. package/dist/array/pick.js +15 -14
  45. package/dist/array/pick.js.map +1 -1
  46. package/dist/array/remoteList.cjs +2 -2
  47. package/dist/array/remoteList.cjs.map +1 -1
  48. package/dist/array/remoteList.d.ts +64 -0
  49. package/dist/array/remoteList.d.ts.map +1 -0
  50. package/dist/array/remoteList.js +121 -122
  51. package/dist/array/remoteList.js.map +1 -1
  52. package/dist/array/replace.cjs +2 -0
  53. package/dist/array/replace.cjs.map +1 -0
  54. package/dist/array/replace.d.ts +20 -0
  55. package/dist/array/replace.d.ts.map +1 -0
  56. package/dist/array/replace.js +19 -0
  57. package/dist/array/replace.js.map +1 -0
  58. package/dist/array/rotate.cjs +2 -0
  59. package/dist/array/rotate.cjs.map +1 -0
  60. package/dist/array/rotate.d.ts +22 -0
  61. package/dist/array/rotate.d.ts.map +1 -0
  62. package/dist/array/rotate.js +19 -0
  63. package/dist/array/rotate.js.map +1 -0
  64. package/dist/array/search.cjs +2 -2
  65. package/dist/array/search.cjs.map +1 -1
  66. package/dist/array/search.d.ts +19 -0
  67. package/dist/array/search.d.ts.map +1 -0
  68. package/dist/array/search.js +23 -13
  69. package/dist/array/search.js.map +1 -1
  70. package/dist/array/select.cjs +2 -2
  71. package/dist/array/select.cjs.map +1 -1
  72. package/dist/array/select.d.ts +21 -0
  73. package/dist/array/select.d.ts.map +1 -0
  74. package/dist/array/select.js +16 -15
  75. package/dist/array/select.js.map +1 -1
  76. package/dist/array/sort.cjs +2 -2
  77. package/dist/array/sort.cjs.map +1 -1
  78. package/dist/array/sort.d.ts +26 -0
  79. package/dist/array/sort.d.ts.map +1 -0
  80. package/dist/array/sort.js +18 -12
  81. package/dist/array/sort.js.map +1 -1
  82. package/dist/array/toggle.cjs +2 -0
  83. package/dist/array/toggle.cjs.map +1 -0
  84. package/dist/array/toggle.d.ts +29 -0
  85. package/dist/array/toggle.d.ts.map +1 -0
  86. package/dist/array/toggle.js +9 -0
  87. package/dist/array/toggle.js.map +1 -0
  88. package/dist/array/uniq.cjs +2 -2
  89. package/dist/array/uniq.cjs.map +1 -1
  90. package/dist/array/uniq.d.ts +21 -0
  91. package/dist/array/uniq.d.ts.map +1 -0
  92. package/dist/array/uniq.js +15 -17
  93. package/dist/array/uniq.js.map +1 -1
  94. package/dist/async/attempt.cjs +2 -2
  95. package/dist/async/attempt.cjs.map +1 -1
  96. package/dist/async/attempt.d.ts +40 -0
  97. package/dist/async/attempt.d.ts.map +1 -0
  98. package/dist/async/attempt.js +19 -14
  99. package/dist/async/attempt.js.map +1 -1
  100. package/dist/async/defer.cjs +2 -2
  101. package/dist/async/defer.cjs.map +1 -1
  102. package/dist/async/defer.d.ts +23 -0
  103. package/dist/async/defer.d.ts.map +1 -0
  104. package/dist/async/defer.js +12 -9
  105. package/dist/async/defer.js.map +1 -1
  106. package/dist/async/index.d.ts +12 -0
  107. package/dist/async/index.d.ts.map +1 -0
  108. package/dist/async/parallel.cjs +2 -2
  109. package/dist/async/parallel.cjs.map +1 -1
  110. package/dist/async/parallel.d.ts +31 -0
  111. package/dist/async/parallel.d.ts.map +1 -0
  112. package/dist/async/parallel.js +26 -27
  113. package/dist/async/parallel.js.map +1 -1
  114. package/dist/async/pool.cjs +2 -2
  115. package/dist/async/pool.cjs.map +1 -1
  116. package/dist/async/pool.d.ts +21 -0
  117. package/dist/async/pool.d.ts.map +1 -0
  118. package/dist/async/pool.js +23 -21
  119. package/dist/async/pool.js.map +1 -1
  120. package/dist/async/predict.cjs +2 -2
  121. package/dist/async/predict.cjs.map +1 -1
  122. package/dist/async/predict.d.ts +24 -0
  123. package/dist/async/predict.d.ts.map +1 -0
  124. package/dist/async/predict.js +10 -12
  125. package/dist/async/predict.js.map +1 -1
  126. package/dist/async/queue.cjs +2 -2
  127. package/dist/async/queue.cjs.map +1 -1
  128. package/dist/async/queue.d.ts +43 -0
  129. package/dist/async/queue.d.ts.map +1 -0
  130. package/dist/async/queue.js +52 -56
  131. package/dist/async/queue.js.map +1 -1
  132. package/dist/async/race.cjs +2 -2
  133. package/dist/async/race.cjs.map +1 -1
  134. package/dist/async/race.d.ts +16 -0
  135. package/dist/async/race.d.ts.map +1 -0
  136. package/dist/async/race.js +8 -7
  137. package/dist/async/race.js.map +1 -1
  138. package/dist/async/retry.cjs +2 -2
  139. package/dist/async/retry.cjs.map +1 -1
  140. package/dist/async/retry.d.ts +32 -0
  141. package/dist/async/retry.d.ts.map +1 -0
  142. package/dist/async/retry.js +19 -24
  143. package/dist/async/retry.js.map +1 -1
  144. package/dist/async/scheduler.cjs +2 -0
  145. package/dist/async/scheduler.cjs.map +1 -0
  146. package/dist/async/scheduler.d.ts +51 -0
  147. package/dist/async/scheduler.d.ts.map +1 -0
  148. package/dist/async/scheduler.js +43 -0
  149. package/dist/async/scheduler.js.map +1 -0
  150. package/dist/async/sleep.cjs +2 -2
  151. package/dist/async/sleep.cjs.map +1 -1
  152. package/dist/async/sleep.d.ts +16 -0
  153. package/dist/async/sleep.d.ts.map +1 -0
  154. package/dist/async/sleep.js +11 -11
  155. package/dist/async/sleep.js.map +1 -1
  156. package/dist/async/waitFor.cjs +2 -2
  157. package/dist/async/waitFor.cjs.map +1 -1
  158. package/dist/async/waitFor.d.ts +33 -0
  159. package/dist/async/waitFor.d.ts.map +1 -0
  160. package/dist/async/waitFor.js +29 -36
  161. package/dist/async/waitFor.js.map +1 -1
  162. package/dist/date/expires.cjs +2 -2
  163. package/dist/date/expires.cjs.map +1 -1
  164. package/dist/date/expires.d.ts +15 -0
  165. package/dist/date/expires.d.ts.map +1 -0
  166. package/dist/date/expires.js +11 -10
  167. package/dist/date/expires.js.map +1 -1
  168. package/dist/date/index.d.ts +4 -0
  169. package/dist/date/index.d.ts.map +1 -0
  170. package/dist/date/interval.cjs +2 -2
  171. package/dist/date/interval.cjs.map +1 -1
  172. package/dist/date/interval.d.ts +25 -0
  173. package/dist/date/interval.d.ts.map +1 -0
  174. package/dist/date/interval.js +31 -37
  175. package/dist/date/interval.js.map +1 -1
  176. package/dist/date/timeDiff.cjs +2 -2
  177. package/dist/date/timeDiff.cjs.map +1 -1
  178. package/dist/date/timeDiff.d.ts +24 -0
  179. package/dist/date/timeDiff.d.ts.map +1 -0
  180. package/dist/date/timeDiff.js +58 -25
  181. package/dist/date/timeDiff.js.map +1 -1
  182. package/dist/function/assert.cjs +2 -3
  183. package/dist/function/assert.cjs.map +1 -1
  184. package/dist/function/assert.d.ts +38 -0
  185. package/dist/function/assert.d.ts.map +1 -0
  186. package/dist/function/assert.js +13 -11
  187. package/dist/function/assert.js.map +1 -1
  188. package/dist/function/assertParams.cjs +2 -2
  189. package/dist/function/assertParams.cjs.map +1 -1
  190. package/dist/function/assertParams.d.ts +24 -0
  191. package/dist/function/assertParams.d.ts.map +1 -0
  192. package/dist/function/assertParams.js +13 -12
  193. package/dist/function/assertParams.js.map +1 -1
  194. package/dist/function/compare.cjs +2 -2
  195. package/dist/function/compare.cjs.map +1 -1
  196. package/dist/function/compare.d.ts +23 -0
  197. package/dist/function/compare.d.ts.map +1 -0
  198. package/dist/function/compare.js +22 -21
  199. package/dist/function/compare.js.map +1 -1
  200. package/dist/function/compareBy.cjs +2 -2
  201. package/dist/function/compareBy.cjs.map +1 -1
  202. package/dist/function/compareBy.d.ts +24 -0
  203. package/dist/function/compareBy.d.ts.map +1 -0
  204. package/dist/function/compareBy.js +15 -14
  205. package/dist/function/compareBy.js.map +1 -1
  206. package/dist/function/compose.cjs +2 -2
  207. package/dist/function/compose.cjs.map +1 -1
  208. package/dist/function/compose.d.ts +22 -0
  209. package/dist/function/compose.d.ts.map +1 -0
  210. package/dist/function/compose.js +10 -13
  211. package/dist/function/compose.js.map +1 -1
  212. package/dist/function/curry.cjs +2 -2
  213. package/dist/function/curry.cjs.map +1 -1
  214. package/dist/function/curry.d.ts +21 -0
  215. package/dist/function/curry.d.ts.map +1 -0
  216. package/dist/function/curry.js +8 -7
  217. package/dist/function/curry.js.map +1 -1
  218. package/dist/function/debounce.cjs +2 -2
  219. package/dist/function/debounce.cjs.map +1 -1
  220. package/dist/function/debounce.d.ts +12 -0
  221. package/dist/function/debounce.d.ts.map +1 -0
  222. package/dist/function/debounce.js +34 -26
  223. package/dist/function/debounce.js.map +1 -1
  224. package/dist/function/fp.cjs +2 -2
  225. package/dist/function/fp.cjs.map +1 -1
  226. package/dist/function/fp.d.ts +24 -0
  227. package/dist/function/fp.d.ts.map +1 -0
  228. package/dist/function/fp.js +6 -10
  229. package/dist/function/fp.js.map +1 -1
  230. package/dist/function/index.d.ts +13 -0
  231. package/dist/function/index.d.ts.map +1 -0
  232. package/dist/function/memo.cjs +2 -2
  233. package/dist/function/memo.cjs.map +1 -1
  234. package/dist/function/memo.d.ts +30 -0
  235. package/dist/function/memo.d.ts.map +1 -0
  236. package/dist/function/memo.js +16 -24
  237. package/dist/function/memo.js.map +1 -1
  238. package/dist/function/once.cjs +2 -2
  239. package/dist/function/once.cjs.map +1 -1
  240. package/dist/function/once.d.ts +24 -0
  241. package/dist/function/once.d.ts.map +1 -0
  242. package/dist/function/once.js +10 -10
  243. package/dist/function/once.js.map +1 -1
  244. package/dist/function/pipe.cjs +2 -2
  245. package/dist/function/pipe.cjs.map +1 -1
  246. package/dist/function/pipe.d.ts +23 -0
  247. package/dist/function/pipe.d.ts.map +1 -0
  248. package/dist/function/pipe.js +10 -10
  249. package/dist/function/pipe.js.map +1 -1
  250. package/dist/function/throttle.cjs +2 -2
  251. package/dist/function/throttle.cjs.map +1 -1
  252. package/dist/function/throttle.d.ts +21 -0
  253. package/dist/function/throttle.d.ts.map +1 -0
  254. package/dist/function/throttle.js +45 -37
  255. package/dist/function/throttle.js.map +1 -1
  256. package/dist/index.cjs +1 -2
  257. package/dist/index.d.ts +77 -2813
  258. package/dist/index.d.ts.map +1 -0
  259. package/dist/index.js +75 -253
  260. package/dist/math/abs.cjs +2 -2
  261. package/dist/math/abs.cjs.map +1 -1
  262. package/dist/math/abs.d.ts +17 -0
  263. package/dist/math/abs.d.ts.map +1 -0
  264. package/dist/math/abs.js +7 -6
  265. package/dist/math/abs.js.map +1 -1
  266. package/dist/math/allocate.cjs +2 -2
  267. package/dist/math/allocate.cjs.map +1 -1
  268. package/dist/math/allocate.d.ts +24 -0
  269. package/dist/math/allocate.d.ts.map +1 -0
  270. package/dist/math/allocate.js +20 -28
  271. package/dist/math/allocate.js.map +1 -1
  272. package/dist/math/average.cjs +2 -2
  273. package/dist/math/average.cjs.map +1 -1
  274. package/dist/math/average.d.ts +16 -0
  275. package/dist/math/average.d.ts.map +1 -0
  276. package/dist/math/average.js +13 -24
  277. package/dist/math/average.js.map +1 -1
  278. package/dist/math/clamp.cjs +2 -2
  279. package/dist/math/clamp.cjs.map +1 -1
  280. package/dist/math/clamp.d.ts +18 -0
  281. package/dist/math/clamp.d.ts.map +1 -0
  282. package/dist/math/clamp.js +7 -6
  283. package/dist/math/clamp.js.map +1 -1
  284. package/dist/math/distribute.cjs +2 -2
  285. package/dist/math/distribute.cjs.map +1 -1
  286. package/dist/math/distribute.d.ts +24 -0
  287. package/dist/math/distribute.d.ts.map +1 -0
  288. package/dist/math/distribute.js +14 -17
  289. package/dist/math/distribute.js.map +1 -1
  290. package/dist/math/index.d.ts +14 -0
  291. package/dist/math/index.d.ts.map +1 -0
  292. package/dist/math/linspace.cjs +2 -0
  293. package/dist/math/linspace.cjs.map +1 -0
  294. package/dist/math/linspace.d.ts +19 -0
  295. package/dist/math/linspace.d.ts.map +1 -0
  296. package/dist/math/linspace.js +11 -0
  297. package/dist/math/linspace.js.map +1 -0
  298. package/dist/math/max.cjs +2 -2
  299. package/dist/math/max.cjs.map +1 -1
  300. package/dist/math/max.d.ts +23 -0
  301. package/dist/math/max.d.ts.map +1 -0
  302. package/dist/math/max.js +10 -11
  303. package/dist/math/max.js.map +1 -1
  304. package/dist/math/median.cjs +2 -2
  305. package/dist/math/median.cjs.map +1 -1
  306. package/dist/math/median.d.ts +17 -0
  307. package/dist/math/median.d.ts.map +1 -0
  308. package/dist/math/median.js +11 -10
  309. package/dist/math/median.js.map +1 -1
  310. package/dist/math/min.cjs +2 -2
  311. package/dist/math/min.cjs.map +1 -1
  312. package/dist/math/min.d.ts +23 -0
  313. package/dist/math/min.d.ts.map +1 -0
  314. package/dist/math/min.js +10 -11
  315. package/dist/math/min.js.map +1 -1
  316. package/dist/math/percent.cjs +2 -0
  317. package/dist/math/percent.cjs.map +1 -0
  318. package/dist/math/percent.d.ts +19 -0
  319. package/dist/math/percent.d.ts.map +1 -0
  320. package/dist/math/percent.js +8 -0
  321. package/dist/math/percent.js.map +1 -0
  322. package/dist/math/range.cjs +2 -2
  323. package/dist/math/range.cjs.map +1 -1
  324. package/dist/math/range.d.ts +23 -0
  325. package/dist/math/range.d.ts.map +1 -0
  326. package/dist/math/range.js +28 -17
  327. package/dist/math/range.js.map +1 -1
  328. package/dist/math/round.cjs +2 -2
  329. package/dist/math/round.cjs.map +1 -1
  330. package/dist/math/round.d.ts +21 -0
  331. package/dist/math/round.d.ts.map +1 -0
  332. package/dist/math/round.js +9 -8
  333. package/dist/math/round.js.map +1 -1
  334. package/dist/math/sum.cjs +2 -2
  335. package/dist/math/sum.cjs.map +1 -1
  336. package/dist/math/sum.d.ts +17 -0
  337. package/dist/math/sum.d.ts.map +1 -0
  338. package/dist/math/sum.js +11 -14
  339. package/dist/math/sum.js.map +1 -1
  340. package/dist/money/currency.cjs +2 -2
  341. package/dist/money/currency.cjs.map +1 -1
  342. package/dist/money/currency.d.ts +30 -0
  343. package/dist/money/currency.d.ts.map +1 -0
  344. package/dist/money/currency.js +19 -47
  345. package/dist/money/currency.js.map +1 -1
  346. package/dist/money/exchange.cjs +2 -2
  347. package/dist/money/exchange.cjs.map +1 -1
  348. package/dist/money/exchange.d.ts +29 -0
  349. package/dist/money/exchange.d.ts.map +1 -0
  350. package/dist/money/exchange.js +12 -12
  351. package/dist/money/exchange.js.map +1 -1
  352. package/dist/money/index.d.ts +4 -0
  353. package/dist/money/index.d.ts.map +1 -0
  354. package/dist/money/types.d.ts +9 -0
  355. package/dist/money/types.d.ts.map +1 -0
  356. package/dist/object/diff.cjs +2 -2
  357. package/dist/object/diff.cjs.map +1 -1
  358. package/dist/object/diff.d.ts +26 -0
  359. package/dist/object/diff.d.ts.map +1 -0
  360. package/dist/object/diff.js +19 -17
  361. package/dist/object/diff.js.map +1 -1
  362. package/dist/object/index.d.ts +9 -0
  363. package/dist/object/index.d.ts.map +1 -0
  364. package/dist/object/merge.cjs +2 -2
  365. package/dist/object/merge.cjs.map +1 -1
  366. package/dist/object/merge.d.ts +44 -0
  367. package/dist/object/merge.d.ts.map +1 -0
  368. package/dist/object/merge.js +27 -21
  369. package/dist/object/merge.js.map +1 -1
  370. package/dist/object/parseJSON.cjs +2 -2
  371. package/dist/object/parseJSON.cjs.map +1 -1
  372. package/dist/object/parseJSON.d.ts +32 -0
  373. package/dist/object/parseJSON.d.ts.map +1 -0
  374. package/dist/object/parseJSON.js +17 -18
  375. package/dist/object/parseJSON.js.map +1 -1
  376. package/dist/object/path.cjs +2 -2
  377. package/dist/object/path.cjs.map +1 -1
  378. package/dist/object/path.d.ts +32 -0
  379. package/dist/object/path.d.ts.map +1 -0
  380. package/dist/object/path.js +25 -23
  381. package/dist/object/path.js.map +1 -1
  382. package/dist/object/proxy.cjs +2 -0
  383. package/dist/object/proxy.cjs.map +1 -0
  384. package/dist/object/proxy.d.ts +30 -0
  385. package/dist/object/proxy.d.ts.map +1 -0
  386. package/dist/object/proxy.js +21 -0
  387. package/dist/object/proxy.js.map +1 -0
  388. package/dist/object/prune.cjs +2 -0
  389. package/dist/object/prune.cjs.map +1 -0
  390. package/dist/object/prune.d.ts +21 -0
  391. package/dist/object/prune.d.ts.map +1 -0
  392. package/dist/object/prune.js +31 -0
  393. package/dist/object/prune.js.map +1 -0
  394. package/dist/object/seek.cjs +2 -2
  395. package/dist/object/seek.cjs.map +1 -1
  396. package/dist/object/seek.d.ts +2 -0
  397. package/dist/object/seek.d.ts.map +1 -0
  398. package/dist/object/seek.js +25 -12
  399. package/dist/object/seek.js.map +1 -1
  400. package/dist/object/stash.cjs +2 -0
  401. package/dist/object/stash.cjs.map +1 -0
  402. package/dist/object/stash.d.ts +45 -0
  403. package/dist/object/stash.d.ts.map +1 -0
  404. package/dist/object/stash.js +99 -0
  405. package/dist/object/stash.js.map +1 -0
  406. package/dist/random/draw.cjs +2 -2
  407. package/dist/random/draw.cjs.map +1 -1
  408. package/dist/random/draw.d.ts +16 -0
  409. package/dist/random/draw.d.ts.map +1 -0
  410. package/dist/random/draw.js +13 -10
  411. package/dist/random/draw.js.map +1 -1
  412. package/dist/random/index.d.ts +5 -0
  413. package/dist/random/index.d.ts.map +1 -0
  414. package/dist/random/random.cjs +2 -2
  415. package/dist/random/random.cjs.map +1 -1
  416. package/dist/random/random.d.ts +14 -0
  417. package/dist/random/random.d.ts.map +1 -0
  418. package/dist/random/random.js +16 -9
  419. package/dist/random/random.js.map +1 -1
  420. package/dist/random/shuffle.cjs +2 -2
  421. package/dist/random/shuffle.cjs.map +1 -1
  422. package/dist/random/shuffle.d.ts +17 -0
  423. package/dist/random/shuffle.d.ts.map +1 -0
  424. package/dist/random/shuffle.js +18 -14
  425. package/dist/random/shuffle.js.map +1 -1
  426. package/dist/random/uuid.cjs +2 -2
  427. package/dist/random/uuid.cjs.map +1 -1
  428. package/dist/random/uuid.d.ts +12 -0
  429. package/dist/random/uuid.d.ts.map +1 -0
  430. package/dist/random/uuid.js +7 -9
  431. package/dist/random/uuid.js.map +1 -1
  432. package/dist/string/_caseUtils.cjs +2 -2
  433. package/dist/string/_caseUtils.cjs.map +1 -1
  434. package/dist/string/_caseUtils.d.ts +13 -0
  435. package/dist/string/_caseUtils.d.ts.map +1 -0
  436. package/dist/string/_caseUtils.js +8 -8
  437. package/dist/string/_caseUtils.js.map +1 -1
  438. package/dist/string/camelCase.cjs +2 -2
  439. package/dist/string/camelCase.cjs.map +1 -1
  440. package/dist/string/camelCase.d.ts +14 -0
  441. package/dist/string/camelCase.d.ts.map +1 -0
  442. package/dist/string/camelCase.js +8 -7
  443. package/dist/string/camelCase.js.map +1 -1
  444. package/dist/string/index.d.ts +7 -0
  445. package/dist/string/index.d.ts.map +1 -0
  446. package/dist/string/kebabCase.cjs +2 -2
  447. package/dist/string/kebabCase.cjs.map +1 -1
  448. package/dist/string/kebabCase.d.ts +15 -0
  449. package/dist/string/kebabCase.d.ts.map +1 -0
  450. package/dist/string/kebabCase.js +8 -7
  451. package/dist/string/kebabCase.js.map +1 -1
  452. package/dist/string/pascalCase.cjs +2 -2
  453. package/dist/string/pascalCase.cjs.map +1 -1
  454. package/dist/string/pascalCase.d.ts +15 -0
  455. package/dist/string/pascalCase.d.ts.map +1 -0
  456. package/dist/string/pascalCase.js +8 -7
  457. package/dist/string/pascalCase.js.map +1 -1
  458. package/dist/string/similarity.cjs +2 -2
  459. package/dist/string/similarity.cjs.map +1 -1
  460. package/dist/string/similarity.d.ts +20 -0
  461. package/dist/string/similarity.d.ts.map +1 -0
  462. package/dist/string/similarity.js +20 -36
  463. package/dist/string/similarity.js.map +1 -1
  464. package/dist/string/snakeCase.cjs +2 -2
  465. package/dist/string/snakeCase.cjs.map +1 -1
  466. package/dist/string/snakeCase.d.ts +15 -0
  467. package/dist/string/snakeCase.d.ts.map +1 -0
  468. package/dist/string/snakeCase.js +8 -7
  469. package/dist/string/snakeCase.js.map +1 -1
  470. package/dist/string/truncate.cjs +2 -2
  471. package/dist/string/truncate.cjs.map +1 -1
  472. package/dist/string/truncate.d.ts +28 -0
  473. package/dist/string/truncate.d.ts.map +1 -0
  474. package/dist/string/truncate.js +20 -17
  475. package/dist/string/truncate.js.map +1 -1
  476. package/dist/toolkit.cjs +2 -0
  477. package/dist/toolkit.cjs.map +1 -0
  478. package/dist/toolkit.js +1523 -0
  479. package/dist/toolkit.js.map +1 -0
  480. package/dist/typed/index.d.ts +24 -0
  481. package/dist/typed/index.d.ts.map +1 -0
  482. package/dist/typed/is.cjs +2 -2
  483. package/dist/typed/is.cjs.map +1 -1
  484. package/dist/typed/is.d.ts +95 -0
  485. package/dist/typed/is.d.ts.map +1 -0
  486. package/dist/typed/is.js +54 -42
  487. package/dist/typed/is.js.map +1 -1
  488. package/dist/typed/isArray.cjs +2 -2
  489. package/dist/typed/isArray.cjs.map +1 -1
  490. package/dist/typed/isArray.d.ts +16 -0
  491. package/dist/typed/isArray.d.ts.map +1 -0
  492. package/dist/typed/isArray.js +8 -8
  493. package/dist/typed/isArray.js.map +1 -1
  494. package/dist/typed/isBoolean.cjs +2 -2
  495. package/dist/typed/isBoolean.cjs.map +1 -1
  496. package/dist/typed/isBoolean.d.ts +23 -0
  497. package/dist/typed/isBoolean.d.ts.map +1 -0
  498. package/dist/typed/isBoolean.js +7 -6
  499. package/dist/typed/isBoolean.js.map +1 -1
  500. package/dist/typed/isDate.cjs +2 -2
  501. package/dist/typed/isDate.cjs.map +1 -1
  502. package/dist/typed/isDate.d.ts +16 -0
  503. package/dist/typed/isDate.d.ts.map +1 -0
  504. package/dist/typed/isDate.js +7 -8
  505. package/dist/typed/isDate.js.map +1 -1
  506. package/dist/typed/isDefined.cjs +2 -2
  507. package/dist/typed/isDefined.cjs.map +1 -1
  508. package/dist/typed/isDefined.d.ts +19 -0
  509. package/dist/typed/isDefined.d.ts.map +1 -0
  510. package/dist/typed/isDefined.js +7 -6
  511. package/dist/typed/isDefined.js.map +1 -1
  512. package/dist/typed/isEmpty.cjs +2 -2
  513. package/dist/typed/isEmpty.cjs.map +1 -1
  514. package/dist/typed/isEmpty.d.ts +24 -0
  515. package/dist/typed/isEmpty.d.ts.map +1 -0
  516. package/dist/typed/isEmpty.js +8 -9
  517. package/dist/typed/isEmpty.js.map +1 -1
  518. package/dist/typed/isEqual.cjs +2 -2
  519. package/dist/typed/isEqual.cjs.map +1 -1
  520. package/dist/typed/isEqual.d.ts +24 -0
  521. package/dist/typed/isEqual.d.ts.map +1 -0
  522. package/dist/typed/isEqual.js +27 -28
  523. package/dist/typed/isEqual.js.map +1 -1
  524. package/dist/typed/isEven.cjs +2 -2
  525. package/dist/typed/isEven.cjs.map +1 -1
  526. package/dist/typed/isEven.d.ts +9 -0
  527. package/dist/typed/isEven.d.ts.map +1 -0
  528. package/dist/typed/isEven.js +7 -6
  529. package/dist/typed/isEven.js.map +1 -1
  530. package/dist/typed/isFunction.cjs +2 -2
  531. package/dist/typed/isFunction.cjs.map +1 -1
  532. package/dist/typed/isFunction.d.ts +16 -0
  533. package/dist/typed/isFunction.d.ts.map +1 -0
  534. package/dist/typed/isFunction.js +7 -8
  535. package/dist/typed/isFunction.js.map +1 -1
  536. package/dist/typed/isMatch.cjs +2 -2
  537. package/dist/typed/isMatch.cjs.map +1 -1
  538. package/dist/typed/isMatch.d.ts +23 -0
  539. package/dist/typed/isMatch.d.ts.map +1 -0
  540. package/dist/typed/isMatch.js +16 -18
  541. package/dist/typed/isMatch.js.map +1 -1
  542. package/dist/typed/isNegative.cjs +2 -2
  543. package/dist/typed/isNegative.cjs.map +1 -1
  544. package/dist/typed/isNegative.d.ts +26 -0
  545. package/dist/typed/isNegative.d.ts.map +1 -0
  546. package/dist/typed/isNegative.js +7 -6
  547. package/dist/typed/isNegative.js.map +1 -1
  548. package/dist/typed/isNil.cjs +2 -2
  549. package/dist/typed/isNil.cjs.map +1 -1
  550. package/dist/typed/isNil.d.ts +17 -0
  551. package/dist/typed/isNil.d.ts.map +1 -0
  552. package/dist/typed/isNil.js +7 -8
  553. package/dist/typed/isNil.js.map +1 -1
  554. package/dist/typed/isNumber.cjs +2 -2
  555. package/dist/typed/isNumber.cjs.map +1 -1
  556. package/dist/typed/isNumber.d.ts +16 -0
  557. package/dist/typed/isNumber.d.ts.map +1 -0
  558. package/dist/typed/isNumber.js +8 -8
  559. package/dist/typed/isNumber.js.map +1 -1
  560. package/dist/typed/isObject.cjs +2 -2
  561. package/dist/typed/isObject.cjs.map +1 -1
  562. package/dist/typed/isObject.d.ts +19 -0
  563. package/dist/typed/isObject.d.ts.map +1 -0
  564. package/dist/typed/isObject.js +8 -8
  565. package/dist/typed/isObject.js.map +1 -1
  566. package/dist/typed/isOdd.cjs +2 -2
  567. package/dist/typed/isOdd.cjs.map +1 -1
  568. package/dist/typed/isOdd.d.ts +9 -0
  569. package/dist/typed/isOdd.d.ts.map +1 -0
  570. package/dist/typed/isOdd.js +7 -6
  571. package/dist/typed/isOdd.js.map +1 -1
  572. package/dist/typed/isPositive.cjs +2 -2
  573. package/dist/typed/isPositive.cjs.map +1 -1
  574. package/dist/typed/isPositive.d.ts +26 -0
  575. package/dist/typed/isPositive.d.ts.map +1 -0
  576. package/dist/typed/isPositive.js +7 -6
  577. package/dist/typed/isPositive.js.map +1 -1
  578. package/dist/typed/isPrimitive.cjs +2 -2
  579. package/dist/typed/isPrimitive.cjs.map +1 -1
  580. package/dist/typed/isPrimitive.d.ts +18 -0
  581. package/dist/typed/isPrimitive.d.ts.map +1 -0
  582. package/dist/typed/isPrimitive.js +8 -9
  583. package/dist/typed/isPrimitive.js.map +1 -1
  584. package/dist/typed/isPromise.cjs +2 -2
  585. package/dist/typed/isPromise.cjs.map +1 -1
  586. package/dist/typed/isPromise.d.ts +17 -0
  587. package/dist/typed/isPromise.d.ts.map +1 -0
  588. package/dist/typed/isPromise.js +7 -9
  589. package/dist/typed/isPromise.js.map +1 -1
  590. package/dist/typed/isRegex.cjs +2 -2
  591. package/dist/typed/isRegex.cjs.map +1 -1
  592. package/dist/typed/isRegex.d.ts +21 -0
  593. package/dist/typed/isRegex.d.ts.map +1 -0
  594. package/dist/typed/isRegex.js +7 -6
  595. package/dist/typed/isRegex.js.map +1 -1
  596. package/dist/typed/isString.cjs +2 -2
  597. package/dist/typed/isString.cjs.map +1 -1
  598. package/dist/typed/isString.d.ts +16 -0
  599. package/dist/typed/isString.d.ts.map +1 -0
  600. package/dist/typed/isString.js +8 -8
  601. package/dist/typed/isString.js.map +1 -1
  602. package/dist/typed/isWithin.cjs +2 -2
  603. package/dist/typed/isWithin.cjs.map +1 -1
  604. package/dist/typed/isWithin.d.ts +20 -0
  605. package/dist/typed/isWithin.d.ts.map +1 -0
  606. package/dist/typed/isWithin.js +9 -9
  607. package/dist/typed/isWithin.js.map +1 -1
  608. package/dist/typed/isZero.cjs +2 -2
  609. package/dist/typed/isZero.cjs.map +1 -1
  610. package/dist/typed/isZero.d.ts +25 -0
  611. package/dist/typed/isZero.d.ts.map +1 -0
  612. package/dist/typed/isZero.js +7 -6
  613. package/dist/typed/isZero.js.map +1 -1
  614. package/dist/typed/typeOf.cjs +2 -2
  615. package/dist/typed/typeOf.cjs.map +1 -1
  616. package/dist/typed/typeOf.d.ts +30 -0
  617. package/dist/typed/typeOf.d.ts.map +1 -0
  618. package/dist/typed/typeOf.js +11 -13
  619. package/dist/typed/typeOf.js.map +1 -1
  620. package/dist/types.d.ts +9 -0
  621. package/dist/types.d.ts.map +1 -0
  622. package/package.json +77 -12
  623. package/dist/array/aggregate.cjs +0 -2
  624. package/dist/array/aggregate.cjs.map +0 -1
  625. package/dist/array/aggregate.js +0 -16
  626. package/dist/array/aggregate.js.map +0 -1
  627. package/dist/array/alternate.cjs +0 -2
  628. package/dist/array/alternate.cjs.map +0 -1
  629. package/dist/array/alternate.js +0 -9
  630. package/dist/array/alternate.js.map +0 -1
  631. package/dist/array/arrange.cjs +0 -2
  632. package/dist/array/arrange.cjs.map +0 -1
  633. package/dist/array/arrange.js +0 -6
  634. package/dist/array/arrange.js.map +0 -1
  635. package/dist/array/compact.cjs +0 -2
  636. package/dist/array/compact.cjs.map +0 -1
  637. package/dist/array/compact.js +0 -9
  638. package/dist/array/compact.js.map +0 -1
  639. package/dist/array/every.cjs +0 -2
  640. package/dist/array/every.cjs.map +0 -1
  641. package/dist/array/every.js +0 -14
  642. package/dist/array/every.js.map +0 -1
  643. package/dist/array/filter.cjs +0 -2
  644. package/dist/array/filter.cjs.map +0 -1
  645. package/dist/array/filter.js +0 -14
  646. package/dist/array/filter.js.map +0 -1
  647. package/dist/array/find.cjs +0 -2
  648. package/dist/array/find.cjs.map +0 -1
  649. package/dist/array/find.js +0 -14
  650. package/dist/array/find.js.map +0 -1
  651. package/dist/array/findIndex.cjs +0 -2
  652. package/dist/array/findIndex.cjs.map +0 -1
  653. package/dist/array/findIndex.js +0 -14
  654. package/dist/array/findIndex.js.map +0 -1
  655. package/dist/array/findLast.cjs +0 -2
  656. package/dist/array/findLast.cjs.map +0 -1
  657. package/dist/array/findLast.js +0 -14
  658. package/dist/array/findLast.js.map +0 -1
  659. package/dist/array/flatten.cjs +0 -2
  660. package/dist/array/flatten.cjs.map +0 -1
  661. package/dist/array/flatten.js +0 -7
  662. package/dist/array/flatten.js.map +0 -1
  663. package/dist/array/map.cjs +0 -2
  664. package/dist/array/map.cjs.map +0 -1
  665. package/dist/array/map.js +0 -18
  666. package/dist/array/map.js.map +0 -1
  667. package/dist/array/reduce.cjs +0 -2
  668. package/dist/array/reduce.cjs.map +0 -1
  669. package/dist/array/reduce.js +0 -16
  670. package/dist/array/reduce.js.map +0 -1
  671. package/dist/array/shift.cjs +0 -2
  672. package/dist/array/shift.cjs.map +0 -1
  673. package/dist/array/shift.js +0 -13
  674. package/dist/array/shift.js.map +0 -1
  675. package/dist/array/some.cjs +0 -2
  676. package/dist/array/some.cjs.map +0 -1
  677. package/dist/array/some.js +0 -14
  678. package/dist/array/some.js.map +0 -1
  679. package/dist/array/substitute.cjs +0 -2
  680. package/dist/array/substitute.cjs.map +0 -1
  681. package/dist/array/substitute.js +0 -13
  682. package/dist/array/substitute.js.map +0 -1
  683. package/dist/async/delay.cjs +0 -2
  684. package/dist/async/delay.cjs.map +0 -1
  685. package/dist/async/delay.js +0 -8
  686. package/dist/async/delay.js.map +0 -1
  687. package/dist/function/proxy.cjs +0 -2
  688. package/dist/function/proxy.cjs.map +0 -1
  689. package/dist/function/proxy.js +0 -22
  690. package/dist/function/proxy.js.map +0 -1
  691. package/dist/function/prune.cjs +0 -2
  692. package/dist/function/prune.cjs.map +0 -1
  693. package/dist/function/prune.js +0 -30
  694. package/dist/function/prune.js.map +0 -1
  695. package/dist/function/worker.cjs +0 -14
  696. package/dist/function/worker.cjs.map +0 -1
  697. package/dist/function/worker.js +0 -29
  698. package/dist/function/worker.js.map +0 -1
  699. package/dist/index.cjs.map +0 -1
  700. package/dist/index.js.map +0 -1
  701. package/dist/logit/dist/logit.cjs +0 -2
  702. package/dist/logit/dist/logit.cjs.map +0 -1
  703. package/dist/logit/dist/logit.js +0 -263
  704. package/dist/logit/dist/logit.js.map +0 -1
  705. package/dist/math/add.cjs +0 -2
  706. package/dist/math/add.cjs.map +0 -1
  707. package/dist/math/add.js +0 -9
  708. package/dist/math/add.js.map +0 -1
  709. package/dist/math/boil.cjs +0 -2
  710. package/dist/math/boil.cjs.map +0 -1
  711. package/dist/math/boil.js +0 -17
  712. package/dist/math/boil.js.map +0 -1
  713. package/dist/math/divide.cjs +0 -2
  714. package/dist/math/divide.cjs.map +0 -1
  715. package/dist/math/divide.js +0 -11
  716. package/dist/math/divide.js.map +0 -1
  717. package/dist/math/multiply.cjs +0 -2
  718. package/dist/math/multiply.cjs.map +0 -1
  719. package/dist/math/multiply.js +0 -9
  720. package/dist/math/multiply.js.map +0 -1
  721. package/dist/math/rate.cjs +0 -2
  722. package/dist/math/rate.cjs.map +0 -1
  723. package/dist/math/rate.js +0 -9
  724. package/dist/math/rate.js.map +0 -1
  725. package/dist/math/subtract.cjs +0 -2
  726. package/dist/math/subtract.cjs.map +0 -1
  727. package/dist/math/subtract.js +0 -9
  728. package/dist/math/subtract.js.map +0 -1
  729. package/dist/object/cache.cjs +0 -2
  730. package/dist/object/cache.cjs.map +0 -1
  731. package/dist/object/cache.js +0 -63
  732. package/dist/object/cache.js.map +0 -1
  733. package/dist/object/clone.cjs +0 -2
  734. package/dist/object/clone.cjs.map +0 -1
  735. package/dist/object/clone.js +0 -17
  736. package/dist/object/clone.js.map +0 -1
  737. package/dist/object/entries.cjs +0 -2
  738. package/dist/object/entries.cjs.map +0 -1
  739. package/dist/object/entries.js +0 -9
  740. package/dist/object/entries.js.map +0 -1
  741. package/dist/object/keys.cjs +0 -2
  742. package/dist/object/keys.cjs.map +0 -1
  743. package/dist/object/keys.js +0 -9
  744. package/dist/object/keys.js.map +0 -1
  745. package/dist/object/values.cjs +0 -2
  746. package/dist/object/values.cjs.map +0 -1
  747. package/dist/object/values.js +0 -9
  748. package/dist/object/values.js.map +0 -1
  749. package/dist/typed/ge.cjs +0 -2
  750. package/dist/typed/ge.cjs.map +0 -1
  751. package/dist/typed/ge.js +0 -7
  752. package/dist/typed/ge.js.map +0 -1
  753. package/dist/typed/gt.cjs +0 -2
  754. package/dist/typed/gt.cjs.map +0 -1
  755. package/dist/typed/gt.js +0 -7
  756. package/dist/typed/gt.js.map +0 -1
  757. package/dist/typed/le.cjs +0 -2
  758. package/dist/typed/le.cjs.map +0 -1
  759. package/dist/typed/le.js +0 -7
  760. package/dist/typed/le.js.map +0 -1
  761. package/dist/typed/lt.cjs +0 -2
  762. package/dist/typed/lt.cjs.map +0 -1
  763. package/dist/typed/lt.js +0 -7
  764. package/dist/typed/lt.js.map +0 -1
@@ -0,0 +1,21 @@
1
+ import { isObject as e } from "../typed/isObject.js";
2
+ //#region src/object/proxy.ts
3
+ function t(n, r) {
4
+ let { deep: i = !1, get: a, set: o, watch: s } = r, c = s ? new Set(s) : null;
5
+ return new Proxy(n, {
6
+ get(n, o, s) {
7
+ if (c && !c.has(o)) return Reflect.get(n, o, s);
8
+ let l = Reflect.get(n, o, s);
9
+ return a && (l = a(o, l, n)), i && e(l) ? t(l, r) : l;
10
+ },
11
+ set(n, a, s, l) {
12
+ if (c && !c.has(a)) return Reflect.set(n, a, s, l);
13
+ let u = n[a], d = o ? o(a, s, u, n) : s;
14
+ return i && e(d) ? Reflect.set(n, a, t(d, r), l) : Reflect.set(n, a, d, l);
15
+ }
16
+ });
17
+ }
18
+ //#endregion
19
+ export { t as proxy };
20
+
21
+ //# sourceMappingURL=proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.js","names":[],"sources":["../../src/object/proxy.ts"],"sourcesContent":["import type { Obj } from '../types';\n\nimport { isObject } from '../typed/isObject';\n\n// #region ProxyOptions\ntype ProxyOptions<T> = {\n deep?: boolean;\n get?: <K extends PropertyKey>(prop: K, val: unknown, target: T) => unknown;\n set?: <K extends PropertyKey>(prop: K, curr: unknown, prev: unknown, target: T) => unknown;\n watch?: (keyof T)[];\n};\n// #endregion ProxyOptions\n\n/**\n * Creates a new Proxy for the given object that invokes functions when properties are accessed or modified.\n *\n * @example\n * ```ts\n * const obj = { a: 1, b: 2 };\n * const log = (prop, curr, prev, target) => console.log(`Property '${prop}' changed from ${prev} to ${curr}`);\n * const proxyObj = proxy(obj, { set: log });\n * proxyObj.a = 3; // logs 'Property 'a' changed from 1 to 3'\n * ```\n *\n * @param item - The object to observe.\n * @param options - Configuration options for the proxy.\n * @param [options.set] - A function to call when a property is set.\n * @param [options.get] - A function to call when a property is accessed.\n * @param [options.deep] - If true, the proxy will also apply to nested objects.\n * @param [options.watch] - An array of property names to watch.\n *\n * @returns A new Proxy for the given object.\n */\nexport function proxy<T extends Obj>(item: T, options: ProxyOptions<T>): T {\n const { deep = false, get, set, watch } = options;\n const watchSet = watch ? new Set<PropertyKey>(watch as PropertyKey[]) : null;\n\n const handler: ProxyHandler<T> = {\n get(target, prop, receiver) {\n if (watchSet && !watchSet.has(prop)) {\n return Reflect.get(target, prop, receiver);\n }\n\n let value = Reflect.get(target, prop, receiver);\n\n if (get) {\n value = get(prop, value, target) as any;\n }\n\n if (deep && isObject(value)) {\n return proxy(value as unknown as T, options);\n }\n\n return value;\n },\n set(target, prop, val, receiver) {\n if (watchSet && !watchSet.has(prop)) {\n return Reflect.set(target, prop, val, receiver);\n }\n\n const prev = target[prop as keyof T];\n const value = set ? set(prop, val, prev, target) : val;\n\n if (deep && isObject(value)) {\n return Reflect.set(target, prop, proxy(value as unknown as T, options), receiver);\n }\n\n return Reflect.set(target, prop, value, receiver);\n },\n };\n\n return new Proxy(item, handler);\n}\n"],"mappings":";;AAiCA,SAAgB,EAAqB,GAAS,GAA6B;CACzE,IAAM,EAAE,UAAO,IAAO,QAAK,QAAK,aAAU,GACpC,IAAW,IAAQ,IAAI,IAAiB,EAAuB,GAAG;AAoCxE,QAAO,IAAI,MAAM,GAlCgB;EAC/B,IAAI,GAAQ,GAAM,GAAU;AAC1B,OAAI,KAAY,CAAC,EAAS,IAAI,EAAK,CACjC,QAAO,QAAQ,IAAI,GAAQ,GAAM,EAAS;GAG5C,IAAI,IAAQ,QAAQ,IAAI,GAAQ,GAAM,EAAS;AAU/C,UARI,MACF,IAAQ,EAAI,GAAM,GAAO,EAAO,GAG9B,KAAQ,EAAS,EAAM,GAClB,EAAM,GAAuB,EAAQ,GAGvC;;EAET,IAAI,GAAQ,GAAM,GAAK,GAAU;AAC/B,OAAI,KAAY,CAAC,EAAS,IAAI,EAAK,CACjC,QAAO,QAAQ,IAAI,GAAQ,GAAM,GAAK,EAAS;GAGjD,IAAM,IAAO,EAAO,IACd,IAAQ,IAAM,EAAI,GAAM,GAAK,GAAM,EAAO,GAAG;AAMnD,UAJI,KAAQ,EAAS,EAAM,GAClB,QAAQ,IAAI,GAAQ,GAAM,EAAM,GAAuB,EAAQ,EAAE,EAAS,GAG5E,QAAQ,IAAI,GAAQ,GAAM,GAAO,EAAS;;EAEpD,CAE8B"}
@@ -0,0 +1,2 @@
1
+ const e=require(`../typed/isArray.cjs`),t=require(`../typed/isString.cjs`),n=require(`../typed/isNil.cjs`),r=require(`../typed/isObject.cjs`),i=require(`../typed/isEmpty.cjs`);function a(o){if(!n.isNil(o)){if(t.isString(o)){let e=o.trim();return e===``?void 0:e}if(e.isArray(o)){let e=o.map(e=>a(e)).filter(e=>!i.isEmpty(e));return e.length===0?void 0:e}if(r.isObject(o)){let e={};for(let[t,n]of Object.entries(o)){let r=a(n);i.isEmpty(r)||(e[t]=r)}return Object.keys(e).length===0?void 0:e}return o}}exports.prune=a;
2
+ //# sourceMappingURL=prune.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prune.cjs","names":[],"sources":["../../src/object/prune.ts"],"sourcesContent":["import { isArray } from '../typed/isArray';\nimport { isEmpty } from '../typed/isEmpty';\nimport { isNil } from '../typed/isNil';\nimport { isObject } from '../typed/isObject';\nimport { isString } from '../typed/isString';\n\n/**\n * Removes all nullable and empty values from strings, arrays, or objects.\n *\n * - For strings: Removes leading/trailing whitespace and returns undefined if empty\n * - For arrays: Recursively removes null, undefined, empty strings, and empty objects/arrays\n * - For objects: Recursively removes properties with null, undefined, empty strings, and empty objects/arrays\n *\n * @example\n * ```ts\n * prune(' hello '); // 'hello'\n * prune(' '); // undefined\n * prune([1, null, '', 2, undefined, 3]); // [1, 2, 3]\n * prune({ a: 1, b: null, c: '', d: 2 }); // { a: 1, d: 2 }\n * prune({ a: { b: null, c: '' }, d: 1 }); // { d: 1 }\n * ```\n *\n * @param value - The value to prune (can be string, array, object, or any other type)\n * @returns The pruned value, or undefined if the result would be empty\n */\nexport function prune<T>(value: T): T | undefined {\n if (isNil(value)) return undefined;\n\n if (isString(value)) {\n const trimmed = value.trim();\n\n return (trimmed === '' ? undefined : trimmed) as T | undefined;\n }\n\n if (isArray(value)) {\n const cleaned = value.map((item) => prune(item)).filter((item) => !isEmpty(item));\n\n return (cleaned.length === 0 ? undefined : cleaned) as T | undefined;\n }\n\n if (isObject(value)) {\n const cleaned: Record<string, unknown> = {};\n\n for (const [key, val] of Object.entries(value)) {\n const cleanedValue = prune(val);\n\n if (!isEmpty(cleanedValue)) {\n cleaned[key] = cleanedValue;\n }\n }\n\n return (Object.keys(cleaned).length === 0 ? undefined : cleaned) as T | undefined;\n }\n\n return value;\n}\n"],"mappings":"gLAyBA,SAAgB,EAAS,EAAyB,CAC5C,MAAA,MAAM,EAAM,CAEhB,IAAI,EAAA,SAAS,EAAM,CAAE,CACnB,IAAM,EAAU,EAAM,MAAM,CAE5B,OAAQ,IAAY,GAAK,IAAA,GAAY,EAGvC,GAAI,EAAA,QAAQ,EAAM,CAAE,CAClB,IAAM,EAAU,EAAM,IAAK,GAAS,EAAM,EAAK,CAAC,CAAC,OAAQ,GAAS,CAAC,EAAA,QAAQ,EAAK,CAAC,CAEjF,OAAQ,EAAQ,SAAW,EAAI,IAAA,GAAY,EAG7C,GAAI,EAAA,SAAS,EAAM,CAAE,CACnB,IAAM,EAAmC,EAAE,CAE3C,IAAK,GAAM,CAAC,EAAK,KAAQ,OAAO,QAAQ,EAAM,CAAE,CAC9C,IAAM,EAAe,EAAM,EAAI,CAE1B,EAAA,QAAQ,EAAa,GACxB,EAAQ,GAAO,GAInB,OAAQ,OAAO,KAAK,EAAQ,CAAC,SAAW,EAAI,IAAA,GAAY,EAG1D,OAAO"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Removes all nullable and empty values from strings, arrays, or objects.
3
+ *
4
+ * - For strings: Removes leading/trailing whitespace and returns undefined if empty
5
+ * - For arrays: Recursively removes null, undefined, empty strings, and empty objects/arrays
6
+ * - For objects: Recursively removes properties with null, undefined, empty strings, and empty objects/arrays
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * prune(' hello '); // 'hello'
11
+ * prune(' '); // undefined
12
+ * prune([1, null, '', 2, undefined, 3]); // [1, 2, 3]
13
+ * prune({ a: 1, b: null, c: '', d: 2 }); // { a: 1, d: 2 }
14
+ * prune({ a: { b: null, c: '' }, d: 1 }); // { d: 1 }
15
+ * ```
16
+ *
17
+ * @param value - The value to prune (can be string, array, object, or any other type)
18
+ * @returns The pruned value, or undefined if the result would be empty
19
+ */
20
+ export declare function prune<T>(value: T): T | undefined;
21
+ //# sourceMappingURL=prune.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prune.d.ts","sourceRoot":"","sources":["../../src/object/prune.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS,CA8BhD"}
@@ -0,0 +1,31 @@
1
+ import { isArray as e } from "../typed/isArray.js";
2
+ import { isString as t } from "../typed/isString.js";
3
+ import { isNil as n } from "../typed/isNil.js";
4
+ import { isObject as r } from "../typed/isObject.js";
5
+ import { isEmpty as i } from "../typed/isEmpty.js";
6
+ //#region src/object/prune.ts
7
+ function a(o) {
8
+ if (!n(o)) {
9
+ if (t(o)) {
10
+ let e = o.trim();
11
+ return e === "" ? void 0 : e;
12
+ }
13
+ if (e(o)) {
14
+ let e = o.map((e) => a(e)).filter((e) => !i(e));
15
+ return e.length === 0 ? void 0 : e;
16
+ }
17
+ if (r(o)) {
18
+ let e = {};
19
+ for (let [t, n] of Object.entries(o)) {
20
+ let r = a(n);
21
+ i(r) || (e[t] = r);
22
+ }
23
+ return Object.keys(e).length === 0 ? void 0 : e;
24
+ }
25
+ return o;
26
+ }
27
+ }
28
+ //#endregion
29
+ export { a as prune };
30
+
31
+ //# sourceMappingURL=prune.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prune.js","names":[],"sources":["../../src/object/prune.ts"],"sourcesContent":["import { isArray } from '../typed/isArray';\nimport { isEmpty } from '../typed/isEmpty';\nimport { isNil } from '../typed/isNil';\nimport { isObject } from '../typed/isObject';\nimport { isString } from '../typed/isString';\n\n/**\n * Removes all nullable and empty values from strings, arrays, or objects.\n *\n * - For strings: Removes leading/trailing whitespace and returns undefined if empty\n * - For arrays: Recursively removes null, undefined, empty strings, and empty objects/arrays\n * - For objects: Recursively removes properties with null, undefined, empty strings, and empty objects/arrays\n *\n * @example\n * ```ts\n * prune(' hello '); // 'hello'\n * prune(' '); // undefined\n * prune([1, null, '', 2, undefined, 3]); // [1, 2, 3]\n * prune({ a: 1, b: null, c: '', d: 2 }); // { a: 1, d: 2 }\n * prune({ a: { b: null, c: '' }, d: 1 }); // { d: 1 }\n * ```\n *\n * @param value - The value to prune (can be string, array, object, or any other type)\n * @returns The pruned value, or undefined if the result would be empty\n */\nexport function prune<T>(value: T): T | undefined {\n if (isNil(value)) return undefined;\n\n if (isString(value)) {\n const trimmed = value.trim();\n\n return (trimmed === '' ? undefined : trimmed) as T | undefined;\n }\n\n if (isArray(value)) {\n const cleaned = value.map((item) => prune(item)).filter((item) => !isEmpty(item));\n\n return (cleaned.length === 0 ? undefined : cleaned) as T | undefined;\n }\n\n if (isObject(value)) {\n const cleaned: Record<string, unknown> = {};\n\n for (const [key, val] of Object.entries(value)) {\n const cleanedValue = prune(val);\n\n if (!isEmpty(cleanedValue)) {\n cleaned[key] = cleanedValue;\n }\n }\n\n return (Object.keys(cleaned).length === 0 ? undefined : cleaned) as T | undefined;\n }\n\n return value;\n}\n"],"mappings":";;;;;;AAyBA,SAAgB,EAAS,GAAyB;AAC5C,QAAM,EAAM,EAEhB;MAAI,EAAS,EAAM,EAAE;GACnB,IAAM,IAAU,EAAM,MAAM;AAE5B,UAAQ,MAAY,KAAK,KAAA,IAAY;;AAGvC,MAAI,EAAQ,EAAM,EAAE;GAClB,IAAM,IAAU,EAAM,KAAK,MAAS,EAAM,EAAK,CAAC,CAAC,QAAQ,MAAS,CAAC,EAAQ,EAAK,CAAC;AAEjF,UAAQ,EAAQ,WAAW,IAAI,KAAA,IAAY;;AAG7C,MAAI,EAAS,EAAM,EAAE;GACnB,IAAM,IAAmC,EAAE;AAE3C,QAAK,IAAM,CAAC,GAAK,MAAQ,OAAO,QAAQ,EAAM,EAAE;IAC9C,IAAM,IAAe,EAAM,EAAI;AAE/B,IAAK,EAAQ,EAAa,KACxB,EAAQ,KAAO;;AAInB,UAAQ,OAAO,KAAK,EAAQ,CAAC,WAAW,IAAI,KAAA,IAAY;;AAG1D,SAAO"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("../function/assert.cjs"),l=require("../string/similarity.cjs"),s=require("../typed/is.cjs"),a=require("../typed/isWithin.cjs");function t(r,n,i=1){return u.assert(a.isWithin(i,0,1),a.IS_WITHIN_ERROR_MSG,{args:{max:1,min:0,tone:i},type:TypeError}),s.is("nil",r)?!1:s.is("string",r)||s.is("number",r)?l.similarity(r,n)>=i:s.is("array",r)?r.some(e=>t(e,n,i)):s.is("object",r)?Object.values(r).some(e=>s.is("nil",e)?!1:t(e,n,i)):!1}exports.seek=t;
2
- //# sourceMappingURL=seek.cjs.map
1
+ const e=require(`../function/assert.cjs`),t=require(`../typed/isArray.cjs`),n=require(`../typed/isString.cjs`),r=require(`../string/similarity.cjs`),i=require(`../typed/isNil.cjs`),a=require(`../typed/isNumber.cjs`),o=require(`../typed/isObject.cjs`),s=require(`../typed/isWithin.cjs`);function c(e,s,l){return i.isNil(e)?!1:n.isString(e)||a.isNumber(e)?r.similarity(String(e),s)>=l:t.isArray(e)?e.some(e=>c(e,s,l)):o.isObject(e)?Object.values(e).some(e=>i.isNil(e)?!1:c(e,s,l)):!1}function l(t,n,r=1){return e.assert(s.isWithin(r,0,1),s.IS_WITHIN_ERROR_MSG,{args:{max:1,min:0,tone:r},type:TypeError}),c(t,n,r)}exports.seek=l;
2
+ //# sourceMappingURL=seek.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"seek.cjs","sources":["../../src/object/seek.ts"],"sourcesContent":["import { assert } from '../function/assert';\nimport { similarity } from '../string/similarity';\nimport { is } from '../typed/is';\nimport { IS_WITHIN_ERROR_MSG, isWithin } from '../typed/isWithin';\n\n/**\n * Recursively checks if an object contains a value similar to the search string.\n *\n * @example\n * ```ts\n * const obj = { a: 'hello', b: { c: 'world' }, d: [1, 2, 3] };\n *\n * seek(obj, 'hello'); // true\n * seek(obj, 'world'); // true\n * seek(obj, 'foo'); // false\n * seek(obj, 'hello', 0.5); // true\n * seek(obj, 'hello', 0.8); // true\n * seek(obj, 'hello', 1); // true\n * seek(obj, 'hello', 1.5); // false\n * seek(obj, 'hello', -1); // false\n * seek(obj, 'hello', 0); // false\n * ```\n *\n * @param item - The object to search within.\n * @param query - The search string.\n * @param [tone=1] - The similarity threshold.\n *\n * @returns Whether the object contains a matching value.\n */\nexport function seek<T>(item: T, query: string, tone = 1): boolean {\n assert(isWithin(tone, 0, 1), IS_WITHIN_ERROR_MSG, { args: { max: 1, min: 0, tone }, type: TypeError });\n\n if (is('nil', item)) return false;\n\n if (is('string', item) || is('number', item)) {\n // Lowercase both sides for case-insensitive comparison\n return similarity(item, query) >= tone;\n }\n\n // Handle arrays\n if (is('array', item)) {\n return (item as unknown[]).some((value) => seek(value, query, tone));\n }\n\n // Handle objects but skip dates/regex/etc which are technically objects\n if (is('object', item)) {\n return Object.values(item as Record<string, unknown>).some((value) =>\n is('nil', value) ? false : seek(value, query, tone),\n );\n }\n\n return false;\n}\n"],"names":["seek","item","query","tone","assert","isWithin","IS_WITHIN_ERROR_MSG","is","similarity","value"],"mappings":"gOA6BO,SAASA,EAAQC,EAASC,EAAeC,EAAO,EAAY,CAGjE,OAFAC,EAAAA,OAAOC,EAAAA,SAASF,EAAM,EAAG,CAAC,EAAGG,EAAAA,oBAAqB,CAAE,KAAM,CAAE,IAAK,EAAG,IAAK,EAAG,KAAAH,GAAQ,KAAM,UAAW,EAEjGI,KAAG,MAAON,CAAI,EAAU,GAExBM,EAAAA,GAAG,SAAUN,CAAI,GAAKM,EAAAA,GAAG,SAAUN,CAAI,EAElCO,aAAWP,EAAMC,CAAK,GAAKC,EAIhCI,EAAAA,GAAG,QAASN,CAAI,EACVA,EAAmB,KAAMQ,GAAUT,EAAKS,EAAOP,EAAOC,CAAI,CAAC,EAIjEI,EAAAA,GAAG,SAAUN,CAAI,EACZ,OAAO,OAAOA,CAA+B,EAAE,KAAMQ,GAC1DF,KAAG,MAAOE,CAAK,EAAI,GAAQT,EAAKS,EAAOP,EAAOC,CAAI,CAAA,EAI/C,EACT"}
1
+ {"version":3,"file":"seek.cjs","names":[],"sources":["../../src/object/seek.ts"],"sourcesContent":["import { assert } from '../function/assert';\nimport { similarity } from '../string/similarity';\nimport { isArray } from '../typed/isArray';\nimport { isNil } from '../typed/isNil';\nimport { isNumber } from '../typed/isNumber';\nimport { isObject } from '../typed/isObject';\nimport { isString } from '../typed/isString';\nimport { IS_WITHIN_ERROR_MSG, isWithin } from '../typed/isWithin';\n\n/**\n * Recursively checks if an object contains a value similar to the search string.\n *\n * @example\n * ```ts\n * const obj = { a: 'hello', b: { c: 'world' }, d: [1, 2, 3] };\n *\n * seek(obj, 'hello'); // true\n * seek(obj, 'world'); // true\n * seek(obj, 'foo'); // false\n * seek(obj, 'hello', 0.5); // true\n * seek(obj, 'hello', 0.8); // true\n * seek(obj, 'hello', 1); // true\n * seek(obj, 'hello', 1.5); // false\n * seek(obj, 'hello', -1); // false\n * seek(obj, 'hello', 0); // false\n * ```\n *\n * @param item - The object to search within.\n * @param query - The search string.\n * @param [tone=1] - The similarity threshold.\n *\n * @returns Whether the object contains a matching value.\n */\nfunction _seek<T>(item: T, query: string, tone: number): boolean {\n if (isNil(item)) return false;\n\n if (isString(item) || isNumber(item)) {\n return similarity(String(item), query) >= tone;\n }\n\n if (isArray(item)) {\n return (item as unknown[]).some((value) => _seek(value, query, tone));\n }\n\n if (isObject(item)) {\n return Object.values(item as Record<string, unknown>).some((value) =>\n isNil(value) ? false : _seek(value, query, tone),\n );\n }\n\n return false;\n}\n\nexport function seek<T>(item: T, query: string, tone = 1): boolean {\n assert(isWithin(tone, 0, 1), IS_WITHIN_ERROR_MSG, { args: { max: 1, min: 0, tone }, type: TypeError });\n\n return _seek(item, query, tone);\n}\n"],"mappings":"8RAiCA,SAAS,EAAS,EAAS,EAAe,EAAuB,CAiB/D,OAhBI,EAAA,MAAM,EAAK,CAAS,GAEpB,EAAA,SAAS,EAAK,EAAI,EAAA,SAAS,EAAK,CAC3B,EAAA,WAAW,OAAO,EAAK,CAAE,EAAM,EAAI,EAGxC,EAAA,QAAQ,EAAK,CACP,EAAmB,KAAM,GAAU,EAAM,EAAO,EAAO,EAAK,CAAC,CAGnE,EAAA,SAAS,EAAK,CACT,OAAO,OAAO,EAAgC,CAAC,KAAM,GAC1D,EAAA,MAAM,EAAM,CAAG,GAAQ,EAAM,EAAO,EAAO,EAAK,CACjD,CAGI,GAGT,SAAgB,EAAQ,EAAS,EAAe,EAAO,EAAY,CAGjE,OAFA,EAAA,OAAO,EAAA,SAAS,EAAM,EAAG,EAAE,CAAE,EAAA,oBAAqB,CAAE,KAAM,CAAE,IAAK,EAAG,IAAK,EAAG,OAAM,CAAE,KAAM,UAAW,CAAC,CAE/F,EAAM,EAAM,EAAO,EAAK"}
@@ -0,0 +1,2 @@
1
+ export declare function seek<T>(item: T, query: string, tone?: number): boolean;
2
+ //# sourceMappingURL=seek.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seek.d.ts","sourceRoot":"","sources":["../../src/object/seek.ts"],"names":[],"mappings":"AAqDA,wBAAgB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,SAAI,GAAG,OAAO,CAIjE"}
@@ -1,13 +1,26 @@
1
- import { assert as n } from "../function/assert.js";
2
- import { similarity as m } from "../string/similarity.js";
3
- import { is as s } from "../typed/is.js";
4
- import { IS_WITHIN_ERROR_MSG as p, isWithin as t } from "../typed/isWithin.js";
5
- function a(r, o, i = 1) {
6
- return n(t(i, 0, 1), p, { args: { max: 1, min: 0, tone: i }, type: TypeError }), s("nil", r) ? !1 : s("string", r) || s("number", r) ? m(r, o) >= i : s("array", r) ? r.some((f) => a(f, o, i)) : s("object", r) ? Object.values(r).some(
7
- (f) => s("nil", f) ? !1 : a(f, o, i)
8
- ) : !1;
1
+ import { assert as e } from "../function/assert.js";
2
+ import { isArray as t } from "../typed/isArray.js";
3
+ import { isString as n } from "../typed/isString.js";
4
+ import { similarity as r } from "../string/similarity.js";
5
+ import { isNil as i } from "../typed/isNil.js";
6
+ import { isNumber as a } from "../typed/isNumber.js";
7
+ import { isObject as o } from "../typed/isObject.js";
8
+ import { IS_WITHIN_ERROR_MSG as s, isWithin as c } from "../typed/isWithin.js";
9
+ //#region src/object/seek.ts
10
+ function l(e, s, c) {
11
+ return i(e) ? !1 : n(e) || a(e) ? r(String(e), s) >= c : t(e) ? e.some((e) => l(e, s, c)) : o(e) ? Object.values(e).some((e) => i(e) ? !1 : l(e, s, c)) : !1;
9
12
  }
10
- export {
11
- a as seek
12
- };
13
- //# sourceMappingURL=seek.js.map
13
+ function u(t, n, r = 1) {
14
+ return e(c(r, 0, 1), s, {
15
+ args: {
16
+ max: 1,
17
+ min: 0,
18
+ tone: r
19
+ },
20
+ type: TypeError
21
+ }), l(t, n, r);
22
+ }
23
+ //#endregion
24
+ export { u as seek };
25
+
26
+ //# sourceMappingURL=seek.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"seek.js","sources":["../../src/object/seek.ts"],"sourcesContent":["import { assert } from '../function/assert';\nimport { similarity } from '../string/similarity';\nimport { is } from '../typed/is';\nimport { IS_WITHIN_ERROR_MSG, isWithin } from '../typed/isWithin';\n\n/**\n * Recursively checks if an object contains a value similar to the search string.\n *\n * @example\n * ```ts\n * const obj = { a: 'hello', b: { c: 'world' }, d: [1, 2, 3] };\n *\n * seek(obj, 'hello'); // true\n * seek(obj, 'world'); // true\n * seek(obj, 'foo'); // false\n * seek(obj, 'hello', 0.5); // true\n * seek(obj, 'hello', 0.8); // true\n * seek(obj, 'hello', 1); // true\n * seek(obj, 'hello', 1.5); // false\n * seek(obj, 'hello', -1); // false\n * seek(obj, 'hello', 0); // false\n * ```\n *\n * @param item - The object to search within.\n * @param query - The search string.\n * @param [tone=1] - The similarity threshold.\n *\n * @returns Whether the object contains a matching value.\n */\nexport function seek<T>(item: T, query: string, tone = 1): boolean {\n assert(isWithin(tone, 0, 1), IS_WITHIN_ERROR_MSG, { args: { max: 1, min: 0, tone }, type: TypeError });\n\n if (is('nil', item)) return false;\n\n if (is('string', item) || is('number', item)) {\n // Lowercase both sides for case-insensitive comparison\n return similarity(item, query) >= tone;\n }\n\n // Handle arrays\n if (is('array', item)) {\n return (item as unknown[]).some((value) => seek(value, query, tone));\n }\n\n // Handle objects but skip dates/regex/etc which are technically objects\n if (is('object', item)) {\n return Object.values(item as Record<string, unknown>).some((value) =>\n is('nil', value) ? false : seek(value, query, tone),\n );\n }\n\n return false;\n}\n"],"names":["seek","item","query","tone","assert","isWithin","IS_WITHIN_ERROR_MSG","is","similarity","value"],"mappings":";;;;AA6BO,SAASA,EAAQC,GAASC,GAAeC,IAAO,GAAY;AAGjE,SAFAC,EAAOC,EAASF,GAAM,GAAG,CAAC,GAAGG,GAAqB,EAAE,MAAM,EAAE,KAAK,GAAG,KAAK,GAAG,MAAAH,KAAQ,MAAM,WAAW,GAEjGI,EAAG,OAAON,CAAI,IAAU,KAExBM,EAAG,UAAUN,CAAI,KAAKM,EAAG,UAAUN,CAAI,IAElCO,EAAWP,GAAMC,CAAK,KAAKC,IAIhCI,EAAG,SAASN,CAAI,IACVA,EAAmB,KAAK,CAACQ,MAAUT,EAAKS,GAAOP,GAAOC,CAAI,CAAC,IAIjEI,EAAG,UAAUN,CAAI,IACZ,OAAO,OAAOA,CAA+B,EAAE;AAAA,IAAK,CAACQ,MAC1DF,EAAG,OAAOE,CAAK,IAAI,KAAQT,EAAKS,GAAOP,GAAOC,CAAI;AAAA,EAAA,IAI/C;AACT;"}
1
+ {"version":3,"file":"seek.js","names":[],"sources":["../../src/object/seek.ts"],"sourcesContent":["import { assert } from '../function/assert';\nimport { similarity } from '../string/similarity';\nimport { isArray } from '../typed/isArray';\nimport { isNil } from '../typed/isNil';\nimport { isNumber } from '../typed/isNumber';\nimport { isObject } from '../typed/isObject';\nimport { isString } from '../typed/isString';\nimport { IS_WITHIN_ERROR_MSG, isWithin } from '../typed/isWithin';\n\n/**\n * Recursively checks if an object contains a value similar to the search string.\n *\n * @example\n * ```ts\n * const obj = { a: 'hello', b: { c: 'world' }, d: [1, 2, 3] };\n *\n * seek(obj, 'hello'); // true\n * seek(obj, 'world'); // true\n * seek(obj, 'foo'); // false\n * seek(obj, 'hello', 0.5); // true\n * seek(obj, 'hello', 0.8); // true\n * seek(obj, 'hello', 1); // true\n * seek(obj, 'hello', 1.5); // false\n * seek(obj, 'hello', -1); // false\n * seek(obj, 'hello', 0); // false\n * ```\n *\n * @param item - The object to search within.\n * @param query - The search string.\n * @param [tone=1] - The similarity threshold.\n *\n * @returns Whether the object contains a matching value.\n */\nfunction _seek<T>(item: T, query: string, tone: number): boolean {\n if (isNil(item)) return false;\n\n if (isString(item) || isNumber(item)) {\n return similarity(String(item), query) >= tone;\n }\n\n if (isArray(item)) {\n return (item as unknown[]).some((value) => _seek(value, query, tone));\n }\n\n if (isObject(item)) {\n return Object.values(item as Record<string, unknown>).some((value) =>\n isNil(value) ? false : _seek(value, query, tone),\n );\n }\n\n return false;\n}\n\nexport function seek<T>(item: T, query: string, tone = 1): boolean {\n assert(isWithin(tone, 0, 1), IS_WITHIN_ERROR_MSG, { args: { max: 1, min: 0, tone }, type: TypeError });\n\n return _seek(item, query, tone);\n}\n"],"mappings":";;;;;;;;;AAiCA,SAAS,EAAS,GAAS,GAAe,GAAuB;AAiB/D,QAhBI,EAAM,EAAK,GAAS,KAEpB,EAAS,EAAK,IAAI,EAAS,EAAK,GAC3B,EAAW,OAAO,EAAK,EAAE,EAAM,IAAI,IAGxC,EAAQ,EAAK,GACP,EAAmB,MAAM,MAAU,EAAM,GAAO,GAAO,EAAK,CAAC,GAGnE,EAAS,EAAK,GACT,OAAO,OAAO,EAAgC,CAAC,MAAM,MAC1D,EAAM,EAAM,GAAG,KAAQ,EAAM,GAAO,GAAO,EAAK,CACjD,GAGI;;AAGT,SAAgB,EAAQ,GAAS,GAAe,IAAO,GAAY;AAGjE,QAFA,EAAO,EAAS,GAAM,GAAG,EAAE,EAAE,GAAqB;EAAE,MAAM;GAAE,KAAK;GAAG,KAAK;GAAG;GAAM;EAAE,MAAM;EAAW,CAAC,EAE/F,EAAM,GAAM,GAAO,EAAK"}
@@ -0,0 +1,2 @@
1
+ const e=require(`../async/scheduler.cjs`);function t(t){let n=new Map,r=new Map,i=t.scheduler??new e.Scheduler,a=t.hash,o=0;function s(e){r.get(e)?.controller.abort(),r.delete(e)}function c(e){let t=n.has(e);return s(e),n.delete(e),t}function l(e){return n.get(a(e))?.value}function u(e){let t=n.get(a(e));if(t)return{meta:t.meta,value:t.value}}function d(e,t,r){let i=a(e),o=n.get(i);s(i),n.set(i,{key:e,meta:r&&`meta`in r?r.meta:o?.meta,value:t}),r?.ttlMs!==void 0&&_(e,r.ttlMs)}function f(e,t,n){let r=u(e);if(r)return r.value;let i=t();return d(e,i,n),i}function p(e){return c(a(e))}function m(){for(let e of r.values())e.controller.abort();n.clear(),r.clear()}function h(){return n.size}function g(e,a){if(s(e),a===1/0)return;if(!Number.isFinite(a))throw TypeError(`stash.scheduleGc expects a finite number or Infinity`);if(a<=0){c(e);return}if(!n.has(e))return;let l=new AbortController,u=++o;r.set(e,{controller:l,token:u}),i.postTask(()=>{let t=r.get(e);!t||t.token!==u||(r.delete(e),c(e))},{delay:a,priority:`background`,signal:l.signal}).catch(e=>{e instanceof DOMException&&e.name===`AbortError`||t.onError?.(e)})}function _(e,t){g(a(e),t)}function v(e){s(a(e))}function y(e,t){let r=a(e);return n.has(r)?(g(r,t),!0):!1}function*b(){for(let e of n.values())yield[e.key,e.value]}return{cancelGc:v,clear:m,delete:p,entries:b,get:l,getEntry:u,getOrSet:f,scheduleGc:_,set:d,size:h,touch:y}}exports.stash=t;
2
+ //# sourceMappingURL=stash.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stash.cjs","names":[],"sources":["../../src/object/stash.ts"],"sourcesContent":["import { Scheduler, type SchedulerLike } from '../async';\n\ntype CacheKey = readonly unknown[];\n\ntype CacheRecord<K extends CacheKey, T, M> = {\n key: K;\n meta: M | undefined;\n value: T;\n};\n\ntype GcTask = {\n controller: AbortController;\n token: number;\n};\n\nexport type CacheOptions<K extends CacheKey = CacheKey> = {\n hash: (key: K) => string;\n onError?: (error: unknown) => void;\n scheduler?: Pick<SchedulerLike, 'postTask'>;\n};\n\nexport type CacheSetOptions<M> = {\n meta?: M;\n ttlMs?: number;\n};\n\nexport type Stash<T, K extends CacheKey = CacheKey, M = never> = {\n cancelGc: (key: K) => void;\n clear: () => void;\n delete: (key: K) => boolean;\n entries: () => IterableIterator<[K, T]>;\n get: (key: K) => T | undefined;\n getEntry: (key: K) => Readonly<{ meta: M | undefined; value: T }> | undefined;\n getOrSet: (key: K, factory: () => T, options?: CacheSetOptions<M>) => T;\n scheduleGc: (key: K, delayMs: number) => void;\n set: (key: K, value: T, options?: CacheSetOptions<M>) => void;\n size: () => number;\n touch: (key: K, ttlMs: number) => boolean;\n};\n\n/**\n * Creates a generic key-value cache with automatic garbage collection and observer support.\n *\n * @example\n * ```ts\n * const myCache = stash<string>({ hash: (key) => JSON.stringify(key) });\n * myCache.set(['user', 1], 'John Doe');\n * const value = myCache.get(['user', 1]); // 'John Doe'\n * myCache.scheduleGc(['user', 1], 5000); // Auto-delete after 5s\n * ```\n *\n * @template T - The type of values stored in the cache.\n *\n * @returns A cache instance with get, set, delete, clear, and GC methods.\n */\nexport function stash<T, K extends CacheKey = CacheKey, M = never>(options: CacheOptions<K>): Stash<T, K, M> {\n const store = new Map<string, CacheRecord<K, T, M>>();\n const gcTasks = new Map<string, GcTask>();\n const scheduler = options.scheduler ?? new Scheduler();\n const hash = options.hash;\n let gcToken = 0;\n\n function cancelGcByHash(keyHash: string): void {\n gcTasks.get(keyHash)?.controller.abort();\n gcTasks.delete(keyHash);\n }\n\n function deleteByHash(keyHash: string): boolean {\n const existed = store.has(keyHash);\n\n cancelGcByHash(keyHash);\n store.delete(keyHash);\n\n return existed;\n }\n\n function get(key: K): T | undefined {\n return store.get(hash(key))?.value;\n }\n\n function getEntry(key: K): Readonly<{ meta: M | undefined; value: T }> | undefined {\n const entry = store.get(hash(key));\n\n if (!entry) {\n return undefined;\n }\n\n return { meta: entry.meta, value: entry.value };\n }\n\n function set(key: K, value: T, options?: CacheSetOptions<M>): void {\n const keyHash = hash(key);\n const existing = store.get(keyHash);\n\n cancelGcByHash(keyHash);\n store.set(keyHash, {\n key,\n meta: options && 'meta' in options ? options.meta : existing?.meta,\n value,\n });\n\n if (options?.ttlMs !== undefined) {\n scheduleGc(key, options.ttlMs);\n }\n }\n\n function getOrSet(key: K, factory: () => T, options?: CacheSetOptions<M>): T {\n const existing = getEntry(key);\n\n if (existing) {\n return existing.value;\n }\n\n const value = factory();\n\n set(key, value, options);\n\n return value;\n }\n\n function del(key: K): boolean {\n return deleteByHash(hash(key));\n }\n\n function clear(): void {\n for (const task of gcTasks.values()) task.controller.abort();\n store.clear();\n gcTasks.clear();\n }\n\n function size(): number {\n return store.size;\n }\n\n function scheduleGcByHash(keyHash: string, delayMs: number): void {\n cancelGcByHash(keyHash);\n\n if (delayMs === Number.POSITIVE_INFINITY) {\n return;\n }\n\n if (!Number.isFinite(delayMs)) {\n throw new TypeError('stash.scheduleGc expects a finite number or Infinity');\n }\n\n if (delayMs <= 0) {\n deleteByHash(keyHash);\n\n return;\n }\n\n if (!store.has(keyHash)) {\n return;\n }\n\n const controller = new AbortController();\n const token = ++gcToken;\n\n gcTasks.set(keyHash, { controller, token });\n void scheduler\n .postTask(\n () => {\n const current = gcTasks.get(keyHash);\n\n if (!current || current.token !== token) {\n return;\n }\n\n gcTasks.delete(keyHash);\n\n deleteByHash(keyHash);\n },\n {\n delay: delayMs,\n priority: 'background',\n signal: controller.signal,\n },\n )\n .catch((error) => {\n if (error instanceof DOMException && error.name === 'AbortError') {\n return;\n }\n\n options.onError?.(error);\n });\n }\n\n function scheduleGc(key: K, delayMs: number): void {\n scheduleGcByHash(hash(key), delayMs);\n }\n\n function cancelGc(key: K): void {\n cancelGcByHash(hash(key));\n }\n\n function touch(key: K, ttlMs: number): boolean {\n const keyHash = hash(key);\n\n if (!store.has(keyHash)) {\n return false;\n }\n\n scheduleGcByHash(keyHash, ttlMs);\n\n return true;\n }\n\n function* entries(): IterableIterator<[K, T]> {\n for (const record of store.values()) {\n yield [record.key, record.value];\n }\n }\n\n return {\n cancelGc,\n clear,\n delete: del,\n entries,\n get,\n getEntry,\n getOrSet,\n scheduleGc,\n set,\n size,\n touch,\n };\n}\n"],"mappings":"0CAuDA,SAAgB,EAAmD,EAA0C,CAC3G,IAAM,EAAQ,IAAI,IACZ,EAAU,IAAI,IACd,EAAY,EAAQ,WAAa,IAAI,EAAA,UACrC,EAAO,EAAQ,KACjB,EAAU,EAEd,SAAS,EAAe,EAAuB,CAC7C,EAAQ,IAAI,EAAQ,EAAE,WAAW,OAAO,CACxC,EAAQ,OAAO,EAAQ,CAGzB,SAAS,EAAa,EAA0B,CAC9C,IAAM,EAAU,EAAM,IAAI,EAAQ,CAKlC,OAHA,EAAe,EAAQ,CACvB,EAAM,OAAO,EAAQ,CAEd,EAGT,SAAS,EAAI,EAAuB,CAClC,OAAO,EAAM,IAAI,EAAK,EAAI,CAAC,EAAE,MAG/B,SAAS,EAAS,EAAiE,CACjF,IAAM,EAAQ,EAAM,IAAI,EAAK,EAAI,CAAC,CAE7B,KAIL,MAAO,CAAE,KAAM,EAAM,KAAM,MAAO,EAAM,MAAO,CAGjD,SAAS,EAAI,EAAQ,EAAU,EAAoC,CACjE,IAAM,EAAU,EAAK,EAAI,CACnB,EAAW,EAAM,IAAI,EAAQ,CAEnC,EAAe,EAAQ,CACvB,EAAM,IAAI,EAAS,CACjB,MACA,KAAM,GAAW,SAAU,EAAU,EAAQ,KAAO,GAAU,KAC9D,QACD,CAAC,CAEE,GAAS,QAAU,IAAA,IACrB,EAAW,EAAK,EAAQ,MAAM,CAIlC,SAAS,EAAS,EAAQ,EAAkB,EAAiC,CAC3E,IAAM,EAAW,EAAS,EAAI,CAE9B,GAAI,EACF,OAAO,EAAS,MAGlB,IAAM,EAAQ,GAAS,CAIvB,OAFA,EAAI,EAAK,EAAO,EAAQ,CAEjB,EAGT,SAAS,EAAI,EAAiB,CAC5B,OAAO,EAAa,EAAK,EAAI,CAAC,CAGhC,SAAS,GAAc,CACrB,IAAK,IAAM,KAAQ,EAAQ,QAAQ,CAAE,EAAK,WAAW,OAAO,CAC5D,EAAM,OAAO,CACb,EAAQ,OAAO,CAGjB,SAAS,GAAe,CACtB,OAAO,EAAM,KAGf,SAAS,EAAiB,EAAiB,EAAuB,CAGhE,GAFA,EAAe,EAAQ,CAEnB,IAAY,IACd,OAGF,GAAI,CAAC,OAAO,SAAS,EAAQ,CAC3B,MAAU,UAAU,uDAAuD,CAG7E,GAAI,GAAW,EAAG,CAChB,EAAa,EAAQ,CAErB,OAGF,GAAI,CAAC,EAAM,IAAI,EAAQ,CACrB,OAGF,IAAM,EAAa,IAAI,gBACjB,EAAQ,EAAE,EAEhB,EAAQ,IAAI,EAAS,CAAE,aAAY,QAAO,CAAC,CACtC,EACF,aACO,CACJ,IAAM,EAAU,EAAQ,IAAI,EAAQ,CAEhC,CAAC,GAAW,EAAQ,QAAU,IAIlC,EAAQ,OAAO,EAAQ,CAEvB,EAAa,EAAQ,GAEvB,CACE,MAAO,EACP,SAAU,aACV,OAAQ,EAAW,OACpB,CACF,CACA,MAAO,GAAU,CACZ,aAAiB,cAAgB,EAAM,OAAS,cAIpD,EAAQ,UAAU,EAAM,EACxB,CAGN,SAAS,EAAW,EAAQ,EAAuB,CACjD,EAAiB,EAAK,EAAI,CAAE,EAAQ,CAGtC,SAAS,EAAS,EAAc,CAC9B,EAAe,EAAK,EAAI,CAAC,CAG3B,SAAS,EAAM,EAAQ,EAAwB,CAC7C,IAAM,EAAU,EAAK,EAAI,CAQzB,OANK,EAAM,IAAI,EAAQ,EAIvB,EAAiB,EAAS,EAAM,CAEzB,IALE,GAQX,SAAU,GAAoC,CAC5C,IAAK,IAAM,KAAU,EAAM,QAAQ,CACjC,KAAM,CAAC,EAAO,IAAK,EAAO,MAAM,CAIpC,MAAO,CACL,WACA,QACA,OAAQ,EACR,UACA,MACA,WACA,WACA,aACA,MACA,OACA,QACD"}
@@ -0,0 +1,45 @@
1
+ import { type SchedulerLike } from '../async';
2
+ type CacheKey = readonly unknown[];
3
+ export type CacheOptions<K extends CacheKey = CacheKey> = {
4
+ hash: (key: K) => string;
5
+ onError?: (error: unknown) => void;
6
+ scheduler?: Pick<SchedulerLike, 'postTask'>;
7
+ };
8
+ export type CacheSetOptions<M> = {
9
+ meta?: M;
10
+ ttlMs?: number;
11
+ };
12
+ export type Stash<T, K extends CacheKey = CacheKey, M = never> = {
13
+ cancelGc: (key: K) => void;
14
+ clear: () => void;
15
+ delete: (key: K) => boolean;
16
+ entries: () => IterableIterator<[K, T]>;
17
+ get: (key: K) => T | undefined;
18
+ getEntry: (key: K) => Readonly<{
19
+ meta: M | undefined;
20
+ value: T;
21
+ }> | undefined;
22
+ getOrSet: (key: K, factory: () => T, options?: CacheSetOptions<M>) => T;
23
+ scheduleGc: (key: K, delayMs: number) => void;
24
+ set: (key: K, value: T, options?: CacheSetOptions<M>) => void;
25
+ size: () => number;
26
+ touch: (key: K, ttlMs: number) => boolean;
27
+ };
28
+ /**
29
+ * Creates a generic key-value cache with automatic garbage collection and observer support.
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * const myCache = stash<string>({ hash: (key) => JSON.stringify(key) });
34
+ * myCache.set(['user', 1], 'John Doe');
35
+ * const value = myCache.get(['user', 1]); // 'John Doe'
36
+ * myCache.scheduleGc(['user', 1], 5000); // Auto-delete after 5s
37
+ * ```
38
+ *
39
+ * @template T - The type of values stored in the cache.
40
+ *
41
+ * @returns A cache instance with get, set, delete, clear, and GC methods.
42
+ */
43
+ export declare function stash<T, K extends CacheKey = CacheKey, M = never>(options: CacheOptions<K>): Stash<T, K, M>;
44
+ export {};
45
+ //# sourceMappingURL=stash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stash.d.ts","sourceRoot":"","sources":["../../src/object/stash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzD,KAAK,QAAQ,GAAG,SAAS,OAAO,EAAE,CAAC;AAanC,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,IAAI;IACxD,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,SAAS,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;IAC/B,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAAE,CAAC,GAAG,KAAK,IAAI;IAC/D,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC;IAC3B,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC;IAC5B,OAAO,EAAE,MAAM,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;IAC/B,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,QAAQ,CAAC;QAAE,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC;QAAC,KAAK,EAAE,CAAC,CAAA;KAAE,CAAC,GAAG,SAAS,CAAC;IAC9E,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACxE,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAC9D,IAAI,EAAE,MAAM,MAAM,CAAC;IACnB,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;CAC3C,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAAE,CAAC,GAAG,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CA2K3G"}
@@ -0,0 +1,99 @@
1
+ import { Scheduler as e } from "../async/scheduler.js";
2
+ //#region src/object/stash.ts
3
+ function t(t) {
4
+ let n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map(), i = t.scheduler ?? new e(), a = t.hash, o = 0;
5
+ function s(e) {
6
+ r.get(e)?.controller.abort(), r.delete(e);
7
+ }
8
+ function c(e) {
9
+ let t = n.has(e);
10
+ return s(e), n.delete(e), t;
11
+ }
12
+ function l(e) {
13
+ return n.get(a(e))?.value;
14
+ }
15
+ function u(e) {
16
+ let t = n.get(a(e));
17
+ if (t) return {
18
+ meta: t.meta,
19
+ value: t.value
20
+ };
21
+ }
22
+ function d(e, t, r) {
23
+ let i = a(e), o = n.get(i);
24
+ s(i), n.set(i, {
25
+ key: e,
26
+ meta: r && "meta" in r ? r.meta : o?.meta,
27
+ value: t
28
+ }), r?.ttlMs !== void 0 && _(e, r.ttlMs);
29
+ }
30
+ function f(e, t, n) {
31
+ let r = u(e);
32
+ if (r) return r.value;
33
+ let i = t();
34
+ return d(e, i, n), i;
35
+ }
36
+ function p(e) {
37
+ return c(a(e));
38
+ }
39
+ function m() {
40
+ for (let e of r.values()) e.controller.abort();
41
+ n.clear(), r.clear();
42
+ }
43
+ function h() {
44
+ return n.size;
45
+ }
46
+ function g(e, a) {
47
+ if (s(e), a === Infinity) return;
48
+ if (!Number.isFinite(a)) throw TypeError("stash.scheduleGc expects a finite number or Infinity");
49
+ if (a <= 0) {
50
+ c(e);
51
+ return;
52
+ }
53
+ if (!n.has(e)) return;
54
+ let l = new AbortController(), u = ++o;
55
+ r.set(e, {
56
+ controller: l,
57
+ token: u
58
+ }), i.postTask(() => {
59
+ let t = r.get(e);
60
+ !t || t.token !== u || (r.delete(e), c(e));
61
+ }, {
62
+ delay: a,
63
+ priority: "background",
64
+ signal: l.signal
65
+ }).catch((e) => {
66
+ e instanceof DOMException && e.name === "AbortError" || t.onError?.(e);
67
+ });
68
+ }
69
+ function _(e, t) {
70
+ g(a(e), t);
71
+ }
72
+ function v(e) {
73
+ s(a(e));
74
+ }
75
+ function y(e, t) {
76
+ let r = a(e);
77
+ return n.has(r) ? (g(r, t), !0) : !1;
78
+ }
79
+ function* b() {
80
+ for (let e of n.values()) yield [e.key, e.value];
81
+ }
82
+ return {
83
+ cancelGc: v,
84
+ clear: m,
85
+ delete: p,
86
+ entries: b,
87
+ get: l,
88
+ getEntry: u,
89
+ getOrSet: f,
90
+ scheduleGc: _,
91
+ set: d,
92
+ size: h,
93
+ touch: y
94
+ };
95
+ }
96
+ //#endregion
97
+ export { t as stash };
98
+
99
+ //# sourceMappingURL=stash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stash.js","names":[],"sources":["../../src/object/stash.ts"],"sourcesContent":["import { Scheduler, type SchedulerLike } from '../async';\n\ntype CacheKey = readonly unknown[];\n\ntype CacheRecord<K extends CacheKey, T, M> = {\n key: K;\n meta: M | undefined;\n value: T;\n};\n\ntype GcTask = {\n controller: AbortController;\n token: number;\n};\n\nexport type CacheOptions<K extends CacheKey = CacheKey> = {\n hash: (key: K) => string;\n onError?: (error: unknown) => void;\n scheduler?: Pick<SchedulerLike, 'postTask'>;\n};\n\nexport type CacheSetOptions<M> = {\n meta?: M;\n ttlMs?: number;\n};\n\nexport type Stash<T, K extends CacheKey = CacheKey, M = never> = {\n cancelGc: (key: K) => void;\n clear: () => void;\n delete: (key: K) => boolean;\n entries: () => IterableIterator<[K, T]>;\n get: (key: K) => T | undefined;\n getEntry: (key: K) => Readonly<{ meta: M | undefined; value: T }> | undefined;\n getOrSet: (key: K, factory: () => T, options?: CacheSetOptions<M>) => T;\n scheduleGc: (key: K, delayMs: number) => void;\n set: (key: K, value: T, options?: CacheSetOptions<M>) => void;\n size: () => number;\n touch: (key: K, ttlMs: number) => boolean;\n};\n\n/**\n * Creates a generic key-value cache with automatic garbage collection and observer support.\n *\n * @example\n * ```ts\n * const myCache = stash<string>({ hash: (key) => JSON.stringify(key) });\n * myCache.set(['user', 1], 'John Doe');\n * const value = myCache.get(['user', 1]); // 'John Doe'\n * myCache.scheduleGc(['user', 1], 5000); // Auto-delete after 5s\n * ```\n *\n * @template T - The type of values stored in the cache.\n *\n * @returns A cache instance with get, set, delete, clear, and GC methods.\n */\nexport function stash<T, K extends CacheKey = CacheKey, M = never>(options: CacheOptions<K>): Stash<T, K, M> {\n const store = new Map<string, CacheRecord<K, T, M>>();\n const gcTasks = new Map<string, GcTask>();\n const scheduler = options.scheduler ?? new Scheduler();\n const hash = options.hash;\n let gcToken = 0;\n\n function cancelGcByHash(keyHash: string): void {\n gcTasks.get(keyHash)?.controller.abort();\n gcTasks.delete(keyHash);\n }\n\n function deleteByHash(keyHash: string): boolean {\n const existed = store.has(keyHash);\n\n cancelGcByHash(keyHash);\n store.delete(keyHash);\n\n return existed;\n }\n\n function get(key: K): T | undefined {\n return store.get(hash(key))?.value;\n }\n\n function getEntry(key: K): Readonly<{ meta: M | undefined; value: T }> | undefined {\n const entry = store.get(hash(key));\n\n if (!entry) {\n return undefined;\n }\n\n return { meta: entry.meta, value: entry.value };\n }\n\n function set(key: K, value: T, options?: CacheSetOptions<M>): void {\n const keyHash = hash(key);\n const existing = store.get(keyHash);\n\n cancelGcByHash(keyHash);\n store.set(keyHash, {\n key,\n meta: options && 'meta' in options ? options.meta : existing?.meta,\n value,\n });\n\n if (options?.ttlMs !== undefined) {\n scheduleGc(key, options.ttlMs);\n }\n }\n\n function getOrSet(key: K, factory: () => T, options?: CacheSetOptions<M>): T {\n const existing = getEntry(key);\n\n if (existing) {\n return existing.value;\n }\n\n const value = factory();\n\n set(key, value, options);\n\n return value;\n }\n\n function del(key: K): boolean {\n return deleteByHash(hash(key));\n }\n\n function clear(): void {\n for (const task of gcTasks.values()) task.controller.abort();\n store.clear();\n gcTasks.clear();\n }\n\n function size(): number {\n return store.size;\n }\n\n function scheduleGcByHash(keyHash: string, delayMs: number): void {\n cancelGcByHash(keyHash);\n\n if (delayMs === Number.POSITIVE_INFINITY) {\n return;\n }\n\n if (!Number.isFinite(delayMs)) {\n throw new TypeError('stash.scheduleGc expects a finite number or Infinity');\n }\n\n if (delayMs <= 0) {\n deleteByHash(keyHash);\n\n return;\n }\n\n if (!store.has(keyHash)) {\n return;\n }\n\n const controller = new AbortController();\n const token = ++gcToken;\n\n gcTasks.set(keyHash, { controller, token });\n void scheduler\n .postTask(\n () => {\n const current = gcTasks.get(keyHash);\n\n if (!current || current.token !== token) {\n return;\n }\n\n gcTasks.delete(keyHash);\n\n deleteByHash(keyHash);\n },\n {\n delay: delayMs,\n priority: 'background',\n signal: controller.signal,\n },\n )\n .catch((error) => {\n if (error instanceof DOMException && error.name === 'AbortError') {\n return;\n }\n\n options.onError?.(error);\n });\n }\n\n function scheduleGc(key: K, delayMs: number): void {\n scheduleGcByHash(hash(key), delayMs);\n }\n\n function cancelGc(key: K): void {\n cancelGcByHash(hash(key));\n }\n\n function touch(key: K, ttlMs: number): boolean {\n const keyHash = hash(key);\n\n if (!store.has(keyHash)) {\n return false;\n }\n\n scheduleGcByHash(keyHash, ttlMs);\n\n return true;\n }\n\n function* entries(): IterableIterator<[K, T]> {\n for (const record of store.values()) {\n yield [record.key, record.value];\n }\n }\n\n return {\n cancelGc,\n clear,\n delete: del,\n entries,\n get,\n getEntry,\n getOrSet,\n scheduleGc,\n set,\n size,\n touch,\n };\n}\n"],"mappings":";;AAuDA,SAAgB,EAAmD,GAA0C;CAC3G,IAAM,oBAAQ,IAAI,KAAmC,EAC/C,oBAAU,IAAI,KAAqB,EACnC,IAAY,EAAQ,aAAa,IAAI,GAAW,EAChD,IAAO,EAAQ,MACjB,IAAU;CAEd,SAAS,EAAe,GAAuB;AAE7C,EADA,EAAQ,IAAI,EAAQ,EAAE,WAAW,OAAO,EACxC,EAAQ,OAAO,EAAQ;;CAGzB,SAAS,EAAa,GAA0B;EAC9C,IAAM,IAAU,EAAM,IAAI,EAAQ;AAKlC,SAHA,EAAe,EAAQ,EACvB,EAAM,OAAO,EAAQ,EAEd;;CAGT,SAAS,EAAI,GAAuB;AAClC,SAAO,EAAM,IAAI,EAAK,EAAI,CAAC,EAAE;;CAG/B,SAAS,EAAS,GAAiE;EACjF,IAAM,IAAQ,EAAM,IAAI,EAAK,EAAI,CAAC;AAE7B,QAIL,QAAO;GAAE,MAAM,EAAM;GAAM,OAAO,EAAM;GAAO;;CAGjD,SAAS,EAAI,GAAQ,GAAU,GAAoC;EACjE,IAAM,IAAU,EAAK,EAAI,EACnB,IAAW,EAAM,IAAI,EAAQ;AASnC,EAPA,EAAe,EAAQ,EACvB,EAAM,IAAI,GAAS;GACjB;GACA,MAAM,KAAW,UAAU,IAAU,EAAQ,OAAO,GAAU;GAC9D;GACD,CAAC,EAEE,GAAS,UAAU,KAAA,KACrB,EAAW,GAAK,EAAQ,MAAM;;CAIlC,SAAS,EAAS,GAAQ,GAAkB,GAAiC;EAC3E,IAAM,IAAW,EAAS,EAAI;AAE9B,MAAI,EACF,QAAO,EAAS;EAGlB,IAAM,IAAQ,GAAS;AAIvB,SAFA,EAAI,GAAK,GAAO,EAAQ,EAEjB;;CAGT,SAAS,EAAI,GAAiB;AAC5B,SAAO,EAAa,EAAK,EAAI,CAAC;;CAGhC,SAAS,IAAc;AACrB,OAAK,IAAM,KAAQ,EAAQ,QAAQ,CAAE,GAAK,WAAW,OAAO;AAE5D,EADA,EAAM,OAAO,EACb,EAAQ,OAAO;;CAGjB,SAAS,IAAe;AACtB,SAAO,EAAM;;CAGf,SAAS,EAAiB,GAAiB,GAAuB;AAGhE,MAFA,EAAe,EAAQ,EAEnB,MAAY,SACd;AAGF,MAAI,CAAC,OAAO,SAAS,EAAQ,CAC3B,OAAU,UAAU,uDAAuD;AAG7E,MAAI,KAAW,GAAG;AAChB,KAAa,EAAQ;AAErB;;AAGF,MAAI,CAAC,EAAM,IAAI,EAAQ,CACrB;EAGF,IAAM,IAAa,IAAI,iBAAiB,EAClC,IAAQ,EAAE;AAGX,EADL,EAAQ,IAAI,GAAS;GAAE;GAAY;GAAO,CAAC,EACtC,EACF,eACO;GACJ,IAAM,IAAU,EAAQ,IAAI,EAAQ;AAEhC,IAAC,KAAW,EAAQ,UAAU,MAIlC,EAAQ,OAAO,EAAQ,EAEvB,EAAa,EAAQ;KAEvB;GACE,OAAO;GACP,UAAU;GACV,QAAQ,EAAW;GACpB,CACF,CACA,OAAO,MAAU;AACZ,gBAAiB,gBAAgB,EAAM,SAAS,gBAIpD,EAAQ,UAAU,EAAM;IACxB;;CAGN,SAAS,EAAW,GAAQ,GAAuB;AACjD,IAAiB,EAAK,EAAI,EAAE,EAAQ;;CAGtC,SAAS,EAAS,GAAc;AAC9B,IAAe,EAAK,EAAI,CAAC;;CAG3B,SAAS,EAAM,GAAQ,GAAwB;EAC7C,IAAM,IAAU,EAAK,EAAI;AAQzB,SANK,EAAM,IAAI,EAAQ,IAIvB,EAAiB,GAAS,EAAM,EAEzB,MALE;;CAQX,UAAU,IAAoC;AAC5C,OAAK,IAAM,KAAU,EAAM,QAAQ,CACjC,OAAM,CAAC,EAAO,KAAK,EAAO,MAAM;;AAIpC,QAAO;EACL;EACA;EACA,QAAQ;EACR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../function/assert.cjs"),r=require("../typed/isArray.cjs"),s=require("./random.cjs"),n=e=>{if(t.assert(r.isArray(e),r.IS_ARRAY_ERROR_MSG,{args:{array:e},type:TypeError}),e.length!==0)return e[s.random(0,e.length-1)]};exports.draw=n;
2
- //# sourceMappingURL=draw.cjs.map
1
+ const e=require(`../function/assert.cjs`),t=require(`../typed/isArray.cjs`),n=require(`./random.cjs`);var r=r=>{if(e.assert(t.isArray(r),t.IS_ARRAY_ERROR_MSG,{args:{array:r},type:TypeError}),r.length!==0)return r[n.random(0,r.length-1)]};exports.draw=r;
2
+ //# sourceMappingURL=draw.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"draw.cjs","sources":["../../src/random/draw.ts"],"sourcesContent":["import { assert } from '../function/assert';\nimport { IS_ARRAY_ERROR_MSG, isArray } from '../typed/isArray';\nimport { random } from './random';\n\n/**\n * “Draw” a random item from an array.\n *\n * @example\n * ```ts\n * draw([1, 2, 3]) // 3\n * ```\n *\n * @param array - The array to draw from.\n *\n * @returns A random item from the array or `undefined` if the array is empty.\n *\n * @throws {TypeError} If the provided array is not an array.\n */\nexport const draw = <T>(array: T[]): T | undefined => {\n assert(isArray(array), IS_ARRAY_ERROR_MSG, { args: { array }, type: TypeError });\n\n if (array.length === 0) return undefined;\n\n return array[random(0, array.length - 1)];\n};\n"],"names":["draw","array","assert","isArray","IS_ARRAY_ERROR_MSG","random"],"mappings":"sLAkBaA,EAAWC,GAA8B,CAGpD,GAFAC,EAAAA,OAAOC,EAAAA,QAAQF,CAAK,EAAGG,qBAAoB,CAAE,KAAM,CAAE,MAAAH,CAAA,EAAS,KAAM,UAAW,EAE3EA,EAAM,SAAW,EAErB,OAAOA,EAAMI,EAAAA,OAAO,EAAGJ,EAAM,OAAS,CAAC,CAAC,CAC1C"}
1
+ {"version":3,"file":"draw.cjs","names":[],"sources":["../../src/random/draw.ts"],"sourcesContent":["import { assert } from '../function/assert';\nimport { IS_ARRAY_ERROR_MSG, isArray } from '../typed/isArray';\nimport { random } from './random';\n\n/**\n * “Draw” a random item from an array.\n *\n * @example\n * ```ts\n * draw([1, 2, 3]) // 3\n * ```\n *\n * @param array - The array to draw from.\n *\n * @returns A random item from the array or `undefined` if the array is empty.\n *\n * @throws {TypeError} If the provided array is not an array.\n */\nexport const draw = <T>(array: T[]): T | undefined => {\n assert(isArray(array), IS_ARRAY_ERROR_MSG, { args: { array }, type: TypeError });\n\n if (array.length === 0) return undefined;\n\n return array[random(0, array.length - 1)];\n};\n"],"mappings":"sGAkBA,IAAa,EAAW,GAA8B,CACpD,KAAA,OAAO,EAAA,QAAQ,EAAM,CAAE,EAAA,mBAAoB,CAAE,KAAM,CAAE,QAAO,CAAE,KAAM,UAAW,CAAC,CAE5E,EAAM,SAAW,EAErB,OAAO,EAAM,EAAA,OAAO,EAAG,EAAM,OAAS,EAAE"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * “Draw” a random item from an array.
3
+ *
4
+ * @example
5
+ * ```ts
6
+ * draw([1, 2, 3]) // 3
7
+ * ```
8
+ *
9
+ * @param array - The array to draw from.
10
+ *
11
+ * @returns A random item from the array or `undefined` if the array is empty.
12
+ *
13
+ * @throws {TypeError} If the provided array is not an array.
14
+ */
15
+ export declare const draw: <T>(array: T[]) => T | undefined;
16
+ //# sourceMappingURL=draw.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draw.d.ts","sourceRoot":"","sources":["../../src/random/draw.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,EAAE,OAAO,CAAC,EAAE,KAAG,CAAC,GAAG,SAMxC,CAAC"}
@@ -1,11 +1,14 @@
1
- import { assert as o } from "../function/assert.js";
2
- import { IS_ARRAY_ERROR_MSG as t, isArray as e } from "../typed/isArray.js";
3
- import { random as m } from "./random.js";
4
- const s = (r) => {
5
- if (o(e(r), t, { args: { array: r }, type: TypeError }), r.length !== 0)
6
- return r[m(0, r.length - 1)];
1
+ import { assert as e } from "../function/assert.js";
2
+ import { IS_ARRAY_ERROR_MSG as t, isArray as n } from "../typed/isArray.js";
3
+ import { random as r } from "./random.js";
4
+ //#region src/random/draw.ts
5
+ var i = (i) => {
6
+ if (e(n(i), t, {
7
+ args: { array: i },
8
+ type: TypeError
9
+ }), i.length !== 0) return i[r(0, i.length - 1)];
7
10
  };
8
- export {
9
- s as draw
10
- };
11
- //# sourceMappingURL=draw.js.map
11
+ //#endregion
12
+ export { i as draw };
13
+
14
+ //# sourceMappingURL=draw.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"draw.js","sources":["../../src/random/draw.ts"],"sourcesContent":["import { assert } from '../function/assert';\nimport { IS_ARRAY_ERROR_MSG, isArray } from '../typed/isArray';\nimport { random } from './random';\n\n/**\n * “Draw” a random item from an array.\n *\n * @example\n * ```ts\n * draw([1, 2, 3]) // 3\n * ```\n *\n * @param array - The array to draw from.\n *\n * @returns A random item from the array or `undefined` if the array is empty.\n *\n * @throws {TypeError} If the provided array is not an array.\n */\nexport const draw = <T>(array: T[]): T | undefined => {\n assert(isArray(array), IS_ARRAY_ERROR_MSG, { args: { array }, type: TypeError });\n\n if (array.length === 0) return undefined;\n\n return array[random(0, array.length - 1)];\n};\n"],"names":["draw","array","assert","isArray","IS_ARRAY_ERROR_MSG","random"],"mappings":";;;AAkBO,MAAMA,IAAO,CAAIC,MAA8B;AAGpD,MAFAC,EAAOC,EAAQF,CAAK,GAAGG,GAAoB,EAAE,MAAM,EAAE,OAAAH,EAAA,GAAS,MAAM,WAAW,GAE3EA,EAAM,WAAW;AAErB,WAAOA,EAAMI,EAAO,GAAGJ,EAAM,SAAS,CAAC,CAAC;AAC1C;"}
1
+ {"version":3,"file":"draw.js","names":[],"sources":["../../src/random/draw.ts"],"sourcesContent":["import { assert } from '../function/assert';\nimport { IS_ARRAY_ERROR_MSG, isArray } from '../typed/isArray';\nimport { random } from './random';\n\n/**\n * “Draw” a random item from an array.\n *\n * @example\n * ```ts\n * draw([1, 2, 3]) // 3\n * ```\n *\n * @param array - The array to draw from.\n *\n * @returns A random item from the array or `undefined` if the array is empty.\n *\n * @throws {TypeError} If the provided array is not an array.\n */\nexport const draw = <T>(array: T[]): T | undefined => {\n assert(isArray(array), IS_ARRAY_ERROR_MSG, { args: { array }, type: TypeError });\n\n if (array.length === 0) return undefined;\n\n return array[random(0, array.length - 1)];\n};\n"],"mappings":";;;;AAkBA,IAAa,KAAW,MAA8B;AACpD,OAAO,EAAQ,EAAM,EAAE,GAAoB;EAAE,MAAM,EAAE,UAAO;EAAE,MAAM;EAAW,CAAC,EAE5E,EAAM,WAAW,EAErB,QAAO,EAAM,EAAO,GAAG,EAAM,SAAS,EAAE"}
@@ -0,0 +1,5 @@
1
+ export * from './draw';
2
+ export * from './random';
3
+ export * from './shuffle';
4
+ export * from './uuid';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/random/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("../function/assert.cjs");function o(r,e){a.assert(r<=e,"Minimum value must be less than maximum value",{args:{max:e,min:r},type:RangeError});const t=crypto?crypto.getRandomValues(new Uint32Array(1))[0]/4294967295:Math.random();return Math.floor(t*(e-r+1))+r}exports.random=o;
2
- //# sourceMappingURL=random.cjs.map
1
+ const e=require(`../function/assert.cjs`);function t(t,n){e.assert(t<=n,`Minimum value must be less than maximum value`,{args:{max:n,min:t},type:RangeError});let r=crypto.getRandomValues(new Uint32Array(1))[0]/4294967295;return Math.floor(r*(n-t+1))+t}exports.random=t;
2
+ //# sourceMappingURL=random.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"random.cjs","sources":["../../src/random/random.ts"],"sourcesContent":["import { assert } from '../function/assert';\n\n/**\n * Generates a random integer between two values, inclusive.\n *\n * @example\n * ```ts\n * random(1, 10); // a random integer between 1 and 10\n * ```\n *\n * @param min - The minimum value.\n * @param max - The maximum value.\n * @returns A random integer between min and max.\n */\nexport function random(min: number, max: number): number {\n assert(min <= max, 'Minimum value must be less than maximum value', { args: { max, min }, type: RangeError });\n\n const randomValue = crypto ? crypto.getRandomValues(new Uint32Array(1))[0] / 0xffffffff : Math.random();\n\n return Math.floor(randomValue * (max - min + 1)) + min;\n}\n"],"names":["random","min","max","assert","randomValue"],"mappings":"0HAcO,SAASA,EAAOC,EAAaC,EAAqB,CACvDC,EAAAA,OAAOF,GAAOC,EAAK,gDAAiD,CAAE,KAAM,CAAE,IAAAA,EAAK,IAAAD,CAAA,EAAO,KAAM,UAAA,CAAY,EAE5G,MAAMG,EAAc,OAAS,OAAO,gBAAgB,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC,EAAI,WAAa,KAAK,OAAA,EAE/F,OAAO,KAAK,MAAMA,GAAeF,EAAMD,EAAM,EAAE,EAAIA,CACrD"}
1
+ {"version":3,"file":"random.cjs","names":[],"sources":["../../src/random/random.ts"],"sourcesContent":["import { assert } from '../function/assert';\n\n/**\n * Generates a random integer between two values, inclusive.\n *\n * @example\n * ```ts\n * random(1, 10); // a random integer between 1 and 10\n * ```\n *\n * @param min - The minimum value.\n * @param max - The maximum value.\n * @returns A random integer between min and max.\n */\nexport function random(min: number, max: number): number {\n assert(min <= max, 'Minimum value must be less than maximum value', { args: { max, min }, type: RangeError });\n\n const randomValue = crypto.getRandomValues(new Uint32Array(1))[0] / 0xffffffff;\n\n return Math.floor(randomValue * (max - min + 1)) + min;\n}\n"],"mappings":"0CAcA,SAAgB,EAAO,EAAa,EAAqB,CACvD,EAAA,OAAO,GAAO,EAAK,gDAAiD,CAAE,KAAM,CAAE,MAAK,MAAK,CAAE,KAAM,WAAY,CAAC,CAE7G,IAAM,EAAc,OAAO,gBAAgB,IAAI,YAAY,EAAE,CAAC,CAAC,GAAK,WAEpE,OAAO,KAAK,MAAM,GAAe,EAAM,EAAM,GAAG,CAAG"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Generates a random integer between two values, inclusive.
3
+ *
4
+ * @example
5
+ * ```ts
6
+ * random(1, 10); // a random integer between 1 and 10
7
+ * ```
8
+ *
9
+ * @param min - The minimum value.
10
+ * @param max - The maximum value.
11
+ * @returns A random integer between min and max.
12
+ */
13
+ export declare function random(min: number, max: number): number;
14
+ //# sourceMappingURL=random.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"random.d.ts","sourceRoot":"","sources":["../../src/random/random.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAMvD"}
@@ -1,10 +1,17 @@
1
- import { assert as o } from "../function/assert.js";
2
- function n(r, t) {
3
- o(r <= t, "Minimum value must be less than maximum value", { args: { max: t, min: r }, type: RangeError });
4
- const a = crypto ? crypto.getRandomValues(new Uint32Array(1))[0] / 4294967295 : Math.random();
5
- return Math.floor(a * (t - r + 1)) + r;
1
+ import { assert as e } from "../function/assert.js";
2
+ //#region src/random/random.ts
3
+ function t(t, n) {
4
+ e(t <= n, "Minimum value must be less than maximum value", {
5
+ args: {
6
+ max: n,
7
+ min: t
8
+ },
9
+ type: RangeError
10
+ });
11
+ let r = crypto.getRandomValues(new Uint32Array(1))[0] / 4294967295;
12
+ return Math.floor(r * (n - t + 1)) + t;
6
13
  }
7
- export {
8
- n as random
9
- };
10
- //# sourceMappingURL=random.js.map
14
+ //#endregion
15
+ export { t as random };
16
+
17
+ //# sourceMappingURL=random.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"random.js","sources":["../../src/random/random.ts"],"sourcesContent":["import { assert } from '../function/assert';\n\n/**\n * Generates a random integer between two values, inclusive.\n *\n * @example\n * ```ts\n * random(1, 10); // a random integer between 1 and 10\n * ```\n *\n * @param min - The minimum value.\n * @param max - The maximum value.\n * @returns A random integer between min and max.\n */\nexport function random(min: number, max: number): number {\n assert(min <= max, 'Minimum value must be less than maximum value', { args: { max, min }, type: RangeError });\n\n const randomValue = crypto ? crypto.getRandomValues(new Uint32Array(1))[0] / 0xffffffff : Math.random();\n\n return Math.floor(randomValue * (max - min + 1)) + min;\n}\n"],"names":["random","min","max","assert","randomValue"],"mappings":";AAcO,SAASA,EAAOC,GAAaC,GAAqB;AACvD,EAAAC,EAAOF,KAAOC,GAAK,iDAAiD,EAAE,MAAM,EAAE,KAAAA,GAAK,KAAAD,EAAA,GAAO,MAAM,WAAA,CAAY;AAE5G,QAAMG,IAAc,SAAS,OAAO,gBAAgB,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,aAAa,KAAK,OAAA;AAE/F,SAAO,KAAK,MAAMA,KAAeF,IAAMD,IAAM,EAAE,IAAIA;AACrD;"}
1
+ {"version":3,"file":"random.js","names":[],"sources":["../../src/random/random.ts"],"sourcesContent":["import { assert } from '../function/assert';\n\n/**\n * Generates a random integer between two values, inclusive.\n *\n * @example\n * ```ts\n * random(1, 10); // a random integer between 1 and 10\n * ```\n *\n * @param min - The minimum value.\n * @param max - The maximum value.\n * @returns A random integer between min and max.\n */\nexport function random(min: number, max: number): number {\n assert(min <= max, 'Minimum value must be less than maximum value', { args: { max, min }, type: RangeError });\n\n const randomValue = crypto.getRandomValues(new Uint32Array(1))[0] / 0xffffffff;\n\n return Math.floor(randomValue * (max - min + 1)) + min;\n}\n"],"mappings":";;AAcA,SAAgB,EAAO,GAAa,GAAqB;AACvD,GAAO,KAAO,GAAK,iDAAiD;EAAE,MAAM;GAAE;GAAK;GAAK;EAAE,MAAM;EAAY,CAAC;CAE7G,IAAM,IAAc,OAAO,gBAAgB,IAAI,YAAY,EAAE,CAAC,CAAC,KAAK;AAEpE,QAAO,KAAK,MAAM,KAAe,IAAM,IAAM,GAAG,GAAG"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("../function/assert.cjs"),o=require("../typed/isArray.cjs");function u(t){n.assert(o.isArray(t),o.IS_ARRAY_ERROR_MSG,{args:{array:t},type:TypeError});const e=[...t];for(let r=e.length-1;r>0;r--){const s=Math.floor(Math.random()*(r+1));[e[r],e[s]]=[e[s],e[r]]}return e}exports.shuffle=u;
2
- //# sourceMappingURL=shuffle.cjs.map
1
+ const e=require(`../function/assert.cjs`),t=require(`../typed/isArray.cjs`);function n(n){e.assert(t.isArray(n),t.IS_ARRAY_ERROR_MSG,{args:{array:n},type:TypeError});let r=[...n];for(let e=r.length-1;e>0;e--){let t=Math.floor(crypto.getRandomValues(new Uint32Array(1))[0]/4294967295*(e+1));[r[e],r[t]]=[r[t],r[e]]}return r}exports.shuffle=n;
2
+ //# sourceMappingURL=shuffle.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"shuffle.cjs","sources":["../../src/random/shuffle.ts"],"sourcesContent":["import { assert } from '../function/assert';\nimport { IS_ARRAY_ERROR_MSG, isArray } from '../typed/isArray';\n\n/**\n * Shuffles an array randomly.\n *\n * @example\n * ```ts\n * const arr = [1, 2, 3, 4];\n * shuffle(arr); // a shuffled version of the array\n * ```\n *\n * @param array - The array to shuffle.\n *\n * @returns A new shuffled array.\n *\n * @throws {TypeError} If the provided array is not an array.\n */\nexport function shuffle<T>(array: T[]): T[] {\n assert(isArray(array), IS_ARRAY_ERROR_MSG, { args: { array }, type: TypeError });\n\n const result = [...array];\n\n for (let i = result.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [result[i], result[j]] = [result[j], result[i]];\n }\n\n return result;\n}\n"],"names":["shuffle","array","assert","isArray","IS_ARRAY_ERROR_MSG","result","i","j"],"mappings":"4JAkBO,SAASA,EAAWC,EAAiB,CAC1CC,EAAAA,OAAOC,EAAAA,QAAQF,CAAK,EAAGG,qBAAoB,CAAE,KAAM,CAAE,MAAAH,CAAA,EAAS,KAAM,UAAW,EAE/E,MAAMI,EAAS,CAAC,GAAGJ,CAAK,EAExB,QAASK,EAAID,EAAO,OAAS,EAAGC,EAAI,EAAGA,IAAK,CAC1C,MAAMC,EAAI,KAAK,MAAM,KAAK,UAAYD,EAAI,EAAE,EAC5C,CAACD,EAAOC,CAAC,EAAGD,EAAOE,CAAC,CAAC,EAAI,CAACF,EAAOE,CAAC,EAAGF,EAAOC,CAAC,CAAC,CAChD,CAEA,OAAOD,CACT"}
1
+ {"version":3,"file":"shuffle.cjs","names":[],"sources":["../../src/random/shuffle.ts"],"sourcesContent":["import { assert } from '../function/assert';\nimport { IS_ARRAY_ERROR_MSG, isArray } from '../typed/isArray';\n\n/**\n * Shuffles an array randomly.\n *\n * @example\n * ```ts\n * const arr = [1, 2, 3, 4];\n * shuffle(arr); // a shuffled version of the array\n * ```\n *\n * @param array - The array to shuffle.\n *\n * @returns A new shuffled array.\n *\n * @throws {TypeError} If the provided array is not an array.\n */\nexport function shuffle<T>(array: T[]): T[] {\n assert(isArray(array), IS_ARRAY_ERROR_MSG, { args: { array }, type: TypeError });\n\n const result = [...array];\n\n for (let i = result.length - 1; i > 0; i--) {\n const j = Math.floor((crypto.getRandomValues(new Uint32Array(1))[0] / 0xffffffff) * (i + 1));\n\n [result[i], result[j]] = [result[j], result[i]];\n }\n\n return result;\n}\n"],"mappings":"4EAkBA,SAAgB,EAAW,EAAiB,CAC1C,EAAA,OAAO,EAAA,QAAQ,EAAM,CAAE,EAAA,mBAAoB,CAAE,KAAM,CAAE,QAAO,CAAE,KAAM,UAAW,CAAC,CAEhF,IAAM,EAAS,CAAC,GAAG,EAAM,CAEzB,IAAK,IAAI,EAAI,EAAO,OAAS,EAAG,EAAI,EAAG,IAAK,CAC1C,IAAM,EAAI,KAAK,MAAO,OAAO,gBAAgB,IAAI,YAAY,EAAE,CAAC,CAAC,GAAK,YAAe,EAAI,GAAG,CAE5F,CAAC,EAAO,GAAI,EAAO,IAAM,CAAC,EAAO,GAAI,EAAO,GAAG,CAGjD,OAAO"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Shuffles an array randomly.
3
+ *
4
+ * @example
5
+ * ```ts
6
+ * const arr = [1, 2, 3, 4];
7
+ * shuffle(arr); // a shuffled version of the array
8
+ * ```
9
+ *
10
+ * @param array - The array to shuffle.
11
+ *
12
+ * @returns A new shuffled array.
13
+ *
14
+ * @throws {TypeError} If the provided array is not an array.
15
+ */
16
+ export declare function shuffle<T>(array: T[]): T[];
17
+ //# sourceMappingURL=shuffle.d.ts.map