umt 2.4.0 → 2.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 (276) hide show
  1. package/README.md +288 -16
  2. package/module/Array/generateNumberArray.js +13 -7
  3. package/module/Array/generateNumberArray.js.map +1 -1
  4. package/module/Array/getArraysCommon.js +21 -3
  5. package/module/Array/getArraysCommon.js.map +1 -1
  6. package/module/Array/groupBy.js +8 -7
  7. package/module/Array/groupBy.js.map +1 -1
  8. package/module/Array/index.d.ts +3 -0
  9. package/module/Array/index.js +3 -0
  10. package/module/Array/index.js.map +1 -1
  11. package/module/Array/timSort.js +2 -20
  12. package/module/Array/timSort.js.map +1 -1
  13. package/module/Array/ultraNumberSort.d.ts +7 -0
  14. package/module/Array/ultraNumberSort.js +373 -0
  15. package/module/Array/ultraNumberSort.js.map +1 -0
  16. package/module/Array/uniqBy.d.ts +7 -0
  17. package/module/Array/uniqBy.js +19 -0
  18. package/module/Array/uniqBy.js.map +1 -0
  19. package/module/Array/unique.d.ts +6 -0
  20. package/module/Array/unique.js +9 -0
  21. package/module/Array/unique.js.map +1 -0
  22. package/module/Color/rgbaToHsla.js +1 -1
  23. package/module/Color/rgbaToHsla.js.map +1 -1
  24. package/module/Date/birthday.js +14 -6
  25. package/module/Date/birthday.js.map +1 -1
  26. package/module/Date/isLeapYear.js +3 -0
  27. package/module/Date/isLeapYear.js.map +1 -1
  28. package/module/Error/index.d.ts +1 -0
  29. package/module/Error/index.js +1 -0
  30. package/module/Error/index.js.map +1 -1
  31. package/module/Error/retry.d.ts +37 -0
  32. package/module/Error/retry.js +47 -0
  33. package/module/Error/retry.js.map +1 -0
  34. package/module/IP/getIpClass.js +1 -1
  35. package/module/IP/getIpClass.js.map +1 -1
  36. package/module/IP/getNetworkAddress.js +2 -2
  37. package/module/IP/getNetworkAddress.js.map +1 -1
  38. package/module/IP/ipToBinaryString.js +2 -2
  39. package/module/IP/ipToBinaryString.js.map +1 -1
  40. package/module/IP/subnetMaskToCidr.js +1 -1
  41. package/module/IP/subnetMaskToCidr.js.map +1 -1
  42. package/module/Math/calculator/core.js +21 -13
  43. package/module/Math/calculator/core.js.map +1 -1
  44. package/module/Math/calculator/literalExpression.js +19 -7
  45. package/module/Math/calculator/literalExpression.js.map +1 -1
  46. package/module/Math/division.js +3 -3
  47. package/module/Math/division.js.map +1 -1
  48. package/module/Math/gcd.js +26 -4
  49. package/module/Math/gcd.js.map +1 -1
  50. package/module/Math/standardDeviation.js +4 -2
  51. package/module/Math/standardDeviation.js.map +1 -1
  52. package/module/Object/has.js +1 -2
  53. package/module/Object/has.js.map +1 -1
  54. package/module/Object/index.d.ts +4 -0
  55. package/module/Object/index.js +4 -0
  56. package/module/Object/index.js.map +1 -1
  57. package/module/Object/isEmpty.d.ts +6 -0
  58. package/module/Object/isEmpty.js +20 -0
  59. package/module/Object/isEmpty.js.map +1 -0
  60. package/module/Object/merge.d.ts +8 -0
  61. package/module/Object/merge.js +10 -0
  62. package/module/Object/merge.js.map +1 -0
  63. package/module/Object/mergeDeep.d.ts +8 -0
  64. package/module/Object/mergeDeep.js +37 -0
  65. package/module/Object/mergeDeep.js.map +1 -0
  66. package/module/Object/omit.d.ts +7 -0
  67. package/module/Object/omit.js +14 -0
  68. package/module/Object/omit.js.map +1 -0
  69. package/module/Object/pickDeep.d.ts +2 -2
  70. package/module/Object/pickDeep.js +4 -4
  71. package/module/Object/pickDeep.js.map +1 -1
  72. package/module/Simple/Date/dayOfWeekSimple.js +3 -3
  73. package/module/Simple/Date/dayOfWeekSimple.js.map +1 -1
  74. package/module/String/camelCase.d.ts +6 -0
  75. package/module/String/camelCase.js +12 -0
  76. package/module/String/camelCase.js.map +1 -0
  77. package/module/String/escapeHtml.d.ts +6 -0
  78. package/module/String/escapeHtml.js +19 -0
  79. package/module/String/escapeHtml.js.map +1 -0
  80. package/module/String/formatString/applyFormatter.d.ts +25 -0
  81. package/module/String/formatString/applyFormatter.js +71 -0
  82. package/module/String/formatString/applyFormatter.js.map +1 -0
  83. package/module/String/formatString/defaultFormatters.d.ts +24 -0
  84. package/module/String/formatString/defaultFormatters.js +59 -0
  85. package/module/String/formatString/defaultFormatters.js.map +1 -0
  86. package/module/String/formatString/detectMode.d.ts +26 -0
  87. package/module/String/formatString/detectMode.js +61 -0
  88. package/module/String/formatString/detectMode.js.map +1 -0
  89. package/module/String/formatString/getValue.d.ts +27 -0
  90. package/module/String/formatString/getValue.js +56 -0
  91. package/module/String/formatString/getValue.js.map +1 -0
  92. package/module/String/formatString/index.d.ts +91 -0
  93. package/module/String/formatString/index.js +38 -0
  94. package/module/String/formatString/index.js.map +1 -0
  95. package/module/String/index.d.ts +5 -0
  96. package/module/String/index.js +5 -0
  97. package/module/String/index.js.map +1 -1
  98. package/module/String/kebabCase.d.ts +6 -0
  99. package/module/String/kebabCase.js +22 -0
  100. package/module/String/kebabCase.js.map +1 -0
  101. package/module/String/levenshteinDistance.d.ts +8 -0
  102. package/module/String/levenshteinDistance.js +38 -0
  103. package/module/String/levenshteinDistance.js.map +1 -0
  104. package/module/String/stringSimilarity.d.ts +8 -0
  105. package/module/String/stringSimilarity.js +23 -0
  106. package/module/String/stringSimilarity.js.map +1 -0
  107. package/module/Tool/pipe.d.ts +1 -1
  108. package/module/Tool/pipe.js.map +1 -1
  109. package/module/Validate/core/index.js +0 -1
  110. package/module/Validate/core/index.js.map +1 -1
  111. package/module/Validate/isDouble.js +1 -1
  112. package/module/Validate/isDouble.js.map +1 -1
  113. package/module/Validate/isNode.js +1 -0
  114. package/module/Validate/isNode.js.map +1 -1
  115. package/module/Validate/isNumber.js +1 -1
  116. package/module/Validate/isNumber.js.map +1 -1
  117. package/module/Validate/isValueNaN.js +1 -1
  118. package/module/Validate/isValueNaN.js.map +1 -1
  119. package/module/Validate/number/even.js +7 -1
  120. package/module/Validate/number/even.js.map +1 -1
  121. package/module/Validate/number/odd.js +7 -1
  122. package/module/Validate/number/odd.js.map +1 -1
  123. package/module/Validate/string/email.js +20 -2
  124. package/module/Validate/string/email.js.map +1 -1
  125. package/module/es5/Array/generateNumberArray.js +15 -9
  126. package/module/es5/Array/getArraysCommon.js +39 -4
  127. package/module/es5/Array/groupBy.js +8 -7
  128. package/module/es5/Array/index.d.ts +3 -0
  129. package/module/es5/Array/index.js +33 -0
  130. package/module/es5/Array/timSort.js +2 -20
  131. package/module/es5/Array/ultraNumberSort.d.ts +7 -0
  132. package/module/es5/Array/ultraNumberSort.js +475 -0
  133. package/module/es5/Array/uniqBy.d.ts +7 -0
  134. package/module/es5/Array/uniqBy.js +36 -0
  135. package/module/es5/Array/unique.d.ts +6 -0
  136. package/module/es5/Array/unique.js +20 -0
  137. package/module/es5/Color/rgbaToHsla.js +1 -1
  138. package/module/es5/Date/birthday.js +17 -3
  139. package/module/es5/Date/isLeapYear.js +3 -0
  140. package/module/es5/Error/index.d.ts +1 -0
  141. package/module/es5/Error/index.js +11 -0
  142. package/module/es5/Error/retry.d.ts +37 -0
  143. package/module/es5/Error/retry.js +88 -0
  144. package/module/es5/IP/getIpClass.js +1 -1
  145. package/module/es5/IP/getNetworkAddress.js +2 -2
  146. package/module/es5/IP/ipToBinaryString.js +2 -2
  147. package/module/es5/IP/subnetMaskToCidr.js +1 -1
  148. package/module/es5/Math/calculator/core.js +17 -9
  149. package/module/es5/Math/calculator/literalExpression.js +19 -6
  150. package/module/es5/Math/division.js +3 -3
  151. package/module/es5/Math/gcd.js +43 -5
  152. package/module/es5/Math/standardDeviation.js +4 -2
  153. package/module/es5/Object/has.js +1 -1
  154. package/module/es5/Object/index.d.ts +4 -0
  155. package/module/es5/Object/index.js +44 -0
  156. package/module/es5/Object/isEmpty.d.ts +6 -0
  157. package/module/es5/Object/isEmpty.js +26 -0
  158. package/module/es5/Object/merge.d.ts +8 -0
  159. package/module/es5/Object/merge.js +18 -0
  160. package/module/es5/Object/mergeDeep.d.ts +8 -0
  161. package/module/es5/Object/mergeDeep.js +46 -0
  162. package/module/es5/Object/omit.d.ts +7 -0
  163. package/module/es5/Object/omit.js +29 -0
  164. package/module/es5/Object/pickDeep.d.ts +2 -2
  165. package/module/es5/Object/pickDeep.js +4 -4
  166. package/module/es5/Simple/Date/dayOfWeekSimple.js +3 -3
  167. package/module/es5/String/camelCase.d.ts +6 -0
  168. package/module/es5/String/camelCase.js +18 -0
  169. package/module/es5/String/escapeHtml.d.ts +6 -0
  170. package/module/es5/String/escapeHtml.js +27 -0
  171. package/module/es5/String/formatString/applyFormatter.d.ts +25 -0
  172. package/module/es5/String/formatString/applyFormatter.js +100 -0
  173. package/module/es5/String/formatString/defaultFormatters.d.ts +24 -0
  174. package/module/es5/String/formatString/defaultFormatters.js +79 -0
  175. package/module/es5/String/formatString/detectMode.d.ts +26 -0
  176. package/module/es5/String/formatString/detectMode.js +60 -0
  177. package/module/es5/String/formatString/getValue.d.ts +27 -0
  178. package/module/es5/String/formatString/getValue.js +85 -0
  179. package/module/es5/String/formatString/index.d.ts +91 -0
  180. package/module/es5/String/formatString/index.js +152 -0
  181. package/module/es5/String/index.d.ts +5 -0
  182. package/module/es5/String/index.js +55 -0
  183. package/module/es5/String/kebabCase.d.ts +6 -0
  184. package/module/es5/String/kebabCase.js +26 -0
  185. package/module/es5/String/levenshteinDistance.d.ts +8 -0
  186. package/module/es5/String/levenshteinDistance.js +58 -0
  187. package/module/es5/String/stringSimilarity.d.ts +8 -0
  188. package/module/es5/String/stringSimilarity.js +30 -0
  189. package/module/es5/Tool/pipe.d.ts +1 -1
  190. package/module/es5/Validate/core/index.js +0 -1
  191. package/module/es5/Validate/isDouble.js +1 -1
  192. package/module/es5/Validate/isNode.js +1 -0
  193. package/module/es5/Validate/isNumber.js +1 -1
  194. package/module/es5/Validate/isValueNaN.js +1 -1
  195. package/module/es5/Validate/number/even.js +4 -0
  196. package/module/es5/Validate/number/odd.js +4 -0
  197. package/module/es5/Validate/string/email.js +26 -1
  198. package/module/es5/tsconfig.tsbuildinfo +1 -1
  199. package/module/es5/types/index.d.ts +1 -0
  200. package/module/es5/types/index.js +11 -0
  201. package/module/es5/types/logic/deepPartial.d.ts +37 -0
  202. package/module/es5/types/logic/deepPartial.js +5 -0
  203. package/module/es5/types/logic/deepRequired.d.ts +37 -0
  204. package/module/es5/types/logic/deepRequired.js +5 -0
  205. package/module/es5/types/logic/index.d.ts +3 -0
  206. package/module/es5/types/logic/index.js +33 -0
  207. package/module/es5/types/logic/unionToIntersection.d.ts +12 -0
  208. package/module/es5/types/logic/unionToIntersection.js +5 -0
  209. package/module/es5/types/object/index.d.ts +1 -0
  210. package/module/es5/types/object/index.js +11 -0
  211. package/module/es5/types/object/pickDeep.d.ts +13 -1
  212. package/module/es5/types/object/shallowObjectValue.d.ts +9 -0
  213. package/module/es5/types/object/shallowObjectValue.js +5 -0
  214. package/module/es5/types/string/formatString/formatData.d.ts +17 -0
  215. package/module/es5/types/string/formatString/formatData.js +5 -0
  216. package/module/es5/types/string/formatString/formatOptions.d.ts +21 -0
  217. package/module/es5/types/string/formatString/formatOptions.js +5 -0
  218. package/module/es5/types/string/formatString/formatString.d.ts +4 -0
  219. package/module/es5/types/string/formatString/formatString.js +49 -0
  220. package/module/es5/types/string/formatString/formatValue.d.ts +15 -0
  221. package/module/es5/types/string/formatString/formatValue.js +5 -0
  222. package/module/es5/types/string/formatString/formatter.d.ts +13 -0
  223. package/module/es5/types/string/formatString/formatter.js +5 -0
  224. package/module/es5/types/string/formatString/index.d.ts +5 -0
  225. package/module/es5/types/string/formatString/index.js +60 -0
  226. package/module/es5/types/string/index.d.ts +1 -0
  227. package/module/es5/types/string/index.js +16 -0
  228. package/module/types/index.d.ts +1 -0
  229. package/module/types/index.js +1 -0
  230. package/module/types/index.js.map +1 -1
  231. package/module/types/logic/deepPartial.d.ts +37 -0
  232. package/module/types/logic/deepPartial.js +36 -0
  233. package/module/types/logic/deepPartial.js.map +1 -0
  234. package/module/types/logic/deepRequired.d.ts +37 -0
  235. package/module/types/logic/deepRequired.js +2 -0
  236. package/module/types/logic/deepRequired.js.map +1 -0
  237. package/module/types/logic/index.d.ts +3 -0
  238. package/module/types/logic/index.js +3 -0
  239. package/module/types/logic/index.js.map +1 -1
  240. package/module/types/logic/unionToIntersection.d.ts +12 -0
  241. package/module/types/logic/unionToIntersection.js +2 -0
  242. package/module/types/logic/unionToIntersection.js.map +1 -0
  243. package/module/types/object/index.d.ts +1 -0
  244. package/module/types/object/index.js +1 -0
  245. package/module/types/object/index.js.map +1 -1
  246. package/module/types/object/pickDeep.d.ts +13 -1
  247. package/module/types/object/shallowObjectValue.d.ts +9 -0
  248. package/module/types/object/shallowObjectValue.js +2 -0
  249. package/module/types/object/shallowObjectValue.js.map +1 -0
  250. package/module/types/string/formatString/formatData.d.ts +17 -0
  251. package/module/types/string/formatString/formatData.js +2 -0
  252. package/module/types/string/formatString/formatData.js.map +1 -0
  253. package/module/types/string/formatString/formatOptions.d.ts +21 -0
  254. package/module/types/string/formatString/formatOptions.js +2 -0
  255. package/module/types/string/formatString/formatOptions.js.map +1 -0
  256. package/module/types/string/formatString/formatString.d.ts +4 -0
  257. package/module/types/string/formatString/formatString.js +5 -0
  258. package/module/types/string/formatString/formatString.js.map +1 -0
  259. package/module/types/string/formatString/formatValue.d.ts +15 -0
  260. package/module/types/string/formatString/formatValue.js +2 -0
  261. package/module/types/string/formatString/formatValue.js.map +1 -0
  262. package/module/types/string/formatString/formatter.d.ts +13 -0
  263. package/module/types/string/formatString/formatter.js +2 -0
  264. package/module/types/string/formatString/formatter.js.map +1 -0
  265. package/module/types/string/formatString/index.d.ts +5 -0
  266. package/module/types/string/formatString/index.js +6 -0
  267. package/module/types/string/formatString/index.js.map +1 -0
  268. package/module/types/string/index.d.ts +1 -0
  269. package/module/types/string/index.js +2 -0
  270. package/module/types/string/index.js.map +1 -0
  271. package/package.json +31 -32
  272. package/module/String/formatString.d.ts +0 -13
  273. package/module/String/formatString.js +0 -18
  274. package/module/String/formatString.js.map +0 -1
  275. package/module/es5/String/formatString.d.ts +0 -13
  276. package/module/es5/String/formatString.js +0 -26
