litus 1.4.0 → 1.6.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 (439) hide show
  1. package/README.md +11 -8
  2. package/dist/index.cjs.js +1460 -0
  3. package/dist/index.cjs.js.map +1 -0
  4. package/dist/index.d.ts +778 -0
  5. package/dist/index.esm.js +1380 -0
  6. package/dist/index.esm.js.map +1 -0
  7. package/package.json +9 -6
  8. package/dist/cjs/arr/chunk.d.ts +0 -1
  9. package/dist/cjs/arr/chunk.js +0 -12
  10. package/dist/cjs/arr/chunk.js.map +0 -1
  11. package/dist/cjs/arr/fill.d.ts +0 -1
  12. package/dist/cjs/arr/fill.js +0 -9
  13. package/dist/cjs/arr/fill.js.map +0 -1
  14. package/dist/cjs/arr/find.d.ts +0 -2
  15. package/dist/cjs/arr/find.js +0 -9
  16. package/dist/cjs/arr/find.js.map +0 -1
  17. package/dist/cjs/arr/findAll.d.ts +0 -2
  18. package/dist/cjs/arr/findAll.js +0 -9
  19. package/dist/cjs/arr/findAll.js.map +0 -1
  20. package/dist/cjs/arr/findAllIdx.d.ts +0 -2
  21. package/dist/cjs/arr/findAllIdx.js +0 -17
  22. package/dist/cjs/arr/findAllIdx.js.map +0 -1
  23. package/dist/cjs/arr/findIdx.d.ts +0 -2
  24. package/dist/cjs/arr/findIdx.js +0 -13
  25. package/dist/cjs/arr/findIdx.js.map +0 -1
  26. package/dist/cjs/arr/from.d.ts +0 -1
  27. package/dist/cjs/arr/from.js +0 -13
  28. package/dist/cjs/arr/from.js.map +0 -1
  29. package/dist/cjs/arr/group.d.ts +0 -1
  30. package/dist/cjs/arr/group.js +0 -16
  31. package/dist/cjs/arr/group.js.map +0 -1
  32. package/dist/cjs/arr/groupBy.d.ts +0 -1
  33. package/dist/cjs/arr/groupBy.js +0 -9
  34. package/dist/cjs/arr/groupBy.js.map +0 -1
  35. package/dist/cjs/arr/index.d.ts +0 -17
  36. package/dist/cjs/arr/index.js +0 -34
  37. package/dist/cjs/arr/index.js.map +0 -1
  38. package/dist/cjs/arr/max.d.ts +0 -1
  39. package/dist/cjs/arr/max.js +0 -15
  40. package/dist/cjs/arr/max.js.map +0 -1
  41. package/dist/cjs/arr/min.d.ts +0 -1
  42. package/dist/cjs/arr/min.js +0 -9
  43. package/dist/cjs/arr/min.js.map +0 -1
  44. package/dist/cjs/arr/range.d.ts +0 -1
  45. package/dist/cjs/arr/range.js +0 -13
  46. package/dist/cjs/arr/range.js.map +0 -1
  47. package/dist/cjs/arr/sort.d.ts +0 -1
  48. package/dist/cjs/arr/sort.js +0 -21
  49. package/dist/cjs/arr/sort.js.map +0 -1
  50. package/dist/cjs/arr/transpose.d.ts +0 -2
  51. package/dist/cjs/arr/transpose.js +0 -15
  52. package/dist/cjs/arr/transpose.js.map +0 -1
  53. package/dist/cjs/arr/types.d.ts +0 -11
  54. package/dist/cjs/arr/types.js +0 -3
  55. package/dist/cjs/arr/types.js.map +0 -1
  56. package/dist/cjs/arr/union.d.ts +0 -1
  57. package/dist/cjs/arr/union.js +0 -8
  58. package/dist/cjs/arr/union.js.map +0 -1
  59. package/dist/cjs/arr/unique.d.ts +0 -2
  60. package/dist/cjs/arr/unique.js +0 -10
  61. package/dist/cjs/arr/unique.js.map +0 -1
  62. package/dist/cjs/arr/zip.d.ts +0 -1
  63. package/dist/cjs/arr/zip.js +0 -7
  64. package/dist/cjs/arr/zip.js.map +0 -1
  65. package/dist/cjs/func/apply.d.ts +0 -1
  66. package/dist/cjs/func/apply.js +0 -8
  67. package/dist/cjs/func/apply.js.map +0 -1
  68. package/dist/cjs/func/curry.d.ts +0 -2
  69. package/dist/cjs/func/curry.js +0 -17
  70. package/dist/cjs/func/curry.js.map +0 -1
  71. package/dist/cjs/func/debounce.d.ts +0 -1
  72. package/dist/cjs/func/debounce.js +0 -15
  73. package/dist/cjs/func/debounce.js.map +0 -1
  74. package/dist/cjs/func/index.d.ts +0 -6
  75. package/dist/cjs/func/index.js +0 -23
  76. package/dist/cjs/func/index.js.map +0 -1
  77. package/dist/cjs/func/memo.d.ts +0 -2
  78. package/dist/cjs/func/memo.js +0 -22
  79. package/dist/cjs/func/memo.js.map +0 -1
  80. package/dist/cjs/func/throttle.d.ts +0 -1
  81. package/dist/cjs/func/throttle.js +0 -19
  82. package/dist/cjs/func/throttle.js.map +0 -1
  83. package/dist/cjs/func/types.d.ts +0 -8
  84. package/dist/cjs/func/types.js +0 -3
  85. package/dist/cjs/func/types.js.map +0 -1
  86. package/dist/cjs/func/unapply.d.ts +0 -1
  87. package/dist/cjs/func/unapply.js +0 -8
  88. package/dist/cjs/func/unapply.js.map +0 -1
  89. package/dist/cjs/index.d.ts +0 -15
  90. package/dist/cjs/index.js +0 -45
  91. package/dist/cjs/index.js.map +0 -1
  92. package/dist/cjs/math/add.d.ts +0 -1
  93. package/dist/cjs/math/add.js +0 -8
  94. package/dist/cjs/math/add.js.map +0 -1
  95. package/dist/cjs/math/aprox.d.ts +0 -1
  96. package/dist/cjs/math/aprox.js +0 -9
  97. package/dist/cjs/math/aprox.js.map +0 -1
  98. package/dist/cjs/math/calc.d.ts +0 -3
  99. package/dist/cjs/math/calc.js +0 -23
  100. package/dist/cjs/math/calc.js.map +0 -1
  101. package/dist/cjs/math/cumsum.d.ts +0 -1
  102. package/dist/cjs/math/cumsum.js +0 -13
  103. package/dist/cjs/math/cumsum.js.map +0 -1
  104. package/dist/cjs/math/divide.d.ts +0 -1
  105. package/dist/cjs/math/divide.js +0 -6
  106. package/dist/cjs/math/divide.js.map +0 -1
  107. package/dist/cjs/math/inRange.d.ts +0 -1
  108. package/dist/cjs/math/inRange.js +0 -11
  109. package/dist/cjs/math/inRange.js.map +0 -1
  110. package/dist/cjs/math/index.d.ts +0 -16
  111. package/dist/cjs/math/index.js +0 -33
  112. package/dist/cjs/math/index.js.map +0 -1
  113. package/dist/cjs/math/interp.d.ts +0 -1
  114. package/dist/cjs/math/interp.js +0 -22
  115. package/dist/cjs/math/interp.js.map +0 -1
  116. package/dist/cjs/math/mean.d.ts +0 -1
  117. package/dist/cjs/math/mean.js +0 -16
  118. package/dist/cjs/math/mean.js.map +0 -1
  119. package/dist/cjs/math/median.d.ts +0 -1
  120. package/dist/cjs/math/median.js +0 -9
  121. package/dist/cjs/math/median.js.map +0 -1
  122. package/dist/cjs/math/mod.d.ts +0 -1
  123. package/dist/cjs/math/mod.js +0 -9
  124. package/dist/cjs/math/mod.js.map +0 -1
  125. package/dist/cjs/math/multiply.d.ts +0 -1
  126. package/dist/cjs/math/multiply.js +0 -7
  127. package/dist/cjs/math/multiply.js.map +0 -1
  128. package/dist/cjs/math/percentile.d.ts +0 -2
  129. package/dist/cjs/math/percentile.js +0 -49
  130. package/dist/cjs/math/percentile.js.map +0 -1
  131. package/dist/cjs/math/pow.d.ts +0 -1
  132. package/dist/cjs/math/pow.js +0 -6
  133. package/dist/cjs/math/pow.js.map +0 -1
  134. package/dist/cjs/math/round.d.ts +0 -2
  135. package/dist/cjs/math/round.js +0 -15
  136. package/dist/cjs/math/round.js.map +0 -1
  137. package/dist/cjs/math/subtract.d.ts +0 -1
  138. package/dist/cjs/math/subtract.js +0 -6
  139. package/dist/cjs/math/subtract.js.map +0 -1
  140. package/dist/cjs/math/sum.d.ts +0 -1
  141. package/dist/cjs/math/sum.js +0 -8
  142. package/dist/cjs/math/sum.js.map +0 -1
  143. package/dist/cjs/math/types.d.ts +0 -4
  144. package/dist/cjs/math/types.js +0 -3
  145. package/dist/cjs/math/types.js.map +0 -1
  146. package/dist/cjs/obj/copy.d.ts +0 -1
  147. package/dist/cjs/obj/copy.js +0 -16
  148. package/dist/cjs/obj/copy.js.map +0 -1
  149. package/dist/cjs/obj/entries.d.ts +0 -2
  150. package/dist/cjs/obj/entries.js +0 -5
  151. package/dist/cjs/obj/entries.js.map +0 -1
  152. package/dist/cjs/obj/equal.d.ts +0 -1
  153. package/dist/cjs/obj/equal.js +0 -30
  154. package/dist/cjs/obj/equal.js.map +0 -1
  155. package/dist/cjs/obj/get.d.ts +0 -1
  156. package/dist/cjs/obj/get.js +0 -19
  157. package/dist/cjs/obj/get.js.map +0 -1
  158. package/dist/cjs/obj/has.d.ts +0 -1
  159. package/dist/cjs/obj/has.js +0 -8
  160. package/dist/cjs/obj/has.js.map +0 -1
  161. package/dist/cjs/obj/index.d.ts +0 -11
  162. package/dist/cjs/obj/index.js +0 -28
  163. package/dist/cjs/obj/index.js.map +0 -1
  164. package/dist/cjs/obj/isObj.d.ts +0 -1
  165. package/dist/cjs/obj/isObj.js +0 -8
  166. package/dist/cjs/obj/isObj.js.map +0 -1
  167. package/dist/cjs/obj/keys.d.ts +0 -2
  168. package/dist/cjs/obj/keys.js +0 -5
  169. package/dist/cjs/obj/keys.js.map +0 -1
  170. package/dist/cjs/obj/merge.d.ts +0 -1
  171. package/dist/cjs/obj/merge.js +0 -9
  172. package/dist/cjs/obj/merge.js.map +0 -1
  173. package/dist/cjs/obj/omit.d.ts +0 -1
  174. package/dist/cjs/obj/omit.js +0 -13
  175. package/dist/cjs/obj/omit.js.map +0 -1
  176. package/dist/cjs/obj/pick.d.ts +0 -1
  177. package/dist/cjs/obj/pick.js +0 -13
  178. package/dist/cjs/obj/pick.js.map +0 -1
  179. package/dist/cjs/obj/types.d.ts +0 -4
  180. package/dist/cjs/obj/types.js +0 -3
  181. package/dist/cjs/obj/types.js.map +0 -1
  182. package/dist/cjs/obj/vals.d.ts +0 -2
  183. package/dist/cjs/obj/vals.js +0 -5
  184. package/dist/cjs/obj/vals.js.map +0 -1
  185. package/dist/cjs/str/_words.d.ts +0 -1
  186. package/dist/cjs/str/_words.js +0 -13
  187. package/dist/cjs/str/_words.js.map +0 -1
  188. package/dist/cjs/str/camel.d.ts +0 -1
  189. package/dist/cjs/str/camel.js +0 -15
  190. package/dist/cjs/str/camel.js.map +0 -1
  191. package/dist/cjs/str/capitalize.d.ts +0 -1
  192. package/dist/cjs/str/capitalize.js +0 -8
  193. package/dist/cjs/str/capitalize.js.map +0 -1
  194. package/dist/cjs/str/index.d.ts +0 -7
  195. package/dist/cjs/str/index.js +0 -24
  196. package/dist/cjs/str/index.js.map +0 -1
  197. package/dist/cjs/str/kebab.d.ts +0 -1
  198. package/dist/cjs/str/kebab.js +0 -11
  199. package/dist/cjs/str/kebab.js.map +0 -1
  200. package/dist/cjs/str/pascal.d.ts +0 -1
  201. package/dist/cjs/str/pascal.js +0 -10
  202. package/dist/cjs/str/pascal.js.map +0 -1
  203. package/dist/cjs/str/snake.d.ts +0 -1
  204. package/dist/cjs/str/snake.js +0 -11
  205. package/dist/cjs/str/snake.js.map +0 -1
  206. package/dist/cjs/str/template.d.ts +0 -1
  207. package/dist/cjs/str/template.js +0 -11
  208. package/dist/cjs/str/template.js.map +0 -1
  209. package/dist/cjs/str/trim.d.ts +0 -1
  210. package/dist/cjs/str/trim.js +0 -9
  211. package/dist/cjs/str/trim.js.map +0 -1
  212. package/dist/cjs/time/index.d.ts +0 -16
  213. package/dist/cjs/time/index.js +0 -59
  214. package/dist/cjs/time/index.js.map +0 -1
  215. package/dist/cjs/time/types.d.ts +0 -4
  216. package/dist/cjs/time/types.js +0 -3
  217. package/dist/cjs/time/types.js.map +0 -1
  218. package/dist/cjs/types/index.d.ts +0 -1
  219. package/dist/cjs/types/index.js +0 -18
  220. package/dist/cjs/types/index.js.map +0 -1
  221. package/dist/cjs/types/primitives.d.ts +0 -4
  222. package/dist/cjs/types/primitives.js +0 -3
  223. package/dist/cjs/types/primitives.js.map +0 -1
  224. package/dist/esm/arr/chunk.d.ts +0 -1
  225. package/dist/esm/arr/chunk.js +0 -8
  226. package/dist/esm/arr/chunk.js.map +0 -1
  227. package/dist/esm/arr/fill.d.ts +0 -1
  228. package/dist/esm/arr/fill.js +0 -5
  229. package/dist/esm/arr/fill.js.map +0 -1
  230. package/dist/esm/arr/find.d.ts +0 -2
  231. package/dist/esm/arr/find.js +0 -5
  232. package/dist/esm/arr/find.js.map +0 -1
  233. package/dist/esm/arr/findAll.d.ts +0 -2
  234. package/dist/esm/arr/findAll.js +0 -5
  235. package/dist/esm/arr/findAll.js.map +0 -1
  236. package/dist/esm/arr/findAllIdx.d.ts +0 -2
  237. package/dist/esm/arr/findAllIdx.js +0 -13
  238. package/dist/esm/arr/findAllIdx.js.map +0 -1
  239. package/dist/esm/arr/findIdx.d.ts +0 -2
  240. package/dist/esm/arr/findIdx.js +0 -9
  241. package/dist/esm/arr/findIdx.js.map +0 -1
  242. package/dist/esm/arr/from.d.ts +0 -1
  243. package/dist/esm/arr/from.js +0 -9
  244. package/dist/esm/arr/from.js.map +0 -1
  245. package/dist/esm/arr/group.d.ts +0 -1
  246. package/dist/esm/arr/group.js +0 -12
  247. package/dist/esm/arr/group.js.map +0 -1
  248. package/dist/esm/arr/groupBy.d.ts +0 -1
  249. package/dist/esm/arr/groupBy.js +0 -5
  250. package/dist/esm/arr/groupBy.js.map +0 -1
  251. package/dist/esm/arr/index.d.ts +0 -17
  252. package/dist/esm/arr/index.js +0 -18
  253. package/dist/esm/arr/index.js.map +0 -1
  254. package/dist/esm/arr/max.d.ts +0 -1
  255. package/dist/esm/arr/max.js +0 -11
  256. package/dist/esm/arr/max.js.map +0 -1
  257. package/dist/esm/arr/min.d.ts +0 -1
  258. package/dist/esm/arr/min.js +0 -5
  259. package/dist/esm/arr/min.js.map +0 -1
  260. package/dist/esm/arr/range.d.ts +0 -1
  261. package/dist/esm/arr/range.js +0 -9
  262. package/dist/esm/arr/range.js.map +0 -1
  263. package/dist/esm/arr/sort.d.ts +0 -1
  264. package/dist/esm/arr/sort.js +0 -17
  265. package/dist/esm/arr/sort.js.map +0 -1
  266. package/dist/esm/arr/transpose.d.ts +0 -2
  267. package/dist/esm/arr/transpose.js +0 -11
  268. package/dist/esm/arr/transpose.js.map +0 -1
  269. package/dist/esm/arr/types.d.ts +0 -11
  270. package/dist/esm/arr/types.js +0 -2
  271. package/dist/esm/arr/types.js.map +0 -1
  272. package/dist/esm/arr/union.d.ts +0 -1
  273. package/dist/esm/arr/union.js +0 -5
  274. package/dist/esm/arr/union.js.map +0 -1
  275. package/dist/esm/arr/unique.d.ts +0 -2
  276. package/dist/esm/arr/unique.js +0 -6
  277. package/dist/esm/arr/unique.js.map +0 -1
  278. package/dist/esm/arr/zip.d.ts +0 -1
  279. package/dist/esm/arr/zip.js +0 -4
  280. package/dist/esm/arr/zip.js.map +0 -1
  281. package/dist/esm/func/apply.d.ts +0 -1
  282. package/dist/esm/func/apply.js +0 -4
  283. package/dist/esm/func/apply.js.map +0 -1
  284. package/dist/esm/func/curry.d.ts +0 -2
  285. package/dist/esm/func/curry.js +0 -13
  286. package/dist/esm/func/curry.js.map +0 -1
  287. package/dist/esm/func/debounce.d.ts +0 -1
  288. package/dist/esm/func/debounce.js +0 -11
  289. package/dist/esm/func/debounce.js.map +0 -1
  290. package/dist/esm/func/index.d.ts +0 -6
  291. package/dist/esm/func/index.js +0 -7
  292. package/dist/esm/func/index.js.map +0 -1
  293. package/dist/esm/func/memo.d.ts +0 -2
  294. package/dist/esm/func/memo.js +0 -18
  295. package/dist/esm/func/memo.js.map +0 -1
  296. package/dist/esm/func/throttle.d.ts +0 -1
  297. package/dist/esm/func/throttle.js +0 -15
  298. package/dist/esm/func/throttle.js.map +0 -1
  299. package/dist/esm/func/types.d.ts +0 -8
  300. package/dist/esm/func/types.js +0 -2
  301. package/dist/esm/func/types.js.map +0 -1
  302. package/dist/esm/func/unapply.d.ts +0 -1
  303. package/dist/esm/func/unapply.js +0 -4
  304. package/dist/esm/func/unapply.js.map +0 -1
  305. package/dist/esm/index.d.ts +0 -15
  306. package/dist/esm/index.js +0 -16
  307. package/dist/esm/index.js.map +0 -1
  308. package/dist/esm/math/add.d.ts +0 -1
  309. package/dist/esm/math/add.js +0 -5
  310. package/dist/esm/math/add.js.map +0 -1
  311. package/dist/esm/math/aprox.d.ts +0 -1
  312. package/dist/esm/math/aprox.js +0 -5
  313. package/dist/esm/math/aprox.js.map +0 -1
  314. package/dist/esm/math/calc.d.ts +0 -3
  315. package/dist/esm/math/calc.js +0 -19
  316. package/dist/esm/math/calc.js.map +0 -1
  317. package/dist/esm/math/cumsum.d.ts +0 -1
  318. package/dist/esm/math/cumsum.js +0 -9
  319. package/dist/esm/math/cumsum.js.map +0 -1
  320. package/dist/esm/math/divide.d.ts +0 -1
  321. package/dist/esm/math/divide.js +0 -3
  322. package/dist/esm/math/divide.js.map +0 -1
  323. package/dist/esm/math/inRange.d.ts +0 -1
  324. package/dist/esm/math/inRange.js +0 -7
  325. package/dist/esm/math/inRange.js.map +0 -1
  326. package/dist/esm/math/index.d.ts +0 -16
  327. package/dist/esm/math/index.js +0 -17
  328. package/dist/esm/math/index.js.map +0 -1
  329. package/dist/esm/math/interp.d.ts +0 -1
  330. package/dist/esm/math/interp.js +0 -18
  331. package/dist/esm/math/interp.js.map +0 -1
  332. package/dist/esm/math/mean.d.ts +0 -1
  333. package/dist/esm/math/mean.js +0 -12
  334. package/dist/esm/math/mean.js.map +0 -1
  335. package/dist/esm/math/median.d.ts +0 -1
  336. package/dist/esm/math/median.js +0 -5
  337. package/dist/esm/math/median.js.map +0 -1
  338. package/dist/esm/math/mod.d.ts +0 -1
  339. package/dist/esm/math/mod.js +0 -6
  340. package/dist/esm/math/mod.js.map +0 -1
  341. package/dist/esm/math/multiply.d.ts +0 -1
  342. package/dist/esm/math/multiply.js +0 -4
  343. package/dist/esm/math/multiply.js.map +0 -1
  344. package/dist/esm/math/percentile.d.ts +0 -2
  345. package/dist/esm/math/percentile.js +0 -45
  346. package/dist/esm/math/percentile.js.map +0 -1
  347. package/dist/esm/math/pow.d.ts +0 -1
  348. package/dist/esm/math/pow.js +0 -3
  349. package/dist/esm/math/pow.js.map +0 -1
  350. package/dist/esm/math/round.d.ts +0 -2
  351. package/dist/esm/math/round.js +0 -11
  352. package/dist/esm/math/round.js.map +0 -1
  353. package/dist/esm/math/subtract.d.ts +0 -1
  354. package/dist/esm/math/subtract.js +0 -3
  355. package/dist/esm/math/subtract.js.map +0 -1
  356. package/dist/esm/math/sum.d.ts +0 -1
  357. package/dist/esm/math/sum.js +0 -4
  358. package/dist/esm/math/sum.js.map +0 -1
  359. package/dist/esm/math/types.d.ts +0 -4
  360. package/dist/esm/math/types.js +0 -2
  361. package/dist/esm/math/types.js.map +0 -1
  362. package/dist/esm/obj/copy.d.ts +0 -1
  363. package/dist/esm/obj/copy.js +0 -12
  364. package/dist/esm/obj/copy.js.map +0 -1
  365. package/dist/esm/obj/entries.d.ts +0 -2
  366. package/dist/esm/obj/entries.js +0 -2
  367. package/dist/esm/obj/entries.js.map +0 -1
  368. package/dist/esm/obj/equal.d.ts +0 -1
  369. package/dist/esm/obj/equal.js +0 -27
  370. package/dist/esm/obj/equal.js.map +0 -1
  371. package/dist/esm/obj/get.d.ts +0 -1
  372. package/dist/esm/obj/get.js +0 -15
  373. package/dist/esm/obj/get.js.map +0 -1
  374. package/dist/esm/obj/has.d.ts +0 -1
  375. package/dist/esm/obj/has.js +0 -4
  376. package/dist/esm/obj/has.js.map +0 -1
  377. package/dist/esm/obj/index.d.ts +0 -11
  378. package/dist/esm/obj/index.js +0 -12
  379. package/dist/esm/obj/index.js.map +0 -1
  380. package/dist/esm/obj/isObj.d.ts +0 -1
  381. package/dist/esm/obj/isObj.js +0 -4
  382. package/dist/esm/obj/isObj.js.map +0 -1
  383. package/dist/esm/obj/keys.d.ts +0 -2
  384. package/dist/esm/obj/keys.js +0 -2
  385. package/dist/esm/obj/keys.js.map +0 -1
  386. package/dist/esm/obj/merge.d.ts +0 -1
  387. package/dist/esm/obj/merge.js +0 -5
  388. package/dist/esm/obj/merge.js.map +0 -1
  389. package/dist/esm/obj/omit.d.ts +0 -1
  390. package/dist/esm/obj/omit.js +0 -9
  391. package/dist/esm/obj/omit.js.map +0 -1
  392. package/dist/esm/obj/pick.d.ts +0 -1
  393. package/dist/esm/obj/pick.js +0 -9
  394. package/dist/esm/obj/pick.js.map +0 -1
  395. package/dist/esm/obj/types.d.ts +0 -4
  396. package/dist/esm/obj/types.js +0 -2
  397. package/dist/esm/obj/types.js.map +0 -1
  398. package/dist/esm/obj/vals.d.ts +0 -2
  399. package/dist/esm/obj/vals.js +0 -2
  400. package/dist/esm/obj/vals.js.map +0 -1
  401. package/dist/esm/str/_words.d.ts +0 -1
  402. package/dist/esm/str/_words.js +0 -9
  403. package/dist/esm/str/_words.js.map +0 -1
  404. package/dist/esm/str/camel.d.ts +0 -1
  405. package/dist/esm/str/camel.js +0 -11
  406. package/dist/esm/str/camel.js.map +0 -1
  407. package/dist/esm/str/capitalize.d.ts +0 -1
  408. package/dist/esm/str/capitalize.js +0 -4
  409. package/dist/esm/str/capitalize.js.map +0 -1
  410. package/dist/esm/str/index.d.ts +0 -7
  411. package/dist/esm/str/index.js +0 -8
  412. package/dist/esm/str/index.js.map +0 -1
  413. package/dist/esm/str/kebab.d.ts +0 -1
  414. package/dist/esm/str/kebab.js +0 -7
  415. package/dist/esm/str/kebab.js.map +0 -1
  416. package/dist/esm/str/pascal.d.ts +0 -1
  417. package/dist/esm/str/pascal.js +0 -6
  418. package/dist/esm/str/pascal.js.map +0 -1
  419. package/dist/esm/str/snake.d.ts +0 -1
  420. package/dist/esm/str/snake.js +0 -7
  421. package/dist/esm/str/snake.js.map +0 -1
  422. package/dist/esm/str/template.d.ts +0 -1
  423. package/dist/esm/str/template.js +0 -7
  424. package/dist/esm/str/template.js.map +0 -1
  425. package/dist/esm/str/trim.d.ts +0 -1
  426. package/dist/esm/str/trim.js +0 -5
  427. package/dist/esm/str/trim.js.map +0 -1
  428. package/dist/esm/time/index.d.ts +0 -16
  429. package/dist/esm/time/index.js +0 -55
  430. package/dist/esm/time/index.js.map +0 -1
  431. package/dist/esm/time/types.d.ts +0 -4
  432. package/dist/esm/time/types.js +0 -2
  433. package/dist/esm/time/types.js.map +0 -1
  434. package/dist/esm/types/index.d.ts +0 -1
  435. package/dist/esm/types/index.js +0 -2
  436. package/dist/esm/types/index.js.map +0 -1
  437. package/dist/esm/types/primitives.d.ts +0 -4
  438. package/dist/esm/types/primitives.js +0 -2
  439. package/dist/esm/types/primitives.js.map +0 -1
