umt 2.5.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 (268) hide show
  1. package/README.md +11 -0
  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 +1 -1
  7. package/module/Array/groupBy.js.map +1 -1
  8. package/module/Array/index.d.ts +2 -0
  9. package/module/Array/index.js +2 -0
  10. package/module/Array/index.js.map +1 -1
  11. package/module/Array/ultraNumberSort.js +2 -2
  12. package/module/Array/ultraNumberSort.js.map +1 -1
  13. package/module/Array/uniqBy.d.ts +7 -0
  14. package/module/Array/uniqBy.js +19 -0
  15. package/module/Array/uniqBy.js.map +1 -0
  16. package/module/Array/unique.d.ts +6 -0
  17. package/module/Array/unique.js +9 -0
  18. package/module/Array/unique.js.map +1 -0
  19. package/module/Color/rgbaToHsla.js +1 -1
  20. package/module/Color/rgbaToHsla.js.map +1 -1
  21. package/module/Date/birthday.js +14 -6
  22. package/module/Date/birthday.js.map +1 -1
  23. package/module/Date/isLeapYear.js +3 -0
  24. package/module/Date/isLeapYear.js.map +1 -1
  25. package/module/Error/index.d.ts +1 -0
  26. package/module/Error/index.js +1 -0
  27. package/module/Error/index.js.map +1 -1
  28. package/module/Error/retry.d.ts +37 -0
  29. package/module/Error/retry.js +47 -0
  30. package/module/Error/retry.js.map +1 -0
  31. package/module/IP/getIpClass.js +1 -1
  32. package/module/IP/getIpClass.js.map +1 -1
  33. package/module/IP/getNetworkAddress.js +2 -2
  34. package/module/IP/getNetworkAddress.js.map +1 -1
  35. package/module/IP/ipToBinaryString.js +2 -2
  36. package/module/IP/ipToBinaryString.js.map +1 -1
  37. package/module/IP/subnetMaskToCidr.js +1 -1
  38. package/module/IP/subnetMaskToCidr.js.map +1 -1
  39. package/module/Math/calculator/core.js +21 -13
  40. package/module/Math/calculator/core.js.map +1 -1
  41. package/module/Math/calculator/literalExpression.js +19 -7
  42. package/module/Math/calculator/literalExpression.js.map +1 -1
  43. package/module/Math/division.js +3 -3
  44. package/module/Math/division.js.map +1 -1
  45. package/module/Math/gcd.js +26 -4
  46. package/module/Math/gcd.js.map +1 -1
  47. package/module/Math/standardDeviation.js +4 -2
  48. package/module/Math/standardDeviation.js.map +1 -1
  49. package/module/Object/has.js +1 -2
  50. package/module/Object/has.js.map +1 -1
  51. package/module/Object/index.d.ts +4 -0
  52. package/module/Object/index.js +4 -0
  53. package/module/Object/index.js.map +1 -1
  54. package/module/Object/isEmpty.d.ts +6 -0
  55. package/module/Object/isEmpty.js +20 -0
  56. package/module/Object/isEmpty.js.map +1 -0
  57. package/module/Object/merge.d.ts +8 -0
  58. package/module/Object/merge.js +10 -0
  59. package/module/Object/merge.js.map +1 -0
  60. package/module/Object/mergeDeep.d.ts +8 -0
  61. package/module/Object/mergeDeep.js +37 -0
  62. package/module/Object/mergeDeep.js.map +1 -0
  63. package/module/Object/omit.d.ts +7 -0
  64. package/module/Object/omit.js +14 -0
  65. package/module/Object/omit.js.map +1 -0
  66. package/module/Object/pickDeep.d.ts +2 -2
  67. package/module/Object/pickDeep.js +4 -4
  68. package/module/Object/pickDeep.js.map +1 -1
  69. package/module/Simple/Date/dayOfWeekSimple.js +3 -3
  70. package/module/Simple/Date/dayOfWeekSimple.js.map +1 -1
  71. package/module/String/camelCase.d.ts +6 -0
  72. package/module/String/camelCase.js +12 -0
  73. package/module/String/camelCase.js.map +1 -0
  74. package/module/String/escapeHtml.d.ts +6 -0
  75. package/module/String/escapeHtml.js +19 -0
  76. package/module/String/escapeHtml.js.map +1 -0
  77. package/module/String/formatString/applyFormatter.d.ts +25 -0
  78. package/module/String/formatString/applyFormatter.js +71 -0
  79. package/module/String/formatString/applyFormatter.js.map +1 -0
  80. package/module/String/formatString/defaultFormatters.d.ts +24 -0
  81. package/module/String/formatString/defaultFormatters.js +59 -0
  82. package/module/String/formatString/defaultFormatters.js.map +1 -0
  83. package/module/String/formatString/detectMode.d.ts +26 -0
  84. package/module/String/formatString/detectMode.js +61 -0
  85. package/module/String/formatString/detectMode.js.map +1 -0
  86. package/module/String/formatString/getValue.d.ts +27 -0
  87. package/module/String/formatString/getValue.js +56 -0
  88. package/module/String/formatString/getValue.js.map +1 -0
  89. package/module/String/formatString/index.d.ts +91 -0
  90. package/module/String/formatString/index.js +38 -0
  91. package/module/String/formatString/index.js.map +1 -0
  92. package/module/String/index.d.ts +5 -0
  93. package/module/String/index.js +5 -0
  94. package/module/String/index.js.map +1 -1
  95. package/module/String/kebabCase.d.ts +6 -0
  96. package/module/String/kebabCase.js +22 -0
  97. package/module/String/kebabCase.js.map +1 -0
  98. package/module/String/levenshteinDistance.d.ts +8 -0
  99. package/module/String/levenshteinDistance.js +38 -0
  100. package/module/String/levenshteinDistance.js.map +1 -0
  101. package/module/String/stringSimilarity.d.ts +8 -0
  102. package/module/String/stringSimilarity.js +23 -0
  103. package/module/String/stringSimilarity.js.map +1 -0
  104. package/module/Validate/core/index.js +0 -1
  105. package/module/Validate/core/index.js.map +1 -1
  106. package/module/Validate/isDouble.js +1 -1
  107. package/module/Validate/isDouble.js.map +1 -1
  108. package/module/Validate/isNode.js +1 -0
  109. package/module/Validate/isNode.js.map +1 -1
  110. package/module/Validate/isNumber.js +1 -1
  111. package/module/Validate/isNumber.js.map +1 -1
  112. package/module/Validate/isValueNaN.js +1 -1
  113. package/module/Validate/isValueNaN.js.map +1 -1
  114. package/module/Validate/number/even.js +7 -1
  115. package/module/Validate/number/even.js.map +1 -1
  116. package/module/Validate/number/odd.js +7 -1
  117. package/module/Validate/number/odd.js.map +1 -1
  118. package/module/Validate/string/email.js +20 -2
  119. package/module/Validate/string/email.js.map +1 -1
  120. package/module/es5/Array/generateNumberArray.js +15 -9
  121. package/module/es5/Array/getArraysCommon.js +39 -4
  122. package/module/es5/Array/groupBy.js +1 -1
  123. package/module/es5/Array/index.d.ts +2 -0
  124. package/module/es5/Array/index.js +22 -0
  125. package/module/es5/Array/ultraNumberSort.js +2 -2
  126. package/module/es5/Array/uniqBy.d.ts +7 -0
  127. package/module/es5/Array/uniqBy.js +36 -0
  128. package/module/es5/Array/unique.d.ts +6 -0
  129. package/module/es5/Array/unique.js +20 -0
  130. package/module/es5/Color/rgbaToHsla.js +1 -1
  131. package/module/es5/Date/birthday.js +17 -3
  132. package/module/es5/Date/isLeapYear.js +3 -0
  133. package/module/es5/Error/index.d.ts +1 -0
  134. package/module/es5/Error/index.js +11 -0
  135. package/module/es5/Error/retry.d.ts +37 -0
  136. package/module/es5/Error/retry.js +88 -0
  137. package/module/es5/IP/getIpClass.js +1 -1
  138. package/module/es5/IP/getNetworkAddress.js +2 -2
  139. package/module/es5/IP/ipToBinaryString.js +2 -2
  140. package/module/es5/IP/subnetMaskToCidr.js +1 -1
  141. package/module/es5/Math/calculator/core.js +17 -9
  142. package/module/es5/Math/calculator/literalExpression.js +19 -6
  143. package/module/es5/Math/division.js +3 -3
  144. package/module/es5/Math/gcd.js +43 -5
  145. package/module/es5/Math/standardDeviation.js +4 -2
  146. package/module/es5/Object/has.js +1 -1
  147. package/module/es5/Object/index.d.ts +4 -0
  148. package/module/es5/Object/index.js +44 -0
  149. package/module/es5/Object/isEmpty.d.ts +6 -0
  150. package/module/es5/Object/isEmpty.js +26 -0
  151. package/module/es5/Object/merge.d.ts +8 -0
  152. package/module/es5/Object/merge.js +18 -0
  153. package/module/es5/Object/mergeDeep.d.ts +8 -0
  154. package/module/es5/Object/mergeDeep.js +46 -0
  155. package/module/es5/Object/omit.d.ts +7 -0
  156. package/module/es5/Object/omit.js +29 -0
  157. package/module/es5/Object/pickDeep.d.ts +2 -2
  158. package/module/es5/Object/pickDeep.js +4 -4
  159. package/module/es5/Simple/Date/dayOfWeekSimple.js +3 -3
  160. package/module/es5/String/camelCase.d.ts +6 -0
  161. package/module/es5/String/camelCase.js +18 -0
  162. package/module/es5/String/escapeHtml.d.ts +6 -0
  163. package/module/es5/String/escapeHtml.js +27 -0
  164. package/module/es5/String/formatString/applyFormatter.d.ts +25 -0
  165. package/module/es5/String/formatString/applyFormatter.js +100 -0
  166. package/module/es5/String/formatString/defaultFormatters.d.ts +24 -0
  167. package/module/es5/String/formatString/defaultFormatters.js +79 -0
  168. package/module/es5/String/formatString/detectMode.d.ts +26 -0
  169. package/module/es5/String/formatString/detectMode.js +60 -0
  170. package/module/es5/String/formatString/getValue.d.ts +27 -0
  171. package/module/es5/String/formatString/getValue.js +85 -0
  172. package/module/es5/String/formatString/index.d.ts +91 -0
  173. package/module/es5/String/formatString/index.js +152 -0
  174. package/module/es5/String/index.d.ts +5 -0
  175. package/module/es5/String/index.js +55 -0
  176. package/module/es5/String/kebabCase.d.ts +6 -0
  177. package/module/es5/String/kebabCase.js +26 -0
  178. package/module/es5/String/levenshteinDistance.d.ts +8 -0
  179. package/module/es5/String/levenshteinDistance.js +58 -0
  180. package/module/es5/String/stringSimilarity.d.ts +8 -0
  181. package/module/es5/String/stringSimilarity.js +30 -0
  182. package/module/es5/Validate/core/index.js +0 -1
  183. package/module/es5/Validate/isDouble.js +1 -1
  184. package/module/es5/Validate/isNode.js +1 -0
  185. package/module/es5/Validate/isNumber.js +1 -1
  186. package/module/es5/Validate/isValueNaN.js +1 -1
  187. package/module/es5/Validate/number/even.js +4 -0
  188. package/module/es5/Validate/number/odd.js +4 -0
  189. package/module/es5/Validate/string/email.js +26 -1
  190. package/module/es5/tsconfig.tsbuildinfo +1 -1
  191. package/module/es5/types/index.d.ts +1 -0
  192. package/module/es5/types/index.js +11 -0
  193. package/module/es5/types/logic/deepPartial.d.ts +37 -0
  194. package/module/es5/types/logic/deepPartial.js +5 -0
  195. package/module/es5/types/logic/deepRequired.d.ts +37 -0
  196. package/module/es5/types/logic/deepRequired.js +5 -0
  197. package/module/es5/types/logic/index.d.ts +3 -0
  198. package/module/es5/types/logic/index.js +33 -0
  199. package/module/es5/types/logic/unionToIntersection.d.ts +12 -0
  200. package/module/es5/types/logic/unionToIntersection.js +5 -0
  201. package/module/es5/types/object/index.d.ts +1 -0
  202. package/module/es5/types/object/index.js +11 -0
  203. package/module/es5/types/object/pickDeep.d.ts +13 -1
  204. package/module/es5/types/object/shallowObjectValue.d.ts +9 -0
  205. package/module/es5/types/object/shallowObjectValue.js +5 -0
  206. package/module/es5/types/string/formatString/formatData.d.ts +17 -0
  207. package/module/es5/types/string/formatString/formatData.js +5 -0
  208. package/module/es5/types/string/formatString/formatOptions.d.ts +21 -0
  209. package/module/es5/types/string/formatString/formatOptions.js +5 -0
  210. package/module/es5/types/string/formatString/formatString.d.ts +4 -0
  211. package/module/es5/types/string/formatString/formatString.js +49 -0
  212. package/module/es5/types/string/formatString/formatValue.d.ts +15 -0
  213. package/module/es5/types/string/formatString/formatValue.js +5 -0
  214. package/module/es5/types/string/formatString/formatter.d.ts +13 -0
  215. package/module/es5/types/string/formatString/formatter.js +5 -0
  216. package/module/es5/types/string/formatString/index.d.ts +5 -0
  217. package/module/es5/types/string/formatString/index.js +60 -0
  218. package/module/es5/types/string/index.d.ts +1 -0
  219. package/module/es5/types/string/index.js +16 -0
  220. package/module/types/index.d.ts +1 -0
  221. package/module/types/index.js +1 -0
  222. package/module/types/index.js.map +1 -1
  223. package/module/types/logic/deepPartial.d.ts +37 -0
  224. package/module/types/logic/deepPartial.js +36 -0
  225. package/module/types/logic/deepPartial.js.map +1 -0
  226. package/module/types/logic/deepRequired.d.ts +37 -0
  227. package/module/types/logic/deepRequired.js +2 -0
  228. package/module/types/logic/deepRequired.js.map +1 -0
  229. package/module/types/logic/index.d.ts +3 -0
  230. package/module/types/logic/index.js +3 -0
  231. package/module/types/logic/index.js.map +1 -1
  232. package/module/types/logic/unionToIntersection.d.ts +12 -0
  233. package/module/types/logic/unionToIntersection.js +2 -0
  234. package/module/types/logic/unionToIntersection.js.map +1 -0
  235. package/module/types/object/index.d.ts +1 -0
  236. package/module/types/object/index.js +1 -0
  237. package/module/types/object/index.js.map +1 -1
  238. package/module/types/object/pickDeep.d.ts +13 -1
  239. package/module/types/object/shallowObjectValue.d.ts +9 -0
  240. package/module/types/object/shallowObjectValue.js +2 -0
  241. package/module/types/object/shallowObjectValue.js.map +1 -0
  242. package/module/types/string/formatString/formatData.d.ts +17 -0
  243. package/module/types/string/formatString/formatData.js +2 -0
  244. package/module/types/string/formatString/formatData.js.map +1 -0
  245. package/module/types/string/formatString/formatOptions.d.ts +21 -0
  246. package/module/types/string/formatString/formatOptions.js +2 -0
  247. package/module/types/string/formatString/formatOptions.js.map +1 -0
  248. package/module/types/string/formatString/formatString.d.ts +4 -0
  249. package/module/types/string/formatString/formatString.js +5 -0
  250. package/module/types/string/formatString/formatString.js.map +1 -0
  251. package/module/types/string/formatString/formatValue.d.ts +15 -0
  252. package/module/types/string/formatString/formatValue.js +2 -0
  253. package/module/types/string/formatString/formatValue.js.map +1 -0
  254. package/module/types/string/formatString/formatter.d.ts +13 -0
  255. package/module/types/string/formatString/formatter.js +2 -0
  256. package/module/types/string/formatString/formatter.js.map +1 -0
  257. package/module/types/string/formatString/index.d.ts +5 -0
  258. package/module/types/string/formatString/index.js +6 -0
  259. package/module/types/string/formatString/index.js.map +1 -0
  260. package/module/types/string/index.d.ts +1 -0
  261. package/module/types/string/index.js +2 -0
  262. package/module/types/string/index.js.map +1 -0
  263. package/package.json +31 -32
  264. package/module/String/formatString.d.ts +0 -13
  265. package/module/String/formatString.js +0 -18
  266. package/module/String/formatString.js.map +0 -1
  267. package/module/es5/String/formatString.d.ts +0 -13
  268. package/module/es5/String/formatString.js +0 -26
