@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,188 @@
1
+ /**
2
+ * Type-level mathematical operations that actually work.
3
+ * These use clever TypeScript tricks to perform type-level arithmetic.
4
+ * @module OperationTypes
5
+ */
6
+ import { Integer, IsNegative } from "./basic.js";
7
+ import { MakeNegative } from "./negative.js";
8
+ /**
9
+ * Creates a tuple of length N.
10
+ * This is the foundation for all type-level arithmetic.
11
+ */
12
+ type Tuple<N extends number, T = unknown, Acc extends T[] = []> = Acc['length'] extends N ? Acc : Tuple<N, T, [...Acc, T]>;
13
+ /**
14
+ * Converts a number to a tuple length.
15
+ */
16
+ type NumberToTuple<N extends number> = Tuple<N>;
17
+ /**
18
+ * Converts a tuple to a number.
19
+ */
20
+ type TupleToNumber<T extends unknown[]> = T['length'];
21
+ /**
22
+ * Helper type to get the numeric value of a digit string.
23
+ */
24
+ type Digit = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9';
25
+ /**
26
+ * Adds two numbers at the type level (works up to ~50).
27
+ */
28
+ type _Add<A extends number, B extends number> = IsNegative<A> extends true ? IsNegative<B> extends true ? Add<Absolute<A>, Absolute<B>> : Compare<Absolute<A>, Absolute<B>> extends -1 ? Subtract<B, Absolute<A>> : Subtract<Absolute<A>, B> : TupleToNumber<[...Tuple<A>, ...Tuple<B>]> & number;
29
+ /**
30
+ * Subtracts B from A at the type level (A - B).
31
+ */
32
+ export type Subtract<A extends number, B extends number> = Tuple<A> extends [...Tuple<B>, ...infer R] ? TupleToNumber<R> : never;
33
+ /**
34
+ * Multiplies two numbers at the type level.
35
+ */
36
+ type _Multiply<A extends number, B extends number> = B extends 0 ? 0 : B extends 1 ? A : MultiplyRec<A, B, 0>;
37
+ type MultiplyRec<A extends number, B extends number, Acc extends number> = B extends 0 ? Acc : MultiplyRec<A, Subtract<B, 1>, Add<Acc, A>>;
38
+ /**
39
+ * Divides A by B at the type level (integer division).
40
+ */
41
+ type _Divide<A extends number, B extends number> = B extends 0 ? never : DivideRec<A, B, 0>;
42
+ type DivideRec<A extends number, B extends number, Q extends number> = A extends 0 ? Q : Subtract<A, B> extends never ? Q : DivideRec<Subtract<A, B>, B, Add<Q, 1>>;
43
+ /**
44
+ * Modulo operation at the type level (A % B).
45
+ */
46
+ export type Mod<A extends number, B extends number> = B extends 0 ? never : Subtract<A, Multiply<Divide<A, B>, B>>;
47
+ export type Add<A extends number, B extends number> = IsNegative<A> extends true ? IsNegative<B> extends true ? MakeNegative<Add<Absolute<A>, Absolute<B>>> : Compare<Absolute<A>, Absolute<B>> extends 1 ? MakeNegative<Subtract<Absolute<A>, Absolute<B>>> : Subtract<Absolute<B>, Absolute<A>> : IsNegative<B> extends true ? Compare<A, Absolute<B>> extends 1 | 0 ? Subtract<A, Absolute<B>> : MakeNegative<Subtract<Absolute<B>, A>> : _Add<A, B>;
48
+ /**
49
+ * Multiplies two numbers, handling signs correctly.
50
+ */
51
+ export type Multiply<A extends number, B extends number> = (IsNegative<A> extends true ? -1 : 1) extends infer SignA ? (IsNegative<B> extends true ? -1 : 1) extends infer SignB ? SignA extends -1 ? SignB extends -1 ? _Multiply<Absolute<A>, Absolute<B>> : MakeNegative<_Multiply<Absolute<A>, Absolute<B>>> : SignB extends -1 ? MakeNegative<_Multiply<Absolute<A>, Absolute<B>>> : _Multiply<Absolute<A>, Absolute<B>> : never : never;
52
+ /**
53
+ * Divides two numbers, handling signs correctly.
54
+ */
55
+ export type Divide<A extends number, B extends number> = B extends 0 ? never : (IsNegative<A> extends true ? -1 : 1) extends infer SignA ? (IsNegative<B> extends true ? -1 : 1) extends infer SignB ? SignA extends -1 ? SignB extends -1 ? _Divide<Absolute<A>, Absolute<B>> : MakeNegative<_Divide<Absolute<A>, Absolute<B>>> : SignB extends -1 ? MakeNegative<_Divide<Absolute<A>, Absolute<B>>> : _Divide<Absolute<A>, Absolute<B>> : never : never;
56
+ /**
57
+ * Compares two numbers at the type level.
58
+ * Returns -1 if A < B, 0 if A = B, 1 if A > B.
59
+ */
60
+ export type Compare<A extends number, B extends number> = A extends B ? 0 : Absolute<A> extends A ? Absolute<B> extends B ? Tuple<A> extends [...Tuple<B>, ...any] ? 1 : -1 : 1 : Absolute<B> extends B ? -1 : never;
61
+ /**
62
+ * Checks if A equals B at the type level.
63
+ */
64
+ export type Equals<A extends number, B extends number> = A extends B ? (B extends A ? true : false) : false;
65
+ /**
66
+ * Checks if A is less than B at the type level.
67
+ */
68
+ export type LessThan<A extends number, B extends number> = Compare<A, B> extends -1 ? true : false;
69
+ /**
70
+ * Checks if A is greater than B at the type level.
71
+ */
72
+ export type GreaterThan<A extends number, B extends number> = Compare<A, B> extends 1 ? true : false;
73
+ /**
74
+ * Checks if A is less than or equal to B at the type level.
75
+ */
76
+ export type LessThanOrEqual<A extends number, B extends number> = Compare<A, B> extends -1 | 0 ? true : false;
77
+ /**
78
+ * Checks if A is greater than or equal to B at the type level.
79
+ */
80
+ export type GreaterThanOrEqual<A extends number, B extends number> = Compare<A, B> extends 1 | 0 ? true : false;
81
+ /**
82
+ * Returns the minimum of two numbers at the type level.
83
+ */
84
+ export type Min<A extends number, B extends number> = Compare<A, B> extends -1 | 0 ? A : B;
85
+ /**
86
+ * Returns the maximum of two numbers at the type level.
87
+ */
88
+ export type Max<A extends number, B extends number> = Compare<A, B> extends 1 | 0 ? A : B;
89
+ /**
90
+ * Extracts the absolute value type from a number.
91
+ */
92
+ export type Absolute<T extends number> = `${T}` extends `-${infer U extends number}` ? U : T;
93
+ /**
94
+ * Represents a decimal number as a string for type manipulation.
95
+ */
96
+ type DecimalString<N extends number> = `${N}` extends `${infer I}.${infer F}` ? [I, F] : [`${N}`, '0'];
97
+ /**
98
+ * Rounds a number to the nearest integer at the type level.
99
+ * This works for numbers up to 2 decimal places.
100
+ */
101
+ export type Round<T extends number> = DecimalString<T> extends [infer I extends string, infer F extends string] ? F extends Digit ? `${F}` extends `${'5' | '6' | '7' | '8' | '9'}` ? Add<ToNumber<I>, 1> : ToNumber<I> : ToNumber<I> : T;
102
+ /**
103
+ * Helper to convert string to number.
104
+ */
105
+ type ToNumber<S extends string> = S extends `${infer N extends number}` ? N : never;
106
+ /**
107
+ * Rounds a number down to the nearest integer at the type level.
108
+ */
109
+ export type Floor<T extends number> = DecimalString<T> extends [infer I extends string, any] ? ToNumber<I> : T;
110
+ /**
111
+ * Rounds a number up to the nearest integer at the type level.
112
+ */
113
+ export type Ceil<T extends number> = DecimalString<T> extends [infer I extends string, infer F extends string] ? F extends '0' ? ToNumber<I> : Add<ToNumber<I>, 1> : T;
114
+ /**
115
+ * Truncates the decimal part of a number at the type level.
116
+ */
117
+ export type Trunc<T extends number> = Floor<T>;
118
+ /**
119
+ * Power operation at the type level (A^B).
120
+ */
121
+ export type Power<Base extends number, Exponent extends number> = Exponent extends 0 ? 1 : Exponent extends 1 ? Base : PowerRec<Base, Exponent, 1>;
122
+ type PowerRec<B extends number, E extends number, Acc extends number> = E extends 0 ? Acc : PowerRec<B, Subtract<E, 1>, Multiply<Acc, B>>;
123
+ /**
124
+ * Factorial operation at the type level (n!).
125
+ * Works for n up to ~12 due to recursion limits.
126
+ */
127
+ export type Factorial<N extends number> = N extends 0 ? 1 : N extends 1 ? 1 : Multiply<N, Factorial<Subtract<N, 1>>>;
128
+ /**
129
+ * Clamps a value between min and max at the type level.
130
+ */
131
+ export type Clamp<T extends number, MinVal extends number, MaxVal extends number> = Min<Max<T, MinVal>, MaxVal>;
132
+ /**
133
+ * Creates a range of numbers from Start to End (inclusive) at the type level.
134
+ */
135
+ export type Range<Start extends number, End extends number> = BuildRange<Start, End, []>;
136
+ type BuildRange<S extends number, E extends number, Acc extends number[]> = GreaterThan<S, E> extends true ? Acc : BuildRange<Add<S, 1>, E, [...Acc, S]>;
137
+ /**
138
+ * Increments a number by 1 at the type level.
139
+ */
140
+ export type Increment<T extends number> = Add<T, 1>;
141
+ /**
142
+ * Decrements a number by 1 at the type level.
143
+ */
144
+ export type Decrement<T extends number> = Subtract<T, 1>;
145
+ /**
146
+ * Checks if a number is even at the type level.
147
+ */
148
+ export type IsEven<T extends number> = Mod<T, 2> extends 0 ? true : false;
149
+ /**
150
+ * Checks if a number is odd at the type level.
151
+ */
152
+ export type IsOdd<T extends number> = Mod<T, 2> extends 1 ? true : false;
153
+ /**
154
+ * Checks if A is divisible by B at the type level.
155
+ */
156
+ export type IsDivisible<A extends number, B extends number> = B extends 0 ? false : Mod<A, B> extends 0 ? true : false;
157
+ /**
158
+ * Asserts that a type condition is true.
159
+ * Useful for writing type tests.
160
+ */
161
+ export type AssertTrue<T extends true> = T;
162
+ /**
163
+ * Asserts that two types are equal.
164
+ */
165
+ export type AssertEqual<A, B> = (<T>() => T extends A ? 1 : 2) extends (<T>() => T extends B ? 1 : 2) ? true : false;
166
+ export type { Tuple, NumberToTuple, TupleToNumber };
167
+ /**
168
+ * Represents an even integer.
169
+ */
170
+ export type Even<T extends number> = T extends Integer ? `${T}` extends `${infer N extends number}` ? Mod<Absolute<N>, 2> extends 0 ? T : never : never : never;
171
+ /**
172
+ * Represents an odd integer.
173
+ */
174
+ export type Odd<T extends number> = T extends Integer ? `${T}` extends `${infer N extends number}` ? Mod<Absolute<N>, 2> extends 1 ? T : never : never : never;
175
+ /**
176
+ * Extracts the sign of a number as a type.
177
+ * Returns -1, 0, or 1 as a numeric literal type.
178
+ */
179
+ export type SignOf<T extends number> = T extends 0 ? 0 : `${T}` extends `-${string}` ? -1 : 1;
180
+ /**
181
+ * Type-level subtraction that always returns a negative or zero result.
182
+ */
183
+ export type SubtractToNegative<A extends number, B extends number> = Compare<A, B> extends 1 | 0 ? MakeNegative<Subtract<A, B>> : Subtract<A, B>;
184
+ /**
185
+ * Returns the negative absolute value (always returns a negative number or zero).
186
+ */
187
+ export type NegativeAbsolute<T extends number> = T extends 0 ? 0 : `-${Absolute<T>}` extends `${infer N extends number}` ? N : never;
188
+ //# sourceMappingURL=operations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../../../src/lib/maths/types/operations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Type-level mathematical operations that actually work.
3
+ * These use clever TypeScript tricks to perform type-level arithmetic.
4
+ * @module OperationTypes
5
+ */
6
+ export {};
File without changes
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/lib/object/clone.ts
21
+ var clone_exports = {};
22
+ __export(clone_exports, {
23
+ deepClone: () => deepClone
24
+ });
25
+ module.exports = __toCommonJS(clone_exports);
26
+
27
+ // src/lib/object/utils.ts
28
+ var isObject = (value) => {
29
+ if (value == null) return false;
30
+ if (Array.isArray(value)) return false;
31
+ if (typeof value === "function") return false;
32
+ if (value instanceof Date) return false;
33
+ if (value instanceof RegExp) return false;
34
+ if (value instanceof Map) return false;
35
+ if (value instanceof Set) return false;
36
+ if (value instanceof Error) return false;
37
+ return typeof value === "object";
38
+ };
39
+
40
+ // src/lib/object/clone.ts
41
+ var deepClone = (obj, skipKeys) => {
42
+ if (obj == null || typeof obj !== "object") {
43
+ return obj;
44
+ }
45
+ if (obj instanceof Date) {
46
+ return new Date(obj.getTime());
47
+ }
48
+ if (obj instanceof RegExp) {
49
+ return new RegExp(obj.source, obj.flags);
50
+ }
51
+ if (obj instanceof Map) {
52
+ const clone = /* @__PURE__ */ new Map();
53
+ obj.forEach((value, key) => {
54
+ if (!skipKeys || !skipKeys.some((k) => k.toString() === key.toString())) {
55
+ clone.set(key, deepClone(value));
56
+ }
57
+ });
58
+ return clone;
59
+ }
60
+ if (obj instanceof Set) {
61
+ const clone = /* @__PURE__ */ new Set();
62
+ obj.forEach((value) => {
63
+ clone.add(deepClone(value));
64
+ });
65
+ return clone;
66
+ }
67
+ if (Array.isArray(obj)) {
68
+ return Array.from(obj).map((item) => deepClone(item));
69
+ }
70
+ if (isObject(obj)) {
71
+ const clone = {};
72
+ for (const key in obj) {
73
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
74
+ if (!skipKeys || !skipKeys.some((k) => k.toString() === key.toString())) {
75
+ clone[key] = deepClone(obj[key]);
76
+ }
77
+ }
78
+ }
79
+ const symbols = Object.getOwnPropertySymbols(obj);
80
+ for (const symbol of symbols) {
81
+ if (!skipKeys || !skipKeys.some((s) => s.toString() === symbol.toString())) {
82
+ clone[symbol] = deepClone(obj[symbol]);
83
+ }
84
+ }
85
+ return clone;
86
+ }
87
+ return obj;
88
+ };
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Creates a deep clone of a value (object, array, primitive, or built-in types)
3
+ *
4
+ * This function creates a complete copy of the input value, including all nested
5
+ * properties, without maintaining any references to the original object. It properly
6
+ * handles various JavaScript built-in types including:
7
+ *
8
+ * - Primitive values (strings, numbers, booleans)
9
+ * - Plain objects
10
+ * - Arrays
11
+ * - Dates
12
+ * - RegExp
13
+ * - Maps
14
+ * - Sets
15
+ * - Symbols as object keys
16
+ *
17
+ * @template T - The type of the value being cloned
18
+ * @param obj - The value to clone
19
+ * @returns A deep copy of the input value with the same type
20
+ *
21
+ * @example
22
+ * // Cloning a nested object
23
+ * const obj = { a: 1, b: { c: 2 } };
24
+ * const clone = deepClone(obj);
25
+ * obj.b.c = 3;
26
+ * console.log(clone.b.c); // 2 (remains unchanged)
27
+ *
28
+ * @example
29
+ * // Cloning an array with objects
30
+ * const arr = [1, 2, { a: 3 }];
31
+ * const cloneArr = deepClone(arr);
32
+ * arr[2].a = 4;
33
+ * console.log(cloneArr[2].a); // 3 (remains unchanged)
34
+ *
35
+ * @example
36
+ * // Cloning built-in types
37
+ * const date = new Date();
38
+ * const map = new Map([['key', 'value']]);
39
+ * const set = new Set([1, 2, 3]);
40
+ *
41
+ * const dateClone = deepClone(date); // independent Date instance
42
+ * const mapClone = deepClone(map); // independent Map instance
43
+ * const setClone = deepClone(set); // independent Set instance
44
+ */
45
+ export declare const deepClone: <T>(obj: T, skipKeys?: (string | symbol)[]) => T;
46
+ //# sourceMappingURL=clone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clone.d.ts","sourceRoot":"","sources":["../../../src/lib/object/clone.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,KAAK,CAAC,EAAE,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,KAAG,CAwErE,CAAC"}
@@ -0,0 +1,104 @@
1
+ import { isObject } from './utils.js';
2
+ /**
3
+ * Creates a deep clone of a value (object, array, primitive, or built-in types)
4
+ *
5
+ * This function creates a complete copy of the input value, including all nested
6
+ * properties, without maintaining any references to the original object. It properly
7
+ * handles various JavaScript built-in types including:
8
+ *
9
+ * - Primitive values (strings, numbers, booleans)
10
+ * - Plain objects
11
+ * - Arrays
12
+ * - Dates
13
+ * - RegExp
14
+ * - Maps
15
+ * - Sets
16
+ * - Symbols as object keys
17
+ *
18
+ * @template T - The type of the value being cloned
19
+ * @param obj - The value to clone
20
+ * @returns A deep copy of the input value with the same type
21
+ *
22
+ * @example
23
+ * // Cloning a nested object
24
+ * const obj = { a: 1, b: { c: 2 } };
25
+ * const clone = deepClone(obj);
26
+ * obj.b.c = 3;
27
+ * console.log(clone.b.c); // 2 (remains unchanged)
28
+ *
29
+ * @example
30
+ * // Cloning an array with objects
31
+ * const arr = [1, 2, { a: 3 }];
32
+ * const cloneArr = deepClone(arr);
33
+ * arr[2].a = 4;
34
+ * console.log(cloneArr[2].a); // 3 (remains unchanged)
35
+ *
36
+ * @example
37
+ * // Cloning built-in types
38
+ * const date = new Date();
39
+ * const map = new Map([['key', 'value']]);
40
+ * const set = new Set([1, 2, 3]);
41
+ *
42
+ * const dateClone = deepClone(date); // independent Date instance
43
+ * const mapClone = deepClone(map); // independent Map instance
44
+ * const setClone = deepClone(set); // independent Set instance
45
+ */
46
+ export const deepClone = (obj, skipKeys) => {
47
+ // Handle primitives
48
+ if (obj == null || typeof obj !== 'object') {
49
+ return obj;
50
+ }
51
+ // Handle Date
52
+ if (obj instanceof Date) {
53
+ return new Date(obj.getTime());
54
+ }
55
+ // Handle RegExp
56
+ if (obj instanceof RegExp) {
57
+ return new RegExp(obj.source, obj.flags);
58
+ }
59
+ // Handle Map
60
+ if (obj instanceof Map) {
61
+ const clone = new Map();
62
+ obj.forEach((value, key) => {
63
+ if (!skipKeys || !skipKeys.some((k) => k.toString() === key.toString())) {
64
+ clone.set(key, deepClone(value));
65
+ }
66
+ });
67
+ return clone;
68
+ }
69
+ // Handle Set
70
+ if (obj instanceof Set) {
71
+ const clone = new Set();
72
+ obj.forEach((value) => {
73
+ clone.add(deepClone(value));
74
+ });
75
+ return clone;
76
+ }
77
+ // Handle Array
78
+ if (Array.isArray(obj)) {
79
+ return Array.from(obj).map((item) => deepClone(item));
80
+ }
81
+ // Handle plain object
82
+ if (isObject(obj)) {
83
+ const clone = {};
84
+ for (const key in obj) {
85
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
86
+ if (!skipKeys ||
87
+ !skipKeys.some((k) => k.toString() === key.toString())) {
88
+ clone[key] = deepClone(obj[key]);
89
+ }
90
+ }
91
+ }
92
+ // Handle symbols
93
+ const symbols = Object.getOwnPropertySymbols(obj);
94
+ for (const symbol of symbols) {
95
+ if (!skipKeys ||
96
+ !skipKeys.some((s) => s.toString() === symbol.toString())) {
97
+ clone[symbol] = deepClone(obj[symbol]);
98
+ }
99
+ }
100
+ return clone;
101
+ }
102
+ // Fallback for other object types
103
+ return obj;
104
+ };
@@ -0,0 +1,65 @@
1
+ // src/lib/object/utils.ts
2
+ var isObject = (value) => {
3
+ if (value == null) return false;
4
+ if (Array.isArray(value)) return false;
5
+ if (typeof value === "function") return false;
6
+ if (value instanceof Date) return false;
7
+ if (value instanceof RegExp) return false;
8
+ if (value instanceof Map) return false;
9
+ if (value instanceof Set) return false;
10
+ if (value instanceof Error) return false;
11
+ return typeof value === "object";
12
+ };
13
+
14
+ // src/lib/object/clone.ts
15
+ var deepClone = (obj, skipKeys) => {
16
+ if (obj == null || typeof obj !== "object") {
17
+ return obj;
18
+ }
19
+ if (obj instanceof Date) {
20
+ return new Date(obj.getTime());
21
+ }
22
+ if (obj instanceof RegExp) {
23
+ return new RegExp(obj.source, obj.flags);
24
+ }
25
+ if (obj instanceof Map) {
26
+ const clone = /* @__PURE__ */ new Map();
27
+ obj.forEach((value, key) => {
28
+ if (!skipKeys || !skipKeys.some((k) => k.toString() === key.toString())) {
29
+ clone.set(key, deepClone(value));
30
+ }
31
+ });
32
+ return clone;
33
+ }
34
+ if (obj instanceof Set) {
35
+ const clone = /* @__PURE__ */ new Set();
36
+ obj.forEach((value) => {
37
+ clone.add(deepClone(value));
38
+ });
39
+ return clone;
40
+ }
41
+ if (Array.isArray(obj)) {
42
+ return Array.from(obj).map((item) => deepClone(item));
43
+ }
44
+ if (isObject(obj)) {
45
+ const clone = {};
46
+ for (const key in obj) {
47
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
48
+ if (!skipKeys || !skipKeys.some((k) => k.toString() === key.toString())) {
49
+ clone[key] = deepClone(obj[key]);
50
+ }
51
+ }
52
+ }
53
+ const symbols = Object.getOwnPropertySymbols(obj);
54
+ for (const symbol of symbols) {
55
+ if (!skipKeys || !skipKeys.some((s) => s.toString() === symbol.toString())) {
56
+ clone[symbol] = deepClone(obj[symbol]);
57
+ }
58
+ }
59
+ return clone;
60
+ }
61
+ return obj;
62
+ };
63
+ export {
64
+ deepClone
65
+ };