umt 2.3.0 → 2.5.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 (382) hide show
  1. package/README.md +277 -16
  2. package/module/Array/chunk.js +5 -3
  3. package/module/Array/chunk.js.map +1 -1
  4. package/module/Array/dualPivotQuickSort.d.ts +1 -2
  5. package/module/Array/dualPivotQuickSort.js +5 -26
  6. package/module/Array/dualPivotQuickSort.js.map +1 -1
  7. package/module/Array/groupBy.js +8 -7
  8. package/module/Array/groupBy.js.map +1 -1
  9. package/module/Array/index.d.ts +1 -0
  10. package/module/Array/index.js +1 -0
  11. package/module/Array/index.js.map +1 -1
  12. package/module/Array/quickSort.js +7 -25
  13. package/module/Array/quickSort.js.map +1 -1
  14. package/module/Array/sortingHelpers/applyInsertionSortIfNeeded.d.ts +13 -0
  15. package/module/Array/sortingHelpers/applyInsertionSortIfNeeded.js +20 -0
  16. package/module/Array/sortingHelpers/applyInsertionSortIfNeeded.js.map +1 -0
  17. package/module/Array/sortingHelpers/rangeValidator.d.ts +17 -0
  18. package/module/Array/sortingHelpers/rangeValidator.js +26 -0
  19. package/module/Array/sortingHelpers/rangeValidator.js.map +1 -0
  20. package/module/Array/timSort.js +2 -20
  21. package/module/Array/timSort.js.map +1 -1
  22. package/module/Array/ultraNumberSort.d.ts +7 -0
  23. package/module/Array/ultraNumberSort.js +373 -0
  24. package/module/Array/ultraNumberSort.js.map +1 -0
  25. package/module/Tool/pipe.d.ts +1 -1
  26. package/module/Tool/pipe.js.map +1 -1
  27. package/module/Validate/object/core.d.ts +2 -6
  28. package/module/Validate/object/core.js.map +1 -1
  29. package/module/Validate/type.d.ts +1 -0
  30. package/module/es5/Array/chunk.js +5 -3
  31. package/module/es5/Array/dualPivotQuickSort.d.ts +1 -2
  32. package/module/es5/Array/dualPivotQuickSort.js +8 -28
  33. package/module/es5/Array/groupBy.js +8 -7
  34. package/module/es5/Array/index.d.ts +1 -0
  35. package/module/es5/Array/index.js +11 -0
  36. package/module/es5/Array/quickSort.js +10 -25
  37. package/module/es5/Array/sortingHelpers/applyInsertionSortIfNeeded.d.ts +13 -0
  38. package/module/es5/Array/sortingHelpers/applyInsertionSortIfNeeded.js +25 -0
  39. package/module/es5/Array/sortingHelpers/rangeValidator.d.ts +17 -0
  40. package/module/es5/Array/sortingHelpers/rangeValidator.js +35 -0
  41. package/module/es5/Array/timSort.js +2 -20
  42. package/module/es5/Array/ultraNumberSort.d.ts +7 -0
  43. package/module/es5/Array/ultraNumberSort.js +475 -0
  44. package/module/es5/Tool/pipe.d.ts +1 -1
  45. package/module/es5/Validate/object/core.d.ts +2 -6
  46. package/module/es5/Validate/type.d.ts +1 -0
  47. package/module/es5/tsconfig.tsbuildinfo +1 -1
  48. package/package.json +24 -20
  49. package/module/es5/tests/integration/Array/drop-and-first.test.d.ts +0 -1
  50. package/module/es5/tests/integration/Array/drop-and-first.test.js +0 -34
  51. package/module/es5/tests/integration/Tool/parseJson-and-Validate.test.d.ts +0 -1
  52. package/module/es5/tests/integration/Tool/parseJson-and-Validate.test.js +0 -80
  53. package/module/es5/tests/unit/Advance/rangeAdvance.test.d.ts +0 -1
  54. package/module/es5/tests/unit/Advance/rangeAdvance.test.js +0 -26
  55. package/module/es5/tests/unit/Array/arraysJoin.test.d.ts +0 -1
  56. package/module/es5/tests/unit/Array/arraysJoin.test.js +0 -19
  57. package/module/es5/tests/unit/Array/binarySearch.test.d.ts +0 -1
  58. package/module/es5/tests/unit/Array/binarySearch.test.js +0 -32
  59. package/module/es5/tests/unit/Array/checkFlagAlignment.test.d.ts +0 -1
  60. package/module/es5/tests/unit/Array/checkFlagAlignment.test.js +0 -206
  61. package/module/es5/tests/unit/Array/chunk.test.d.ts +0 -1
  62. package/module/es5/tests/unit/Array/chunk.test.js +0 -51
  63. package/module/es5/tests/unit/Array/compact.test.d.ts +0 -1
  64. package/module/es5/tests/unit/Array/compact.test.js +0 -53
  65. package/module/es5/tests/unit/Array/compareFunctionDefault.test.d.ts +0 -1
  66. package/module/es5/tests/unit/Array/compareFunctionDefault.test.js +0 -29
  67. package/module/es5/tests/unit/Array/drop.test.d.ts +0 -1
  68. package/module/es5/tests/unit/Array/drop.test.js +0 -84
  69. package/module/es5/tests/unit/Array/dualPivotQuickSort.test.d.ts +0 -1
  70. package/module/es5/tests/unit/Array/dualPivotQuickSort.test.js +0 -87
  71. package/module/es5/tests/unit/Array/first.test.d.ts +0 -1
  72. package/module/es5/tests/unit/Array/first.test.js +0 -28
  73. package/module/es5/tests/unit/Array/generateNumberArray.test.d.ts +0 -1
  74. package/module/es5/tests/unit/Array/generateNumberArray.test.js +0 -34
  75. package/module/es5/tests/unit/Array/getArraysCommon.test.d.ts +0 -1
  76. package/module/es5/tests/unit/Array/getArraysCommon.test.js +0 -40
  77. package/module/es5/tests/unit/Array/getArraysDiff.test.d.ts +0 -1
  78. package/module/es5/tests/unit/Array/getArraysDiff.test.js +0 -99
  79. package/module/es5/tests/unit/Array/groupBy.test.d.ts +0 -1
  80. package/module/es5/tests/unit/Array/groupBy.test.js +0 -87
  81. package/module/es5/tests/unit/Array/insertionSort.test.d.ts +0 -1
  82. package/module/es5/tests/unit/Array/insertionSort.test.js +0 -37
  83. package/module/es5/tests/unit/Array/mergeSort.test.d.ts +0 -1
  84. package/module/es5/tests/unit/Array/mergeSort.test.js +0 -49
  85. package/module/es5/tests/unit/Array/pop.test.d.ts +0 -1
  86. package/module/es5/tests/unit/Array/pop.test.js +0 -50
  87. package/module/es5/tests/unit/Array/quickSort.test.d.ts +0 -1
  88. package/module/es5/tests/unit/Array/quickSort.test.js +0 -118
  89. package/module/es5/tests/unit/Array/randomSelect.test.d.ts +0 -1
  90. package/module/es5/tests/unit/Array/randomSelect.test.js +0 -51
  91. package/module/es5/tests/unit/Array/range.test.d.ts +0 -1
  92. package/module/es5/tests/unit/Array/range.test.js +0 -42
  93. package/module/es5/tests/unit/Array/shuffle.test.d.ts +0 -1
  94. package/module/es5/tests/unit/Array/shuffle.test.js +0 -84
  95. package/module/es5/tests/unit/Array/shuffle2DArray.test.d.ts +0 -1
  96. package/module/es5/tests/unit/Array/shuffle2DArray.test.js +0 -90
  97. package/module/es5/tests/unit/Array/sum.test.d.ts +0 -1
  98. package/module/es5/tests/unit/Array/sum.test.js +0 -44
  99. package/module/es5/tests/unit/Array/timSort.test.d.ts +0 -1
  100. package/module/es5/tests/unit/Array/timSort.test.js +0 -128
  101. package/module/es5/tests/unit/Array/zip.test.d.ts +0 -1
  102. package/module/es5/tests/unit/Array/zip.test.js +0 -69
  103. package/module/es5/tests/unit/Array/zipLongest.test.d.ts +0 -1
  104. package/module/es5/tests/unit/Array/zipLongest.test.js +0 -74
  105. package/module/es5/tests/unit/Color/cmykToRgba.test.d.ts +0 -1
  106. package/module/es5/tests/unit/Color/cmykToRgba.test.js +0 -58
  107. package/module/es5/tests/unit/Color/hexaToRgba.test.d.ts +0 -1
  108. package/module/es5/tests/unit/Color/hexaToRgba.test.js +0 -115
  109. package/module/es5/tests/unit/Color/hslaToRgba.test.d.ts +0 -1
  110. package/module/es5/tests/unit/Color/hslaToRgba.test.js +0 -141
  111. package/module/es5/tests/unit/Color/rgbaToCmyk.test.d.ts +0 -1
  112. package/module/es5/tests/unit/Color/rgbaToCmyk.test.js +0 -139
  113. package/module/es5/tests/unit/Color/rgbaToHexA.test.d.ts +0 -1
  114. package/module/es5/tests/unit/Color/rgbaToHexA.test.js +0 -114
  115. package/module/es5/tests/unit/Color/rgbaToHsla.test.d.ts +0 -1
  116. package/module/es5/tests/unit/Color/rgbaToHsla.test.js +0 -190
  117. package/module/es5/tests/unit/Consts/clock.test.d.ts +0 -1
  118. package/module/es5/tests/unit/Consts/clock.test.js +0 -71
  119. package/module/es5/tests/unit/Consts/httpClientErrorStatus.test.d.ts +0 -1
  120. package/module/es5/tests/unit/Consts/httpClientErrorStatus.test.js +0 -33
  121. package/module/es5/tests/unit/Consts/httpInformationalStatus.test.d.ts +0 -1
  122. package/module/es5/tests/unit/Consts/httpInformationalStatus.test.js +0 -13
  123. package/module/es5/tests/unit/Consts/httpRedirectionStatus.test.d.ts +0 -1
  124. package/module/es5/tests/unit/Consts/httpRedirectionStatus.test.js +0 -16
  125. package/module/es5/tests/unit/Consts/httpServerErrorStatus.test.d.ts +0 -1
  126. package/module/es5/tests/unit/Consts/httpServerErrorStatus.test.js +0 -15
  127. package/module/es5/tests/unit/Consts/httpStatus.test.d.ts +0 -1
  128. package/module/es5/tests/unit/Consts/httpStatus.test.js +0 -82
  129. package/module/es5/tests/unit/Consts/httpSuccessStatus.test.d.ts +0 -1
  130. package/module/es5/tests/unit/Consts/httpSuccessStatus.test.js +0 -16
  131. package/module/es5/tests/unit/Date/birthday.test.d.ts +0 -1
  132. package/module/es5/tests/unit/Date/birthday.test.js +0 -31
  133. package/module/es5/tests/unit/Date/dateRange.test.d.ts +0 -1
  134. package/module/es5/tests/unit/Date/dateRange.test.js +0 -40
  135. package/module/es5/tests/unit/Date/dayOfWeek.test.d.ts +0 -1
  136. package/module/es5/tests/unit/Date/dayOfWeek.test.js +0 -39
  137. package/module/es5/tests/unit/Date/deleteSpace.test.d.ts +0 -1
  138. package/module/es5/tests/unit/Date/deleteSpace.test.js +0 -35
  139. package/module/es5/tests/unit/Date/format.test.d.ts +0 -1
  140. package/module/es5/tests/unit/Date/format.test.js +0 -50
  141. package/module/es5/tests/unit/Date/getDay.test.d.ts +0 -1
  142. package/module/es5/tests/unit/Date/getDay.test.js +0 -40
  143. package/module/es5/tests/unit/Date/getTimezoneOffsetString.test.d.ts +0 -1
  144. package/module/es5/tests/unit/Date/getTimezoneOffsetString.test.js +0 -26
  145. package/module/es5/tests/unit/Date/isLeapYear.test.d.ts +0 -1
  146. package/module/es5/tests/unit/Date/isLeapYear.test.js +0 -30
  147. package/module/es5/tests/unit/Date/new.test.d.ts +0 -1
  148. package/module/es5/tests/unit/Date/new.test.js +0 -39
  149. package/module/es5/tests/unit/Date/now.test.d.ts +0 -1
  150. package/module/es5/tests/unit/Date/now.test.js +0 -42
  151. package/module/es5/tests/unit/Error/safeExecute.test.d.ts +0 -1
  152. package/module/es5/tests/unit/Error/safeExecute.test.js +0 -75
  153. package/module/es5/tests/unit/Function/curry.test.d.ts +0 -1
  154. package/module/es5/tests/unit/Function/curry.test.js +0 -138
  155. package/module/es5/tests/unit/IP/cidrToLong.test.d.ts +0 -1
  156. package/module/es5/tests/unit/IP/cidrToLong.test.js +0 -32
  157. package/module/es5/tests/unit/IP/cidrToSubnetMask.test.d.ts +0 -1
  158. package/module/es5/tests/unit/IP/cidrToSubnetMask.test.js +0 -36
  159. package/module/es5/tests/unit/IP/getIpClass.test.d.ts +0 -1
  160. package/module/es5/tests/unit/IP/getIpClass.test.js +0 -36
  161. package/module/es5/tests/unit/IP/getNetworkAddress.test.d.ts +0 -1
  162. package/module/es5/tests/unit/IP/getNetworkAddress.test.js +0 -40
  163. package/module/es5/tests/unit/IP/ipToBinaryString.test.d.ts +0 -1
  164. package/module/es5/tests/unit/IP/ipToBinaryString.test.js +0 -46
  165. package/module/es5/tests/unit/IP/ipToLong.test.d.ts +0 -1
  166. package/module/es5/tests/unit/IP/ipToLong.test.js +0 -34
  167. package/module/es5/tests/unit/IP/isInRange.test.d.ts +0 -1
  168. package/module/es5/tests/unit/IP/isInRange.test.js +0 -82
  169. package/module/es5/tests/unit/IP/isPrivateIp.test.d.ts +0 -1
  170. package/module/es5/tests/unit/IP/isPrivateIp.test.js +0 -26
  171. package/module/es5/tests/unit/IP/longToIp.test.d.ts +0 -1
  172. package/module/es5/tests/unit/IP/longToIp.test.js +0 -39
  173. package/module/es5/tests/unit/IP/subnetMaskToCidr.test.d.ts +0 -1
  174. package/module/es5/tests/unit/IP/subnetMaskToCidr.test.js +0 -41
  175. package/module/es5/tests/unit/Math/addition.test.d.ts +0 -1
  176. package/module/es5/tests/unit/Math/addition.test.js +0 -79
  177. package/module/es5/tests/unit/Math/average.test.d.ts +0 -1
  178. package/module/es5/tests/unit/Math/average.test.js +0 -48
  179. package/module/es5/tests/unit/Math/bitwise.test.d.ts +0 -1
  180. package/module/es5/tests/unit/Math/bitwise.test.js +0 -62
  181. package/module/es5/tests/unit/Math/calculator/calculator.test.d.ts +0 -1
  182. package/module/es5/tests/unit/Math/calculator/calculator.test.js +0 -76
  183. package/module/es5/tests/unit/Math/calculator/calculatorInitialization.test.d.ts +0 -1
  184. package/module/es5/tests/unit/Math/calculator/calculatorInitialization.test.js +0 -21
  185. package/module/es5/tests/unit/Math/calculator/convertCurrency.test.d.ts +0 -1
  186. package/module/es5/tests/unit/Math/calculator/convertCurrency.test.js +0 -40
  187. package/module/es5/tests/unit/Math/calculator/literalExpression.test.d.ts +0 -1
  188. package/module/es5/tests/unit/Math/calculator/literalExpression.test.js +0 -51
  189. package/module/es5/tests/unit/Math/degToRad.test.d.ts +0 -1
  190. package/module/es5/tests/unit/Math/degToRad.test.js +0 -50
  191. package/module/es5/tests/unit/Math/deviationValue.test.d.ts +0 -1
  192. package/module/es5/tests/unit/Math/deviationValue.test.js +0 -30
  193. package/module/es5/tests/unit/Math/division.test.d.ts +0 -1
  194. package/module/es5/tests/unit/Math/division.test.js +0 -81
  195. package/module/es5/tests/unit/Math/factorial.test.d.ts +0 -1
  196. package/module/es5/tests/unit/Math/factorial.test.js +0 -26
  197. package/module/es5/tests/unit/Math/factorize.test.d.ts +0 -1
  198. package/module/es5/tests/unit/Math/factorize.test.js +0 -38
  199. package/module/es5/tests/unit/Math/flexibleNumberConversion.test.d.ts +0 -1
  200. package/module/es5/tests/unit/Math/flexibleNumberConversion.test.js +0 -195
  201. package/module/es5/tests/unit/Math/gcd.test.d.ts +0 -1
  202. package/module/es5/tests/unit/Math/gcd.test.js +0 -35
  203. package/module/es5/tests/unit/Math/getDecimalLength.test.d.ts +0 -1
  204. package/module/es5/tests/unit/Math/getDecimalLength.test.js +0 -44
  205. package/module/es5/tests/unit/Math/lcm.test.d.ts +0 -1
  206. package/module/es5/tests/unit/Math/lcm.test.js +0 -43
  207. package/module/es5/tests/unit/Math/linearCongruentialGenerator.test.d.ts +0 -1
  208. package/module/es5/tests/unit/Math/linearCongruentialGenerator.test.js +0 -25
  209. package/module/es5/tests/unit/Math/mathConverter.test.d.ts +0 -1
  210. package/module/es5/tests/unit/Math/mathConverter.test.js +0 -37
  211. package/module/es5/tests/unit/Math/mathSeparator.test.d.ts +0 -1
  212. package/module/es5/tests/unit/Math/mathSeparator.test.js +0 -59
  213. package/module/es5/tests/unit/Math/max.test.d.ts +0 -1
  214. package/module/es5/tests/unit/Math/max.test.js +0 -22
  215. package/module/es5/tests/unit/Math/median.test.d.ts +0 -1
  216. package/module/es5/tests/unit/Math/median.test.js +0 -17
  217. package/module/es5/tests/unit/Math/min.test.d.ts +0 -1
  218. package/module/es5/tests/unit/Math/min.test.js +0 -22
  219. package/module/es5/tests/unit/Math/multiples.test.d.ts +0 -1
  220. package/module/es5/tests/unit/Math/multiples.test.js +0 -30
  221. package/module/es5/tests/unit/Math/multiplication.test.d.ts +0 -1
  222. package/module/es5/tests/unit/Math/multiplication.test.js +0 -48
  223. package/module/es5/tests/unit/Math/nCr.test.d.ts +0 -1
  224. package/module/es5/tests/unit/Math/nCr.test.js +0 -34
  225. package/module/es5/tests/unit/Math/nHr.test.d.ts +0 -1
  226. package/module/es5/tests/unit/Math/nHr.test.js +0 -35
  227. package/module/es5/tests/unit/Math/nPr.test.d.ts +0 -1
  228. package/module/es5/tests/unit/Math/nPr.test.js +0 -38
  229. package/module/es5/tests/unit/Math/primeFactorization.test.d.ts +0 -1
  230. package/module/es5/tests/unit/Math/primeFactorization.test.js +0 -84
  231. package/module/es5/tests/unit/Math/quotient.test.d.ts +0 -1
  232. package/module/es5/tests/unit/Math/quotient.test.js +0 -36
  233. package/module/es5/tests/unit/Math/radToDeg.test.d.ts +0 -1
  234. package/module/es5/tests/unit/Math/radToDeg.test.js +0 -50
  235. package/module/es5/tests/unit/Math/random.test.d.ts +0 -1
  236. package/module/es5/tests/unit/Math/random.test.js +0 -61
  237. package/module/es5/tests/unit/Math/reduce.test.d.ts +0 -1
  238. package/module/es5/tests/unit/Math/reduce.test.js +0 -93
  239. package/module/es5/tests/unit/Math/repeatedTrial.test.d.ts +0 -1
  240. package/module/es5/tests/unit/Math/repeatedTrial.test.js +0 -39
  241. package/module/es5/tests/unit/Math/roundOf.test.d.ts +0 -1
  242. package/module/es5/tests/unit/Math/roundOf.test.js +0 -40
  243. package/module/es5/tests/unit/Math/solveEquation.test.d.ts +0 -1
  244. package/module/es5/tests/unit/Math/solveEquation.test.js +0 -24
  245. package/module/es5/tests/unit/Math/standardDeviation.test.d.ts +0 -1
  246. package/module/es5/tests/unit/Math/standardDeviation.test.js +0 -23
  247. package/module/es5/tests/unit/Math/subtract.test.d.ts +0 -1
  248. package/module/es5/tests/unit/Math/subtract.test.js +0 -46
  249. package/module/es5/tests/unit/Math/toBaseN.test.d.ts +0 -1
  250. package/module/es5/tests/unit/Math/toBaseN.test.js +0 -40
  251. package/module/es5/tests/unit/Math/toCelsius.test.d.ts +0 -1
  252. package/module/es5/tests/unit/Math/toCelsius.test.js +0 -18
  253. package/module/es5/tests/unit/Math/toKelvin.test.d.ts +0 -1
  254. package/module/es5/tests/unit/Math/toKelvin.test.js +0 -18
  255. package/module/es5/tests/unit/Math/uuidv7.test.d.ts +0 -1
  256. package/module/es5/tests/unit/Math/uuidv7.test.js +0 -33
  257. package/module/es5/tests/unit/Math/valueSwap.test.d.ts +0 -1
  258. package/module/es5/tests/unit/Math/valueSwap.test.js +0 -28
  259. package/module/es5/tests/unit/Math/xoshiro256.test.d.ts +0 -1
  260. package/module/es5/tests/unit/Math/xoshiro256.test.js +0 -33
  261. package/module/es5/tests/unit/Object/has.test.d.ts +0 -1
  262. package/module/es5/tests/unit/Object/has.test.js +0 -60
  263. package/module/es5/tests/unit/Object/keyBy.test.d.ts +0 -1
  264. package/module/es5/tests/unit/Object/keyBy.test.js +0 -120
  265. package/module/es5/tests/unit/Object/pick.test.d.ts +0 -1
  266. package/module/es5/tests/unit/Object/pick.test.js +0 -109
  267. package/module/es5/tests/unit/Object/pickDeep.test.d.ts +0 -1
  268. package/module/es5/tests/unit/Object/pickDeep.test.js +0 -222
  269. package/module/es5/tests/unit/Simple/Array/quickSortSimple.test.d.ts +0 -1
  270. package/module/es5/tests/unit/Simple/Array/quickSortSimple.test.js +0 -18
  271. package/module/es5/tests/unit/Simple/Date/dayOfWeekSimple.test.d.ts +0 -1
  272. package/module/es5/tests/unit/Simple/Date/dayOfWeekSimple.test.js +0 -58
  273. package/module/es5/tests/unit/Simple/Math/deviationValueSimple.test.d.ts +0 -1
  274. package/module/es5/tests/unit/Simple/Math/deviationValueSimple.test.js +0 -43
  275. package/module/es5/tests/unit/String/deleteSpaces.test.d.ts +0 -1
  276. package/module/es5/tests/unit/String/deleteSpaces.test.js +0 -22
  277. package/module/es5/tests/unit/String/formatString.test.d.ts +0 -1
  278. package/module/es5/tests/unit/String/formatString.test.js +0 -47
  279. package/module/es5/tests/unit/String/fromBase64.test.d.ts +0 -1
  280. package/module/es5/tests/unit/String/fromBase64.test.js +0 -37
  281. package/module/es5/tests/unit/String/hasNoLetters.test.d.ts +0 -1
  282. package/module/es5/tests/unit/String/hasNoLetters.test.js +0 -29
  283. package/module/es5/tests/unit/String/padEnd.test.d.ts +0 -1
  284. package/module/es5/tests/unit/String/padEnd.test.js +0 -22
  285. package/module/es5/tests/unit/String/padStart.test.d.ts +0 -1
  286. package/module/es5/tests/unit/String/padStart.test.js +0 -40
  287. package/module/es5/tests/unit/String/randomString.test.d.ts +0 -1
  288. package/module/es5/tests/unit/String/randomString.test.js +0 -21
  289. package/module/es5/tests/unit/String/randomStringInitialization.test.d.ts +0 -1
  290. package/module/es5/tests/unit/String/randomStringInitialization.test.js +0 -25
  291. package/module/es5/tests/unit/String/reverseString.test.d.ts +0 -1
  292. package/module/es5/tests/unit/String/reverseString.test.js +0 -35
  293. package/module/es5/tests/unit/String/toBase64.test.d.ts +0 -1
  294. package/module/es5/tests/unit/String/toBase64.test.js +0 -20
  295. package/module/es5/tests/unit/String/toHalfWidth.test.d.ts +0 -1
  296. package/module/es5/tests/unit/String/toHalfWidth.test.js +0 -16
  297. package/module/es5/tests/unit/String/trimCharacters.test.d.ts +0 -1
  298. package/module/es5/tests/unit/String/trimCharacters.test.js +0 -17
  299. package/module/es5/tests/unit/String/trimEndCharacters.test.d.ts +0 -1
  300. package/module/es5/tests/unit/String/trimEndCharacters.test.js +0 -33
  301. package/module/es5/tests/unit/String/trimStartCharacters.test.d.ts +0 -1
  302. package/module/es5/tests/unit/String/trimStartCharacters.test.js +0 -33
  303. package/module/es5/tests/unit/Time/convertTime.test.d.ts +0 -1
  304. package/module/es5/tests/unit/Time/convertTime.test.js +0 -135
  305. package/module/es5/tests/unit/Time/normalizeTimeUnit.test.d.ts +0 -1
  306. package/module/es5/tests/unit/Time/normalizeTimeUnit.test.js +0 -29
  307. package/module/es5/tests/unit/Tool/createPipeline.test.d.ts +0 -1
  308. package/module/es5/tests/unit/Tool/createPipeline.test.js +0 -184
  309. package/module/es5/tests/unit/Tool/parseJson.test.d.ts +0 -1
  310. package/module/es5/tests/unit/Tool/parseJson.test.js +0 -46
  311. package/module/es5/tests/unit/Tool/pipe.test.d.ts +0 -1
  312. package/module/es5/tests/unit/Tool/pipe.test.js +0 -445
  313. package/module/es5/tests/unit/UA/extractBrowserFromUserAgent.test.d.ts +0 -1
  314. package/module/es5/tests/unit/UA/extractBrowserFromUserAgent.test.js +0 -47
  315. package/module/es5/tests/unit/UA/extractDeviceFromUserAgent.test.d.ts +0 -1
  316. package/module/es5/tests/unit/UA/extractDeviceFromUserAgent.test.js +0 -55
  317. package/module/es5/tests/unit/UA/extractOsFromUserAgent.test.d.ts +0 -1
  318. package/module/es5/tests/unit/UA/extractOsFromUserAgent.test.js +0 -57
  319. package/module/es5/tests/unit/UA/parseUserAgent.test.d.ts +0 -1
  320. package/module/es5/tests/unit/UA/parseUserAgent.test.js +0 -95
  321. package/module/es5/tests/unit/Unit/unitConverterInitialization.test.d.ts +0 -1
  322. package/module/es5/tests/unit/Unit/unitConverterInitialization.test.js +0 -40
  323. package/module/es5/tests/unit/Validate/array/core.test.d.ts +0 -1
  324. package/module/es5/tests/unit/Validate/array/core.test.js +0 -86
  325. package/module/es5/tests/unit/Validate/boolean/core.test.d.ts +0 -1
  326. package/module/es5/tests/unit/Validate/boolean/core.test.js +0 -29
  327. package/module/es5/tests/unit/Validate/core/core.test.d.ts +0 -1
  328. package/module/es5/tests/unit/Validate/core/core.test.js +0 -87
  329. package/module/es5/tests/unit/Validate/isArray.test.d.ts +0 -1
  330. package/module/es5/tests/unit/Validate/isArray.test.js +0 -36
  331. package/module/es5/tests/unit/Validate/isDictionaryObject.test.d.ts +0 -1
  332. package/module/es5/tests/unit/Validate/isDictionaryObject.test.js +0 -62
  333. package/module/es5/tests/unit/Validate/isDouble.test.d.ts +0 -1
  334. package/module/es5/tests/unit/Validate/isDouble.test.js +0 -47
  335. package/module/es5/tests/unit/Validate/isEqual.test.d.ts +0 -1
  336. package/module/es5/tests/unit/Validate/isEqual.test.js +0 -74
  337. package/module/es5/tests/unit/Validate/isNotEmpty.test.d.ts +0 -1
  338. package/module/es5/tests/unit/Validate/isNotEmpty.test.js +0 -43
  339. package/module/es5/tests/unit/Validate/isNumber.test.d.ts +0 -1
  340. package/module/es5/tests/unit/Validate/isNumber.test.js +0 -77
  341. package/module/es5/tests/unit/Validate/isPerfectSquare.test.d.ts +0 -1
  342. package/module/es5/tests/unit/Validate/isPerfectSquare.test.js +0 -27
  343. package/module/es5/tests/unit/Validate/isPrimeNumber.test.d.ts +0 -1
  344. package/module/es5/tests/unit/Validate/isPrimeNumber.test.js +0 -51
  345. package/module/es5/tests/unit/Validate/isValueNaN.test.d.ts +0 -1
  346. package/module/es5/tests/unit/Validate/isValueNaN.test.js +0 -54
  347. package/module/es5/tests/unit/Validate/number/core.test.d.ts +0 -1
  348. package/module/es5/tests/unit/Validate/number/core.test.js +0 -36
  349. package/module/es5/tests/unit/Validate/number/double.test.d.ts +0 -1
  350. package/module/es5/tests/unit/Validate/number/double.test.js +0 -23
  351. package/module/es5/tests/unit/Validate/number/even.test.d.ts +0 -1
  352. package/module/es5/tests/unit/Validate/number/even.test.js +0 -23
  353. package/module/es5/tests/unit/Validate/number/maxValue.test.d.ts +0 -1
  354. package/module/es5/tests/unit/Validate/number/maxValue.test.js +0 -20
  355. package/module/es5/tests/unit/Validate/number/minValue.test.d.ts +0 -1
  356. package/module/es5/tests/unit/Validate/number/minValue.test.js +0 -20
  357. package/module/es5/tests/unit/Validate/number/odd.test.d.ts +0 -1
  358. package/module/es5/tests/unit/Validate/number/odd.test.js +0 -23
  359. package/module/es5/tests/unit/Validate/number/prime.test.d.ts +0 -1
  360. package/module/es5/tests/unit/Validate/number/prime.test.js +0 -25
  361. package/module/es5/tests/unit/Validate/object/core.test.d.ts +0 -1
  362. package/module/es5/tests/unit/Validate/object/core.test.js +0 -79
  363. package/module/es5/tests/unit/Validate/string/core.test.d.ts +0 -1
  364. package/module/es5/tests/unit/Validate/string/core.test.js +0 -27
  365. package/module/es5/tests/unit/Validate/string/email.test.d.ts +0 -1
  366. package/module/es5/tests/unit/Validate/string/email.test.js +0 -21
  367. package/module/es5/tests/unit/Validate/string/length.test.d.ts +0 -1
  368. package/module/es5/tests/unit/Validate/string/length.test.js +0 -18
  369. package/module/es5/tests/unit/Validate/string/maxLength.test.d.ts +0 -1
  370. package/module/es5/tests/unit/Validate/string/maxLength.test.js +0 -18
  371. package/module/es5/tests/unit/Validate/string/minLength.test.d.ts +0 -1
  372. package/module/es5/tests/unit/Validate/string/minLength.test.js +0 -18
  373. package/module/es5/tests/unit/Validate/string/numberString.test.d.ts +0 -1
  374. package/module/es5/tests/unit/Validate/string/numberString.test.js +0 -22
  375. package/module/es5/tests/unit/Validate/string/regexMatch.test.d.ts +0 -1
  376. package/module/es5/tests/unit/Validate/string/regexMatch.test.js +0 -29
  377. package/module/es5/tests/unit/Validate/string/uuid.test.d.ts +0 -1
  378. package/module/es5/tests/unit/Validate/string/uuid.test.js +0 -72
  379. package/module/es5/tests/unit/types/arrayType.test.d.ts +0 -1
  380. package/module/es5/tests/unit/types/arrayType.test.js +0 -11
  381. package/module/es5/tests/unit/types/clockType.test.d.ts +0 -1
  382. package/module/es5/tests/unit/types/clockType.test.js +0 -37