@@ -0,0 +1,1460 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Binary search for insertion index in a sorted array using a custom accessor
5
+ * @param arr Sorted array to search
6
+ * @param target Value to search for
7
+ * @param getVal Function to extract comparison value from each element
8
+ * @param start Start index (inclusive)
9
+ * @param end End index (exclusive)
10
+ * @returns Index to insert target to maintain order
11
+ */
12
+ const binSearch = (arr, target, getVal, start = 0, end = arr.length) => {
13
+ if (start < 0 || end > arr.length || start > end) {
14
+ throw new Error("Invalid start or end of search");
15
+ }
16
+ let a = start;
17
+ let b = end;
18
+ while (a < b) {
19
+ const mid = (a + b) >> 1;
20
+ const midVal = getVal(arr[mid]);
21
+ if (midVal < target) {
22
+ a = mid + 1;
23
+ }
24
+ else {
25
+ b = mid;
26
+ }
27
+ }
28
+ return a;
29
+ };
30
+
31
+ /**
32
+ * Splits an array into multiple chunks of a specified size
33
+ * @param arr Array to split
34
+ * @param size Size of each chunk
35
+ * @returns Array of chunks
36
+ */
37
+ const chunk = (arr, size) => {
38
+ if (!Number.isInteger(size)) {
39
+ throw new Error("Chunk size must be an integer");
40
+ }
41
+ const res = Array(Math.ceil(arr.length / size));
42
+ for (let i = 0; i < res.length; i++) {
43
+ res[i] = arr.slice(i * size, (i + 1) * size);
44
+ }
45
+ return res;
46
+ };
47
+
48
+ /**
49
+ * Counts occurrences of items in an array, grouped by key
50
+ * @param arr Array to count occurrences
51
+ * @param getKey Function to extract group ids
52
+ * @returns Object mapping each key to its count
53
+ */
54
+ const countBy = (arr, getKey) => {
55
+ var _a;
56
+ const res = {};
57
+ for (let i = 0; i < arr.length; i++) {
58
+ const key = getKey(arr[i]);
59
+ res[key] = ((_a = res[key]) !== null && _a !== void 0 ? _a : 0) + 1;
60
+ }
61
+ return res;
62
+ };
63
+
64
+ /**
65
+ * Creates array of size `n` filled with the specified value
66
+ * @param n Array size
67
+ * @param val Value to fill the array with
68
+ * @returns Array containing `val` repeated `n` times
69
+ */
70
+ const fill = (n, val) => {
71
+ const res = Array(n);
72
+ for (let i = 0; i < n; i++) {
73
+ res[i] = val;
74
+ }
75
+ return res;
76
+ };
77
+
78
+ /**
79
+ * Finds the index of the first element that matches the given predicate
80
+ * @param arr Array to search in
81
+ * @param predicate Function to test each element
82
+ * @param from Start index (inclusive). Default: 0
83
+ * @param to End index (exclusive). Default: arr.length
84
+ * @returns Index of the first matching element, or -1 if none found
85
+ */
86
+ const findIdx = (arr, predicate, from = 0, to = arr.length) => {
87
+ for (let i = from; i < to; i++) {
88
+ if (predicate(arr[i], i, arr)) {
89
+ return i;
90
+ }
91
+ }
92
+ return -1;
93
+ };
94
+
95
+ /**
96
+ * Finds the first element that matches the given predicate
97
+ * @param arr Array to search in
98
+ * @param predicate Function to test each element
99
+ * @param from Start index (inclusive). Default: 0
100
+ * @param to End index (exclusive). Default: arr.length
101
+ * @returns First matching element, or undefined if none found
102
+ */
103
+ const find = (arr, predicate, from = 0, to = arr.length) => {
104
+ return arr[findIdx(arr, predicate, from, to)];
105
+ };
106
+
107
+ /**
108
+ * Finds indices of all elements that match the given predicate
109
+ * @param arr Array to search in
110
+ * @param predicate Function to test each element
111
+ * @param from Start index (inclusive). Default: 0
112
+ * @param to End index (exclusive). Default: arr.length
113
+ * @param limit Maximum number of indices to return. Default: arr.length
114
+ * @returns Array of matching indices
115
+ */
116
+ const findAllIdx = (arr, predicate, from = 0, to = arr.length, limit = arr.length) => {
117
+ const res = [];
118
+ for (let i = from; i < to; i++) {
119
+ if (predicate(arr[i], i, arr)) {
120
+ res.push(i);
121
+ if (res.length >= limit) {
122
+ break;
123
+ }
124
+ }
125
+ }
126
+ return res;
127
+ };
128
+
129
+ /**
130
+ * Finds all elements that match the given predicate
131
+ * @param arr Array to search in
132
+ * @param predicate Function to test each element
133
+ * @param from Start index (inclusive). Default: 0
134
+ * @param to End index (exclusive). Default: arr.length
135
+ * @param limit Maximum number of matches to return. Default: arr.length
136
+ * @returns Array of matching elements
137
+ */
138
+ const findAll = (arr, predicate, from = 0, to = arr.length, limit = arr.length) => {
139
+ return findAllIdx(arr, predicate, from, to, limit).map((i) => arr[i]);
140
+ };
141
+
142
+ /**
143
+ * Gets the first element of an array
144
+ * @param arr The array
145
+ * @returns The first element
146
+ */
147
+ const first = (arr) => {
148
+ return arr[0];
149
+ };
150
+
151
+ /**
152
+ * Creates an array of size `n`, filling each element using the map function
153
+ * @param n Size of the array to create
154
+ * @param mapFn Function that maps each index to an array element
155
+ * @returns Array of mapped values
156
+ */
157
+ const from = (n, mapFn) => {
158
+ const res = Array(n);
159
+ let i = n;
160
+ while (--i >= 0) {
161
+ res[i] = mapFn(i);
162
+ }
163
+ return res;
164
+ };
165
+
166
+ /**
167
+ * Groups array items into an object by a key
168
+ * @param arr Array to group
169
+ * @param getKey Function to extract the group key from each item
170
+ * @returns Object with keys as group ids and values as arrays of grouped items
171
+ */
172
+ const group = (arr, getKey) => {
173
+ const res = {};
174
+ for (let i = 0; i < arr.length; i++) {
175
+ const el = arr[i];
176
+ const val = getKey(el);
177
+ if (res[val] === undefined) {
178
+ res[val] = [];
179
+ }
180
+ res[val].push(el);
181
+ }
182
+ return res;
183
+ };
184
+
185
+ /**
186
+ * @deprecated Use `group` instead
187
+ */
188
+ const groupBy = (arr, key) => {
189
+ return group(arr, (obj) => obj[key]);
190
+ };
191
+
192
+ /**
193
+ * Gets the last element of an array
194
+ * @param arr The array
195
+ * @returns The last element
196
+ */
197
+ const last = (arr) => {
198
+ return arr[arr.length - 1];
199
+ };
200
+
201
+ /**
202
+ * Returns the element with the maximum value based on the provided map function
203
+ * @param arr Array to search in
204
+ * @param fn Function to extract the value for comparison
205
+ * @returns Element with the maximum value
206
+ */
207
+ const max = (arr, fn) => {
208
+ let maxIdx = 0;
209
+ let maxVal = Number.NEGATIVE_INFINITY;
210
+ for (let i = 0; i < arr.length; i++) {
211
+ const val = fn(arr[i]);
212
+ if (val > maxVal) {
213
+ maxIdx = i;
214
+ maxVal = val;
215
+ }
216
+ }
217
+ return arr[maxIdx];
218
+ };
219
+
220
+ /**
221
+ * Returns the element with the minimum value based on the provided map function
222
+ * @param arr Array to search in
223
+ * @param fn Function to extract the value for comparison
224
+ * @returns Element with the minimum value
225
+ */
226
+ const min = (arr, fn) => {
227
+ let minIdx = 0;
228
+ let minVal = Number.POSITIVE_INFINITY;
229
+ for (let i = 0; i < arr.length; i++) {
230
+ const val = fn(arr[i]);
231
+ if (val < minVal) {
232
+ minIdx = i;
233
+ minVal = val;
234
+ }
235
+ }
236
+ return arr[minIdx];
237
+ };
238
+
239
+ /**
240
+ * Creates an array of numbers from `a` up to `b` incremented by `step`
241
+ * @param a Start of the range (inclusive)
242
+ * @param b End of the range (exclusive)
243
+ * @param step Step between elements. Default: 1
244
+ * @returns Array of numbers in the specified range
245
+ */
246
+ const range = (a, b, step = 1) => {
247
+ if (step === 0) {
248
+ throw new Error("Step cannot be 0");
249
+ }
250
+ const res = Array(Math.ceil((b - a - Number.EPSILON) / step));
251
+ for (let i = 0; i < res.length; i++) {
252
+ res[i] = a + step * i;
253
+ }
254
+ return res;
255
+ };
256
+
257
+ /**
258
+ * Sorts an array in-place based on a mapping function
259
+ * @param arr Array to sort
260
+ * @param mapFn Function to map each element to a sortable value
261
+ * @returns Sorted array in-place
262
+ */
263
+ const sort = (arr, mapFn) => {
264
+ const mapped = arr.map((el) => [mapFn(el), el]);
265
+ mapped.sort(([a], [b]) => {
266
+ if (a < b) {
267
+ return -1;
268
+ }
269
+ if (a > b) {
270
+ return 1;
271
+ }
272
+ return 0;
273
+ });
274
+ for (let i = 0; i < mapped.length; i++) {
275
+ arr[i] = mapped[i][1];
276
+ }
277
+ return arr;
278
+ };
279
+
280
+ /**
281
+ * Transposes a 2D array (matrix), switching its rows and columns
282
+ * @param matrix The 2D array to transpose
283
+ * @returns Transposed matrix
284
+ */
285
+ const transpose = (matrix) => {
286
+ const cols = matrix[0].length;
287
+ const rows = matrix.length;
288
+ for (let i = 1; i < rows; i++) {
289
+ if (matrix[i].length !== cols) {
290
+ throw new Error("Invalid matrix. Rows have different size");
291
+ }
292
+ }
293
+ const res = Array(cols);
294
+ for (let i = 0; i < cols; i++) {
295
+ res[i] = Array(rows);
296
+ for (let j = 0; j < rows; j++) {
297
+ res[i][j] = matrix[j][i];
298
+ }
299
+ }
300
+ return res;
301
+ };
302
+
303
+ /**
304
+ * Creates a set containing unique values from all provided arrays
305
+ * @param arrs Arrays to union
306
+ * @returns Set of unique values
307
+ */
308
+ const union = (...arrs) => {
309
+ const res = new Set();
310
+ for (let i = 0; i < arrs.length; i++) {
311
+ const arr = arrs[i];
312
+ for (let j = 0; j < arr.length; j++) {
313
+ res.add(arr[j]);
314
+ }
315
+ }
316
+ return res;
317
+ };
318
+
319
+ /**
320
+ * Creates array of unique values from the input array, preserving their order
321
+ * @param arr Array of primitive values
322
+ * @returns Array of unique values
323
+ */
324
+ const unique = (arr) => {
325
+ const set = new Set();
326
+ const res = [];
327
+ for (let i = 0; i < arr.length; i++) {
328
+ const el = arr[i];
329
+ if (!set.has(el)) {
330
+ set.add(el);
331
+ res.push(el);
332
+ }
333
+ }
334
+ return res;
335
+ };
336
+
337
+ /**
338
+ * Transforms a function with array argument into one with spread arguments
339
+ * @param fn Function accepting an array of arguments
340
+ * @returns Function accepting spread arguments
341
+ */
342
+ const unapply = (fn) => {
343
+ return (...args) => fn(args);
344
+ };
345
+
346
+ /**
347
+ * Creates an array of grouped elements, where each group contains the elements
348
+ * at the corresponding index from the input arrays
349
+ * @param arrays Arrays to process
350
+ * @returns Array of grouped elements
351
+ */
352
+ const zip = unapply(transpose);
353
+
354
+ const index$5 = /*#__PURE__*/Object.freeze({
355
+ __proto__: null,
356
+ binSearch: binSearch,
357
+ chunk: chunk,
358
+ countBy: countBy,
359
+ fill: fill,
360
+ find: find,
361
+ findAll: findAll,
362
+ findAllIdx: findAllIdx,
363
+ findIdx: findIdx,
364
+ first: first,
365
+ from: from,
366
+ group: group,
367
+ groupBy: groupBy,
368
+ last: last,
369
+ max: max,
370
+ min: min,
371
+ range: range,
372
+ sort: sort,
373
+ transpose: transpose,
374
+ union: union,
375
+ unique: unique,
376
+ zip: zip
377
+ });
378
+
379
+ /**
380
+ * Transforms a function with spread arguments into one with array argument
381
+ * @param fn Function accepting spread arguments
382
+ * @returns Function accepting an array of arguments
383
+ */
384
+ const apply = (fn) => {
385
+ return (arg) => fn.apply(undefined, arg);
386
+ };
387
+
388
+ /**
389
+ * Creates a curried version of a function, allowing partial application of arguments
390
+ * @param fn Function to curry
391
+ * @param arity Number of arguments the function expects. Default: fn.length
392
+ * @returns Curried function
393
+ */
394
+ const curry = (fn, arity = fn.length) => {
395
+ return (...args) => {
396
+ const missing = arity - args.length;
397
+ if (missing <= 0) {
398
+ return fn.apply(undefined, args);
399
+ }
400
+ return curry((...rArgs) => {
401
+ return fn.apply(undefined, args.concat(rArgs));
402
+ }, missing);
403
+ };
404
+ };
405
+
406
+ /**
407
+ * Creates a debounced version of a function that delays invoking until after the specified delay.
408
+ * Only the last call within the delay period is executed
409
+ * @param fn Function to debounce
410
+ * @param delay Delay in milliseconds. Default: 100
411
+ * @returns Debounced function
412
+ */
413
+ const debounce = (fn, delay = 100) => {
414
+ let timer;
415
+ return (...args) => {
416
+ clearTimeout(timer);
417
+ timer = setTimeout(() => {
418
+ fn.apply(undefined, args);
419
+ }, delay);
420
+ };
421
+ };
422
+
423
+ /**
424
+ * Returns the input value unchanged
425
+ * @param value Value to return
426
+ * @returns Same value provided as input
427
+ */
428
+ const identity = (x) => x;
429
+
430
+ /**
431
+ * Creates a memoized version of a function, caching its output for faster repeated calls.
432
+ * Optionally accepts a custom cache key generator and a TTL (time-to-live) in milliseconds
433
+ * @param fn Function to memoize
434
+ * @param idFn Function to generate a cache key from arguments. Default: JSON.stringify
435
+ * @param ttl Optional cache expiration time in milliseconds. Default: 0 (no expiration)
436
+ * @returns Memoized function
437
+ */
438
+ const memo = (fn, idFn = JSON.stringify, ttl = 0) => {
439
+ const cache = new Map();
440
+ return (...args) => {
441
+ const key = idFn(args);
442
+ const cached = cache.get(key);
443
+ if (cached !== undefined) {
444
+ if (cached.exp === undefined || Date.now() < cached.exp) {
445
+ return cached.val;
446
+ }
447
+ }
448
+ const val = fn.apply(undefined, args);
449
+ const exp = ttl <= 0 ? undefined : Date.now() + ttl;
450
+ cache.set(key, { exp, val });
451
+ return val;
452
+ };
453
+ };
454
+
455
+ /**
456
+ * Performs no operation
457
+ */
458
+ const noop = () => {
459
+ // do nothing
460
+ };
461
+
462
+ /**
463
+ * Ensures the provided function is executed only once
464
+ * Subsequent calls return the result of the first execution
465
+ * @param fn Function to execute only once
466
+ * @returns Function that invokes `fn` only once
467
+ */
468
+ const once = (fn) => {
469
+ let call = true;
470
+ let res;
471
+ return () => {
472
+ if (call) {
473
+ res = fn();
474
+ call = false;
475
+ }
476
+ return res;
477
+ };
478
+ };
479
+
480
+ /**
481
+ * Creates a function by composing multiple unary functions from left to right.
482
+ * The output of each function is passed as the input to the next
483
+ * @param fns Sequence of unary functions to compose
484
+ * @returns Composed function from left to right
485
+ */
486
+ const pipe = (...fns) => {
487
+ return ((input) => {
488
+ let res = input;
489
+ for (let i = 0; i < fns.length; i++) {
490
+ res = fns[i](res);
491
+ }
492
+ return res;
493
+ });
494
+ };
495
+
496
+ /**
497
+ * Creates a throttled version of the given function that only executes once per specified interval
498
+ * @param fn Function to throttle
499
+ * @param interval Minimum time (ms) between calls. Default: 100
500
+ * @returns Throttled function
501
+ */
502
+ const throttle = (fn, interval = 100) => {
503
+ let wait = false;
504
+ return (...args) => {
505
+ if (wait) {
506
+ return;
507
+ }
508
+ wait = true;
509
+ fn.apply(undefined, args);
510
+ setTimeout(() => {
511
+ wait = false;
512
+ }, interval);
513
+ };
514
+ };
515
+
516
+ const index$4 = /*#__PURE__*/Object.freeze({
517
+ __proto__: null,
518
+ apply: apply,
519
+ curry: curry,
520
+ debounce: debounce,
521
+ identity: identity,
522
+ memo: memo,
523
+ noop: noop,
524
+ once: once,
525
+ pipe: pipe,
526
+ throttle: throttle,
527
+ unapply: unapply
528
+ });
529
+
530
+ /**
531
+ * Creates a function that applies the given operation to any combination of scalars and vectors
532
+ * @template T Tuple or array of numbers for the operation
533
+ * @param opFn Operation function to apply to the inputs
534
+ * @returns Function that takes quantities (scalars or vectors) and returns the calculated result
535
+ * @example
536
+ * const fn = calc((a, b, c) => a * b + c);
537
+ * fn([1, 2], 3, 4); // [7, 10]
538
+ */
539
+ const calc = (opFn) => {
540
+ return (...arr) => {
541
+ const vectors = arr.filter((el) => typeof el !== "number");
542
+ if (vectors.length === 0) {
543
+ return opFn.apply(undefined, arr);
544
+ }
545
+ const size = vectors[0].length;
546
+ for (let i = 1; i < vectors.length; i++) {
547
+ if (vectors[i].length !== size) {
548
+ throw new Error("All vectors must have same length");
549
+ }
550
+ }
551
+ return from(size, (i) => {
552
+ const input = arr.map((el) => (typeof el === "number" ? el : el[i]));
553
+ return opFn.apply(undefined, input);
554
+ });
555
+ };
556
+ };
557
+
558
+ /**
559
+ * Calculates the sum of given quantities (vectors or scalars)
560
+ * @param q Quantities to add
561
+ * @returns Sum of the input quantities
562
+ * @example
563
+ * add([-4, 1, 0, 3], 5); // [1, 6, 5, 8]
564
+ * add([1, 2], [3, 4]); // [4, 6]
565
+ */
566
+ const add = calc((...arr) => {
567
+ let res = 0;
568
+ for (let i = 0; i < arr.length; i++) {
569
+ res += arr[i];
570
+ }
571
+ return res;
572
+ });
573
+
574
+ const _round = (n, p) => {
575
+ const k = Math.pow(10, p);
576
+ return Math.round((n + Number.EPSILON) * k) / k;
577
+ };
578
+ /**
579
+ * Rounds a quantity (vector or scalar) to the specified number of decimal places
580
+ * @param q Number or array to round
581
+ * @param precision Number of decimal places to round to. Default: 0
582
+ * @returns Rounded quantity
583
+ */
584
+ const round = (q, precision = 0) => {
585
+ if (typeof q === "number") {
586
+ return _round(q, precision);
587
+ }
588
+ return q.map((el) => _round(el, precision));
589
+ };
590
+
591
+ /**
592
+ * Compares if two numbers are approximately equal using a custom precision
593
+ * @param a First number to compare
594
+ * @param b Second number to compare
595
+ * @param precision Number of decimal places to consider. Default: 4
596
+ * @returns True if numbers are approximately equal, false otherwise
597
+ */
598
+ const aprox = (a, b, precision = 4) => {
599
+ return round(a, precision) === round(b, precision);
600
+ };
601
+
602
+ /**
603
+ * Clamps a number between a minimum and maximum value
604
+ *
605
+ * @param x - The number to clamp
606
+ * @param min - The lower bound
607
+ * @param max - The upper bound
608
+ * @returns The clamped value
609
+ */
610
+ const clamp = (x, min, max) => {
611
+ return Math.min(Math.max(x, min), max);
612
+ };
613
+
614
+ /**
615
+ * Calculates the cumulative sum of an array of numbers
616
+ * @param arr Array of numbers to sum
617
+ * @returns Array of cumulative sums
618
+ */
619
+ const cumsum = (arr) => {
620
+ const res = Array(arr.length);
621
+ res[0] = arr[0];
622
+ for (let i = 1; i < arr.length; i++) {
623
+ res[i] = res[i - 1] + arr[i];
624
+ }
625
+ return res;
626
+ };
627
+
628
+ /**
629
+ * Calculates the division of two quantities (vectors or scalars)
630
+ * @param a Dividend number or array
631
+ * @param b Divisor number or array
632
+ * @returns Division of the input quantities
633
+ * @example
634
+ * divide([-4, 1, 0, 3], 2); // [-2, 0.5, 0, 1.5]
635
+ * divide([1, 2], [3, 4]); // [1 / 3, 0.5]
636
+ */
637
+ const divide = calc((a, b) => a / b);
638
+
639
+ /**
640
+ * Calculates the linear interpolation of monotonic increasing points (xp, fp) at given x values
641
+ * @param x Points to interpolate
642
+ * @param xp Known x-coordinates (must be increasing)
643
+ * @param fp Known y-coordinates (must be increasing, same size as xp)
644
+ * @returns Interpolated values at each x
645
+ */
646
+ const interp = (x, xp, fp) => {
647
+ if (xp.length !== fp.length) {
648
+ throw new Error("xp and fp must have the same length");
649
+ }
650
+ return x.map((xi) => {
651
+ if (xi >= xp[xp.length - 1]) {
652
+ return fp[fp.length - 1];
653
+ }
654
+ const i = binSearch(xp, xi, identity);
655
+ if (i === 0) {
656
+ return fp[0];
657
+ }
658
+ const slope = (fp[i] - fp[i - 1]) / (xp[i] - xp[i - 1]);
659
+ return fp[i - 1] + slope * (xi - xp[i - 1]);
660
+ });
661
+ };
662
+
663
+ /**
664
+ * Checks if a number is within a half-open range [a, b)
665
+ * @param n The number to check
666
+ * @param a Start of the range (inclusive)
667
+ * @param b End of the range (exclusive). Default: 0
668
+ * @returns True if n is in [a, b), false otherwise
669
+ */
670
+ const inRange = (n, a, b = 0) => {
671
+ if (a > b) {
672
+ return inRange(n, b, a);
673
+ }
674
+ return n >= a && n < b;
675
+ };
676
+
677
+ /**
678
+ * Calculates the sum of an array of numbers
679
+ * @param arr Numbers to sum
680
+ * @returns Sum of all numbers in the array
681
+ */
682
+ const sum = (arr) => {
683
+ let res = 0;
684
+ for (let i = 0; i < arr.length; i++) {
685
+ res += arr[i];
686
+ }
687
+ return res;
688
+ };
689
+
690
+ /**
691
+ * Calculates the mean (average) of an array of numbers. Supports optional weighted mean
692
+ * @param arr Array of numbers
693
+ * @param weights Optional array of weights
694
+ * @returns Mean of the given numbers
695
+ */
696
+ const mean = (arr, weights) => {
697
+ if (weights === undefined) {
698
+ return sum(arr) / arr.length;
699
+ }
700
+ if (arr.length !== weights.length) {
701
+ throw new Error("Nums and weights must have the same length");
702
+ }
703
+ let total = 0;
704
+ for (let i = 0; i < arr.length; i++) {
705
+ total += arr[i] * weights[i];
706
+ }
707
+ return total / sum(weights);
708
+ };
709
+
710
+ const _linear = (x, p) => {
711
+ const step = 100 / (x.length - 1);
712
+ const xp = range(0, 100 + step, step);
713
+ return interp(p, xp, x.slice().sort());
714
+ };
715
+ const _weighted = (x, p, w) => {
716
+ if (w.length !== x.length) {
717
+ throw new Error("Weights must be the same length as the array");
718
+ }
719
+ for (let i = 0; i < w.length; i++) {
720
+ if (w[i] < 0) {
721
+ throw new Error("Weights must be non-negative");
722
+ }
723
+ }
724
+ const X = transpose([x, w]).sort(([a], [b]) => a - b);
725
+ const [Xsorted, Wsorted] = transpose(X);
726
+ const Wnorm = cumsum(Wsorted);
727
+ const Wtotal100th = Wnorm[Wnorm.length - 1] / 100;
728
+ for (let i = 0; i < Wnorm.length; i++) {
729
+ Wnorm[i] /= Wtotal100th;
730
+ }
731
+ const res = Array(p.length);
732
+ for (let i = 0, j = 0; i < p.length; i++) {
733
+ j = binSearch(Wnorm, p[i], identity, j);
734
+ res[i] = Xsorted[j];
735
+ }
736
+ return res;
737
+ };
738
+ /**
739
+ * Calculates the given percentile(s) of an array of numbers
740
+ * Supports both linear interpolation and weighted percentiles
741
+ * @param x Array of numbers
742
+ * @param p Percentile number or array to compute (0–100)
743
+ * @param weights Optional array of weights (same size as x)
744
+ * @returns Computed percentile value(s)
745
+ */
746
+ const percentile = (x, p, weights) => {
747
+ if (typeof p === "number") {
748
+ return percentile(x, [p], weights)[0];
749
+ }
750
+ for (let i = 0; i < p.length; i++) {
751
+ if (p[i] < 0 || p[i] > 100) {
752
+ throw new Error("Percentiles must be between 0 and 100");
753
+ }
754
+ }
755
+ if (weights === undefined) {
756
+ return _linear(x, p);
757
+ }
758
+ return _weighted(x, p, weights);
759
+ };
760
+
761
+ /**
762
+ * Calculates the median of an array of numbers
763
+ * @param arr Array of numbers
764
+ * @param weights Optional array of weights
765
+ * @returns Median of the given numbers
766
+ */
767
+ const median = (arr, weights) => {
768
+ return percentile(arr, 50, weights);
769
+ };
770
+
771
+ /**
772
+ * Calculates the modulo of two quantities (vectors or scalars)
773
+ * @param x Dividend number or array
774
+ * @param modulo Divisor number or array
775
+ * @returns Remainder of division
776
+ * @example
777
+ * mod(5, 3); // 2
778
+ * mod([2, 3, 4], 3); // [2, 0, 1]
779
+ * mod([4, 5], [2, 3]); // [0, 2]
780
+ */
781
+ const mod = calc((x, modulo) => {
782
+ const m = Math.abs(modulo);
783
+ return ((x % m) + m) % m;
784
+ });
785
+
786
+ /**
787
+ * Calculates the multiplication of given quantities (vectors or scalars)
788
+ * @param q Quantities to multiply
789
+ * @returns Product of the input quantities
790
+ * @example
791
+ * multiply([-4, 1, 0, 3], 3); // => [-12, 3, 0, 9]
792
+ * multiply([1, 2], [3, 4]); // => [3, 8]
793
+ */
794
+ const multiply = calc((...arr) => {
795
+ let res = 1;
796
+ for (let i = 0; i < arr.length; i++) {
797
+ res *= arr[i];
798
+ }
799
+ return res;
800
+ });
801
+
802
+ /**
803
+ * Calculates the exponentiation of two quantities (vectors or scalars)
804
+ * @param base Base number or array
805
+ * @param exp Exponent number or array
806
+ * @returns base raised to the power of exp
807
+ */
808
+ const pow = calc((base, exp) => Math.pow(base, exp));
809
+
810
+ /**
811
+ * Calculates the subtraction of two quantities (vectors or scalars)
812
+ * @param a Minuend number or array
813
+ * @param b Subtrahend number or array
814
+ * @returns Subtraction of `b` from `a`
815
+ */
816
+ const subtract = calc((a, b) => a - b);
817
+
818
+ const index$3 = /*#__PURE__*/Object.freeze({
819
+ __proto__: null,
820
+ add: add,
821
+ aprox: aprox,
822
+ calc: calc,
823
+ clamp: clamp,
824
+ cumsum: cumsum,
825
+ divide: divide,
826
+ inRange: inRange,
827
+ interp: interp,
828
+ mean: mean,
829
+ median: median,
830
+ mod: mod,
831
+ multiply: multiply,
832
+ percentile: percentile,
833
+ pow: pow,
834
+ round: round,
835
+ subtract: subtract,
836
+ sum: sum
837
+ });
838
+
839
+ /**
840
+ * Checks if the provided value is a non-null object
841
+ * @param el Value to check
842
+ * @returns True if `el` is a non-null object, otherwise false
843
+ */
844
+ const isObj = (el) => {
845
+ return typeof el === "object" && el !== null;
846
+ };
847
+
848
+ /**
849
+ * Retrieves a strongly-typed array of the keys of an object
850
+ * @param obj Object whose keys are to be retrieved
851
+ * @returns Array of the object's keys
852
+ */
853
+ const keys = (obj) => {
854
+ if (Array.isArray(obj)) {
855
+ const res = [];
856
+ for (let i = 0; i < obj.length; i++) {
857
+ if (Object.prototype.hasOwnProperty.call(obj, i)) {
858
+ res.push(String(i));
859
+ }
860
+ }
861
+ return res;
862
+ }
863
+ return Object.keys(obj);
864
+ };
865
+
866
+ /**
867
+ * Creates a deep copy of the provided object or array
868
+ * @param obj Object or array to copy
869
+ * @returns Deep copy of the input
870
+ */
871
+ const copy = (obj) => {
872
+ if (!isObj(obj)) {
873
+ return obj;
874
+ }
875
+ if (Array.isArray(obj)) {
876
+ const res = [];
877
+ for (let i = 0; i < obj.length; i++) {
878
+ res[i] = copy(obj[i]);
879
+ }
880
+ return res;
881
+ }
882
+ const res = {};
883
+ const mKeys = keys(obj);
884
+ for (let i = 0; i < mKeys.length; i++) {
885
+ const key = mKeys[i];
886
+ res[key] = copy(obj[key]);
887
+ }
888
+ return res;
889
+ };
890
+
891
+ /**
892
+ * Retrieves a strongly-typed array of the entries (key, value) of an object
893
+ * @param obj Object whose entries are to be retrieved
894
+ * @returns Array of key-value pairs from the object
895
+ */
896
+ const entries = (obj) => {
897
+ if (Array.isArray(obj)) {
898
+ const res = [];
899
+ for (let i = 0; i < obj.length; i++) {
900
+ if (Object.prototype.hasOwnProperty.call(obj, i)) {
901
+ res.push([String(i), obj[i]]);
902
+ }
903
+ }
904
+ return res;
905
+ }
906
+ return Object.entries(obj);
907
+ };
908
+
909
+ const _deepEqualArr = (arrs) => {
910
+ const size = arrs[0].length;
911
+ for (let i = 1; i < arrs.length; i++) {
912
+ if (arrs[i].length !== size) {
913
+ return false;
914
+ }
915
+ }
916
+ const vals = Array(arrs.length);
917
+ for (let i = 0; i < size; i++) {
918
+ for (let j = 0; j < arrs.length; j++) {
919
+ vals[j] = arrs[j][i];
920
+ }
921
+ if (!deepEqual(vals)) {
922
+ return false;
923
+ }
924
+ }
925
+ return true;
926
+ };
927
+ const _deepEqualObj = (objs) => {
928
+ const objKeys = keys(objs[0]);
929
+ const keysSet = new Set(objKeys);
930
+ for (let i = 0; i < objs.length; i++) {
931
+ const mKeys = keys(objs[i]);
932
+ if (mKeys.length !== objKeys.length) {
933
+ return false;
934
+ }
935
+ for (let j = 0; j < mKeys.length; j++) {
936
+ if (!keysSet.has(mKeys[j])) {
937
+ return false;
938
+ }
939
+ }
940
+ }
941
+ const vals = Array(objs.length);
942
+ for (let i = 0; i < objKeys.length; i++) {
943
+ for (let j = 0; j < objs.length; j++) {
944
+ vals[j] = objs[j][objKeys[i]];
945
+ }
946
+ if (!deepEqual(vals)) {
947
+ return false;
948
+ }
949
+ }
950
+ return true;
951
+ };
952
+ const shallowEqual = (arr) => {
953
+ for (let i = 0; i < arr.length; i++) {
954
+ if (arr[i] !== arr[0]) {
955
+ return false;
956
+ }
957
+ }
958
+ return true;
959
+ };
960
+ const deepEqual = (args) => {
961
+ if (shallowEqual(args)) {
962
+ return true;
963
+ }
964
+ for (let i = 0; i < args.length; i++) {
965
+ if (!isObj(args[i])) {
966
+ return false;
967
+ }
968
+ }
969
+ const isArr = Array.isArray(args[0]);
970
+ for (let i = 1; i < args.length; i++) {
971
+ if (Array.isArray(args[i]) !== isArr) {
972
+ return false;
973
+ }
974
+ }
975
+ if (isArr) {
976
+ return _deepEqualArr(args);
977
+ }
978
+ return _deepEqualObj(args);
979
+ };
980
+ /**
981
+ * Performs a deep comparison between multiple objects to determine if they are equal
982
+ * @param objs Objects to compare
983
+ * @returns True if all objects are deeply equal, false otherwise
984
+ */
985
+ const equal = unapply(deepEqual);
986
+
987
+ /**
988
+ * Checks if an object has all specified properties
989
+ * @param obj Object to check
990
+ * @param keys Property keys to look for
991
+ * @returns True if all keys exist on the object, false otherwise
992
+ */
993
+ const has = (obj, ...keys) => {
994
+ for (let i = 0; i < keys.length; i++) {
995
+ if (!Object.prototype.hasOwnProperty.call(obj, keys[i])) {
996
+ return false;
997
+ }
998
+ }
999
+ return true;
1000
+ };
1001
+
1002
+ /**
1003
+ * Gets a value at a nested path of an object or array
1004
+ * @param obj Source object
1005
+ * @param path Dot-separated path string
1006
+ * @param fallback Value to return if the path is not found
1007
+ * @returns Value at the specified path or the fallback
1008
+ */
1009
+ const get = (obj, path, fallback) => {
1010
+ let val = obj;
1011
+ const keys = path.split(".");
1012
+ for (let i = 0; i < keys.length; i++) {
1013
+ const key = keys[i];
1014
+ if (isObj(val) && has(val, key)) {
1015
+ val = val[key];
1016
+ }
1017
+ else {
1018
+ return fallback;
1019
+ }
1020
+ }
1021
+ return val;
1022
+ };
1023
+
1024
+ /**
1025
+ * Creates a strongly-typed object from the shallow merge of deep copies of two objects
1026
+ * If both objects have the same property, the value from the second object overwrites the first
1027
+ * @param a First object to merge
1028
+ * @param b Second object to merge
1029
+ * @returns The merged object with properties from both a and b
1030
+ */
1031
+ const merge = (a, b) => {
1032
+ return Object.assign(copy(a), copy(b));
1033
+ };
1034
+
1035
+ /**
1036
+ * Creates a deep copy of an object without the specified keys
1037
+ * @param obj Source object
1038
+ * @param keys Array of keys to omit from the result
1039
+ * @returns New object without the specified keys
1040
+ */
1041
+ const omit = (obj, keys) => {
1042
+ const newObj = copy(obj);
1043
+ for (let i = 0; i < keys.length; i++) {
1044
+ delete newObj[keys[i]];
1045
+ }
1046
+ return newObj;
1047
+ };
1048
+
1049
+ /**
1050
+ * Creates a deep copy of an object with only the specified keys
1051
+ * @param obj Source object
1052
+ * @param keys Array of keys to pick from the object
1053
+ * @returns New object with only the picked keys
1054
+ */
1055
+ const pick = (obj, keys) => {
1056
+ const res = {};
1057
+ for (let i = 0; i < keys.length; i++) {
1058
+ const key = keys[i];
1059
+ res[key] = copy(obj[key]);
1060
+ }
1061
+ return res;
1062
+ };
1063
+
1064
+ /**
1065
+ * Sets a value at a nested path of an object, creating nested objects if needed
1066
+ * @param obj Target object to modify
1067
+ * @param path Dot-separated string path where the value should be set
1068
+ * @param value Value to set at the specified path
1069
+ * @returns Modified object with the value set at the given path
1070
+ */
1071
+ const set = (obj, path, value) => {
1072
+ let val = obj;
1073
+ const keys = path.split(".");
1074
+ const end = keys.length - 1;
1075
+ for (let i = 0; i < end; i++) {
1076
+ const key = keys[i];
1077
+ if (!isObj(val[key])) {
1078
+ val[key] = {};
1079
+ }
1080
+ val = val[key];
1081
+ }
1082
+ val[keys[end]] = value;
1083
+ return obj;
1084
+ };
1085
+
1086
+ /**
1087
+ * Retrieves a strongly-typed array of the values of an object
1088
+ * @param obj Source object
1089
+ * @returns Array of the object's values
1090
+ */
1091
+ const vals = (obj) => {
1092
+ if (Array.isArray(obj)) {
1093
+ const res = [];
1094
+ for (let i = 0; i < obj.length; i++) {
1095
+ if (Object.prototype.hasOwnProperty.call(obj, i)) {
1096
+ res.push(obj[i]);
1097
+ }
1098
+ }
1099
+ return res;
1100
+ }
1101
+ return Object.values(obj);
1102
+ };
1103
+
1104
+ const index$2 = /*#__PURE__*/Object.freeze({
1105
+ __proto__: null,
1106
+ copy: copy,
1107
+ entries: entries,
1108
+ equal: equal,
1109
+ get: get,
1110
+ has: has,
1111
+ isObj: isObj,
1112
+ keys: keys,
1113
+ merge: merge,
1114
+ omit: omit,
1115
+ pick: pick,
1116
+ set: set,
1117
+ vals: vals
1118
+ });
1119
+
1120
+ /**
1121
+ * Returns a random integer between two numbers
1122
+ * @param a Lower bound (inclusive)
1123
+ * @param b Upper bound (exclusive). Default: 0
1124
+ * @returns Random integer between a and b
1125
+ */
1126
+ const randInt$1 = (a, b = 0) => {
1127
+ if (!Number.isInteger(a) || !Number.isInteger(b)) {
1128
+ throw new Error("a and b must be integers");
1129
+ }
1130
+ return Math.floor(Math.random() * (b - a) + a);
1131
+ };
1132
+
1133
+ /**
1134
+ * Selects a random index based on the provided weights
1135
+ * @param weights Array of non-negative weights
1136
+ * @returns Selected index
1137
+ */
1138
+ const randWeight = (weights) => {
1139
+ if (weights.length === 0) {
1140
+ throw new Error("Weights array cannot be empty");
1141
+ }
1142
+ for (let i = 0; i < weights.length; i++) {
1143
+ if (weights[i] < 0) {
1144
+ throw new Error("Weights array cannot contain negative values");
1145
+ }
1146
+ }
1147
+ const wAccum = cumsum(weights);
1148
+ const wTotal = wAccum[wAccum.length - 1];
1149
+ if (wTotal === 0) {
1150
+ throw new Error("Total weight must be greater than zero");
1151
+ }
1152
+ const r = Math.random() * wTotal;
1153
+ return binSearch(wAccum, r, identity);
1154
+ };
1155
+
1156
+ const op = (arr, size, pick) => {
1157
+ const n = Math.min(size, arr.length);
1158
+ const res = arr.slice();
1159
+ const end = res.length - n;
1160
+ for (let i = res.length - 1; i > end; i--) {
1161
+ const idx = pick(i + 1);
1162
+ [res[i], res[idx]] = [res[idx], res[i]];
1163
+ }
1164
+ return n === arr.length ? res : res.slice(0, n);
1165
+ };
1166
+ const randInt = (n) => Math.floor(Math.random() * n);
1167
+ const fisherYates = (data, size, weights) => {
1168
+ if (size <= 0) {
1169
+ return [];
1170
+ }
1171
+ if (weights === undefined) {
1172
+ return op(data, size, randInt);
1173
+ }
1174
+ if (weights.length !== data.length) {
1175
+ throw new Error("Weights must have the same length as the data array");
1176
+ }
1177
+ for (let i = 0; i < weights.length; i++) {
1178
+ if (weights[i] < 0) {
1179
+ throw new Error("Weights cannot contain negative values.");
1180
+ }
1181
+ }
1182
+ const w = weights.slice();
1183
+ return op(data, size, () => {
1184
+ const idx = randWeight(w);
1185
+ w[idx] = 0;
1186
+ return idx;
1187
+ });
1188
+ };
1189
+
1190
+ /**
1191
+ * Samples elements from an array randomly, optionally using weights to influence selection
1192
+ * @param data Array to sample from
1193
+ * @param size Number of elements to sample
1194
+ * @param weights Optional array of weights for weighted sampling
1195
+ * @returns New array containing the sampled elements
1196
+ */
1197
+ const sample = fisherYates;
1198
+
1199
+ /**
1200
+ * Shuffles an array randomly, optionally using weights to influence the
1201
+ * likelihood of selecting elements first
1202
+ * @param data Array to shuffle
1203
+ * @param weights Optional array of weights for weighted shuffling
1204
+ * @returns New array with the elements shuffled
1205
+ */
1206
+ const shuffle = (data, weights) => {
1207
+ return fisherYates(data, data.length, weights);
1208
+ };
1209
+
1210
+ const index$1 = /*#__PURE__*/Object.freeze({
1211
+ __proto__: null,
1212
+ randInt: randInt$1,
1213
+ randWeight: randWeight,
1214
+ sample: sample,
1215
+ shuffle: shuffle
1216
+ });
1217
+
1218
+ const words = (str) => {
1219
+ var _a;
1220
+ return (_a = str.match(/[A-Z]{2,}(?=[A-Z][a-z])|[A-Z]?[a-z]+|[A-Z]+|[0-9]+/g)) !== null && _a !== void 0 ? _a : [];
1221
+ };
1222
+
1223
+ /**
1224
+ * Capitalizes the first letter of a string and converts the rest to lowercase
1225
+ * @param str String to capitalize
1226
+ * @returns Capitalized string
1227
+ */
1228
+ const capitalize = (str) => {
1229
+ return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();
1230
+ };
1231
+
1232
+ /**
1233
+ * Converts a string to camelCase
1234
+ * @param str String to convert
1235
+ * @returns camelCase version of the input string
1236
+ */
1237
+ const camel = (str) => {
1238
+ const w = words(str).map(capitalize);
1239
+ if (w.length === 0) {
1240
+ return "";
1241
+ }
1242
+ w[0] = w[0].toLowerCase();
1243
+ return w.join("");
1244
+ };
1245
+
1246
+ /**
1247
+ * Converts a string to kebab-case
1248
+ * @param str String to convert
1249
+ * @returns kebab-case version of the input string
1250
+ */
1251
+ const kebab = (str) => {
1252
+ return words(str)
1253
+ .map((str) => str.toLowerCase())
1254
+ .join("-");
1255
+ };
1256
+
1257
+ /**
1258
+ * Converts a string to PascalCase
1259
+ * @param str String to convert
1260
+ * @returns PascalCase version of the input string
1261
+ */
1262
+ const pascal = (str) => {
1263
+ return words(str).map(capitalize).join("");
1264
+ };
1265
+
1266
+ /**
1267
+ * Converts a string to snake_case
1268
+ * @param str String to convert
1269
+ * @returns snake_case version of the input string
1270
+ */
1271
+ const snake = (str) => {
1272
+ return words(str)
1273
+ .map((str) => str.toLowerCase())
1274
+ .join("_");
1275
+ };
1276
+
1277
+ /**
1278
+ * Splits a string by the specified delimiter and returns a typed array
1279
+ *
1280
+ * @param str - The string to split
1281
+ * @param delimiter - The delimiter to split by
1282
+ * @returns The array (tuple) of substrings
1283
+ */
1284
+ const split = (str, delimiter) => {
1285
+ return str.split(delimiter);
1286
+ };
1287
+
1288
+ /**
1289
+ * Replaces placeholders in the format `{{path.to.value}}` within a string
1290
+ * with corresponding values from the provided data object
1291
+ * @param str String containing placeholders to replace
1292
+ * @param data Object with values for the placeholders
1293
+ * @returns String with placeholders replaced by their values
1294
+ */
1295
+ const template = (str, data) => {
1296
+ return str.replace(/\{\{([a-zA-Z0-9._]+)\}\}/g, (_, path) => {
1297
+ return get(data, path, "");
1298
+ });
1299
+ };
1300
+
1301
+ /**
1302
+ * Removes leading and trailing whitespace or specified characters from a string
1303
+ * @param str String to trim
1304
+ * @param chars Optional characters to trim from the string. Default: whitespace
1305
+ * @returns Trimmed string
1306
+ */
1307
+ const trim = (str, chars = " ") => {
1308
+ const reg = new RegExp(`^[${chars}]+|[${chars}]+$`, "g");
1309
+ return str.replace(reg, "");
1310
+ };
1311
+
1312
+ const index = /*#__PURE__*/Object.freeze({
1313
+ __proto__: null,
1314
+ camel: camel,
1315
+ capitalize: capitalize,
1316
+ kebab: kebab,
1317
+ pascal: pascal,
1318
+ snake: snake,
1319
+ split: split,
1320
+ template: template,
1321
+ trim: trim
1322
+ });
1323
+
1324
+ /**
1325
+ * @deprecated Time module is deprecated and may be removed in future releases
1326
+ */
1327
+ class Time {
1328
+ constructor(val, unit = "ms") {
1329
+ this.date = new Date();
1330
+ if (val !== undefined) {
1331
+ this.set(val, unit);
1332
+ }
1333
+ }
1334
+ static convert(val, from, to = "ms") {
1335
+ const ms = Math.round(Time.UNITS[from] * val);
1336
+ return ms / Time.UNITS[to];
1337
+ }
1338
+ add(val, unit = "ms") {
1339
+ return this.set(this.get(unit) + val, unit);
1340
+ }
1341
+ format(mode = "full", local = Time.locales, opts = {}) {
1342
+ const options = merge(Time.formatOptions[mode], opts);
1343
+ return this.date.toLocaleString(local, options);
1344
+ }
1345
+ get(unit = "ms") {
1346
+ return Time.convert(this.date.getTime(), "ms", unit);
1347
+ }
1348
+ getDayTime(unit = "ms") {
1349
+ return Time.convert(this.get("d") % 1, "d", unit);
1350
+ }
1351
+ set(val, unit = "ms") {
1352
+ return this.date.setTime(Time.convert(val, unit));
1353
+ }
1354
+ setDayTime(val, unit = "ms") {
1355
+ return this.add(val - this.getDayTime(unit), unit);
1356
+ }
1357
+ toDate() {
1358
+ return new Date(this.date);
1359
+ }
1360
+ }
1361
+ Time.UNITS = {
1362
+ d: 864e5,
1363
+ h: 36e5,
1364
+ m: 6e4,
1365
+ ms: 1,
1366
+ s: 1e3
1367
+ };
1368
+ Time.formatOptions = {
1369
+ date: {
1370
+ dateStyle: "medium"
1371
+ },
1372
+ full: {
1373
+ dateStyle: "short",
1374
+ timeStyle: "short"
1375
+ },
1376
+ time: {
1377
+ timeStyle: "medium"
1378
+ }
1379
+ };
1380
+
1381
+ exports.Time = Time;
1382
+ exports.add = add;
1383
+ exports.apply = apply;
1384
+ exports.aprox = aprox;
1385
+ exports.arr = index$5;
1386
+ exports.binSearch = binSearch;
1387
+ exports.calc = calc;
1388
+ exports.camel = camel;
1389
+ exports.capitalize = capitalize;
1390
+ exports.chunk = chunk;
1391
+ exports.clamp = clamp;
1392
+ exports.copy = copy;
1393
+ exports.countBy = countBy;
1394
+ exports.cumsum = cumsum;
1395
+ exports.curry = curry;
1396
+ exports.debounce = debounce;
1397
+ exports.divide = divide;
1398
+ exports.entries = entries;
1399
+ exports.equal = equal;
1400
+ exports.fill = fill;
1401
+ exports.find = find;
1402
+ exports.findAll = findAll;
1403
+ exports.findAllIdx = findAllIdx;
1404
+ exports.findIdx = findIdx;
1405
+ exports.first = first;
1406
+ exports.from = from;
1407
+ exports.func = index$4;
1408
+ exports.get = get;
1409
+ exports.group = group;
1410
+ exports.groupBy = groupBy;
1411
+ exports.has = has;
1412
+ exports.identity = identity;
1413
+ exports.inRange = inRange;
1414
+ exports.interp = interp;
1415
+ exports.isObj = isObj;
1416
+ exports.kebab = kebab;
1417
+ exports.keys = keys;
1418
+ exports.last = last;
1419
+ exports.math = index$3;
1420
+ exports.max = max;
1421
+ exports.mean = mean;
1422
+ exports.median = median;
1423
+ exports.memo = memo;
1424
+ exports.merge = merge;
1425
+ exports.min = min;
1426
+ exports.mod = mod;
1427
+ exports.multiply = multiply;
1428
+ exports.noop = noop;
1429
+ exports.obj = index$2;
1430
+ exports.omit = omit;
1431
+ exports.once = once;
1432
+ exports.pascal = pascal;
1433
+ exports.percentile = percentile;
1434
+ exports.pick = pick;
1435
+ exports.pipe = pipe;
1436
+ exports.pow = pow;
1437
+ exports.rand = index$1;
1438
+ exports.randInt = randInt$1;
1439
+ exports.randWeight = randWeight;
1440
+ exports.range = range;
1441
+ exports.round = round;
1442
+ exports.sample = sample;
1443
+ exports.set = set;
1444
+ exports.shuffle = shuffle;
1445
+ exports.snake = snake;
1446
+ exports.sort = sort;
1447
+ exports.split = split;
1448
+ exports.str = index;
1449
+ exports.subtract = subtract;
1450
+ exports.sum = sum;
1451
+ exports.template = template;
1452
+ exports.throttle = throttle;
1453
+ exports.transpose = transpose;
1454
+ exports.trim = trim;
1455
+ exports.unapply = unapply;
1456
+ exports.union = union;
1457
+ exports.unique = unique;
1458
+ exports.vals = vals;
1459
+ exports.zip = zip;
1460
+ //# sourceMappingURL=index.cjs.js.map