@@ -0,0 +1 @@
1
+ {"version":3,"file":"levenshteinDistance.js","sourceRoot":"","sources":["../../src/String/levenshteinDistance.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,OAAe,EACf,OAAe,EACP,EAAE;IACV,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAE/B,wDAAwD;IACxD,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;QAClB,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;QAClB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,4CAA4C;IAC5C,MAAM,MAAM,GAAe,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAClE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAC7C,CAAC;IAEF,kCAAkC;IAClC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC;QAC9C,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IAC3B,CAAC;IACD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC;QAC9C,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,sBAAsB;IACtB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC;QAC9C,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC;YACjD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAChE,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAC9B,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,WAAW;YAC1C,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,YAAY;YAC3C,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CACrC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Calculates the similarity between two strings as a percentage
3
+ * Uses Levenshtein distance normalized by the length of the longer string
4
+ * @param str1 - First string to compare
5
+ * @param str2 - Second string to compare
6
+ * @returns Similarity score between 0 (completely different) and 1 (identical)
7
+ */
8
+ export declare const stringSimilarity: (string1: string, string2: string) => number;
@@ -0,0 +1,23 @@
1
+ import { levenshteinDistance } from "./levenshteinDistance";
2
+ /**
3
+ * Calculates the similarity between two strings as a percentage
4
+ * Uses Levenshtein distance normalized by the length of the longer string
5
+ * @param str1 - First string to compare
6
+ * @param str2 - Second string to compare
7
+ * @returns Similarity score between 0 (completely different) and 1 (identical)
8
+ */
9
+ export const stringSimilarity = (string1, string2) => {
10
+ // Identical strings have 100% similarity
11
+ if (string1 === string2) {
12
+ return 1;
13
+ }
14
+ // Empty strings handling
15
+ if (string1.length === 0 || string2.length === 0) {
16
+ return 0;
17
+ }
18
+ const distance = levenshteinDistance(string1, string2);
19
+ const maxLength = Math.max(string1.length, string2.length);
20
+ // Calculate similarity as 1 - (distance / maxLength)
21
+ return 1 - distance / maxLength;
22
+ };
23
+ //# sourceMappingURL=stringSimilarity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stringSimilarity.js","sourceRoot":"","sources":["../../src/String/stringSimilarity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAe,EAAE,OAAe,EAAU,EAAE;IAC3E,yCAAyC;IACzC,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,yBAAyB;IACzB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAE3D,qDAAqD;IACrD,OAAO,CAAC,GAAG,QAAQ,GAAG,SAAS,CAAC;AAClC,CAAC,CAAC"}
@@ -9,7 +9,6 @@
9
9
  * @returns {Function} - A validator function that accepts a value, options, and message
10
10
  */
11
11
  export const core = (type) => (value, option = [], message) => {
12
- // biome-ignore lint/suspicious/useValidTypeof: Type parameter is a string literal type from Types<T>
13
12
  if (typeof value !== type) {
14
13
  return {
15
14
  validate: false,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Validate/core/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,IAAI,GACf,CAAI,IAAc,EAAE,EAAE,CACtB,CACE,KAAQ,EACR,SAAY,EAAkB,EAC9B,OAAgB,EACW,EAAE;IAC7B,qGAAqG;IACrG,IAAI,OAAO,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1B,OAAO;YACL,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,OAAO,IAAI,EAAE;YACtB,IAAI;SACL,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO;gBACL,QAAQ,EAAE,KAAK;gBACf,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,EAAE;gBAC/B,IAAI;aACL,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,EAAE;QACX,IAAI;KACL,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Validate/core/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,IAAI,GACf,CAAI,IAAc,EAAE,EAAE,CACtB,CACE,KAAQ,EACR,SAAY,EAAkB,EAC9B,OAAgB,EACW,EAAE;IAC7B,IAAI,OAAO,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1B,OAAO;YACL,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,OAAO,IAAI,EAAE;YACtB,IAAI;SACL,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO;gBACL,QAAQ,EAAE,KAAK;gBACf,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,EAAE;gBAC/B,IAAI;aACL,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,EAAE;QACX,IAAI;KACL,CAAC;AACJ,CAAC,CAAC"}
@@ -10,7 +10,7 @@
10
10
  const isDouble = (x, loose = true) => {
11
11
  if (loose) {
12
12
  return (
13
- // biome-ignore lint/suspicious/noGlobalIsFinite: <explanation>
13
+ // biome-ignore lint/suspicious/noGlobalIsFinite: ignore
14
14
  isFinite(x) &&
15
15
  !Number.isNaN(x) &&
16
16
  Number.isFinite(Number(x)) &&
@@ -1 +1 @@
1
- {"version":3,"file":"isDouble.js","sourceRoot":"","sources":["../../src/Validate/isDouble.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,QAAQ,GAAG,CACf,CAAU,EACV,QAAW,IAAS,EAC4B,EAAE;IAClD,IAAI,KAAK,EAAE,CAAC;QACV,OAAO;QACL,+DAA+D;QAC/D,QAAQ,CAAC,CAAW,CAAC;YACrB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAChB,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC1B,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAC7B,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC,CAAC;AAEF,OAAO,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"isDouble.js","sourceRoot":"","sources":["../../src/Validate/isDouble.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,QAAQ,GAAG,CACf,CAAU,EACV,QAAW,IAAS,EAC4B,EAAE;IAClD,IAAI,KAAK,EAAE,CAAC;QACV,OAAO;QACL,wDAAwD;QACxD,QAAQ,CAAC,CAAW,CAAC;YACrB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAChB,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC1B,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAC7B,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC,CAAC;AAEF,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -3,6 +3,7 @@
3
3
  */
4
4
  export const isNode = () => {
5
5
  try {
6
+ // biome-ignore lint/nursery/noProcessGlobal: ignore
6
7
  return typeof process !== "undefined" && typeof require !== "undefined";
7
8
  }
8
9
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"isNode.js","sourceRoot":"","sources":["../../src/Validate/isNode.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,EAAE;IACzB,IAAI,CAAC;QACH,OAAO,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,OAAO,KAAK,WAAW,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"isNode.js","sourceRoot":"","sources":["../../src/Validate/isNode.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,EAAE;IACzB,IAAI,CAAC;QACH,oDAAoD;QACpD,OAAO,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,OAAO,KAAK,WAAW,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC"}
@@ -15,7 +15,7 @@ const isNumber = (number, loose = true) => {
15
15
  return false;
16
16
  }
17
17
  return number !== null && typeof number !== "boolean" && loose
18
- ? // biome-ignore lint/suspicious/noGlobalIsFinite: <explanation>
18
+ ? // biome-ignore lint/suspicious/noGlobalIsFinite: ignore
19
19
  isFinite(number)
20
20
  : Number.isFinite(number);
21
21
  };
@@ -1 +1 @@
1
- {"version":3,"file":"isNumber.js","sourceRoot":"","sources":["../../src/Validate/isNumber.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,QAAQ,GAAG,CACf,MAAe,EACf,QAAW,IAAS,EACiC,EAAE;IACvD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,SAAS,IAAI,KAAK;QAC5D,CAAC,CAAC,+DAA+D;YAC/D,QAAQ,CAAC,MAAgB,CAAC;QAC5B,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAgB,CAAC,CAAC;AACxC,CAAC,CAAC;AAEF,OAAO,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"isNumber.js","sourceRoot":"","sources":["../../src/Validate/isNumber.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,QAAQ,GAAG,CACf,MAAe,EACf,QAAW,IAAS,EACiC,EAAE;IACvD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,SAAS,IAAI,KAAK;QAC5D,CAAC,CAAC,wDAAwD;YACxD,QAAQ,CAAC,MAAgB,CAAC;QAC5B,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAgB,CAAC,CAAC;AACxC,CAAC,CAAC;AAEF,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -10,7 +10,7 @@
10
10
  * isValueNaN(parseInt("not a number")); // true
11
11
  */
12
12
  export const isValueNaN = (value, loose = false) => {
13
- // biome-ignore lint/suspicious/noGlobalIsNan: <explanation>
13
+ // biome-ignore lint/suspicious/noGlobalIsNan: ignore
14
14
  return loose ? isNaN(value) : Number.isNaN(value);
15
15
  };
16
16
  //# sourceMappingURL=isValueNaN.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"isValueNaN.js","sourceRoot":"","sources":["../../src/Validate/isValueNaN.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAc,EAAE,KAAK,GAAG,KAAK,EAAW,EAAE;IACnE,4DAA4D;IAC5D,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC,CAAC"}
1
+ {"version":3,"file":"isValueNaN.js","sourceRoot":"","sources":["../../src/Validate/isValueNaN.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAc,EAAE,KAAK,GAAG,KAAK,EAAW,EAAE;IACnE,qDAAqD;IACrD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC,CAAC"}
@@ -2,6 +2,7 @@
2
2
  * Number validation module for even numbers
3
3
  * Provides validation functionality for checking if a number is even
4
4
  */
5
+ import { isDouble } from "../../Validate/isDouble";
5
6
  /**
6
7
  * Creates a validator for checking if a number is even
7
8
  * @param {string} [message] - Custom error message for validation failure
@@ -11,7 +12,12 @@ export const even = (message) => {
11
12
  return {
12
13
  type: "number",
13
14
  message,
14
- validate: (value) => value % 2 === 0,
15
+ validate: (value) => {
16
+ if (isDouble(value, false)) {
17
+ return false;
18
+ }
19
+ return value % 2 === 0;
20
+ },
15
21
  };
16
22
  };
17
23
  //# sourceMappingURL=even.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"even.js","sourceRoot":"","sources":["../../../src/Validate/number/even.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;;GAIG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,OAAgB,EAA8B,EAAE;IACnE,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,OAAO;QACP,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC;KACrC,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"even.js","sourceRoot":"","sources":["../../../src/Validate/number/even.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAG/C;;;;GAIG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,OAAgB,EAA8B,EAAE;IACnE,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,OAAO;QACP,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;YAClB,IAAI,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO,KAAK,CAAC;YACf,CAAC;YACD,OAAO,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -1,8 +1,14 @@
1
+ import { isDouble } from "../../Validate/isDouble";
1
2
  export const odd = (message) => {
2
3
  return {
3
4
  type: "number",
4
5
  message,
5
- validate: (value) => value % 2 !== 0,
6
+ validate: (value) => {
7
+ if (isDouble(value, false)) {
8
+ return false;
9
+ }
10
+ return value % 2 !== 0;
11
+ },
6
12
  };
7
13
  };
8
14
  //# sourceMappingURL=odd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"odd.js","sourceRoot":"","sources":["../../../src/Validate/number/odd.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,OAAgB,EAA8B,EAAE;IAClE,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,OAAO;QACP,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC;KACrC,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"odd.js","sourceRoot":"","sources":["../../../src/Validate/number/odd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAG/C,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,OAAgB,EAA8B,EAAE;IAClE,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,OAAO;QACP,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;YAClB,IAAI,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO,KAAK,CAAC;YACf,CAAC;YACD,OAAO,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -9,11 +9,29 @@
9
9
  */
10
10
  export const email = (message) => {
11
11
  // Regular expression for email address validation
12
- const emailRegex = /^[\w+-]+(?:\.[\w+-]+)*@[\da-z]+(?:[.-][\da-z]+)*\.[a-z]{2,}$/iu;
12
+ const emailRegex = /^[a-zA-Z0-9]([a-zA-Z0-9._+-]*[a-zA-Z0-9])?@[a-zA-Z0-9]([a-zA-Z0-9.-]*[a-zA-Z0-9])?\.[a-zA-Z]{2,}$/;
13
13
  return {
14
14
  type: "string",
15
15
  message,
16
- validate: (value) => emailRegex.test(value),
16
+ validate: (value) => {
17
+ // Check for consecutive dots
18
+ if (value.includes("..")) {
19
+ return false;
20
+ }
21
+ // Check for leading/trailing dots in local part
22
+ const [localPart, domainPart] = value.split("@");
23
+ if (!(localPart && domainPart)) {
24
+ return false;
25
+ }
26
+ if (localPart.startsWith(".") || localPart.endsWith(".")) {
27
+ return false;
28
+ }
29
+ if (domainPart.startsWith(".") || domainPart.endsWith(".")) {
30
+ return false;
31
+ }
32
+ // Use regex for final validation
33
+ return emailRegex.test(value);
34
+ },
17
35
  };
18
36
  };
19
37
  //# sourceMappingURL=email.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"email.js","sourceRoot":"","sources":["../../../src/Validate/string/email.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;;GAIG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,OAAgB,EAA8B,EAAE;IACpE,kDAAkD;IAClD,MAAM,UAAU,GACd,gEAAgE,CAAC;IACnE,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,OAAO;QACP,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;KAC5C,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"email.js","sourceRoot":"","sources":["../../../src/Validate/string/email.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;;GAIG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,OAAgB,EAA8B,EAAE;IACpE,kDAAkD;IAClD,MAAM,UAAU,GACd,mGAAmG,CAAC;IACtG,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,OAAO;QACP,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;YAClB,6BAA6B;YAC7B,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,OAAO,KAAK,CAAC;YACf,CAAC;YACD,gDAAgD;YAChD,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACjD,IAAI,CAAC,CAAC,SAAS,IAAI,UAAU,CAAC,EAAE,CAAC;gBAC/B,OAAO,KAAK,CAAC;YACf,CAAC;YACD,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzD,OAAO,KAAK,CAAC;YACf,CAAC;YACD,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3D,OAAO,KAAK,CAAC;YACf,CAAC;YACD,iCAAiC;YACjC,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -4,6 +4,10 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.generateNumberArray = void 0;
7
+ var _addition = require("@/Math/addition");
8
+ var _division = require("@/Math/division");
9
+ var _multiplication = require("@/Math/multiplication");
10
+ var _subtract = require("@/Math/subtract");
7
11
  /**
8
12
  * Generates an array of numbers with the specified length
9
13
  * @param length The length of the array
@@ -16,28 +20,30 @@ exports.generateNumberArray = void 0;
16
20
  */
17
21
  var generateNumberArray = exports.generateNumberArray = function generateNumberArray(length) {
18
22
  var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
19
- var max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : length - 1;
23
+ var max = arguments.length > 2 ? arguments[2] : undefined;
20
24
  var random = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
21
- if (length <= 0) {
25
+ var actualLength = Math.floor(length);
26
+ var actualMax = max !== null && max !== void 0 ? max : actualLength - 1;
27
+ if (actualLength <= 0) {
22
28
  return [];
23
29
  }
24
- if (min > max) {
30
+ if (min > actualMax) {
25
31
  throw new Error("min should be less than or equal to max");
26
32
  }
27
- if (length === 1) {
33
+ if (actualLength === 1) {
28
34
  return [min];
29
35
  }
30
36
  if (random) {
31
37
  return Array.from({
32
- length: length
38
+ length: actualLength
33
39
  }, function () {
34
- return Math.floor(Math.random() * (max - min + 1)) + min;
40
+ return (0, _addition.addition)(Math.floor((0, _multiplication.multiplication)(Math.random(), (0, _addition.addition)((0, _subtract.subtract)(actualMax, min), 1))), min);
35
41
  });
36
42
  }
37
- var step = (max - min) / (length - 1);
43
+ var step = (0, _division.division)((0, _subtract.subtract)(actualMax, min), (0, _subtract.subtract)(actualLength, 1));
38
44
  return Array.from({
39
- length: length
45
+ length: actualLength
40
46
  }, function (_, index) {
41
- return min + index * step;
47
+ return (0, _addition.addition)(min, (0, _multiplication.multiplication)(index, step));
42
48
  });
43
49
  };
@@ -4,6 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.getArraysCommon = void 0;
7
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
8
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
9
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
7
10
  /**
8
11
  * Extract common elements from multiple arrays
9
12
  * @param {T[]} array The first array
@@ -15,10 +18,42 @@ var getArraysCommon = exports.getArraysCommon = function getArraysCommon(array)
15
18
  for (var _len = arguments.length, arrays = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
16
19
  arrays[_key - 1] = arguments[_key];
17
20
  }
18
- var result = [array].concat(arrays).reduce(function (previous, current) {
19
- return previous.filter(function (item) {
20
- return current.includes(item);
21
+ if (arrays.length === 0) {
22
+ return array;
23
+ }
24
+ var result = array.filter(function (item) {
25
+ // Handle NaN specially since NaN !== NaN
26
+ if (Number.isNaN(item)) {
27
+ return arrays.every(function (currentArray) {
28
+ return currentArray.some(function (arrayItem) {
29
+ return Number.isNaN(arrayItem);
30
+ });
31
+ });
32
+ }
33
+ return arrays.every(function (currentArray) {
34
+ return currentArray.includes(item);
21
35
  });
22
36
  });
23
- return result;
37
+ var uniqueResult = [];
38
+ var _iterator = _createForOfIteratorHelper(result),
39
+ _step;
40
+ try {
41
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
42
+ var item = _step.value;
43
+ if (Number.isNaN(item)) {
44
+ if (!uniqueResult.some(function (existing) {
45
+ return Number.isNaN(existing);
46
+ })) {
47
+ uniqueResult.push(item);
48
+ }
49
+ } else if (!uniqueResult.includes(item)) {
50
+ uniqueResult.push(item);
51
+ }
52
+ }
53
+ } catch (err) {
54
+ _iterator.e(err);
55
+ } finally {
56
+ _iterator.f();
57
+ }
58
+ return uniqueResult;
24
59
  };
@@ -20,7 +20,7 @@ var groupBy = exports.groupBy = function groupBy(array, iteratee) {
20
20
  for (var index = 0; index < length; index++) {
21
21
  var value = array[index];
22
22
  var key = iteratee(value, index, array);
23
- // biome-ignore lint/suspicious/noAssignInExpressions: <explanation>
23
+ // biome-ignore lint/suspicious/noAssignInExpressions: ignore
24
24
  (result[key] || (result[key] = [])).push(value);
25
25
  }
26
26
  return result;
@@ -21,5 +21,7 @@ export * from "./shuffle2DArray";
21
21
  export * from "./sum";
22
22
  export * from "./timSort";
23
23
  export * from "./ultraNumberSort";
24
+ export * from "./uniqBy";
25
+ export * from "./unique";
24
26
  export * from "./zip";
25
27
  export * from "./zipLongest";
@@ -256,6 +256,28 @@ Object.keys(_ultraNumberSort).forEach(function (key) {
256
256
  }
257
257
  });
258
258
  });
259
+ var _uniqBy = require("./uniqBy");
260
+ Object.keys(_uniqBy).forEach(function (key) {
261
+ if (key === "default" || key === "__esModule") return;
262
+ if (key in exports && exports[key] === _uniqBy[key]) return;
263
+ Object.defineProperty(exports, key, {
264
+ enumerable: true,
265
+ get: function get() {
266
+ return _uniqBy[key];
267
+ }
268
+ });
269
+ });
270
+ var _unique = require("./unique");
271
+ Object.keys(_unique).forEach(function (key) {
272
+ if (key === "default" || key === "__esModule") return;
273
+ if (key in exports && exports[key] === _unique[key]) return;
274
+ Object.defineProperty(exports, key, {
275
+ enumerable: true,
276
+ get: function get() {
277
+ return _unique[key];
278
+ }
279
+ });
280
+ });
259
281
  var _zip = require("./zip");
260
282
  Object.keys(_zip).forEach(function (key) {
261
283
  if (key === "default" || key === "__esModule") return;
@@ -41,7 +41,7 @@ var ultraNumberSort = exports.ultraNumberSort = function ultraNumberSort(array)
41
41
  var hasNaN = false;
42
42
  for (var index = 0; index < length; index++) {
43
43
  var value = array[index];
44
- // biome-ignore lint/suspicious/noSelfCompare: <explanation>
44
+ // biome-ignore lint/suspicious/noSelfCompare: ignore
45
45
  if (value !== value) {
46
46
  hasNaN = true;
47
47
  break;
@@ -132,7 +132,7 @@ var handleNaNSort = function handleNaNSort(array, ascending) {
132
132
  try {
133
133
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
134
134
  var element = _step.value;
135
- // biome-ignore lint/suspicious/noSelfCompare: <explanation>
135
+ // biome-ignore lint/suspicious/noSelfCompare: ignore
136
136
  if (element === element) {
137
137
  valid.push(element);
138
138
  } else {
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Removes duplicate values from an array based on a selector function
3
+ * @param array - The array to process
4
+ * @param selector - Function that returns the value to compare for uniqueness
5
+ * @returns A new array with unique values based on the selector
6
+ */
7
+ export declare const uniqBy: <T extends unknown[], K>(array: T, selector: (item: T[number]) => K) => T;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.uniqBy = void 0;
7
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
8
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
9
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
10
+ /**
11
+ * Removes duplicate values from an array based on a selector function
12
+ * @param array - The array to process
13
+ * @param selector - Function that returns the value to compare for uniqueness
14
+ * @returns A new array with unique values based on the selector
15
+ */
16
+ var uniqBy = exports.uniqBy = function uniqBy(array, selector) {
17
+ var seen = new Set();
18
+ var result = [];
19
+ var _iterator = _createForOfIteratorHelper(array),
20
+ _step;
21
+ try {
22
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
23
+ var item = _step.value;
24
+ var key = selector(item);
25
+ if (!seen.has(key)) {
26
+ seen.add(key);
27
+ result.push(item);
28
+ }
29
+ }
30
+ } catch (err) {
31
+ _iterator.e(err);
32
+ } finally {
33
+ _iterator.f();
34
+ }
35
+ return result;
36
+ };
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Removes duplicate values from an array
3
+ * @param array - The array to process
4
+ * @returns A new array with unique values
5
+ */
6
+ export declare const unique: <T>(array: T[]) => T[];
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.unique = void 0;
7
+ function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
8
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
9
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
10
+ function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
11
+ function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
12
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
13
+ /**
14
+ * Removes duplicate values from an array
15
+ * @param array - The array to process
16
+ * @returns A new array with unique values
17
+ */
18
+ var unique = exports.unique = function unique(array) {
19
+ return _toConsumableArray(new Set(array));
20
+ };
@@ -36,7 +36,7 @@ var rgbaToHsla = exports.rgbaToHsla = function rgbaToHsla(_ref) {
36
36
  var l = (0, _division.division)((0, _addition.addition)(max, min), 2);
37
37
  var s = diff === 0 ? 0 : (0, _division.division)(diff, (0, _subtract.subtract)(1, Math.abs((0, _subtract.subtract)((0, _addition.addition)(max, min), 1))));
38
38
  if (diff !== 0) {
39
- // biome-ignore lint/style/useDefaultSwitchClause: <explanation>
39
+ // biome-ignore lint/style/useDefaultSwitchClause: ignore
40
40
  switch (max) {
41
41
  case rPrime:
42
42
  {
@@ -19,7 +19,21 @@ var birthday = exports.birthday = function birthday(year, mon, day) {
19
19
  var timeDifference = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 9;
20
20
  var birthdayDate = new Date((0, _new.newDateInt)(year, mon, day));
21
21
  var nowTime = (0, _now.now)(timeDifference);
22
- var y = nowTime.getFullYear() - birthdayDate.getFullYear();
23
- var r = nowTime < (0, _new.newDateInt)(nowTime.getFullYear(), birthdayDate.getMonth() - 1, birthdayDate.getDay()) ? y - 1 : y;
24
- return year < 100 ? 1900 + y : r;
22
+ var currentYear = nowTime.getFullYear();
23
+ var birthYear = birthdayDate.getFullYear();
24
+
25
+ // Calculate base age
26
+ var age = currentYear - birthYear;
27
+
28
+ // Check if birthday hasn't occurred this year yet
29
+ var thisYearBirthday = new Date(currentYear, birthdayDate.getMonth(), birthdayDate.getDate());
30
+ if (nowTime < thisYearBirthday) {
31
+ age -= 1;
32
+ }
33
+
34
+ // Handle future birthdays (should return 0 or non-negative)
35
+ if (age < 0) {
36
+ return 0;
37
+ }
38
+ return age;
25
39
  };
@@ -15,5 +15,8 @@ exports.isLeapYear = void 0;
15
15
  * isLeapYear(2023); // Returns false (not divisible by 4)
16
16
  */
17
17
  var isLeapYear = exports.isLeapYear = function isLeapYear(year) {
18
+ if (!Number.isInteger(year)) {
19
+ return false;
20
+ }
18
21
  return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;
19
22
  };
@@ -1 +1,2 @@
1
+ export * from "./retry";
1
2
  export * from "./safeExecute";
@@ -3,6 +3,17 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ var _retry = require("./retry");
7
+ Object.keys(_retry).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _retry[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function get() {
13
+ return _retry[key];
14
+ }
15
+ });
16
+ });
6
17
  var _safeExecute = require("./safeExecute");
7
18
  Object.keys(_safeExecute).forEach(function (key) {
8
19
  if (key === "default" || key === "__esModule") return;
@@ -0,0 +1,37 @@
1
+ export interface RetryOptions {
2
+ retries?: number;
3
+ delay?: number;
4
+ shouldRetry?: (error: unknown) => boolean;
5
+ }
6
+ /**
7
+ * Retries a given async function with configurable retry logic
8
+ *
9
+ * @template T - The return type of the function
10
+ * @param function_ - The async function to retry
11
+ * @param options - Configuration options for retry behavior
12
+ * @param options.retries - Maximum number of retry attempts (default: 3)
13
+ * @param options.delay - Delay between retries in milliseconds (default: 1000)
14
+ * @param options.shouldRetry - Function to determine if an error should trigger a retry (default: always retry)
15
+ * @returns Promise that resolves with the function result or rejects with the final error
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * // Basic usage with default options
20
+ * const result = await retry(async () => {
21
+ * const response = await fetch('/api/data');
22
+ * if (!response.ok) throw new Error('Failed to fetch');
23
+ * return response.json();
24
+ * });
25
+ *
26
+ * // Custom retry configuration
27
+ * const result = await retry(
28
+ * () => riskyOperation(),
29
+ * {
30
+ * retries: 5,
31
+ * delay: 2000,
32
+ * shouldRetry: (error) => error instanceof NetworkError
33
+ * }
34
+ * );
35
+ * ```
36
+ */
37
+ export declare const retry: <T>(function_: () => Promise<T>, options?: RetryOptions) => Promise<T>;