@fluixi/utils 1.0.0-alpha.100

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 (364) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +68 -0
  3. package/dist/index.cjs +2858 -0
  4. package/dist/index.d.ts +2 -0
  5. package/dist/index.d.ts.map +1 -0
  6. package/dist/index.js +1 -0
  7. package/dist/index.mjs +2838 -0
  8. package/dist/lib/array/advanced.cjs +2227 -0
  9. package/dist/lib/array/advanced.d.ts +1116 -0
  10. package/dist/lib/array/advanced.d.ts.map +1 -0
  11. package/dist/lib/array/advanced.js +2429 -0
  12. package/dist/lib/array/advanced.mjs +2204 -0
  13. package/dist/lib/array/array.cjs +57 -0
  14. package/dist/lib/array/array.d.ts +6 -0
  15. package/dist/lib/array/array.d.ts.map +1 -0
  16. package/dist/lib/array/array.js +31 -0
  17. package/dist/lib/array/array.mjs +36 -0
  18. package/dist/lib/array/index.cjs +2344 -0
  19. package/dist/lib/array/index.d.ts +4 -0
  20. package/dist/lib/array/index.d.ts.map +1 -0
  21. package/dist/lib/array/index.js +3 -0
  22. package/dist/lib/array/index.mjs +2322 -0
  23. package/dist/lib/array/utils.cjs +103 -0
  24. package/dist/lib/array/utils.d.ts +100 -0
  25. package/dist/lib/array/utils.d.ts.map +1 -0
  26. package/dist/lib/array/utils.js +165 -0
  27. package/dist/lib/array/utils.mjs +82 -0
  28. package/dist/lib/color/color.cjs +2190 -0
  29. package/dist/lib/color/color.d.ts +366 -0
  30. package/dist/lib/color/color.d.ts.map +1 -0
  31. package/dist/lib/color/color.js +722 -0
  32. package/dist/lib/color/color.mjs +2167 -0
  33. package/dist/lib/color/constants.cjs +380 -0
  34. package/dist/lib/color/constants.d.ts +361 -0
  35. package/dist/lib/color/constants.d.ts.map +1 -0
  36. package/dist/lib/color/constants.js +358 -0
  37. package/dist/lib/color/constants.mjs +359 -0
  38. package/dist/lib/color/conversions.cjs +629 -0
  39. package/dist/lib/color/conversions.d.ts +166 -0
  40. package/dist/lib/color/conversions.d.ts.map +1 -0
  41. package/dist/lib/color/conversions.js +766 -0
  42. package/dist/lib/color/conversions.mjs +608 -0
  43. package/dist/lib/color/helpers.cjs +2534 -0
  44. package/dist/lib/color/helpers.d.ts +75 -0
  45. package/dist/lib/color/helpers.d.ts.map +1 -0
  46. package/dist/lib/color/helpers.js +419 -0
  47. package/dist/lib/color/helpers.mjs +2511 -0
  48. package/dist/lib/color/index.cjs +2641 -0
  49. package/dist/lib/color/index.d.ts +12 -0
  50. package/dist/lib/color/index.d.ts.map +1 -0
  51. package/dist/lib/color/index.js +15 -0
  52. package/dist/lib/color/index.mjs +2619 -0
  53. package/dist/lib/color/types.cjs +18 -0
  54. package/dist/lib/color/types.d.ts +179 -0
  55. package/dist/lib/color/types.d.ts.map +1 -0
  56. package/dist/lib/color/types.js +1 -0
  57. package/dist/lib/color/types.mjs +0 -0
  58. package/dist/lib/color/utils.cjs +962 -0
  59. package/dist/lib/color/utils.d.ts +199 -0
  60. package/dist/lib/color/utils.d.ts.map +1 -0
  61. package/dist/lib/color/utils.js +858 -0
  62. package/dist/lib/color/utils.mjs +939 -0
  63. package/dist/lib/compare/comparators.cjs +171 -0
  64. package/dist/lib/compare/comparators.d.ts +65 -0
  65. package/dist/lib/compare/comparators.d.ts.map +1 -0
  66. package/dist/lib/compare/comparators.js +210 -0
  67. package/dist/lib/compare/comparators.mjs +150 -0
  68. package/dist/lib/compare/index.cjs +172 -0
  69. package/dist/lib/compare/index.d.ts +2 -0
  70. package/dist/lib/compare/index.d.ts.map +1 -0
  71. package/dist/lib/compare/index.js +1 -0
  72. package/dist/lib/compare/index.mjs +152 -0
  73. package/dist/lib/cookie/codec.cjs +72 -0
  74. package/dist/lib/cookie/codec.d.ts +22 -0
  75. package/dist/lib/cookie/codec.d.ts.map +1 -0
  76. package/dist/lib/cookie/codec.js +67 -0
  77. package/dist/lib/cookie/codec.mjs +51 -0
  78. package/dist/lib/cookie/index.cjs +75 -0
  79. package/dist/lib/cookie/index.d.ts +2 -0
  80. package/dist/lib/cookie/index.d.ts.map +1 -0
  81. package/dist/lib/cookie/index.js +1 -0
  82. package/dist/lib/cookie/index.mjs +53 -0
  83. package/dist/lib/crypto/hash.cjs +83 -0
  84. package/dist/lib/crypto/hash.d.ts +6 -0
  85. package/dist/lib/crypto/hash.d.ts.map +1 -0
  86. package/dist/lib/crypto/hash.js +53 -0
  87. package/dist/lib/crypto/hash.mjs +62 -0
  88. package/dist/lib/crypto/index.cjs +85 -0
  89. package/dist/lib/crypto/index.d.ts +2 -0
  90. package/dist/lib/crypto/index.d.ts.map +1 -0
  91. package/dist/lib/crypto/index.js +1 -0
  92. package/dist/lib/crypto/index.mjs +62 -0
  93. package/dist/lib/dom/events.cjs +40 -0
  94. package/dist/lib/dom/events.d.ts +159 -0
  95. package/dist/lib/dom/events.d.ts.map +1 -0
  96. package/dist/lib/dom/events.js +50 -0
  97. package/dist/lib/dom/events.mjs +19 -0
  98. package/dist/lib/dom/index.cjs +78 -0
  99. package/dist/lib/dom/index.d.ts +3 -0
  100. package/dist/lib/dom/index.d.ts.map +1 -0
  101. package/dist/lib/dom/index.js +2 -0
  102. package/dist/lib/dom/index.mjs +56 -0
  103. package/dist/lib/dom/utils.cjs +57 -0
  104. package/dist/lib/dom/utils.d.ts +6 -0
  105. package/dist/lib/dom/utils.d.ts.map +1 -0
  106. package/dist/lib/dom/utils.js +37 -0
  107. package/dist/lib/dom/utils.mjs +36 -0
  108. package/dist/lib/functions/functions.cjs +366 -0
  109. package/dist/lib/functions/functions.d.ts +329 -0
  110. package/dist/lib/functions/functions.d.ts.map +1 -0
  111. package/dist/lib/functions/functions.js +585 -0
  112. package/dist/lib/functions/functions.mjs +345 -0
  113. package/dist/lib/functions/index.cjs +369 -0
  114. package/dist/lib/functions/index.d.ts +3 -0
  115. package/dist/lib/functions/index.d.ts.map +1 -0
  116. package/dist/lib/functions/index.js +1 -0
  117. package/dist/lib/functions/index.mjs +347 -0
  118. package/dist/lib/functions/types.cjs +18 -0
  119. package/dist/lib/functions/types.d.ts +2 -0
  120. package/dist/lib/functions/types.d.ts.map +1 -0
  121. package/dist/lib/functions/types.js +1 -0
  122. package/dist/lib/functions/types.mjs +0 -0
  123. package/dist/lib/helpers.cjs +78 -0
  124. package/dist/lib/helpers.d.ts +13 -0
  125. package/dist/lib/helpers.d.ts.map +1 -0
  126. package/dist/lib/helpers.js +66 -0
  127. package/dist/lib/helpers.mjs +59 -0
  128. package/dist/lib/index.cjs +2857 -0
  129. package/dist/lib/index.d.ts +6 -0
  130. package/dist/lib/index.d.ts.map +1 -0
  131. package/dist/lib/index.js +8 -0
  132. package/dist/lib/index.mjs +2836 -0
  133. package/dist/lib/maths/constants.cjs +70 -0
  134. package/dist/lib/maths/constants.d.ts +84 -0
  135. package/dist/lib/maths/constants.d.ts.map +1 -0
  136. package/dist/lib/maths/constants.js +79 -0
  137. package/dist/lib/maths/constants.mjs +50 -0
  138. package/dist/lib/maths/fn/advanced.cjs +231 -0
  139. package/dist/lib/maths/fn/advanced.d.ts +149 -0
  140. package/dist/lib/maths/fn/advanced.d.ts.map +1 -0
  141. package/dist/lib/maths/fn/advanced.js +264 -0
  142. package/dist/lib/maths/fn/advanced.mjs +208 -0
  143. package/dist/lib/maths/fn/basic.cjs +212 -0
  144. package/dist/lib/maths/fn/basic.d.ts +182 -0
  145. package/dist/lib/maths/fn/basic.d.ts.map +1 -0
  146. package/dist/lib/maths/fn/basic.js +343 -0
  147. package/dist/lib/maths/fn/basic.mjs +191 -0
  148. package/dist/lib/maths/fn/complex.cjs +268 -0
  149. package/dist/lib/maths/fn/complex.d.ts +153 -0
  150. package/dist/lib/maths/fn/complex.d.ts.map +1 -0
  151. package/dist/lib/maths/fn/complex.js +383 -0
  152. package/dist/lib/maths/fn/complex.mjs +247 -0
  153. package/dist/lib/maths/fn/index.cjs +877 -0
  154. package/dist/lib/maths/fn/index.d.ts +10 -0
  155. package/dist/lib/maths/fn/index.d.ts.map +1 -0
  156. package/dist/lib/maths/fn/index.js +9 -0
  157. package/dist/lib/maths/fn/index.mjs +855 -0
  158. package/dist/lib/maths/fn/trigo.cjs +179 -0
  159. package/dist/lib/maths/fn/trigo.d.ts +147 -0
  160. package/dist/lib/maths/fn/trigo.d.ts.map +1 -0
  161. package/dist/lib/maths/fn/trigo.js +227 -0
  162. package/dist/lib/maths/fn/trigo.mjs +156 -0
  163. package/dist/lib/maths/fn/vector.cjs +728 -0
  164. package/dist/lib/maths/fn/vector.d.ts +512 -0
  165. package/dist/lib/maths/fn/vector.d.ts.map +1 -0
  166. package/dist/lib/maths/fn/vector.js +1136 -0
  167. package/dist/lib/maths/fn/vector.mjs +707 -0
  168. package/dist/lib/maths/formatter.cjs +61 -0
  169. package/dist/lib/maths/formatter.d.ts +35 -0
  170. package/dist/lib/maths/formatter.d.ts.map +1 -0
  171. package/dist/lib/maths/formatter.js +56 -0
  172. package/dist/lib/maths/formatter.mjs +40 -0
  173. package/dist/lib/maths/guards.cjs +164 -0
  174. package/dist/lib/maths/guards.d.ts +166 -0
  175. package/dist/lib/maths/guards.d.ts.map +1 -0
  176. package/dist/lib/maths/guards.js +315 -0
  177. package/dist/lib/maths/guards.mjs +144 -0
  178. package/dist/lib/maths/index.cjs +1152 -0
  179. package/dist/lib/maths/index.d.ts +24 -0
  180. package/dist/lib/maths/index.d.ts.map +1 -0
  181. package/dist/lib/maths/index.js +29 -0
  182. package/dist/lib/maths/index.mjs +1130 -0
  183. package/dist/lib/maths/parser.cjs +75 -0
  184. package/dist/lib/maths/parser.d.ts +20 -0
  185. package/dist/lib/maths/parser.d.ts.map +1 -0
  186. package/dist/lib/maths/parser.js +78 -0
  187. package/dist/lib/maths/parser.mjs +54 -0
  188. package/dist/lib/maths/random.cjs +49 -0
  189. package/dist/lib/maths/random.d.ts +27 -0
  190. package/dist/lib/maths/random.d.ts.map +1 -0
  191. package/dist/lib/maths/random.js +49 -0
  192. package/dist/lib/maths/random.mjs +28 -0
  193. package/dist/lib/maths/types/advanced.cjs +18 -0
  194. package/dist/lib/maths/types/advanced.d.ts +357 -0
  195. package/dist/lib/maths/types/advanced.d.ts.map +1 -0
  196. package/dist/lib/maths/types/advanced.js +5 -0
  197. package/dist/lib/maths/types/advanced.mjs +0 -0
  198. package/dist/lib/maths/types/basic.cjs +18 -0
  199. package/dist/lib/maths/types/basic.d.ts +95 -0
  200. package/dist/lib/maths/types/basic.d.ts.map +1 -0
  201. package/dist/lib/maths/types/basic.js +5 -0
  202. package/dist/lib/maths/types/basic.mjs +0 -0
  203. package/dist/lib/maths/types/index.cjs +19 -0
  204. package/dist/lib/maths/types/index.d.ts +4 -0
  205. package/dist/lib/maths/types/index.d.ts.map +1 -0
  206. package/dist/lib/maths/types/index.js +3 -0
  207. package/dist/lib/maths/types/index.mjs +1 -0
  208. package/dist/lib/maths/types/negative.cjs +18 -0
  209. package/dist/lib/maths/types/negative.d.ts +51 -0
  210. package/dist/lib/maths/types/negative.d.ts.map +1 -0
  211. package/dist/lib/maths/types/negative.js +5 -0
  212. package/dist/lib/maths/types/negative.mjs +0 -0
  213. package/dist/lib/maths/types/operations.cjs +18 -0
  214. package/dist/lib/maths/types/operations.d.ts +188 -0
  215. package/dist/lib/maths/types/operations.d.ts.map +1 -0
  216. package/dist/lib/maths/types/operations.js +6 -0
  217. package/dist/lib/maths/types/operations.mjs +0 -0
  218. package/dist/lib/object/clone.cjs +88 -0
  219. package/dist/lib/object/clone.d.ts +46 -0
  220. package/dist/lib/object/clone.d.ts.map +1 -0
  221. package/dist/lib/object/clone.js +104 -0
  222. package/dist/lib/object/clone.mjs +65 -0
  223. package/dist/lib/object/diff.cjs +573 -0
  224. package/dist/lib/object/diff.d.ts +203 -0
  225. package/dist/lib/object/diff.d.ts.map +1 -0
  226. package/dist/lib/object/diff.js +805 -0
  227. package/dist/lib/object/diff.mjs +550 -0
  228. package/dist/lib/object/getter-setter.cjs +2351 -0
  229. package/dist/lib/object/getter-setter.d.ts +361 -0
  230. package/dist/lib/object/getter-setter.d.ts.map +1 -0
  231. package/dist/lib/object/getter-setter.js +1771 -0
  232. package/dist/lib/object/getter-setter.mjs +2330 -0
  233. package/dist/lib/object/index.cjs +3956 -0
  234. package/dist/lib/object/index.d.ts +13 -0
  235. package/dist/lib/object/index.d.ts.map +1 -0
  236. package/dist/lib/object/index.js +12 -0
  237. package/dist/lib/object/index.mjs +3936 -0
  238. package/dist/lib/object/merge.cjs +1029 -0
  239. package/dist/lib/object/merge.d.ts +93 -0
  240. package/dist/lib/object/merge.d.ts.map +1 -0
  241. package/dist/lib/object/merge.js +474 -0
  242. package/dist/lib/object/merge.mjs +1006 -0
  243. package/dist/lib/object/object.cjs +280 -0
  244. package/dist/lib/object/object.d.ts +128 -0
  245. package/dist/lib/object/object.d.ts.map +1 -0
  246. package/dist/lib/object/object.js +432 -0
  247. package/dist/lib/object/object.mjs +257 -0
  248. package/dist/lib/object/omit.cjs +2022 -0
  249. package/dist/lib/object/omit.d.ts +351 -0
  250. package/dist/lib/object/omit.d.ts.map +1 -0
  251. package/dist/lib/object/omit.js +656 -0
  252. package/dist/lib/object/omit.mjs +1999 -0
  253. package/dist/lib/object/reconcile.cjs +126 -0
  254. package/dist/lib/object/reconcile.d.ts +7 -0
  255. package/dist/lib/object/reconcile.d.ts.map +1 -0
  256. package/dist/lib/object/reconcile.js +122 -0
  257. package/dist/lib/object/reconcile.mjs +105 -0
  258. package/dist/lib/object/selector.cjs +303 -0
  259. package/dist/lib/object/selector.d.ts +50 -0
  260. package/dist/lib/object/selector.d.ts.map +1 -0
  261. package/dist/lib/object/selector.js +371 -0
  262. package/dist/lib/object/selector.mjs +282 -0
  263. package/dist/lib/object/sort.cjs +209 -0
  264. package/dist/lib/object/sort.d.ts +149 -0
  265. package/dist/lib/object/sort.d.ts.map +1 -0
  266. package/dist/lib/object/sort.js +298 -0
  267. package/dist/lib/object/sort.mjs +186 -0
  268. package/dist/lib/object/transform.cjs +2211 -0
  269. package/dist/lib/object/transform.d.ts +620 -0
  270. package/dist/lib/object/transform.d.ts.map +1 -0
  271. package/dist/lib/object/transform.js +1058 -0
  272. package/dist/lib/object/transform.mjs +2190 -0
  273. package/dist/lib/object/types.cjs +18 -0
  274. package/dist/lib/object/types.d.ts +250 -0
  275. package/dist/lib/object/types.d.ts.map +1 -0
  276. package/dist/lib/object/types.js +1 -0
  277. package/dist/lib/object/types.mjs +0 -0
  278. package/dist/lib/object/utils.cjs +326 -0
  279. package/dist/lib/object/utils.d.ts +165 -0
  280. package/dist/lib/object/utils.d.ts.map +1 -0
  281. package/dist/lib/object/utils.js +444 -0
  282. package/dist/lib/object/utils.mjs +305 -0
  283. package/dist/lib/primitive/boolean/boolean.cjs +407 -0
  284. package/dist/lib/primitive/boolean/boolean.d.ts +276 -0
  285. package/dist/lib/primitive/boolean/boolean.d.ts.map +1 -0
  286. package/dist/lib/primitive/boolean/boolean.js +615 -0
  287. package/dist/lib/primitive/boolean/boolean.mjs +386 -0
  288. package/dist/lib/primitive/boolean/index.cjs +382 -0
  289. package/dist/lib/primitive/boolean/index.d.ts +3 -0
  290. package/dist/lib/primitive/boolean/index.d.ts.map +1 -0
  291. package/dist/lib/primitive/boolean/index.js +2 -0
  292. package/dist/lib/primitive/boolean/index.mjs +359 -0
  293. package/dist/lib/primitive/boolean/types.cjs +18 -0
  294. package/dist/lib/primitive/boolean/types.d.ts +14 -0
  295. package/dist/lib/primitive/boolean/types.d.ts.map +1 -0
  296. package/dist/lib/primitive/boolean/types.js +1 -0
  297. package/dist/lib/primitive/boolean/types.mjs +0 -0
  298. package/dist/lib/primitive/date/date.cjs +1126 -0
  299. package/dist/lib/primitive/date/date.d.ts +641 -0
  300. package/dist/lib/primitive/date/date.d.ts.map +1 -0
  301. package/dist/lib/primitive/date/date.js +1998 -0
  302. package/dist/lib/primitive/date/date.mjs +1105 -0
  303. package/dist/lib/primitive/date/index.cjs +1128 -0
  304. package/dist/lib/primitive/date/index.d.ts +3 -0
  305. package/dist/lib/primitive/date/index.d.ts.map +1 -0
  306. package/dist/lib/primitive/date/index.js +2 -0
  307. package/dist/lib/primitive/date/index.mjs +1105 -0
  308. package/dist/lib/primitive/date/types.cjs +18 -0
  309. package/dist/lib/primitive/date/types.d.ts +205 -0
  310. package/dist/lib/primitive/date/types.d.ts.map +1 -0
  311. package/dist/lib/primitive/date/types.js +7 -0
  312. package/dist/lib/primitive/date/types.mjs +0 -0
  313. package/dist/lib/primitive/index.cjs +2338 -0
  314. package/dist/lib/primitive/index.d.ts +5 -0
  315. package/dist/lib/primitive/index.d.ts.map +1 -0
  316. package/dist/lib/primitive/index.js +4 -0
  317. package/dist/lib/primitive/index.mjs +2316 -0
  318. package/dist/lib/primitive/string/index.cjs +875 -0
  319. package/dist/lib/primitive/string/index.d.ts +3 -0
  320. package/dist/lib/primitive/string/index.d.ts.map +1 -0
  321. package/dist/lib/primitive/string/index.js +2 -0
  322. package/dist/lib/primitive/string/index.mjs +852 -0
  323. package/dist/lib/primitive/string/parser-2.cjs +543 -0
  324. package/dist/lib/primitive/string/parser-2.d.ts +17 -0
  325. package/dist/lib/primitive/string/parser-2.d.ts.map +1 -0
  326. package/dist/lib/primitive/string/parser-2.js +656 -0
  327. package/dist/lib/primitive/string/parser-2.mjs +522 -0
  328. package/dist/lib/primitive/string/parser.cjs +236 -0
  329. package/dist/lib/primitive/string/parser.d.ts +9 -0
  330. package/dist/lib/primitive/string/parser.d.ts.map +1 -0
  331. package/dist/lib/primitive/string/parser.js +775 -0
  332. package/dist/lib/primitive/string/parser.mjs +215 -0
  333. package/dist/lib/primitive/string/string.cjs +926 -0
  334. package/dist/lib/primitive/string/string.d.ts +535 -0
  335. package/dist/lib/primitive/string/string.d.ts.map +1 -0
  336. package/dist/lib/primitive/string/string.js +1301 -0
  337. package/dist/lib/primitive/string/string.mjs +903 -0
  338. package/dist/lib/primitive/string/types.cjs +18 -0
  339. package/dist/lib/primitive/string/types.d.ts +318 -0
  340. package/dist/lib/primitive/string/types.d.ts.map +1 -0
  341. package/dist/lib/primitive/string/types.js +5 -0
  342. package/dist/lib/primitive/string/types.mjs +0 -0
  343. package/dist/lib/primitive/types.cjs +18 -0
  344. package/dist/lib/primitive/types.d.ts +27 -0
  345. package/dist/lib/primitive/types.d.ts.map +1 -0
  346. package/dist/lib/primitive/types.js +1 -0
  347. package/dist/lib/primitive/types.mjs +0 -0
  348. package/dist/lib/url/index.cjs +327 -0
  349. package/dist/lib/url/index.d.ts +3 -0
  350. package/dist/lib/url/index.d.ts.map +1 -0
  351. package/dist/lib/url/index.js +2 -0
  352. package/dist/lib/url/index.mjs +304 -0
  353. package/dist/lib/url/parser.cjs +325 -0
  354. package/dist/lib/url/parser.d.ts +216 -0
  355. package/dist/lib/url/parser.d.ts.map +1 -0
  356. package/dist/lib/url/parser.js +488 -0
  357. package/dist/lib/url/parser.mjs +304 -0
  358. package/dist/lib/url/types.cjs +18 -0
  359. package/dist/lib/url/types.d.ts +18 -0
  360. package/dist/lib/url/types.d.ts.map +1 -0
  361. package/dist/lib/url/types.js +1 -0
  362. package/dist/lib/url/types.mjs +0 -0
  363. package/dist/tsconfig.lib.tsbuildinfo +1 -0
  364. package/package.json +127 -0