@@ -0,0 +1,17 @@
1
+ export interface ValidatedSortRange {
2
+ startIndex: number;
3
+ endIndex: number;
4
+ shouldSort: boolean;
5
+ }
6
+ /**
7
+ * Validates and adjusts the start and end indices for an operation on an array.
8
+ * Ensures indices are within the bounds of the array.
9
+ *
10
+ * @template T The type of elements in the array.
11
+ * @param {T[]} array The array.
12
+ * @param {number} startIndex The desired starting index.
13
+ * @param {number} endIndex The desired ending index.
14
+ * @returns {ValidatedSortRange} An object containing the validated start index, end index,
15
+ * and a boolean indicating if the operation should proceed on the range.
16
+ */
17
+ export declare const validateRange: <T>(array: T[], startIndex: number, endIndex: number) => ValidatedSortRange;
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Validates and adjusts the start and end indices for an operation on an array.
3
+ * Ensures indices are within the bounds of the array.
4
+ *
5
+ * @template T The type of elements in the array.
6
+ * @param {T[]} array The array.
7
+ * @param {number} startIndex The desired starting index.
8
+ * @param {number} endIndex The desired ending index.
9
+ * @returns {ValidatedSortRange} An object containing the validated start index, end index,
10
+ * and a boolean indicating if the operation should proceed on the range.
11
+ */
12
+ export const validateRange = (array, startIndex, endIndex) => {
13
+ const length = array.length;
14
+ // Handle empty arrays early
15
+ if (length === 0) {
16
+ return { startIndex: 0, endIndex: -1, shouldSort: false };
17
+ }
18
+ const validatedStartIndex = Math.max(0, Math.min(startIndex, length - 1));
19
+ const validatedEndIndex = Math.max(validatedStartIndex, Math.min(endIndex, length - 1));
20
+ return {
21
+ startIndex: validatedStartIndex,
22
+ endIndex: validatedEndIndex,
23
+ shouldSort: validatedEndIndex >= validatedStartIndex,
24
+ };
25
+ };
26
+ //# sourceMappingURL=rangeValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rangeValidator.js","sourceRoot":"","sources":["../../../src/Array/sortingHelpers/rangeValidator.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,KAAU,EACV,UAAkB,EAClB,QAAgB,EACI,EAAE;IACtB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,4BAA4B;IAC5B,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;QACjB,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAC5D,CAAC;IAED,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1E,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAChC,mBAAmB,EACnB,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC,CAC/B,CAAC;IAEF,OAAO;QACL,UAAU,EAAE,mBAAmB;QAC/B,QAAQ,EAAE,iBAAiB;QAC3B,UAAU,EAAE,iBAAiB,IAAI,mBAAmB;KACrD,CAAC;AACJ,CAAC,CAAC"}
@@ -1,24 +1,6 @@
1
1
  import { compareFunctionDefault } from "./compareFunctionDefault";