@@ -19,7 +19,7 @@ export const getNetworkAddress = (ip, subnetMask) => {
19
19
  const ipParts = ip.split(".");
20
20
  if (ipParts.length !== 4 ||
21
21
  !ipParts.every((part) => {
22
- const number_ = Number.parseInt(part);
22
+ const number_ = Number.parseInt(part, 10);
23
23
  return !Number.isNaN(number_) && number_ >= 0 && number_ <= 255;
24
24
  })) {
25
25
  throw new TypeError("Invalid IP address or subnet mask");
@@ -28,7 +28,7 @@ export const getNetworkAddress = (ip, subnetMask) => {
28
28
  const maskParts = subnetMask.split(".");
29
29
  if (maskParts.length !== 4 ||
30
30
  !maskParts.every((part) => {
31
- const number_ = Number.parseInt(part);
31
+ const number_ = Number.parseInt(part, 10);
32
32
  return !Number.isNaN(number_) && number_ >= 0 && number_ <= 255;
33
33
  })) {
34
34
  throw new TypeError("Invalid IP address or subnet mask");
@@ -1 +1 @@
1
- {"version":3,"file":"getNetworkAddress.js","sourceRoot":"","sources":["../../src/IP/getNetworkAddress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAAU,EAAE,UAAkB,EAAU,EAAE;IAC1E,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,qBAAqB;IACrB,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,IACE,OAAO,CAAC,MAAM,KAAK,CAAC;QACpB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE;YACtB,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,OAAO,IAAI,GAAG,CAAC;QAClE,CAAC,CAAC,EACF,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAC;IAC3D,CAAC;IAED,8BAA8B;IAC9B,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxC,IACE,SAAS,CAAC,MAAM,KAAK,CAAC;QACtB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE;YACxB,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,OAAO,IAAI,GAAG,CAAC;QAClE,CAAC,CAAC,EACF,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,CAAC;QACH,MAAM,cAAc,GAClB,QAAQ,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;QAC1D,OAAO,cAAc,KAAK,CAAC,CAAC,CAAC,qCAAqC;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"getNetworkAddress.js","sourceRoot":"","sources":["../../src/IP/getNetworkAddress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAAU,EAAE,UAAkB,EAAU,EAAE;IAC1E,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,qBAAqB;IACrB,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,IACE,OAAO,CAAC,MAAM,KAAK,CAAC;QACpB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE;YACtB,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,OAAO,IAAI,GAAG,CAAC;QAClE,CAAC,CAAC,EACF,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAC;IAC3D,CAAC;IAED,8BAA8B;IAC9B,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxC,IACE,SAAS,CAAC,MAAM,KAAK,CAAC;QACtB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE;YACxB,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,OAAO,IAAI,GAAG,CAAC;QAClE,CAAC,CAAC,EACF,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,CAAC;QACH,MAAM,cAAc,GAClB,QAAQ,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;QAC1D,OAAO,cAAc,KAAK,CAAC,CAAC,CAAC,qCAAqC;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC,CAAC"}
@@ -22,14 +22,14 @@ export const ipToBinaryString = (ip) => {
22
22
  if (!octet || (octet.length > 1 && octet[0] === "0")) {
23
23
  throw new Error("Invalid IP address format");
24
24
  }
25
- const number = Number.parseInt(octet);
25
+ const number = Number.parseInt(octet, 10);
26
26
  if (Number.isNaN(number) || number < 0 || number > 255) {
27
27
  throw new Error("Invalid IP address format");
28
28
  }
29
29
  }
30
30
  // Convert to binary
31
31
  return parts
32
- .map((octet) => Number.parseInt(octet).toString(2).padStart(8, "0"))
32
+ .map((octet) => Number.parseInt(octet, 10).toString(2).padStart(8, "0"))
33
33
  .join("");
34
34
  };
35
35
  //# sourceMappingURL=ipToBinaryString.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ipToBinaryString.js","sourceRoot":"","sources":["../../src/IP/ipToBinaryString.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAAU,EAAU,EAAE;IACrD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IAED,+BAA+B;IAC/B,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IAED,sBAAsB;IACtB,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,yCAAyC;QACzC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SACnE,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC,CAAC"}
1
+ {"version":3,"file":"ipToBinaryString.js","sourceRoot":"","sources":["../../src/IP/ipToBinaryString.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAAU,EAAU,EAAE;IACrD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IAED,+BAA+B;IAC/B,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IAED,sBAAsB;IACtB,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,yCAAyC;QACzC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC1C,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SACvE,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC,CAAC"}
@@ -15,7 +15,7 @@ export const subnetMaskToCidr = (subnetMask) => {
15
15
  }
16
16
  // Validate each octet
17
17
  const binaryOctets = octets.map((octet) => {
18
- const number_ = Number.parseInt(octet);
18
+ const number_ = Number.parseInt(octet, 10);
19
19
  if (Number.isNaN(number_) || number_ < 0 || number_ > 255) {
20
20
  throw new Error("Invalid subnet mask format");
21
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"subnetMaskToCidr.js","sourceRoot":"","sources":["../../src/IP/subnetMaskToCidr.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,UAAkB,EAAU,EAAE;IAC7D,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,mCAAmC;IACnC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IAED,sBAAsB;IACtB,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACxC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,GAAG,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,uCAAuC;IACvC,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IAED,WAAW;IACX,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;IACnD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
1
+ {"version":3,"file":"subnetMaskToCidr.js","sourceRoot":"","sources":["../../src/IP/subnetMaskToCidr.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,UAAkB,EAAU,EAAE;IAC7D,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,mCAAmC;IACnC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IAED,sBAAsB;IACtB,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACxC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC3C,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,GAAG,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,uCAAuC;IACvC,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IAED,WAAW;IACX,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;IACnD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
@@ -5,6 +5,10 @@ import { multiplication } from "../../Math/multiplication";
5
5
  import { subtract } from "../../Math/subtract";
6
6
  import { isNumber } from "../../Validate/isNumber";
7
7
  export const calculatorCore = (expression, currencyExchange) => {
8
+ // Handle empty string
9
+ if (expression === "") {
10
+ return "";
11
+ }
8
12
  let sanitizedExpression = expression;
9
13
  // Handle signs
10
14
  sanitizedExpression = sanitizeSigns(sanitizedExpression);
@@ -49,6 +53,12 @@ export const calculatorCore = (expression, currencyExchange) => {
49
53
  }
50
54
  // Return result if no more calculations needed
51
55
  else {
56
+ const number_ = Number(sanitizedExpression);
57
+ if (!Number.isNaN(number_)) {
58
+ // Handle floating point precision issues
59
+ const rounded = Math.round(number_ * 1e10) / 1e10;
60
+ return rounded.toString();
61
+ }
52
62
  return sanitizedExpression;
53
63
  }
54
64
  }
@@ -78,7 +88,7 @@ const containsParentheses = (expr) => {
78
88
  };
79
89
  const resolveParentheses = (expr) => {
80
90
  // Logic for calculations inside parentheses
81
- const match = expr.match(/\(\d+\.?(\d+)?([*+/-])\d+\.?(\d+)?\)/);
91
+ const match = expr.match(/\((-?\d+(?:\.\d+)?)([*+/-])(-?\d+(?:\.\d+)?)\)/);
82
92
  if (match) {
83
93
  return expr.replace(match[0], calculatorCore(match[0].replaceAll(/\(|\)/g, "")));
84
94
  }
@@ -92,22 +102,20 @@ const containsDiv = (expr) => {
92
102
  };
93
103
  const resolveMulExp = (expr) => {
94
104
  // Logic for multiplication and exponentiation
95
- const match = expr.match(/(.*?)(\d+\.?(\d+)?([*^])\d+\.?(\d+)?$)/);
105
+ const match = expr.match(/(.*?)(-?\d+(?:\.\d+)?)([*^])(-?\d+(?:\.\d+)?)$/);
96
106
  if (match) {
97
- const operands = match[2].split(/([*/^])/);
98
- const result = operands[1] === "^"
99
- ? Number(operands[0]) ** Number(operands[2])
100
- : multiplication(Number(operands[0]), Number(operands[2]));
107
+ const result = match[3] === "^"
108
+ ? Number(match[2]) ** Number(match[4])
109
+ : multiplication(Number(match[2]), Number(match[4]));
101
110
  return `${match[1]}${result}`;
102
111
  }
103
112
  return Number.NaN.toString();
104
113
  };
105
114
  const resolveDiv = (expr) => {
106
115
  // Logic for division
107
- const match = expr.match(/\d+\.?(\d+)?(\/)\d+\.?(\d+)?/);
116
+ const match = expr.match(/(-?\d+(?:\.\d+)?)\/(-?\d+(?:\.\d+)?)/);
108
117
  if (match) {
109
- const operands = match[0].split(/(\/)/);
110
- const result = division(Number(operands[0]), Number(operands[2]));
118
+ const result = division(Number(match[1]), Number(match[2]));
111
119
  return expr.replace(match[0], String(result));
112
120
  }
113
121
  return Number.NaN.toString();
@@ -117,11 +125,11 @@ const containsAddSub = (expr) => {
117
125
  };
118
126
  const resolveAddSub = (expr) => {
119
127
  // Logic for addition and subtraction
120
- const match = expr.match(/(-?\d+)\.?(\d+)?(\+|-)(-?\d+)\.?(\d+)?/);
128
+ const match = expr.match(/(-?\d+(?:\.\d+)?)(\+|-)(-?\d+(?:\.\d+)?)/);
121
129
  if (match) {
122
- const result = match[3] === "+"
123
- ? addition(Number(match[1]), Number(match[4]))
124
- : subtract(Number(match[1]), Number(match[4]));
130
+ const result = match[2] === "+"
131
+ ? addition(Number(match[1]), Number(match[3]))
132
+ : subtract(Number(match[1]), Number(match[3]));
125
133
  return expr.replace(match[0], String(result));
126
134
  }
127
135
  return Number.NaN.toString();
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/Math/calculator/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/Math/calculator/core.ts"],"names":[],"mappings":"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"}
@@ -10,14 +10,19 @@ import { gcd } from "../../Math/gcd";
10
10
  * @example literalExpression("3x+2=8"); // "2"
11
11
  */
12
12
  export const literalExpression = (x) => {
13
+ // Handle invalid equations like x=x
14
+ const sides = x.split("=");
15
+ if (sides.length === 2 && sides[0] === sides[1]) {
16
+ return "";
17
+ }
13
18
  // Store numerical and variable parts of the equation
14
19
  let numericalPart = "";
15
20
  let variablePart = [];
16
21
  // Split by equals sign and identify numerical and variable parts
17
- for (const part of x.split("=")) {
22
+ for (const part of sides) {
18
23
  if (/[A-Za-z]+/.test(part)) {
19
24
  variablePart = part
20
- .split(/(\d+[A-Za-z]+)|([^A-Za-z]+)/)
25
+ .split(/([-+]?\d*[A-Za-z]+)|([-+]?\d+)/)
21
26
  .filter((n) => n && n !== undefined);
22
27
  }
23
28
  else {
@@ -26,16 +31,23 @@ export const literalExpression = (x) => {
26
31
  }
27
32
  // Calculate the variable part (and invert signs for moving to other side of equation)
28
33
  if (variablePart[1]) {
29
- variablePart[1] = calculatorCore(variablePart[1])
34
+ // Invert signs before calculating
35
+ const invertedPart = variablePart[1]
30
36
  .replaceAll("+", "plus")
31
37
  .replaceAll("-", "minus")
32
38
  .replaceAll("plus", "-")
33
39
  .replaceAll("minus", "+");
40
+ variablePart[1] = calculatorCore(invertedPart);
34
41
  }
35
42
  // Calculate the numerical part
36
- numericalPart = variablePart[1]
37
- ? calculatorCore(`${numericalPart}${variablePart[1]}`)
38
- : calculatorCore(numericalPart);
43
+ if (variablePart[1]) {
44
+ // Ensure proper sign handling when combining
45
+ const sign = variablePart[1].startsWith("-") ? "" : "+";
46
+ numericalPart = calculatorCore(`${numericalPart}${sign}${variablePart[1]}`);
47
+ }
48
+ else {
49
+ numericalPart = calculatorCore(numericalPart);
50
+ }
39
51
  // Split the variable part again to separate coefficient and variable
40
52
  variablePart = variablePart[0]
41
53
  .split(/(\d+)|([A-Za-z]+)/)
@@ -52,7 +64,7 @@ export const literalExpression = (x) => {
52
64
  return numericalPart.replace(/\/1/, "");
53
65
  }
54
66
  }
55
- if (variablePart[0] !== "1") {
67
+ else if (variablePart[0] !== "1") {
56
68
  numericalPart = `${numericalPart}/${variablePart[0]}`;
57
69
  }
58
70
  return numericalPart;
@@ -1 +1 @@
1
- {"version":3,"file":"literalExpression.js","sourceRoot":"","sources":["../../../src/Math/calculator/literalExpression.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACjC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAS,EAAU,EAAE;IACrD,qDAAqD;IACrD,IAAI,aAAa,GAAG,EAAE,CAAC;IACvB,IAAI,YAAY,GAAa,EAAE,CAAC;IAEhC,iEAAiE;IACjE,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAChC,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,YAAY,GAAG,IAAI;iBAChB,KAAK,CAAC,6BAA6B,CAAC;iBACpC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC;IACH,CAAC;IAED,sFAAsF;IACtF,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QACpB,YAAY,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;aAC9C,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;aACvB,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC;aACxB,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC;aACvB,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,+BAA+B;IAC/B,aAAa,GAAG,YAAY,CAAC,CAAC,CAAC;QAC7B,CAAC,CAAC,cAAc,CAAC,GAAG,aAAa,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;IAElC,qEAAqE;IACrE,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC;SAC3B,KAAK,CAAC,mBAAmB,CAAC;SAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC;IAEvC,yDAAyD;IACzD,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1C,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,yCAAyC;IACzC,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;IACtE,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;QACpB,aAAa,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC,IAAI,QAAQ,CACvE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EACvB,SAAS,CACV,EAAE,CAAC;QACJ,IAAI,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YACrC,OAAO,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;QAC5B,aAAa,GAAG,GAAG,aAAa,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IACxD,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC"}
1
+ {"version":3,"file":"literalExpression.js","sourceRoot":"","sources":["../../../src/Math/calculator/literalExpression.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@ import { getDecimalLength } from "./getDecimalLength";
10
10
  */
11
11
  export const division = (x, y, isFloor = true) => {
12
12
  if (y === 0) {
13
- // biome-ignore lint/suspicious/noExplicitAny: <explanation>
13
+ // biome-ignore lint/suspicious/noExplicitAny: ignore
14
14
  return isFloor ? Number.NaN : [Number.NaN, Number.NaN];
15
15
  }
16
16
  const sign = Math.sign(x) * Math.sign(y);
@@ -28,13 +28,13 @@ export const division = (x, y, isFloor = true) => {
28
28
  const divisionResult = (xInt / yInt) * scalingFactor;
29
29
  if (isFloor) {
30
30
  // Apply sign to result
31
- // biome-ignore lint/suspicious/noExplicitAny: <explanation>
31
+ // biome-ignore lint/suspicious/noExplicitAny: ignore
32
32
  return (sign * divisionResult);
33
33
  }
34
34
  // When isFloor is false, calculate quotient and remainder
35
35
  const intQuotient = Math.floor(divisionResult);
36
36
  const remainder = xInt % yInt;
37
- // biome-ignore lint/suspicious/noExplicitAny: <explanation>
37
+ // biome-ignore lint/suspicious/noExplicitAny: ignore
38
38
  return [sign * intQuotient, remainder];
39
39
  };
40
40
  //# sourceMappingURL=division.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"division.js","sourceRoot":"","sources":["../../src/Math/division.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,CAAS,EACT,CAAS,EACT,UAAa,IAAS,EACc,EAAE;IACtC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACZ,4DAA4D;QAC5D,OAAO,OAAO,CAAC,CAAC,CAAE,MAAM,CAAC,GAAW,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAS,CAAC;IAC3E,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAEzB,uCAAuC;IACvC,MAAM,cAAc,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,cAAc,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAE9C,wBAAwB;IACxB,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAEzC,kEAAkE;IAClE,MAAM,aAAa,GAAG,EAAE,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,CAAC;IAE9D,uBAAuB;IACvB,MAAM,cAAc,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,aAAa,CAAC;IAErD,IAAI,OAAO,EAAE,CAAC;QACZ,uBAAuB;QACvB,4DAA4D;QAC5D,OAAO,CAAC,IAAI,GAAG,cAAc,CAAQ,CAAC;IACxC,CAAC;IACD,0DAA0D;IAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC;IAC9B,4DAA4D;IAC5D,OAAO,CAAC,IAAI,GAAG,WAAW,EAAE,SAAS,CAAQ,CAAC;AAChD,CAAC,CAAC"}
1
+ {"version":3,"file":"division.js","sourceRoot":"","sources":["../../src/Math/division.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,CAAS,EACT,CAAS,EACT,UAAa,IAAS,EACc,EAAE;IACtC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACZ,qDAAqD;QACrD,OAAO,OAAO,CAAC,CAAC,CAAE,MAAM,CAAC,GAAW,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAS,CAAC;IAC3E,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAEzB,uCAAuC;IACvC,MAAM,cAAc,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,cAAc,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAE9C,wBAAwB;IACxB,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAEzC,kEAAkE;IAClE,MAAM,aAAa,GAAG,EAAE,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,CAAC;IAE9D,uBAAuB;IACvB,MAAM,cAAc,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,aAAa,CAAC;IAErD,IAAI,OAAO,EAAE,CAAC;QACZ,uBAAuB;QACvB,qDAAqD;QACrD,OAAO,CAAC,IAAI,GAAG,cAAc,CAAQ,CAAC;IACxC,CAAC;IACD,0DAA0D;IAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC;IAC9B,qDAAqD;IACrD,OAAO,CAAC,IAAI,GAAG,WAAW,EAAE,SAAS,CAAQ,CAAC;AAChD,CAAC,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { isDouble } from "../Validate/isDouble";
1
2
  /**
2
3
  * Greatest Common Divisor (GCD)
3
4
  * @param {number} x First number
@@ -7,9 +8,30 @@
7
8
  * @example gcd(12, 18); // 6
8
9
  */
9
10
  export const gcd = (x, y, ...z) => {
10
- let copyX = Math.abs(x);
11
- let copyY = Math.abs(y);
12
- const copyZ = z.map((element) => Math.abs(element));
11
+ // Handle decimal numbers by scaling them to integers
12
+ const allNumbers = [x, y, ...z];
13
+ // If any number is decimal, find common decimal places and scale
14
+ const hasDecimals = allNumbers.some((number_) => isDouble(number_, false));
15
+ if (hasDecimals) {
16
+ // Find maximum decimal places
17
+ const getDecimalPlaces = (number_) => {
18
+ const string_ = number_.toString();
19
+ return string_.includes(".") ? string_.split(".")[1].length : 0;
20
+ };
21
+ const maxDecimalPlaces = Math.max(...allNumbers.map((number_) => getDecimalPlaces(number_)));
22
+ const multiplier = 10 ** maxDecimalPlaces;
23
+ // Scale all numbers to integers
24
+ const scaledNumbers = allNumbers.map((number_) => Math.round(number_ * multiplier));
25
+ const result = gcdInteger(scaledNumbers[0], scaledNumbers[1], ...scaledNumbers.slice(2));
26
+ // Scale back to original decimal range
27
+ return result / multiplier;
28
+ }
29
+ return gcdInteger(x, y, ...z);
30
+ };
31
+ const gcdInteger = (x, y, ...z) => {
32
+ let copyX = Math.abs(Math.round(x));
33
+ let copyY = Math.abs(Math.round(y));
34
+ const copyZ = z.map((element) => Math.abs(Math.round(element)));
13
35
  if (copyX === 0 || copyY === 0) {
14
36
  return 0;
15
37
  }
@@ -23,7 +45,7 @@ export const gcd = (x, y, ...z) => {
23
45
  }
24
46
  if (copyZ.length > 0) {
25
47
  for (const element of copyZ) {
26
- copyX = gcd(copyX, element);
48
+ copyX = gcdInteger(copyX, element);
27
49
  }
28
50
  }
29
51
  return copyX;
@@ -1 +1 @@
1
- {"version":3,"file":"gcd.js","sourceRoot":"","sources":["../../src/Math/gcd.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,GAAG,CAAW,EAAE,EAAE;IAC1D,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACpD,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,CAAC;IACX,CAAC;IACD,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAElE,yBAAyB;IACzB,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;IACtB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACf,KAAK,GAAG,KAAK,CAAC;QACd,KAAK,GAAG,CAAC,CAAC;QACV,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;IACpB,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;YAC5B,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
1
+ {"version":3,"file":"gcd.js","sourceRoot":"","sources":["../../src/Math/gcd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,GAAG,CAAW,EAAE,EAAE;IAC1D,qDAAqD;IACrD,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAEhC,iEAAiE;IACjE,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAE3E,IAAI,WAAW,EAAE,CAAC;QAChB,8BAA8B;QAC9B,MAAM,gBAAgB,GAAG,CAAC,OAAe,EAAE,EAAE;YAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;YACnC,OAAO,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,CAAC,CAAC;QAEF,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAC/B,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAC1D,CAAC;QACF,MAAM,UAAU,GAAG,EAAE,IAAI,gBAAgB,CAAC;QAE1C,gCAAgC;QAChC,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAC/C,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,CACjC,CAAC;QACF,MAAM,MAAM,GAAG,UAAU,CACvB,aAAa,CAAC,CAAC,CAAC,EAChB,aAAa,CAAC,CAAC,CAAC,EAChB,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAC1B,CAAC;QAEF,uCAAuC;QACvC,OAAO,MAAM,GAAG,UAAU,CAAC;IAC7B,CAAC;IAED,OAAO,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,GAAG,CAAW,EAAE,EAAE;IAC1D,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAEhE,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAElE,yBAAyB;IACzB,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;IACtB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACf,KAAK,GAAG,KAAK,CAAC;QACd,KAAK,GAAG,CAAC,CAAC;QACV,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;YAC5B,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
@@ -1,4 +1,6 @@
1
1
  import { average } from "./average";
2
+ import { multiplication } from "../Math/multiplication";
3
+ import { subtract } from "../Math/subtract";
2
4
  /**
3
5
  * Calculates the standard deviation of a set of values
4
6
  * @param {number[]} values Array of numeric values
@@ -14,8 +16,8 @@ export const standardDeviation = (values) => {
14
16
  const avg = average(values);
15
17
  // Calculate the squared differences from the mean
16
18
  const squareDiffs = values.map((value) => {
17
- const diff = value - avg;
18
- return diff * diff;
19
+ const diff = subtract(value, avg);
20
+ return multiplication(diff, diff);
19
21
  });
20
22
  // Calculate the mean of the squared differences
21
23
  const avgSquareDiff = average(squareDiffs);
@@ -1 +1 @@
1
- {"version":3,"file":"standardDeviation.js","sourceRoot":"","sources":["../../src/Math/standardDeviation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAgB,EAAU,EAAE;IAC5D,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE5B,kDAAkD;IAClD,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACvC,MAAM,IAAI,GAAG,KAAK,GAAG,GAAG,CAAC;QACzB,OAAO,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,gDAAgD;IAChD,MAAM,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAE3C,yDAAyD;IACzD,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAClC,CAAC,CAAC"}
1
+ {"version":3,"file":"standardDeviation.js","sourceRoot":"","sources":["../../src/Math/standardDeviation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAgB,EAAU,EAAE;IAC5D,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE5B,kDAAkD;IAClD,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACvC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAClC,OAAO,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,gDAAgD;IAChD,MAAM,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAE3C,yDAAyD;IACzD,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAClC,CAAC,CAAC"}
@@ -11,8 +11,7 @@ export const has = (object, path) => {
11
11
  const localPath = typeof path === "string" ? path.split(".") : path;
12
12
  let current = { ...object };
13
13
  for (const key of localPath) {
14
- if (current == null ||
15
- !Object.prototype.hasOwnProperty.call(current, key)) {
14
+ if (current == null || !Object.hasOwn(current, key)) {
16
15
  return false;
17
16
  }
18
17
  current = current[key];
@@ -1 +1 @@
1
- {"version":3,"file":"has.js","sourceRoot":"","sources":["../../src/Object/has.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CACjB,MAAS,EACT,IAAuB,EACd,EAAE;IACX,MAAM,SAAS,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpE,IAAI,OAAO,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAC5B,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,IACE,OAAO,IAAI,IAAI;YACf,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,EACnD,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,GAAG,CAAM,CAAC;IAC9B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
1
+ {"version":3,"file":"has.js","sourceRoot":"","sources":["../../src/Object/has.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CACjB,MAAS,EACT,IAAuB,EACd,EAAE;IACX,MAAM,SAAS,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpE,IAAI,OAAO,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAC5B,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,IAAI,OAAO,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;YACpD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,GAAG,CAAM,CAAC;IAC9B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
@@ -1,4 +1,8 @@
1
1
  export * from "./has";
2
+ export * from "./isEmpty";
2
3
  export * from "./keyBy";
4
+ export * from "./merge";
5
+ export * from "./mergeDeep";
6
+ export * from "./omit";
3
7
  export * from "./pick";
4
8
  export * from "./pickDeep";
@@ -1,5 +1,9 @@
1
1
  export * from "./has";
2
+ export * from "./isEmpty";
2
3
  export * from "./keyBy";
4
+ export * from "./merge";
5
+ export * from "./mergeDeep";
6
+ export * from "./omit";
3
7
  export * from "./pick";
4
8
  export * from "./pickDeep";
5
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Object/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Object/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Checks if an object is empty (has no own properties)
3
+ * @param object - The object to check
4
+ * @returns true if the object is empty, false otherwise
5
+ */
6
+ export declare const isEmpty: (object: Record<string, unknown>) => boolean;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Checks if an object is empty (has no own properties)
3
+ * @param object - The object to check
4
+ * @returns true if the object is empty, false otherwise
5
+ */
6
+ export const isEmpty = (object) => {
7
+ // Check enumerable string keys
8
+ for (const key in object) {
9
+ if (Object.hasOwn(object, key)) {
10
+ return false;
11
+ }
12
+ }
13
+ // Check symbol properties
14
+ const symbolKeys = Object.getOwnPropertySymbols(object);
15
+ if (symbolKeys.length > 0) {
16
+ return false;
17
+ }
18
+ return true;
19
+ };
20
+ //# sourceMappingURL=isEmpty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isEmpty.js","sourceRoot":"","sources":["../../src/Object/isEmpty.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,MAA+B,EAAW,EAAE;IAClE,+BAA+B;IAC/B,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,MAAM,UAAU,GAAG,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACxD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { UnionToIntersection } from "../types/logic/unionToIntersection";
2
+ /**
3
+ * Merges multiple objects into a single object (shallow merge)
4
+ * @param target - The target object to merge into
5
+ * @param sources - The source objects to merge from
6
+ * @returns The merged object
7
+ */
8
+ export declare const merge: <T extends Record<string, unknown>, U extends Record<string, unknown>[]>(target: T, ...sources: U) => T & UnionToIntersection<U[number]>;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Merges multiple objects into a single object (shallow merge)
3
+ * @param target - The target object to merge into
4
+ * @param sources - The source objects to merge from
5
+ * @returns The merged object
6
+ */
7
+ export const merge = (target, ...sources) => {
8
+ return Object.assign({}, target, ...sources);
9
+ };
10
+ //# sourceMappingURL=merge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/Object/merge.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAInB,MAAS,EACT,GAAG,OAAU,EACuB,EAAE;IACtC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC;AAC/C,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { UnionToIntersection } from "../types/logic/unionToIntersection";
2
+ /**
3
+ * Deeply merges multiple objects into a single object
4
+ * @param target - The target object to merge into
5
+ * @param sources - The source objects to merge from
6
+ * @returns The deeply merged object
7
+ */
8
+ export declare const mergeDeep: <T extends Record<string, unknown>, U extends Record<string, unknown>[]>(target: T, ...sources: U) => T & UnionToIntersection<U[number]>;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Checks if a value is a plain object
3
+ */
4
+ const isPlainObject = (value) => {
5
+ return (value !== null &&
6
+ typeof value === "object" &&
7
+ value.constructor === Object &&
8
+ Object.prototype.toString.call(value) === "[object Object]");
9
+ };
10
+ /**
11
+ * Deeply merges multiple objects into a single object
12
+ * @param target - The target object to merge into
13
+ * @param sources - The source objects to merge from
14
+ * @returns The deeply merged object
15
+ */
16
+ export const mergeDeep = (target, ...sources) => {
17
+ if (sources.length === 0) {
18
+ return target;
19
+ }
20
+ const source = sources.shift();
21
+ if (isPlainObject(target) && isPlainObject(source)) {
22
+ const result = { ...target };
23
+ for (const key in source) {
24
+ if (Object.hasOwn(source, key)) {
25
+ const sourceValue = source[key];
26
+ const targetValue = result[key];
27
+ result[key] =
28
+ isPlainObject(targetValue) && isPlainObject(sourceValue)
29
+ ? mergeDeep(targetValue, sourceValue)
30
+ : sourceValue;
31
+ }
32
+ }
33
+ return mergeDeep(result, ...sources);
34
+ }
35
+ return mergeDeep(source, ...sources);
36
+ };
37
+ //# sourceMappingURL=mergeDeep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeDeep.js","sourceRoot":"","sources":["../../src/Object/mergeDeep.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,aAAa,GAAG,CAAC,KAAc,EAAoC,EAAE;IACzE,OAAO,CACL,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,CAAC,WAAW,KAAK,MAAM;QAC5B,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,iBAAiB,CAC5D,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAIvB,MAAS,EACT,GAAG,OAAU,EACuB,EAAE;IACtC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,MAA4C,CAAC;IACtD,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAE/B,IAAI,aAAa,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;QAE7B,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;gBAC/B,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChC,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBAE/B,MAAkC,CAAC,GAAG,CAAC;oBACtC,aAAa,CAAC,WAAW,CAAC,IAAI,aAAa,CAAC,WAAW,CAAC;wBACtD,CAAC,CAAC,SAAS,CACP,WAAsC,EACtC,WAAsC,CACvC;wBACH,CAAC,CAAC,WAAW,CAAC;YACpB,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC,MAAM,EAAE,GAAG,OAAO,CAAuC,CAAC;IAC7E,CAAC;IAED,OAAO,SAAS,CAAC,MAAW,EAAE,GAAG,OAAO,CACR,CAAC;AACnC,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Creates an object without the specified keys
3
+ * @param object - The source object
4
+ * @param keys - The keys to omit
5
+ * @returns A new object without the specified keys
6
+ */
7
+ export declare const omit: <T extends object, K extends keyof T>(object: T, ...keys: K[]) => Omit<T, K>;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Creates an object without the specified keys
3
+ * @param object - The source object
4
+ * @param keys - The keys to omit
5
+ * @returns A new object without the specified keys
6
+ */
7
+ export const omit = (object, ...keys) => {
8
+ const result = { ...object };
9
+ for (const key of keys) {
10
+ delete result[key];
11
+ }
12
+ return result;
13
+ };
14
+ //# sourceMappingURL=omit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"omit.js","sourceRoot":"","sources":["../../src/Object/omit.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,MAAS,EACT,GAAG,IAAS,EACA,EAAE;IACd,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAE7B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
@@ -7,7 +7,7 @@ import type { PickDeepKey } from "../types/object/pickDeepKey";
7
7
  * @template K - Type of property keys to select. Must be a subset of PickDeepKey<T>.
8
8
  * @param {T} object - The source object to extract properties from.
9
9
  * @param {...K[]} keys - Property keys to extract. Can use dot notation for nested properties.
10
- * @returns {PickDeep<T>} A new object containing only the specified properties.
10
+ * @returns {PickDeep<T, K>} A new object containing only the specified properties.
11
11
  *
12
12
  * @example
13
13
  * ```typescript
@@ -16,4 +16,4 @@ import type { PickDeepKey } from "../types/object/pickDeepKey";
16
16
  * // picked will be { a: { b: { c: 1 } }, f: 4 }
17
17
  * ```
18
18
  */
19
- export declare const pickDeep: <T extends object, K extends PickDeepKey<T>>(object: T, ...keys: K[]) => PickDeep<T>;
19
+ export declare const pickDeep: <T extends object, const K extends readonly PickDeepKey<T>[]>(object: T, ...keys: K) => PickDeep<T, K>;
@@ -5,7 +5,7 @@
5
5
  * @template K - Type of property keys to select. Must be a subset of PickDeepKey<T>.
6
6
  * @param {T} object - The source object to extract properties from.
7
7
  * @param {...K[]} keys - Property keys to extract. Can use dot notation for nested properties.
8
- * @returns {PickDeep<T>} A new object containing only the specified properties.
8
+ * @returns {PickDeep<T, K>} A new object containing only the specified properties.
9
9
  *
10
10
  * @example
11
11
  * ```typescript
@@ -15,13 +15,13 @@
15
15
  * ```
16
16
  */
17
17
  export const pickDeep = (object, ...keys) => {
18
- // biome-ignore lint/suspicious/noExplicitAny: <explanation>
18
+ // biome-ignore lint/suspicious/noExplicitAny: ignore
19
19
  const result = {};
20
20
  for (const key of keys) {
21
21
  const parts = key.split(".");
22
- // biome-ignore lint/suspicious/noExplicitAny: <explanation>
22
+ // biome-ignore lint/suspicious/noExplicitAny: ignore
23
23
  let current = { ...object };
24
- // biome-ignore lint/suspicious/noExplicitAny: <explanation>
24
+ // biome-ignore lint/suspicious/noExplicitAny: ignore
25
25
  let target = result;
26
26
  for (const [index, part] of parts.entries()) {
27
27
  if (current && typeof current === "object" && part in current) {
@@ -1 +1 @@
1
- {"version":3,"file":"pickDeep.js","sourceRoot":"","sources":["../../src/Object/pickDeep.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,MAAS,EACT,GAAG,IAAS,EACC,EAAE;IACf,4DAA4D;IAC5D,MAAM,MAAM,GAAQ,EAAE,CAAC;IAEvB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAI,GAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzC,4DAA4D;QAC5D,IAAI,OAAO,GAAQ,EAAE,GAAG,MAAM,EAAE,CAAC;QACjC,4DAA4D;QAC5D,IAAI,MAAM,GAAQ,MAAM,CAAC;QAEzB,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAC5C,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,IAAI,IAAI,OAAO,EAAE,CAAC;gBAC9D,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC/B,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC/B,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBAClC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;oBACxB,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
1
+ {"version":3,"file":"pickDeep.js","sourceRoot":"","sources":["../../src/Object/pickDeep.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAItB,MAAS,EACT,GAAG,IAAO,EACM,EAAE;IAClB,qDAAqD;IACrD,MAAM,MAAM,GAAQ,EAAE,CAAC;IAEvB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAI,GAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzC,qDAAqD;QACrD,IAAI,OAAO,GAAQ,EAAE,GAAG,MAAM,EAAE,CAAC;QACjC,qDAAqD;QACrD,IAAI,MAAM,GAAQ,MAAM,CAAC;QAEzB,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAC5C,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,IAAI,IAAI,OAAO,EAAE,CAAC;gBAC9D,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC/B,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC/B,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBAClC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;oBACxB,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}