@@ -0,0 +1,182 @@
1
+ /**
2
+ * Basic mathematical operations.
3
+ * @module BasicMathFunctions
4
+ */
5
+ import type { RoundingMode, Sign } from '../types/basic.js';
6
+ /**
7
+ * Adds two numbers.
8
+ * @param a - First operand
9
+ * @param b - Second operand
10
+ * @returns The sum of a and b
11
+ */
12
+ export declare function add(a: number, b: number): number;
13
+ /**
14
+ * Subtracts two numbers.
15
+ * @param a - First operand
16
+ * @param b - Second operand
17
+ * @returns The difference of a and b (a - b)
18
+ */
19
+ export declare function subtract(a: number, b: number): number;
20
+ /**
21
+ * Divides two numbers.
22
+ * @param a - Dividend
23
+ * @param b - Divisor
24
+ * @returns The quotient of a divided by b
25
+ * @throws {Error} If b is 0
26
+ */
27
+ export declare const divide: <T = number>(dividend: number, divisor: number, fallback?: T) => number | T;
28
+ /**
29
+ * Calculates the modulo/remainder.
30
+ * @param a - Dividend
31
+ * @param b - Divisor
32
+ * @returns The remainder of a divided by b
33
+ */
34
+ export declare function modulo(a: number, b: number): number;
35
+ /**
36
+ * Calculates the power of a number.
37
+ * @param base - The base number
38
+ * @param exponent - The exponent
39
+ * @returns base raised to the power of exponent
40
+ */
41
+ export declare function power(base: number, exponent: number): number;
42
+ /**
43
+ * Calculates the square root of a number.
44
+ * @param value - The number
45
+ * @returns The square root of the number
46
+ * @throws {Error} If value is negative
47
+ */
48
+ export declare function sqrt(value: number): number;
49
+ /**
50
+ * Calculates the absolute value of a number.
51
+ * @param value - The number
52
+ * @returns The absolute value
53
+ */
54
+ export declare function abs(value: number): number;
55
+ /**
56
+ * Robust rounding using David Gay's dtoa algorithm approach
57
+ * @param value - The value to round
58
+ * @param precision - Decimal precision (default: 0)
59
+ * @returns Rounded number
60
+ * @example
61
+ * round(1.005, 2) // 1.01
62
+ * round(123.456, -1) // 120
63
+ */
64
+ export declare const round: (value: number, precision?: number, mode?: RoundingMode) => number;
65
+ /**
66
+ * Rounds a number up to the nearest integer.
67
+ * @param value - The number to round up
68
+ * @returns The ceiling integer
69
+ */
70
+ export declare const ceil: (value: number, precision?: number) => number;
71
+ /**
72
+ * Rounds a number down to the nearest integer.
73
+ * @param value - The number to round down
74
+ * @returns The floored integer
75
+ */
76
+ export declare const floor: (value: number, precision?: number) => number;
77
+ /**
78
+ * Truncates the decimal part of a number.
79
+ * @param value - The number to truncate
80
+ * @returns The truncated integer
81
+ */
82
+ export declare const trunc: (value: number, precision?: number) => number;
83
+ /**
84
+ * Clamps a value between a minimum and maximum.
85
+ * @param value - The value to clamp
86
+ * @param min - The minimum allowed value
87
+ * @param max - The maximum allowed value
88
+ * @returns The clamped value
89
+ */
90
+ export declare const clamp: (value: number, min: number, max: number) => number;
91
+ /**
92
+ * Returns the sign of a number: -1, 0, or 1.
93
+ * @param value - The number
94
+ * @returns The sign of the number
95
+ */
96
+ export declare function sign<T extends number>(value: T): Sign<T>;
97
+ /**
98
+ * Calculates the factorial of a non-negative integer.
99
+ * @param n - The integer
100
+ * @returns The factorial of n
101
+ * @throws {Error} If n is negative or not an integer
102
+ */
103
+ export declare function factorial(n: number): number;
104
+ /**
105
+ * Calculates the greatest common divisor (GCD) of two numbers.
106
+ * @param a - First number
107
+ * @param b - Second number
108
+ * @returns The GCD of a and b
109
+ */
110
+ export declare function gcd(a: number, b: number): number;
111
+ /**
112
+ * Calculates the least common multiple (LCM) of two numbers.
113
+ * @param a - First number
114
+ * @param b - Second number
115
+ * @returns The LCM of a and b
116
+ */
117
+ export declare function lcm(a: number, b: number): number;
118
+ /**
119
+ * Linearly interpolates between two values.
120
+ * @param start - The starting value
121
+ * @param end - The ending value
122
+ * @param t - The interpolation factor (0 to 1)
123
+ * @returns The interpolated value
124
+ */
125
+ export declare function lerp(start: number, end: number, t: number): number;
126
+ /**
127
+ * Inverse linear interpolation.
128
+ * @param start - The starting value
129
+ * @param end - The ending value
130
+ * @param value - The value to interpolate
131
+ * @returns The interpolation factor (0 to 1)
132
+ */
133
+ export declare const invLerp: (start: number, end: number, value: number) => number;
134
+ /**
135
+ * Maps a value from one range to another
136
+ * @param value - The value to map
137
+ * @param inMin - The minimum value of the input range
138
+ * @param inMax - The maximum value of the input range
139
+ * @param outMin - The minimum value of the output range
140
+ * @param outMax - The maximum value of the output range
141
+ * @returns The mapped value
142
+ * Optimized: Uses lerp and invLerp
143
+ */
144
+ export declare const mapRange: (value: number, inMin: number, inMax: number, outMin: number, outMax: number) => number;
145
+ /**
146
+ * Returns the minimum of two or more numbers.
147
+ * @param values - Numbers to compare
148
+ * @returns The smallest number
149
+ */
150
+ export declare function min(...values: number[]): number;
151
+ /**
152
+ * Returns the maximum of two or more numbers.
153
+ * @param values - Numbers to compare
154
+ * @returns The largest number
155
+ */
156
+ export declare function max(...values: number[]): number;
157
+ /**
158
+ * Calculates the average of numbers.
159
+ * @param values - Numbers to average
160
+ * @returns The average
161
+ */
162
+ export declare const average: (...numbers: number[]) => number;
163
+ /**
164
+ * Calculates the sum of numbers.
165
+ * @param values - Numbers to sum
166
+ * @returns The sum
167
+ */
168
+ export declare const sum: (...numbers: number[]) => number;
169
+ /**
170
+ * Calculates the median of an array of numbers
171
+ * @param numbers - Array of numbers
172
+ * @returns The median
173
+ * Optimized: Sorts only when necessary
174
+ */
175
+ export declare const median: (...numbers: number[]) => number;
176
+ /**
177
+ * Calculates the product of numbers.
178
+ * @param values - Numbers to multiply
179
+ * @returns The product
180
+ */
181
+ export declare function product(...values: number[]): number;
182
+ //# sourceMappingURL=basic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"basic.d.ts","sourceRoot":"","sources":["../../../../src/lib/maths/fn/basic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,343 @@
1
+ /**
2
+ * Basic mathematical operations.
3
+ * @module BasicMathFunctions
4
+ */
5
+ /**
6
+ * Adds two numbers.
7
+ * @param a - First operand
8
+ * @param b - Second operand
9
+ * @returns The sum of a and b
10
+ */
11
+ export function add(a, b) {
12
+ return a + b;
13
+ }
14
+ /**
15
+ * Subtracts two numbers.
16
+ * @param a - First operand
17
+ * @param b - Second operand
18
+ * @returns The difference of a and b (a - b)
19
+ */
20
+ export function subtract(a, b) {
21
+ return a - b;
22
+ }
23
+ /**
24
+ * Divides two numbers.
25
+ * @param a - Dividend
26
+ * @param b - Divisor
27
+ * @returns The quotient of a divided by b
28
+ * @throws {Error} If b is 0
29
+ */
30
+ export const divide = (dividend, divisor, fallback) => {
31
+ if (divisor === 0) {
32
+ return fallback !== undefined ? fallback : NaN;
33
+ }
34
+ return dividend / divisor;
35
+ };
36
+ /**
37
+ * Calculates the modulo/remainder.
38
+ * @param a - Dividend
39
+ * @param b - Divisor
40
+ * @returns The remainder of a divided by b
41
+ */
42
+ export function modulo(a, b) {
43
+ return a % b;
44
+ }
45
+ /**
46
+ * Calculates the power of a number.
47
+ * @param base - The base number
48
+ * @param exponent - The exponent
49
+ * @returns base raised to the power of exponent
50
+ */
51
+ export function power(base, exponent) {
52
+ return Math.pow(base, exponent);
53
+ }
54
+ /**
55
+ * Calculates the square root of a number.
56
+ * @param value - The number
57
+ * @returns The square root of the number
58
+ * @throws {Error} If value is negative
59
+ */
60
+ export function sqrt(value) {
61
+ if (value < 0) {
62
+ throw new Error('Cannot calculate square root of negative number');
63
+ }
64
+ return Math.sqrt(value);
65
+ }
66
+ /**
67
+ * Calculates the absolute value of a number.
68
+ * @param value - The number
69
+ * @returns The absolute value
70
+ */
71
+ export function abs(value) {
72
+ return Math.abs(value);
73
+ }
74
+ /**
75
+ * Robust rounding using David Gay's dtoa algorithm approach
76
+ * @param value - The value to round
77
+ * @param precision - Decimal precision (default: 0)
78
+ * @returns Rounded number
79
+ * @example
80
+ * round(1.005, 2) // 1.01
81
+ * round(123.456, -1) // 120
82
+ */
83
+ export const round = (value, precision = 0, mode = 'round') => {
84
+ if (mode === 'david')
85
+ return roundUsingDavidGay(value, precision, mode);
86
+ if (!Number.isFinite(value))
87
+ return value;
88
+ if (precision === 0)
89
+ return Math[mode](value);
90
+ // Handle negative precision (rounding to tens, hundreds, etc.)
91
+ if (precision < 0) {
92
+ const factor = 10 ** -precision;
93
+ return Math[mode](value / factor) * factor;
94
+ }
95
+ // For positive precision, use a robust method
96
+ const factor = 10 ** precision;
97
+ // Add epsilon correction to handle floating point errors
98
+ const epsilon = Math.pow(2, -52); // Machine epsilon
99
+ const adjusted = value * factor;
100
+ const correction = Math.sign(adjusted) * epsilon * Math.abs(adjusted);
101
+ let rounded;
102
+ switch (mode) {
103
+ case 'round':
104
+ rounded = Math.round(adjusted + correction);
105
+ break;
106
+ case 'ceil':
107
+ rounded = Math.ceil(adjusted - epsilon);
108
+ break;
109
+ case 'floor':
110
+ rounded = Math.floor(adjusted + epsilon);
111
+ break;
112
+ case 'trunc':
113
+ rounded = adjusted < 0 ? Math.ceil(adjusted) : Math.floor(adjusted);
114
+ break;
115
+ default:
116
+ rounded = Math.round(adjusted + correction);
117
+ }
118
+ return rounded / factor;
119
+ };
120
+ const roundUsingDavidGay = (_value, precision = 0, mode = 'round') => {
121
+ let value = Math.abs(_value);
122
+ const multiplicator = _value < 0 ? -1 : 1;
123
+ if (precision === 0) {
124
+ return Math.round(value) * multiplicator;
125
+ }
126
+ if (!Number.isFinite(value)) {
127
+ return value * multiplicator;
128
+ }
129
+ // Use the banker's rounding variant which is more accurate
130
+ const factor = 10 ** precision;
131
+ // This method handles the 1.005 case correctly
132
+ // First, shift the decimal point to the right
133
+ let shifted = value * factor;
134
+ // Apply a small epsilon to handle floating point errors
135
+ // The epsilon is scaled by the magnitude of the number
136
+ const epsilon = Math.pow(2, -53); // Machine epsilon for double precision
137
+ const correction = Math.sign(shifted) * epsilon * Math.abs(shifted);
138
+ // Round with correction
139
+ shifted += correction;
140
+ // Use Math.round (or could use banker's rounding: Math.round((shifted + Number.EPSILON) * factor) / factor)
141
+ const rounded = Math.round(shifted);
142
+ // Shift the decimal point back
143
+ return (rounded / factor) * multiplicator;
144
+ };
145
+ /**
146
+ * Rounds a number up to the nearest integer.
147
+ * @param value - The number to round up
148
+ * @returns The ceiling integer
149
+ */
150
+ export const ceil = (value, precision = 0) => {
151
+ return round(value, precision, 'ceil');
152
+ };
153
+ /**
154
+ * Rounds a number down to the nearest integer.
155
+ * @param value - The number to round down
156
+ * @returns The floored integer
157
+ */
158
+ export const floor = (value, precision = 0) => {
159
+ return round(value, precision, 'floor');
160
+ };
161
+ /**
162
+ * Truncates the decimal part of a number.
163
+ * @param value - The number to truncate
164
+ * @returns The truncated integer
165
+ */
166
+ export const trunc = (value, precision = 0) => {
167
+ return round(value, precision, 'trunc');
168
+ };
169
+ /**
170
+ * Clamps a value between a minimum and maximum.
171
+ * @param value - The value to clamp
172
+ * @param min - The minimum allowed value
173
+ * @param max - The maximum allowed value
174
+ * @returns The clamped value
175
+ */
176
+ export const clamp = (value, min, max) => {
177
+ if (min > max)
178
+ [min, max] = [max, min]; // Swap if min > max
179
+ return value < min ? min : value > max ? max : value;
180
+ };
181
+ // export function clamp(value: number, min: number, max: number): number {
182
+ // return Math.max(min, Math.min(max, value));
183
+ // }
184
+ /**
185
+ * Returns the sign of a number: -1, 0, or 1.
186
+ * @param value - The number
187
+ * @returns The sign of the number
188
+ */
189
+ export function sign(value) {
190
+ if (value > 0)
191
+ return 1;
192
+ if (value < 0)
193
+ return -1;
194
+ return 0;
195
+ }
196
+ /**
197
+ * Calculates the factorial of a non-negative integer.
198
+ * @param n - The integer
199
+ * @returns The factorial of n
200
+ * @throws {Error} If n is negative or not an integer
201
+ */
202
+ export function factorial(n) {
203
+ if (!Number.isInteger(n) || n < 0) {
204
+ throw new Error('Factorial is only defined for non-negative integers');
205
+ }
206
+ if (n === 0 || n === 1)
207
+ return 1;
208
+ let result = 1;
209
+ for (let i = 2; i <= n; i++) {
210
+ result *= i;
211
+ }
212
+ return result;
213
+ }
214
+ /**
215
+ * Calculates the greatest common divisor (GCD) of two numbers.
216
+ * @param a - First number
217
+ * @param b - Second number
218
+ * @returns The GCD of a and b
219
+ */
220
+ export function gcd(a, b) {
221
+ a = Math.abs(a);
222
+ b = Math.abs(b);
223
+ while (b !== 0) {
224
+ const temp = b;
225
+ b = a % b;
226
+ a = temp;
227
+ }
228
+ return a;
229
+ }
230
+ /**
231
+ * Calculates the least common multiple (LCM) of two numbers.
232
+ * @param a - First number
233
+ * @param b - Second number
234
+ * @returns The LCM of a and b
235
+ */
236
+ export function lcm(a, b) {
237
+ return Math.abs(a * b) / gcd(a, b);
238
+ }
239
+ /**
240
+ * Linearly interpolates between two values.
241
+ * @param start - The starting value
242
+ * @param end - The ending value
243
+ * @param t - The interpolation factor (0 to 1)
244
+ * @returns The interpolated value
245
+ */
246
+ export function lerp(start, end, t) {
247
+ return start + (end - start) * clamp(t, 0, 1);
248
+ }
249
+ /**
250
+ * Inverse linear interpolation.
251
+ * @param start - The starting value
252
+ * @param end - The ending value
253
+ * @param value - The value to interpolate
254
+ * @returns The interpolation factor (0 to 1)
255
+ */
256
+ export const invLerp = (start, end, value) => {
257
+ // return (value - start) / (end - start);
258
+ return clamp((value - start) / (end - start), 0, 1);
259
+ };
260
+ /**
261
+ * Maps a value from one range to another
262
+ * @param value - The value to map
263
+ * @param inMin - The minimum value of the input range
264
+ * @param inMax - The maximum value of the input range
265
+ * @param outMin - The minimum value of the output range
266
+ * @param outMax - The maximum value of the output range
267
+ * @returns The mapped value
268
+ * Optimized: Uses lerp and invLerp
269
+ */
270
+ export const mapRange = (value, inMin, inMax, outMin, outMax) => {
271
+ const t = invLerp(inMin, inMax, value);
272
+ return lerp(outMin, outMax, t);
273
+ };
274
+ /**
275
+ * Returns the minimum of two or more numbers.
276
+ * @param values - Numbers to compare
277
+ * @returns The smallest number
278
+ */
279
+ export function min(...values) {
280
+ return Math.min(...values);
281
+ }
282
+ /**
283
+ * Returns the maximum of two or more numbers.
284
+ * @param values - Numbers to compare
285
+ * @returns The largest number
286
+ */
287
+ export function max(...values) {
288
+ return Math.max(...values);
289
+ }
290
+ /**
291
+ * Calculates the average of numbers.
292
+ * @param values - Numbers to average
293
+ * @returns The average
294
+ */
295
+ export const average = (...numbers) => {
296
+ if (!Array.isArray(numbers) || numbers.length === 0)
297
+ return 0;
298
+ let total = 0;
299
+ let count = 0;
300
+ for (const num of numbers) {
301
+ if (Number.isFinite(num)) {
302
+ total += num;
303
+ count++;
304
+ }
305
+ }
306
+ return count === 0 ? 0 : total / count;
307
+ };
308
+ /**
309
+ * Calculates the sum of numbers.
310
+ * @param values - Numbers to sum
311
+ * @returns The sum
312
+ */
313
+ export const sum = (...numbers) => {
314
+ if (!Array.isArray(numbers))
315
+ return 0;
316
+ return numbers.reduce((acc, val) => acc + (Number.isFinite(val) ? val : 0), 0);
317
+ };
318
+ /**
319
+ * Calculates the median of an array of numbers
320
+ * @param numbers - Array of numbers
321
+ * @returns The median
322
+ * Optimized: Sorts only when necessary
323
+ */
324
+ export const median = (...numbers) => {
325
+ if (!Array.isArray(numbers) || numbers.length === 0)
326
+ return 0;
327
+ const validNumbers = numbers.filter(Number.isFinite);
328
+ if (validNumbers.length === 0)
329
+ return 0;
330
+ validNumbers.sort((a, b) => a - b);
331
+ const mid = Math.floor(validNumbers.length / 2);
332
+ return validNumbers.length % 2 === 0
333
+ ? (validNumbers[mid - 1] + validNumbers[mid]) / 2
334
+ : validNumbers[mid];
335
+ };
336
+ /**
337
+ * Calculates the product of numbers.
338
+ * @param values - Numbers to multiply
339
+ * @returns The product
340
+ */
341
+ export function product(...values) {
342
+ return values.reduce((prod, val) => prod * val, 1);
343
+ }