2
+ import { insertionSort } from "../Array/insertionSort";
2
3
  const MIN_RUN = 32;
3
- /**
4
- * Sorts a portion of the array using insertion sort algorithm
5
- * @param array Array to sort
6
- * @param start Starting index of the range to sort
7
- * @param end Ending index of the range to sort
8
- * @param compareFunction Function to compare elements
9
- */
10
- const insertionSort = (array, start, end, compareFunction) => {
11
- for (let index = start + 1; index <= end; index++) {
12
- const temporary = array[index];
13
- let currentIndex = index - 1;
14
- while (currentIndex >= start &&
15
- compareFunction(array[currentIndex], temporary) > 0) {
16
- array[currentIndex + 1] = array[currentIndex];
17
- currentIndex--;
18
- }
19
- array[currentIndex + 1] = temporary;
20
- }
21
- };
22
4
  /**
23
5
  * Merges two sorted portions of the array
24
6
  * @param array Array containing the portions to merge
@@ -89,7 +71,7 @@ export const timSort = (array, compareFunction = (compareFunctionDefault), start
89
71
  const n = end - start + 1;
90
72
  const minRun = getMinRunLength(n);
91
73
  for (let index = start; index <= end; index += minRun) {
92
- insertionSort(array, index, Math.min(index + MIN_RUN - 1, end), compareFunction);
74
+ insertionSort(array, compareFunction, index, Math.min(index + MIN_RUN - 1, end));
93
75
  }
94
76
  for (let size = minRun; size < n; size *= 2) {
95
77
  for (let left = start; left <= end; left += 2 * size) {
@@ -1 +1 @@
1
- {"version":3,"file":"timSort.js","sourceRoot":"","sources":["../../src/Array/timSort.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"timSort.js","sourceRoot":"","sources":["../../src/Array/timSort.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Ultra-fast sorting specifically optimized for number arrays
3
+ * @param array Array of numbers to sort
4
+ * @param ascending Sort in ascending order if true, descending if false
5
+ * @returns Sorted array
6
+ */
7
+ export declare const ultraNumberSort: (array: number[], ascending?: boolean) => number[];
@@ -0,0 +1,373 @@
1
+ /**
2
+ * Ultra-fast sorting specifically optimized for number arrays
3
+ * @param array Array of numbers to sort
4
+ * @param ascending Sort in ascending order if true, descending if false
5
+ * @returns Sorted array
6
+ */
7
+ export const ultraNumberSort = (array, ascending = true) => {
8
+ const length = array.length;
9
+ if (length <= 1) {
10
+ return array;
11
+ }
12
+ // For tiny arrays, use optimized inline sort
13
+ if (length === 2) {
14
+ if (array[0] > array[1] === ascending) {
15
+ [array[0], array[1]] = [array[1], array[0]];
16
+ }
17
+ return array;
18
+ }
19
+ if (length === 3) {
20
+ inlineSort3(array, ascending);
21
+ return array;
22
+ }
23
+ // Check if all numbers are integers and find range
24
+ let allIntegers = true;
25
+ let min = array[0];
26
+ let max = array[0];
27
+ let hasNaN = false;
28
+ for (let index = 0; index < length; index++) {
29
+ const value = array[index];
30
+ // biome-ignore lint/suspicious/noSelfCompare: <explanation>
31
+ if (value !== value) {
32
+ hasNaN = true;
33
+ break;
34
+ }
35
+ if (value < min) {
36
+ min = value;
37
+ }
38
+ if (value > max) {
39
+ max = value;
40
+ }
41
+ if (allIntegers && value !== Math.floor(value)) {
42
+ allIntegers = false;
43
+ }
44
+ }
45
+ // Handle NaN values
46
+ if (hasNaN) {
47
+ return handleNaNSort(array, ascending);
48
+ }
49
+ // For small integer ranges, use counting sort
50
+ if (allIntegers && max - min < length * 2 && max - min < 1_000_000) {
51
+ return countingSort(array, min, max, ascending);
52
+ }
53
+ // For larger arrays, use radix sort if applicable
54
+ if (allIntegers && length > 100) {
55
+ return radixSort(array, ascending);
56
+ }
57
+ // Fall back to optimized quicksort for floating point
58
+ return numericQuickSort(array, 0, length - 1, ascending);
59
+ };
60
+ /**
61
+ * Inline sort for 3 elements
62
+ */
63
+ const inlineSort3 = (array, ascending) => {
64
+ let a = array[0];
65
+ let b = array[1];
66
+ let c = array[2];
67
+ if (ascending) {
68
+ if (a > b) {
69
+ [a, b] = [b, a];
70
+ }
71
+ if (b > c) {
72
+ [b, c] = [c, b];
73
+ if (a > b) {
74
+ [a, b] = [b, a];
75
+ }
76
+ }
77
+ }
78
+ else {
79
+ if (a < b) {
80
+ [a, b] = [b, a];
81
+ }
82
+ if (b < c) {
83
+ [b, c] = [c, b];
84
+ if (a < b) {
85
+ [a, b] = [b, a];
86
+ }
87
+ }
88
+ }
89
+ array[0] = a;
90
+ array[1] = b;
91
+ array[2] = c;
92
+ };
93
+ /**
94
+ * Handle arrays with NaN values
95
+ */
96
+ const handleNaNSort = (array, ascending) => {
97
+ const valid = [];
98
+ let nanCount = 0;
99
+ for (const element of array) {
100
+ // biome-ignore lint/suspicious/noSelfCompare: <explanation>
101
+ if (element === element) {
102
+ valid.push(element);
103
+ }
104
+ else {
105
+ nanCount++;
106
+ }
107
+ }
108
+ numericQuickSort(valid, 0, valid.length - 1, ascending);
109
+ // NaN values go to the end
110
+ for (let index = 0; index < nanCount; index++) {
111
+ valid.push(Number.NaN);
112
+ }
113
+ // Copy back
114
+ for (let index = 0; index < array.length; index++) {
115
+ array[index] = valid[index];
116
+ }
117
+ return array;
118
+ };
119
+ /**
120
+ * Counting sort for small integer ranges
121
+ */
122
+ const countingSort = (array, min, max, ascending) => {
123
+ const range = max - min + 1;
124
+ const count = new Uint32Array(range);
125
+ // Count occurrences
126
+ for (const element of array) {
127
+ count[element - min]++;
128
+ }
129
+ // Reconstruct array
130
+ let index = 0;
131
+ if (ascending) {
132
+ for (let index_ = 0; index_ < range; index_++) {
133
+ const cnt = count[index_];
134
+ const value = index_ + min;
135
+ for (let index_ = 0; index_ < cnt; index_++) {
136
+ array[index++] = value;
137
+ }
138
+ }
139
+ }
140
+ else {
141
+ for (let index_ = range - 1; index_ >= 0; index_--) {
142
+ const cnt = count[index_];
143
+ const value = index_ + min;
144
+ for (let index_ = 0; index_ < cnt; index_++) {
145
+ array[index++] = value;
146
+ }
147
+ }
148
+ }
149
+ return array;
150
+ };
151
+ /**
152
+ * Radix sort for integers
153
+ */
154
+ const radixSort = (array, ascending) => {
155
+ const length = array.length;
156
+ // Separate positive and negative numbers
157
+ const positive = [];
158
+ const negative = [];
159
+ let zeroCount = 0;
160
+ for (let index_ = 0; index_ < length; index_++) {
161
+ if (array[index_] > 0) {
162
+ positive.push(array[index_]);
163
+ }
164
+ else if (array[index_] < 0) {
165
+ negative.push(-array[index_]);
166
+ }
167
+ else {
168
+ zeroCount++;
169
+ }
170
+ }
171
+ // Sort positive numbers
172
+ if (positive.length > 0) {
173
+ radixSortPositive(positive);
174
+ }
175
+ // Sort negative numbers
176
+ if (negative.length > 0) {
177
+ radixSortPositive(negative);
178
+ }
179
+ // Merge results
180
+ let index = 0;
181
+ if (ascending) {
182
+ // Negative numbers first (in reverse order)
183
+ for (let index_ = negative.length - 1; index_ >= 0; index_--) {
184
+ array[index++] = -negative[index_];
185
+ }
186
+ // Zeros
187
+ for (let index_ = 0; index_ < zeroCount; index_++) {
188
+ array[index++] = 0;
189
+ }
190
+ // Positive numbers
191
+ for (const element of positive) {
192
+ array[index++] = element;
193
+ }
194
+ }
195
+ else {
196
+ // Positive numbers first (in reverse order)
197
+ for (let index_ = positive.length - 1; index_ >= 0; index_--) {
198
+ array[index++] = positive[index_];
199
+ }
200
+ // Zeros
201
+ for (let index_ = 0; index_ < zeroCount; index_++) {
202
+ array[index++] = 0;
203
+ }
204
+ // Negative numbers
205
+ for (const element of negative) {
206
+ array[index++] = -element;
207
+ }
208
+ }
209
+ return array;
210
+ };
211
+ /**
212
+ * Radix sort for positive integers
213
+ */
214
+ const radixSortPositive = (array) => {
215
+ const length = array.length;
216
+ if (length <= 1) {
217
+ return;
218
+ }
219
+ // Find maximum to determine number of digits
220
+ let max = array[0];
221
+ for (let index = 1; index < length; index++) {
222
+ if (array[index] > max) {
223
+ max = array[index];
224
+ }
225
+ }
226
+ // Use typed arrays for better performance
227
+ const output = new Float64Array(length);
228
+ const count = new Uint32Array(256);
229
+ // Process 8 bits at a time
230
+ for (let shift = 0; max >> shift > 0; shift += 8) {
231
+ // Reset count array
232
+ count.fill(0);
233
+ // Count occurrences
234
+ for (let index = 0; index < length; index++) {
235
+ const digit = (array[index] >> shift) & 0xff;
236
+ count[digit]++;
237
+ }
238
+ // Change count[i] to actual position
239
+ for (let index = 1; index < 256; index++) {
240
+ count[index] += count[index - 1];
241
+ }
242
+ // Build output array
243
+ for (let index = length - 1; index >= 0; index--) {
244
+ const digit = (array[index] >> shift) & 0xff;
245
+ output[--count[digit]] = array[index];
246
+ }
247
+ // Copy back
248
+ for (let index = 0; index < length; index++) {
249
+ array[index] = output[index];
250
+ }
251
+ }
252
+ };
253
+ /**
254
+ * Optimized quicksort for numbers
255
+ */
256
+ const numericQuickSort = (array, low, high, ascending) => {
257
+ const stack = [];
258
+ stack.push(low, high);
259
+ while (stack.length > 0) {
260
+ const h = stack.pop();
261
+ const l = stack.pop();
262
+ if (h === undefined || l === undefined || h <= l) {
263
+ continue;
264
+ }
265
+ // For small subarrays, use insertion sort
266
+ if (h - l < 16) {
267
+ numericInsertionSort(array, l, h, ascending);
268
+ continue;
269
+ }
270
+ // Partition
271
+ const pivot = numericPartition(array, l, h, ascending);
272
+ // Push larger partition first to limit stack depth
273
+ if (pivot - l > h - pivot) {
274
+ stack.push(l, pivot - 1, pivot + 1, h);
275
+ }
276
+ else {
277
+ stack.push(pivot + 1, h, l, pivot - 1);
278
+ }
279
+ }
280
+ return array;
281
+ };
282
+ /**
283
+ * Numeric insertion sort
284
+ */
285
+ const numericInsertionSort = (array, low, high, ascending) => {
286
+ if (ascending) {
287
+ for (let index = low + 1; index <= high; index++) {
288
+ const key = array[index];
289
+ let index_ = index - 1;
290
+ while (index_ >= low && array[index_] > key) {
291
+ array[index_ + 1] = array[index_];
292
+ index_--;
293
+ }
294
+ array[index_ + 1] = key;
295
+ }
296
+ }
297
+ else {
298
+ for (let index = low + 1; index <= high; index++) {
299
+ const key = array[index];
300
+ let index_ = index - 1;
301
+ while (index_ >= low && array[index_] < key) {
302
+ array[index_ + 1] = array[index_];
303
+ index_--;
304
+ }
305
+ array[index_ + 1] = key;
306
+ }
307
+ }
308
+ };
309
+ /**
310
+ * Numeric partition with median-of-three pivot
311
+ */
312
+ const numericPartition = (array, low, high, ascending) => {
313
+ // Median-of-three pivot selection
314
+ const mid = low + ((high - low) >> 1);
315
+ if (ascending) {
316
+ if (array[mid] < array[low]) {
317
+ [array[low], array[mid]] = [array[mid], array[low]];
318
+ }
319
+ if (array[high] < array[low]) {
320
+ [array[low], array[high]] = [array[high], array[low]];
321
+ }
322
+ if (array[high] < array[mid]) {
323
+ [array[mid], array[high]] = [array[high], array[mid]];
324
+ }
325
+ }
326
+ else {
327
+ if (array[mid] > array[low]) {
328
+ [array[low], array[mid]] = [array[mid], array[low]];
329
+ }
330
+ if (array[high] > array[low]) {
331
+ [array[low], array[high]] = [array[high], array[low]];
332
+ }
333
+ if (array[high] > array[mid]) {
334
+ [array[mid], array[high]] = [array[high], array[mid]];
335
+ }
336
+ }
337
+ // Move pivot to end-1
338
+ [array[mid], array[high - 1]] = [array[high - 1], array[mid]];
339
+ const pivot = array[high - 1];
340
+ let index = low;
341
+ let index_ = high - 1;
342
+ if (ascending) {
343
+ while (true) {
344
+ while (array[++index] < pivot) {
345
+ // Continue
346
+ }
347
+ while (array[--index_] > pivot) {
348
+ // Continue
349
+ }
350
+ if (index >= index_) {
351
+ break;
352
+ }
353
+ [array[index], array[index_]] = [array[index_], array[index]];
354
+ }
355
+ }
356
+ else {
357
+ while (true) {
358
+ while (array[++index] > pivot) {
359
+ // Continue
360
+ }
361
+ while (array[--index_] < pivot) {
362
+ // Continue
363
+ }
364
+ if (index >= index_) {
365
+ break;
366
+ }
367
+ [array[index], array[index_]] = [array[index_], array[index]];
368
+ }
369
+ }
370
+ [array[index], array[high - 1]] = [array[high - 1], array[index]];
371
+ return index;
372
+ };
373
+ //# sourceMappingURL=ultraNumberSort.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ultraNumberSort.js","sourceRoot":"","sources":["../../src/Array/ultraNumberSort.ts"],"names":[],"mappings":"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"}
@@ -51,7 +51,7 @@ export declare class Pipe<T> {
51
51
  * @param predicate Condition function that determines if value should be filtered
52
52
  * @returns New Pipe instance with Result containing filtered value or error
53
53
  */
54
- filterResult<U extends T>(predicate: (input: T) => input is U): Pipe<Result<U, Error>>;
54
+ filterResult<U extends T, E extends Error = Error>(predicate: (input: T) => input is U): Pipe<Result<U, E>>;
55
55
  /**
56
56
  * Terminates the pipeline and returns the final value
57
57
  * @returns Final result of the pipeline processing
@@ -1 +1 @@
1
- {"version":3,"file":"pipe.js","sourceRoot":"","sources":["../../src/Tool/pipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAe,MAAM,qBAAqB,CAAC;AAE/D;;;;GAIG;AACH,MAAM,OAAO,IAAI;IAIc;IAH7B;;OAEG;IACH,YAA6B,KAAQ;QAAR,UAAK,GAAL,KAAK,CAAG;IAAG,CAAC;IAEzC;;;;OAIG;IACH,GAAG,CAAI,SAA0B;QAC/B,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACzC,CAAC;IAED;;;;;OAKG;IACH,IAAI,CACF,SAAgC,EAChC,SAA0B;QAE1B,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1B,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAyB,CAAC,CAAC;IAC/C,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,SAA6B;QAC/B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,YAAY,CAAc,SAAmC;QAC3D,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;;OAMG;IACH,iBAAiB,CACf,SAAmC,EACnC,YAAe;QAEf,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1B,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YACtB,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;OAKG;IACH,YAAY,CACV,SAAmC;QAEnC,OAAO,IAAI,IAAI,CACb,WAAW,CAAW,GAAG,EAAE;YACzB,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC,KAAK,CAAC;YACpB,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,GAAG;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,IAAI,CAAI,YAAe;IACrC,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"pipe.js","sourceRoot":"","sources":["../../src/Tool/pipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAe,MAAM,qBAAqB,CAAC;AAE/D;;;;GAIG;AACH,MAAM,OAAO,IAAI;IAIc;IAH7B;;OAEG;IACH,YAA6B,KAAQ;QAAR,UAAK,GAAL,KAAK,CAAG;IAAG,CAAC;IAEzC;;;;OAIG;IACH,GAAG,CAAI,SAA0B;QAC/B,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACzC,CAAC;IAED;;;;;OAKG;IACH,IAAI,CACF,SAAgC,EAChC,SAA0B;QAE1B,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1B,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAyB,CAAC,CAAC;IAC/C,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,SAA6B;QAC/B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,YAAY,CAAc,SAAmC;QAC3D,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;;OAMG;IACH,iBAAiB,CACf,SAAmC,EACnC,YAAe;QAEf,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1B,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YACtB,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;OAKG;IACH,YAAY,CACV,SAAmC;QAEnC,OAAO,IAAI,IAAI,CACb,WAAW,CAAO,GAAG,EAAE;YACrB,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC,KAAK,CAAC;YACpB,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,GAAG;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,IAAI,CAAI,YAAe;IACrC,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;AAChC,CAAC"}
@@ -2,7 +2,7 @@
2
2
  * Object validation core module
3
3
  * Provides validation functionality for objects with type-specific validation rules for each property
4
4
  */
5
- import type { ValidateCoreReturnType, ValidateType } from "../../Validate/type";
5
+ import type { Types, ValidateCoreReturnType, ValidateType } from "../../Validate/type";
6
6
  /**
7
7
  * Creates an object validator with property-specific validation rules
8
8
  * @template T - Object type containing validation functions for each property
@@ -12,8 +12,4 @@ import type { ValidateCoreReturnType, ValidateType } from "../../Validate/type";
12
12
  */
13
13
  export declare const object: <T extends {
14
14
  [key: string]: (value: any) => ValidateCoreReturnType<any>;
15
- }>(option?: T, message?: string) => (value: { [key in keyof T]: ValidateType<ReturnType<T[key]>["type"]>; }) => {
16
- validate: boolean;
17
- message: string;
18
- type: { [key in keyof T]: ValidateType<ReturnType<T[key]>["type"]>; };
19
- };
15
+ }>(option?: T, message?: string) => (value: Types<{ [key in keyof T]: ValidateType<ReturnType<T[key]>["type"]>; }>) => ValidateCoreReturnType<{ [key in keyof T]: ValidateType<ReturnType<T[key]>["type"]>; }>;
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/Validate/object/core.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAGnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAMpB,SAAY,EAAO,EACnB,OAAgB,EAChB,EAAE;IACF,OAAO,CACL,KAEC,EAKD,EAAE;QACF,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO;gBACL,QAAQ,EAAE,KAAK;gBACf,OAAO,EAAE,OAAO,IAAI,EAAE;gBACtB,IAAI,EAAE,KAAK;aACZ,CAAC;QACJ,CAAC;QACD,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAChD,OAAO;oBACL,QAAQ,EAAE,KAAK;oBACf,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO;oBACxC,IAAI,EAAE,KAAK;iBACZ,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,KAAK;SACZ,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/Validate/object/core.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAOnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAMpB,SAAY,EAAO,EACnB,OAAgB,EAChB,EAAE;IACF,OAAO,CACL,KAEE,EAGD,EAAE;QACH,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO;gBACL,QAAQ,EAAE,KAAK;gBACf,OAAO,EAAE,OAAO,IAAI,EAAE;gBACtB,IAAI,EAAE,KAAK;aACZ,CAAC;QACJ,CAAC;QACD,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAChD,OAAO;oBACL,QAAQ,EAAE,KAAK;oBACf,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO;oBACxC,IAAI,EAAE,KAAK;iBACZ,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,KAAK;SACZ,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC"}
@@ -33,3 +33,4 @@ export type ValidateFunctionType<T> = (value: T) => boolean;
33
33
  * @returns The corresponding TypeScript type (string, number, boolean) or the original type T
34
34
  */
35
35
  export type ValidateType<T> = T extends "string" ? string : T extends "number" ? number : T extends "boolean" ? boolean : T;
36
+ export type SchemaToInterface<T extends (value: any) => ValidateCoreReturnType<any>> = ReturnType<T>["type"];
@@ -12,9 +12,11 @@ exports.chunk = void 0;
12
12
  * @example chunk([1, 2, 3, 4, 5, 6, 7, 8, 9], 3); // [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
13
13
  */
14
14
  var chunk = exports.chunk = function chunk(array, n) {
15
- var result = [];
16
- for (var index = 0; index < array.length; index += n) {
17
- result.push(array.slice(index, index + n));
15
+ var length = array.length;
16
+ // eslint-disable-next-line unicorn/no-new-array
17
+ var result = new Array(Math.ceil(length / n));
18
+ for (var index = 0, k = 0; index < length; index += n, k++) {
19
+ result[k] = array.slice(index, index + n);
18
20
  }
19
21
  return result;
20
22
  };
@@ -1,4 +1,4 @@
1
- type CompareFunction<T> = (a: T, b: T) => number;
1
+ import type { CompareFunction } from "$/array/compareFunction";
2
2
  /**
3
3
  * Sort array using dual-pivot quicksort algorithm
4
4
  * More efficient than traditional quicksort for arrays with many duplicate values
@@ -13,4 +13,3 @@ type CompareFunction<T> = (a: T, b: T) => number;
13
13
  * dualPivotQuickSort(['banana', 'apple', 'orange']); // ['apple', 'banana', 'orange']
14
14
  */
15
15
  export declare const dualPivotQuickSort: <T>(array: T[], compareFunction?: CompareFunction<T>, startIndex?: number, endIndex?: number, insertionSortThreshold?: number) => T[];
16
- export {};
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.dualPivotQuickSort = void 0;
7
7
  var _compareFunctionDefault = require("./compareFunctionDefault");
8
+ var _applyInsertionSortIfNeeded = require("./sortingHelpers/applyInsertionSortIfNeeded");
9
+ var _rangeValidator = require("./sortingHelpers/rangeValidator");
8
10
  /**
9
11
  * Get the median of three elements in the array
10
12
  * @param array - The input array
@@ -120,25 +122,6 @@ var partition = function partition(array, low, high, compareFunction) {
120
122
  };
121
123
  };
122
124
 
123
- /**
124
- * Sort small arrays using selection sort
125
- * @param array - Array to be sorted
126
- * @param start - Starting index
127
- * @param end - Ending index
128
- * @param compareFunction - Comparison function
129
- */
130
- var insertionSort = function insertionSort(array, start, end, compareFunction) {
131
- for (var index = start + 1; index <= end; index++) {
132
- var current = array[index];
133
- var index_ = index - 1;
134
- while (index_ >= start && compareFunction(array[index_], current) > 0) {
135
- array[index_ + 1] = array[index_];
136
- index_--;
137
- }
138
- array[index_ + 1] = current;
139
- }
140
- };
141
-
142
125
  /**
143
126
  * Internal implementation of dual-pivot quicksort
144
127
  * @param array - Array to be sorted
@@ -148,9 +131,7 @@ var insertionSort = function insertionSort(array, start, end, compareFunction) {
148
131
  * @param insertionSortThreshold - Threshold for switching to insertion sort
149
132
  */
150
133
  var _sortRange = function sortRange(array, start, end, compareFunction, insertionSortThreshold) {
151
- // Use insertion sort for small arrays
152
- if (end - start + 1 <= insertionSortThreshold) {
153
- insertionSort(array, start, end, compareFunction);
134
+ if ((0, _applyInsertionSortIfNeeded.applyInsertionSortIfNeeded)(array, start, end, compareFunction, insertionSortThreshold)) {
154
135
  return;
155
136
  }
156
137
 
@@ -189,12 +170,11 @@ var dualPivotQuickSort = exports.dualPivotQuickSort = function dualPivotQuickSor
189
170
  var startIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
190
171
  var endIndex = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : array.length - 1;
191
172
  var insertionSortThreshold = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 10;
192
- // Validate and adjust indices
193
- var validStartIndex = Math.max(0, Math.min(startIndex, array.length - 1));
194
- var validEndIndex = Math.max(validStartIndex, Math.min(endIndex, array.length - 1));
195
-
196
- // Sort array if valid range exists
197
- if (validEndIndex >= validStartIndex) {
173
+ var _validateRange = (0, _rangeValidator.validateRange)(array, startIndex, endIndex),
174
+ validStartIndex = _validateRange.startIndex,
175
+ validEndIndex = _validateRange.endIndex,
176
+ shouldSort = _validateRange.shouldSort;
177
+ if (shouldSort) {
198
178
  _sortRange(array, validStartIndex, validEndIndex, compareFunction, insertionSortThreshold);
199
179
  }
200
180
  return array;