umt 2.2.1 → 2.4.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 (393) hide show
  1. package/module/Array/chunk.js +5 -3
  2. package/module/Array/chunk.js.map +1 -1
  3. package/module/Array/dualPivotQuickSort.d.ts +1 -2
  4. package/module/Array/dualPivotQuickSort.js +5 -26
  5. package/module/Array/dualPivotQuickSort.js.map +1 -1
  6. package/module/Array/quickSort.js +7 -25
  7. package/module/Array/quickSort.js.map +1 -1
  8. package/module/Array/sortingHelpers/applyInsertionSortIfNeeded.d.ts +13 -0
  9. package/module/Array/sortingHelpers/applyInsertionSortIfNeeded.js +20 -0
  10. package/module/Array/sortingHelpers/applyInsertionSortIfNeeded.js.map +1 -0
  11. package/module/Array/sortingHelpers/rangeValidator.d.ts +17 -0
  12. package/module/Array/sortingHelpers/rangeValidator.js +26 -0
  13. package/module/Array/sortingHelpers/rangeValidator.js.map +1 -0
  14. package/module/Function/curry.d.ts +141 -0
  15. package/module/Function/curry.js +11 -0
  16. package/module/Function/curry.js.map +1 -0
  17. package/module/Function/index.d.ts +1 -0
  18. package/module/Function/index.js +2 -0
  19. package/module/Function/index.js.map +1 -0
  20. package/module/Tool/index.d.ts +1 -0
  21. package/module/Tool/index.js +1 -0
  22. package/module/Tool/index.js.map +1 -1
  23. package/module/Tool/pipe.d.ts +66 -0
  24. package/module/Tool/pipe.js +98 -0
  25. package/module/Tool/pipe.js.map +1 -0
  26. package/module/Validate/index.d.ts +1 -0
  27. package/module/Validate/index.js +1 -0
  28. package/module/Validate/index.js.map +1 -1
  29. package/module/Validate/isString.d.ts +9 -0
  30. package/module/Validate/isString.js +12 -0
  31. package/module/Validate/isString.js.map +1 -0
  32. package/module/Validate/object/core.d.ts +2 -6
  33. package/module/Validate/object/core.js.map +1 -1
  34. package/module/Validate/type.d.ts +1 -0
  35. package/module/es5/Array/chunk.js +5 -3
  36. package/module/es5/Array/dualPivotQuickSort.d.ts +1 -2
  37. package/module/es5/Array/dualPivotQuickSort.js +8 -28
  38. package/module/es5/Array/quickSort.js +10 -25
  39. package/module/es5/Array/sortingHelpers/applyInsertionSortIfNeeded.d.ts +13 -0
  40. package/module/es5/Array/sortingHelpers/applyInsertionSortIfNeeded.js +25 -0
  41. package/module/es5/Array/sortingHelpers/rangeValidator.d.ts +17 -0
  42. package/module/es5/Array/sortingHelpers/rangeValidator.js +35 -0
  43. package/module/es5/Function/curry.d.ts +141 -0
  44. package/module/es5/Function/curry.js +38 -0
  45. package/module/es5/Function/index.d.ts +1 -0
  46. package/module/es5/Function/index.js +16 -0
  47. package/module/es5/Tool/index.d.ts +1 -0
  48. package/module/es5/Tool/index.js +11 -0
  49. package/module/es5/Tool/pipe.d.ts +66 -0
  50. package/module/es5/Tool/pipe.js +129 -0
  51. package/module/es5/Validate/index.d.ts +1 -0
  52. package/module/es5/Validate/index.js +11 -0
  53. package/module/es5/Validate/isString.d.ts +9 -0
  54. package/module/es5/Validate/isString.js +16 -0
  55. package/module/es5/Validate/object/core.d.ts +2 -6
  56. package/module/es5/Validate/type.d.ts +1 -0
  57. package/module/es5/index.d.ts +1 -0
  58. package/module/es5/index.js +11 -0
  59. package/module/es5/tsconfig.tsbuildinfo +1 -1
  60. package/module/index.d.ts +1 -0
  61. package/module/index.js +1 -0
  62. package/module/index.js.map +1 -1
  63. package/package.json +26 -22
  64. package/module/es5/tests/integration/Array/drop-and-first.test.d.ts +0 -1
  65. package/module/es5/tests/integration/Array/drop-and-first.test.js +0 -34
  66. package/module/es5/tests/integration/Tool/parseJson-and-Validate.test.d.ts +0 -1
  67. package/module/es5/tests/integration/Tool/parseJson-and-Validate.test.js +0 -80
  68. package/module/es5/tests/unit/Advance/rangeAdvance.test.d.ts +0 -1
  69. package/module/es5/tests/unit/Advance/rangeAdvance.test.js +0 -26
  70. package/module/es5/tests/unit/Array/arraysJoin.test.d.ts +0 -1
  71. package/module/es5/tests/unit/Array/arraysJoin.test.js +0 -19
  72. package/module/es5/tests/unit/Array/binarySearch.test.d.ts +0 -1
  73. package/module/es5/tests/unit/Array/binarySearch.test.js +0 -32
  74. package/module/es5/tests/unit/Array/checkFlagAlignment.test.d.ts +0 -1
  75. package/module/es5/tests/unit/Array/checkFlagAlignment.test.js +0 -206
  76. package/module/es5/tests/unit/Array/chunk.test.d.ts +0 -1
  77. package/module/es5/tests/unit/Array/chunk.test.js +0 -51
  78. package/module/es5/tests/unit/Array/compact.test.d.ts +0 -1
  79. package/module/es5/tests/unit/Array/compact.test.js +0 -53
  80. package/module/es5/tests/unit/Array/compareFunctionDefault.test.d.ts +0 -1
  81. package/module/es5/tests/unit/Array/compareFunctionDefault.test.js +0 -29
  82. package/module/es5/tests/unit/Array/drop.test.d.ts +0 -1
  83. package/module/es5/tests/unit/Array/drop.test.js +0 -84
  84. package/module/es5/tests/unit/Array/dualPivotQuickSort.test.d.ts +0 -1
  85. package/module/es5/tests/unit/Array/dualPivotQuickSort.test.js +0 -87
  86. package/module/es5/tests/unit/Array/first.test.d.ts +0 -1
  87. package/module/es5/tests/unit/Array/first.test.js +0 -28
  88. package/module/es5/tests/unit/Array/generateNumberArray.test.d.ts +0 -1
  89. package/module/es5/tests/unit/Array/generateNumberArray.test.js +0 -34
  90. package/module/es5/tests/unit/Array/getArraysCommon.test.d.ts +0 -1
  91. package/module/es5/tests/unit/Array/getArraysCommon.test.js +0 -40
  92. package/module/es5/tests/unit/Array/getArraysDiff.test.d.ts +0 -1
  93. package/module/es5/tests/unit/Array/getArraysDiff.test.js +0 -99
  94. package/module/es5/tests/unit/Array/groupBy.test.d.ts +0 -1
  95. package/module/es5/tests/unit/Array/groupBy.test.js +0 -87
  96. package/module/es5/tests/unit/Array/insertionSort.test.d.ts +0 -1
  97. package/module/es5/tests/unit/Array/insertionSort.test.js +0 -37
  98. package/module/es5/tests/unit/Array/mergeSort.test.d.ts +0 -1
  99. package/module/es5/tests/unit/Array/mergeSort.test.js +0 -49
  100. package/module/es5/tests/unit/Array/pop.test.d.ts +0 -1
  101. package/module/es5/tests/unit/Array/pop.test.js +0 -50
  102. package/module/es5/tests/unit/Array/quickSort.test.d.ts +0 -1
  103. package/module/es5/tests/unit/Array/quickSort.test.js +0 -118
  104. package/module/es5/tests/unit/Array/randomSelect.test.d.ts +0 -1
  105. package/module/es5/tests/unit/Array/randomSelect.test.js +0 -51
  106. package/module/es5/tests/unit/Array/range.test.d.ts +0 -1
  107. package/module/es5/tests/unit/Array/range.test.js +0 -42
  108. package/module/es5/tests/unit/Array/shuffle.test.d.ts +0 -1
  109. package/module/es5/tests/unit/Array/shuffle.test.js +0 -84
  110. package/module/es5/tests/unit/Array/shuffle2DArray.test.d.ts +0 -1
  111. package/module/es5/tests/unit/Array/shuffle2DArray.test.js +0 -90
  112. package/module/es5/tests/unit/Array/sum.test.d.ts +0 -1
  113. package/module/es5/tests/unit/Array/sum.test.js +0 -44
  114. package/module/es5/tests/unit/Array/timSort.test.d.ts +0 -1
  115. package/module/es5/tests/unit/Array/timSort.test.js +0 -128
  116. package/module/es5/tests/unit/Array/zip.test.d.ts +0 -1
  117. package/module/es5/tests/unit/Array/zip.test.js +0 -69
  118. package/module/es5/tests/unit/Array/zipLongest.test.d.ts +0 -1
  119. package/module/es5/tests/unit/Array/zipLongest.test.js +0 -74
  120. package/module/es5/tests/unit/Color/cmykToRgba.test.d.ts +0 -1
  121. package/module/es5/tests/unit/Color/cmykToRgba.test.js +0 -58
  122. package/module/es5/tests/unit/Color/hexaToRgba.test.d.ts +0 -1
  123. package/module/es5/tests/unit/Color/hexaToRgba.test.js +0 -115
  124. package/module/es5/tests/unit/Color/hslaToRgba.test.d.ts +0 -1
  125. package/module/es5/tests/unit/Color/hslaToRgba.test.js +0 -141
  126. package/module/es5/tests/unit/Color/rgbaToCmyk.test.d.ts +0 -1
  127. package/module/es5/tests/unit/Color/rgbaToCmyk.test.js +0 -139
  128. package/module/es5/tests/unit/Color/rgbaToHexA.test.d.ts +0 -1
  129. package/module/es5/tests/unit/Color/rgbaToHexA.test.js +0 -114
  130. package/module/es5/tests/unit/Color/rgbaToHsla.test.d.ts +0 -1
  131. package/module/es5/tests/unit/Color/rgbaToHsla.test.js +0 -190
  132. package/module/es5/tests/unit/Consts/clock.test.d.ts +0 -1
  133. package/module/es5/tests/unit/Consts/clock.test.js +0 -71
  134. package/module/es5/tests/unit/Consts/httpClientErrorStatus.test.d.ts +0 -1
  135. package/module/es5/tests/unit/Consts/httpClientErrorStatus.test.js +0 -33
  136. package/module/es5/tests/unit/Consts/httpInformationalStatus.test.d.ts +0 -1
  137. package/module/es5/tests/unit/Consts/httpInformationalStatus.test.js +0 -13
  138. package/module/es5/tests/unit/Consts/httpRedirectionStatus.test.d.ts +0 -1
  139. package/module/es5/tests/unit/Consts/httpRedirectionStatus.test.js +0 -16
  140. package/module/es5/tests/unit/Consts/httpServerErrorStatus.test.d.ts +0 -1
  141. package/module/es5/tests/unit/Consts/httpServerErrorStatus.test.js +0 -15
  142. package/module/es5/tests/unit/Consts/httpStatus.test.d.ts +0 -1
  143. package/module/es5/tests/unit/Consts/httpStatus.test.js +0 -82
  144. package/module/es5/tests/unit/Consts/httpSuccessStatus.test.d.ts +0 -1
  145. package/module/es5/tests/unit/Consts/httpSuccessStatus.test.js +0 -16
  146. package/module/es5/tests/unit/Date/birthday.test.d.ts +0 -1
  147. package/module/es5/tests/unit/Date/birthday.test.js +0 -31
  148. package/module/es5/tests/unit/Date/dateRange.test.d.ts +0 -1
  149. package/module/es5/tests/unit/Date/dateRange.test.js +0 -40
  150. package/module/es5/tests/unit/Date/dayOfWeek.test.d.ts +0 -1
  151. package/module/es5/tests/unit/Date/dayOfWeek.test.js +0 -39
  152. package/module/es5/tests/unit/Date/deleteSpace.test.d.ts +0 -1
  153. package/module/es5/tests/unit/Date/deleteSpace.test.js +0 -35
  154. package/module/es5/tests/unit/Date/format.test.d.ts +0 -1
  155. package/module/es5/tests/unit/Date/format.test.js +0 -50
  156. package/module/es5/tests/unit/Date/getDay.test.d.ts +0 -1
  157. package/module/es5/tests/unit/Date/getDay.test.js +0 -40
  158. package/module/es5/tests/unit/Date/getTimezoneOffsetString.test.d.ts +0 -1
  159. package/module/es5/tests/unit/Date/getTimezoneOffsetString.test.js +0 -26
  160. package/module/es5/tests/unit/Date/isLeapYear.test.d.ts +0 -1
  161. package/module/es5/tests/unit/Date/isLeapYear.test.js +0 -30
  162. package/module/es5/tests/unit/Date/new.test.d.ts +0 -1
  163. package/module/es5/tests/unit/Date/new.test.js +0 -39
  164. package/module/es5/tests/unit/Date/now.test.d.ts +0 -1
  165. package/module/es5/tests/unit/Date/now.test.js +0 -42
  166. package/module/es5/tests/unit/Error/safeExecute.test.d.ts +0 -1
  167. package/module/es5/tests/unit/Error/safeExecute.test.js +0 -75
  168. package/module/es5/tests/unit/IP/cidrToLong.test.d.ts +0 -1
  169. package/module/es5/tests/unit/IP/cidrToLong.test.js +0 -32
  170. package/module/es5/tests/unit/IP/cidrToSubnetMask.test.d.ts +0 -1
  171. package/module/es5/tests/unit/IP/cidrToSubnetMask.test.js +0 -36
  172. package/module/es5/tests/unit/IP/getIpClass.test.d.ts +0 -1
  173. package/module/es5/tests/unit/IP/getIpClass.test.js +0 -36
  174. package/module/es5/tests/unit/IP/getNetworkAddress.test.d.ts +0 -1
  175. package/module/es5/tests/unit/IP/getNetworkAddress.test.js +0 -40
  176. package/module/es5/tests/unit/IP/ipToBinaryString.test.d.ts +0 -1
  177. package/module/es5/tests/unit/IP/ipToBinaryString.test.js +0 -46
  178. package/module/es5/tests/unit/IP/ipToLong.test.d.ts +0 -1
  179. package/module/es5/tests/unit/IP/ipToLong.test.js +0 -34
  180. package/module/es5/tests/unit/IP/isInRange.test.d.ts +0 -1
  181. package/module/es5/tests/unit/IP/isInRange.test.js +0 -82
  182. package/module/es5/tests/unit/IP/isPrivateIp.test.d.ts +0 -1
  183. package/module/es5/tests/unit/IP/isPrivateIp.test.js +0 -26
  184. package/module/es5/tests/unit/IP/longToIp.test.d.ts +0 -1
  185. package/module/es5/tests/unit/IP/longToIp.test.js +0 -39
  186. package/module/es5/tests/unit/IP/subnetMaskToCidr.test.d.ts +0 -1
  187. package/module/es5/tests/unit/IP/subnetMaskToCidr.test.js +0 -41
  188. package/module/es5/tests/unit/Math/addition.test.d.ts +0 -1
  189. package/module/es5/tests/unit/Math/addition.test.js +0 -79
  190. package/module/es5/tests/unit/Math/average.test.d.ts +0 -1
  191. package/module/es5/tests/unit/Math/average.test.js +0 -48
  192. package/module/es5/tests/unit/Math/bitwise.test.d.ts +0 -1
  193. package/module/es5/tests/unit/Math/bitwise.test.js +0 -62
  194. package/module/es5/tests/unit/Math/calculator/calculator.test.d.ts +0 -1
  195. package/module/es5/tests/unit/Math/calculator/calculator.test.js +0 -76
  196. package/module/es5/tests/unit/Math/calculator/calculatorInitialization.test.d.ts +0 -1
  197. package/module/es5/tests/unit/Math/calculator/calculatorInitialization.test.js +0 -21
  198. package/module/es5/tests/unit/Math/calculator/convertCurrency.test.d.ts +0 -1
  199. package/module/es5/tests/unit/Math/calculator/convertCurrency.test.js +0 -40
  200. package/module/es5/tests/unit/Math/calculator/literalExpression.test.d.ts +0 -1
  201. package/module/es5/tests/unit/Math/calculator/literalExpression.test.js +0 -51
  202. package/module/es5/tests/unit/Math/degToRad.test.d.ts +0 -1
  203. package/module/es5/tests/unit/Math/degToRad.test.js +0 -50
  204. package/module/es5/tests/unit/Math/deviationValue.test.d.ts +0 -1
  205. package/module/es5/tests/unit/Math/deviationValue.test.js +0 -30
  206. package/module/es5/tests/unit/Math/division.test.d.ts +0 -1
  207. package/module/es5/tests/unit/Math/division.test.js +0 -81
  208. package/module/es5/tests/unit/Math/factorial.test.d.ts +0 -1
  209. package/module/es5/tests/unit/Math/factorial.test.js +0 -26
  210. package/module/es5/tests/unit/Math/factorize.test.d.ts +0 -1
  211. package/module/es5/tests/unit/Math/factorize.test.js +0 -38
  212. package/module/es5/tests/unit/Math/flexibleNumberConversion.test.d.ts +0 -1
  213. package/module/es5/tests/unit/Math/flexibleNumberConversion.test.js +0 -195
  214. package/module/es5/tests/unit/Math/gcd.test.d.ts +0 -1
  215. package/module/es5/tests/unit/Math/gcd.test.js +0 -35
  216. package/module/es5/tests/unit/Math/getDecimalLength.test.d.ts +0 -1
  217. package/module/es5/tests/unit/Math/getDecimalLength.test.js +0 -44
  218. package/module/es5/tests/unit/Math/lcm.test.d.ts +0 -1
  219. package/module/es5/tests/unit/Math/lcm.test.js +0 -43
  220. package/module/es5/tests/unit/Math/linearCongruentialGenerator.test.d.ts +0 -1
  221. package/module/es5/tests/unit/Math/linearCongruentialGenerator.test.js +0 -25
  222. package/module/es5/tests/unit/Math/mathConverter.test.d.ts +0 -1
  223. package/module/es5/tests/unit/Math/mathConverter.test.js +0 -37
  224. package/module/es5/tests/unit/Math/mathSeparator.test.d.ts +0 -1
  225. package/module/es5/tests/unit/Math/mathSeparator.test.js +0 -59
  226. package/module/es5/tests/unit/Math/max.test.d.ts +0 -1
  227. package/module/es5/tests/unit/Math/max.test.js +0 -22
  228. package/module/es5/tests/unit/Math/median.test.d.ts +0 -1
  229. package/module/es5/tests/unit/Math/median.test.js +0 -17
  230. package/module/es5/tests/unit/Math/min.test.d.ts +0 -1
  231. package/module/es5/tests/unit/Math/min.test.js +0 -22
  232. package/module/es5/tests/unit/Math/multiples.test.d.ts +0 -1
  233. package/module/es5/tests/unit/Math/multiples.test.js +0 -30
  234. package/module/es5/tests/unit/Math/multiplication.test.d.ts +0 -1
  235. package/module/es5/tests/unit/Math/multiplication.test.js +0 -48
  236. package/module/es5/tests/unit/Math/nCr.test.d.ts +0 -1
  237. package/module/es5/tests/unit/Math/nCr.test.js +0 -34
  238. package/module/es5/tests/unit/Math/nHr.test.d.ts +0 -1
  239. package/module/es5/tests/unit/Math/nHr.test.js +0 -35
  240. package/module/es5/tests/unit/Math/nPr.test.d.ts +0 -1
  241. package/module/es5/tests/unit/Math/nPr.test.js +0 -38
  242. package/module/es5/tests/unit/Math/primeFactorization.test.d.ts +0 -1
  243. package/module/es5/tests/unit/Math/primeFactorization.test.js +0 -84
  244. package/module/es5/tests/unit/Math/quotient.test.d.ts +0 -1
  245. package/module/es5/tests/unit/Math/quotient.test.js +0 -36
  246. package/module/es5/tests/unit/Math/radToDeg.test.d.ts +0 -1
  247. package/module/es5/tests/unit/Math/radToDeg.test.js +0 -50
  248. package/module/es5/tests/unit/Math/random.test.d.ts +0 -1
  249. package/module/es5/tests/unit/Math/random.test.js +0 -61
  250. package/module/es5/tests/unit/Math/reduce.test.d.ts +0 -1
  251. package/module/es5/tests/unit/Math/reduce.test.js +0 -93
  252. package/module/es5/tests/unit/Math/repeatedTrial.test.d.ts +0 -1
  253. package/module/es5/tests/unit/Math/repeatedTrial.test.js +0 -39
  254. package/module/es5/tests/unit/Math/roundOf.test.d.ts +0 -1
  255. package/module/es5/tests/unit/Math/roundOf.test.js +0 -40
  256. package/module/es5/tests/unit/Math/solveEquation.test.d.ts +0 -1
  257. package/module/es5/tests/unit/Math/solveEquation.test.js +0 -24
  258. package/module/es5/tests/unit/Math/standardDeviation.test.d.ts +0 -1
  259. package/module/es5/tests/unit/Math/standardDeviation.test.js +0 -23
  260. package/module/es5/tests/unit/Math/subtract.test.d.ts +0 -1
  261. package/module/es5/tests/unit/Math/subtract.test.js +0 -46
  262. package/module/es5/tests/unit/Math/toBaseN.test.d.ts +0 -1
  263. package/module/es5/tests/unit/Math/toBaseN.test.js +0 -40
  264. package/module/es5/tests/unit/Math/toCelsius.test.d.ts +0 -1
  265. package/module/es5/tests/unit/Math/toCelsius.test.js +0 -18
  266. package/module/es5/tests/unit/Math/toKelvin.test.d.ts +0 -1
  267. package/module/es5/tests/unit/Math/toKelvin.test.js +0 -18
  268. package/module/es5/tests/unit/Math/uuidv7.test.d.ts +0 -1
  269. package/module/es5/tests/unit/Math/uuidv7.test.js +0 -33
  270. package/module/es5/tests/unit/Math/valueSwap.test.d.ts +0 -1
  271. package/module/es5/tests/unit/Math/valueSwap.test.js +0 -28
  272. package/module/es5/tests/unit/Math/xoshiro256.test.d.ts +0 -1
  273. package/module/es5/tests/unit/Math/xoshiro256.test.js +0 -33
  274. package/module/es5/tests/unit/Object/has.test.d.ts +0 -1
  275. package/module/es5/tests/unit/Object/has.test.js +0 -60
  276. package/module/es5/tests/unit/Object/keyBy.test.d.ts +0 -1
  277. package/module/es5/tests/unit/Object/keyBy.test.js +0 -120
  278. package/module/es5/tests/unit/Object/pick.test.d.ts +0 -1
  279. package/module/es5/tests/unit/Object/pick.test.js +0 -109
  280. package/module/es5/tests/unit/Object/pickDeep.test.d.ts +0 -1
  281. package/module/es5/tests/unit/Object/pickDeep.test.js +0 -222
  282. package/module/es5/tests/unit/Simple/Array/quickSortSimple.test.d.ts +0 -1
  283. package/module/es5/tests/unit/Simple/Array/quickSortSimple.test.js +0 -18
  284. package/module/es5/tests/unit/Simple/Date/dayOfWeekSimple.test.d.ts +0 -1
  285. package/module/es5/tests/unit/Simple/Date/dayOfWeekSimple.test.js +0 -58
  286. package/module/es5/tests/unit/Simple/Math/deviationValueSimple.test.d.ts +0 -1
  287. package/module/es5/tests/unit/Simple/Math/deviationValueSimple.test.js +0 -43
  288. package/module/es5/tests/unit/String/deleteSpaces.test.d.ts +0 -1
  289. package/module/es5/tests/unit/String/deleteSpaces.test.js +0 -22
  290. package/module/es5/tests/unit/String/formatString.test.d.ts +0 -1
  291. package/module/es5/tests/unit/String/formatString.test.js +0 -47
  292. package/module/es5/tests/unit/String/fromBase64.test.d.ts +0 -1
  293. package/module/es5/tests/unit/String/fromBase64.test.js +0 -37
  294. package/module/es5/tests/unit/String/hasNoLetters.test.d.ts +0 -1
  295. package/module/es5/tests/unit/String/hasNoLetters.test.js +0 -29
  296. package/module/es5/tests/unit/String/padEnd.test.d.ts +0 -1
  297. package/module/es5/tests/unit/String/padEnd.test.js +0 -22
  298. package/module/es5/tests/unit/String/padStart.test.d.ts +0 -1
  299. package/module/es5/tests/unit/String/padStart.test.js +0 -40
  300. package/module/es5/tests/unit/String/randomString.test.d.ts +0 -1
  301. package/module/es5/tests/unit/String/randomString.test.js +0 -21
  302. package/module/es5/tests/unit/String/randomStringInitialization.test.d.ts +0 -1
  303. package/module/es5/tests/unit/String/randomStringInitialization.test.js +0 -25
  304. package/module/es5/tests/unit/String/reverseString.test.d.ts +0 -1
  305. package/module/es5/tests/unit/String/reverseString.test.js +0 -35
  306. package/module/es5/tests/unit/String/toBase64.test.d.ts +0 -1
  307. package/module/es5/tests/unit/String/toBase64.test.js +0 -20
  308. package/module/es5/tests/unit/String/toHalfWidth.test.d.ts +0 -1
  309. package/module/es5/tests/unit/String/toHalfWidth.test.js +0 -16
  310. package/module/es5/tests/unit/String/trimCharacters.test.d.ts +0 -1
  311. package/module/es5/tests/unit/String/trimCharacters.test.js +0 -17
  312. package/module/es5/tests/unit/String/trimEndCharacters.test.d.ts +0 -1
  313. package/module/es5/tests/unit/String/trimEndCharacters.test.js +0 -33
  314. package/module/es5/tests/unit/String/trimStartCharacters.test.d.ts +0 -1
  315. package/module/es5/tests/unit/String/trimStartCharacters.test.js +0 -33
  316. package/module/es5/tests/unit/Time/convertTime.test.d.ts +0 -1
  317. package/module/es5/tests/unit/Time/convertTime.test.js +0 -135
  318. package/module/es5/tests/unit/Time/normalizeTimeUnit.test.d.ts +0 -1
  319. package/module/es5/tests/unit/Time/normalizeTimeUnit.test.js +0 -29
  320. package/module/es5/tests/unit/Tool/createPipeline.test.d.ts +0 -1
  321. package/module/es5/tests/unit/Tool/createPipeline.test.js +0 -184
  322. package/module/es5/tests/unit/Tool/parseJson.test.d.ts +0 -1
  323. package/module/es5/tests/unit/Tool/parseJson.test.js +0 -46
  324. package/module/es5/tests/unit/UA/extractBrowserFromUserAgent.test.d.ts +0 -1
  325. package/module/es5/tests/unit/UA/extractBrowserFromUserAgent.test.js +0 -47
  326. package/module/es5/tests/unit/UA/extractDeviceFromUserAgent.test.d.ts +0 -1
  327. package/module/es5/tests/unit/UA/extractDeviceFromUserAgent.test.js +0 -55
  328. package/module/es5/tests/unit/UA/extractOsFromUserAgent.test.d.ts +0 -1
  329. package/module/es5/tests/unit/UA/extractOsFromUserAgent.test.js +0 -57
  330. package/module/es5/tests/unit/UA/parseUserAgent.test.d.ts +0 -1
  331. package/module/es5/tests/unit/UA/parseUserAgent.test.js +0 -95
  332. package/module/es5/tests/unit/Unit/unitConverterInitialization.test.d.ts +0 -1
  333. package/module/es5/tests/unit/Unit/unitConverterInitialization.test.js +0 -40
  334. package/module/es5/tests/unit/Validate/array/core.test.d.ts +0 -1
  335. package/module/es5/tests/unit/Validate/array/core.test.js +0 -86
  336. package/module/es5/tests/unit/Validate/boolean/core.test.d.ts +0 -1
  337. package/module/es5/tests/unit/Validate/boolean/core.test.js +0 -29
  338. package/module/es5/tests/unit/Validate/core/core.test.d.ts +0 -1
  339. package/module/es5/tests/unit/Validate/core/core.test.js +0 -87
  340. package/module/es5/tests/unit/Validate/isArray.test.d.ts +0 -1
  341. package/module/es5/tests/unit/Validate/isArray.test.js +0 -36
  342. package/module/es5/tests/unit/Validate/isDictionaryObject.test.d.ts +0 -1
  343. package/module/es5/tests/unit/Validate/isDictionaryObject.test.js +0 -62
  344. package/module/es5/tests/unit/Validate/isDouble.test.d.ts +0 -1
  345. package/module/es5/tests/unit/Validate/isDouble.test.js +0 -47
  346. package/module/es5/tests/unit/Validate/isEqual.test.d.ts +0 -1
  347. package/module/es5/tests/unit/Validate/isEqual.test.js +0 -74
  348. package/module/es5/tests/unit/Validate/isNotEmpty.test.d.ts +0 -1
  349. package/module/es5/tests/unit/Validate/isNotEmpty.test.js +0 -43
  350. package/module/es5/tests/unit/Validate/isNumber.test.d.ts +0 -1
  351. package/module/es5/tests/unit/Validate/isNumber.test.js +0 -77
  352. package/module/es5/tests/unit/Validate/isPerfectSquare.test.d.ts +0 -1
  353. package/module/es5/tests/unit/Validate/isPerfectSquare.test.js +0 -27
  354. package/module/es5/tests/unit/Validate/isPrimeNumber.test.d.ts +0 -1
  355. package/module/es5/tests/unit/Validate/isPrimeNumber.test.js +0 -51
  356. package/module/es5/tests/unit/Validate/isValueNaN.test.d.ts +0 -1
  357. package/module/es5/tests/unit/Validate/isValueNaN.test.js +0 -54
  358. package/module/es5/tests/unit/Validate/number/core.test.d.ts +0 -1
  359. package/module/es5/tests/unit/Validate/number/core.test.js +0 -36
  360. package/module/es5/tests/unit/Validate/number/double.test.d.ts +0 -1
  361. package/module/es5/tests/unit/Validate/number/double.test.js +0 -23
  362. package/module/es5/tests/unit/Validate/number/even.test.d.ts +0 -1
  363. package/module/es5/tests/unit/Validate/number/even.test.js +0 -23
  364. package/module/es5/tests/unit/Validate/number/maxValue.test.d.ts +0 -1
  365. package/module/es5/tests/unit/Validate/number/maxValue.test.js +0 -20
  366. package/module/es5/tests/unit/Validate/number/minValue.test.d.ts +0 -1
  367. package/module/es5/tests/unit/Validate/number/minValue.test.js +0 -20
  368. package/module/es5/tests/unit/Validate/number/odd.test.d.ts +0 -1
  369. package/module/es5/tests/unit/Validate/number/odd.test.js +0 -23
  370. package/module/es5/tests/unit/Validate/number/prime.test.d.ts +0 -1
  371. package/module/es5/tests/unit/Validate/number/prime.test.js +0 -25
  372. package/module/es5/tests/unit/Validate/object/core.test.d.ts +0 -1
  373. package/module/es5/tests/unit/Validate/object/core.test.js +0 -79
  374. package/module/es5/tests/unit/Validate/string/core.test.d.ts +0 -1
  375. package/module/es5/tests/unit/Validate/string/core.test.js +0 -27
  376. package/module/es5/tests/unit/Validate/string/email.test.d.ts +0 -1
  377. package/module/es5/tests/unit/Validate/string/email.test.js +0 -21
  378. package/module/es5/tests/unit/Validate/string/length.test.d.ts +0 -1
  379. package/module/es5/tests/unit/Validate/string/length.test.js +0 -18
  380. package/module/es5/tests/unit/Validate/string/maxLength.test.d.ts +0 -1
  381. package/module/es5/tests/unit/Validate/string/maxLength.test.js +0 -18
  382. package/module/es5/tests/unit/Validate/string/minLength.test.d.ts +0 -1
  383. package/module/es5/tests/unit/Validate/string/minLength.test.js +0 -18
  384. package/module/es5/tests/unit/Validate/string/numberString.test.d.ts +0 -1
  385. package/module/es5/tests/unit/Validate/string/numberString.test.js +0 -22
  386. package/module/es5/tests/unit/Validate/string/regexMatch.test.d.ts +0 -1
  387. package/module/es5/tests/unit/Validate/string/regexMatch.test.js +0 -29
  388. package/module/es5/tests/unit/Validate/string/uuid.test.d.ts +0 -1
  389. package/module/es5/tests/unit/Validate/string/uuid.test.js +0 -72
  390. package/module/es5/tests/unit/types/arrayType.test.d.ts +0 -1
  391. package/module/es5/tests/unit/types/arrayType.test.js +0 -11
  392. package/module/es5/tests/unit/types/clockType.test.d.ts +0 -1
  393. package/module/es5/tests/unit/types/clockType.test.js +0 -37
@@ -1,7 +1,9 @@
1
1
  export const chunk = (array, n) => {
2
- const result = [];
3
- for (let index = 0; index < array.length; index += n) {
4
- result.push(array.slice(index, index + n));
2
+ const length = array.length;
3
+ // eslint-disable-next-line unicorn/no-new-array
4
+ const result = new Array(Math.ceil(length / n));
5
+ for (let index = 0, k = 0; index < length; index += n, k++) {
6
+ result[k] = array.slice(index, index + n);
5
7
  }
6
8
  return result;
7
9
  };
@@ -1 +1 @@
1
- {"version":3,"file":"chunk.js","sourceRoot":"","sources":["../../src/Array/chunk.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,KAAK,GAAG,CACnB,KAAQ,EACR,CAAI,EACkB,EAAE;IACxB,MAAM,MAAM,GAAU,EAAE,CAAC;IACzB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAmB,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,MAA8B,CAAC;AACxC,CAAC,CAAC"}
1
+ {"version":3,"file":"chunk.js","sourceRoot":"","sources":["../../src/Array/chunk.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,KAAK,GAAG,CACnB,KAAQ,EACR,CAAI,EACkB,EAAE;IACxB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,gDAAgD;IAChD,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAEhD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3D,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAmB,CAAC;IAC9D,CAAC;IAED,OAAO,MAA8B,CAAC;AACxC,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- type CompareFunction<T> = (a: T, b: T) => number;
1
+ import type { CompareFunction } from "../types/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 {};
@@ -1,4 +1,6 @@
1
1
  import { compareFunctionDefault } from "./compareFunctionDefault";
2
+ import { applyInsertionSortIfNeeded } from "./sortingHelpers/applyInsertionSortIfNeeded";
3
+ import { validateRange } from "./sortingHelpers/rangeValidator";
2
4
  /**
3
5
  * Get the median of three elements in the array
4
6
  * @param array - The input array
@@ -83,24 +85,6 @@ const partition = (array, low, high, compareFunction) => {
83
85
  [array[high], array[right]] = [array[right], array[high]];
84
86
  return { leftPivotIndex: left, rightPivotIndex: right };
85
87
  };
86
- /**
87
- * Sort small arrays using selection sort
88
- * @param array - Array to be sorted
89
- * @param start - Starting index
90
- * @param end - Ending index
91
- * @param compareFunction - Comparison function
92
- */
93
- const insertionSort = (array, start, end, compareFunction) => {
94
- for (let index = start + 1; index <= end; index++) {
95
- const current = array[index];
96
- let index_ = index - 1;
97
- while (index_ >= start && compareFunction(array[index_], current) > 0) {
98
- array[index_ + 1] = array[index_];
99
- index_--;
100
- }
101
- array[index_ + 1] = current;
102
- }
103
- };
104
88
  /**
105
89
  * Internal implementation of dual-pivot quicksort
106
90
  * @param array - Array to be sorted
@@ -110,9 +94,7 @@ const insertionSort = (array, start, end, compareFunction) => {
110
94
  * @param insertionSortThreshold - Threshold for switching to insertion sort
111
95
  */
112
96
  const sortRange = (array, start, end, compareFunction, insertionSortThreshold) => {
113
- // Use insertion sort for small arrays
114
- if (end - start + 1 <= insertionSortThreshold) {
115
- insertionSort(array, start, end, compareFunction);
97
+ if (applyInsertionSortIfNeeded(array, start, end, compareFunction, insertionSortThreshold)) {
116
98
  return;
117
99
  }
118
100
  // Get partition indices
@@ -140,11 +122,8 @@ const sortRange = (array, start, end, compareFunction, insertionSortThreshold) =
140
122
  * dualPivotQuickSort(['banana', 'apple', 'orange']); // ['apple', 'banana', 'orange']
141
123
  */
142
124
  export const dualPivotQuickSort = (array, compareFunction = (compareFunctionDefault), startIndex = 0, endIndex = array.length - 1, insertionSortThreshold = 10) => {
143
- // Validate and adjust indices
144
- const validStartIndex = Math.max(0, Math.min(startIndex, array.length - 1));
145
- const validEndIndex = Math.max(validStartIndex, Math.min(endIndex, array.length - 1));
146
- // Sort array if valid range exists
147
- if (validEndIndex >= validStartIndex) {
125
+ const { startIndex: validStartIndex, endIndex: validEndIndex, shouldSort, } = validateRange(array, startIndex, endIndex);
126
+ if (shouldSort) {
148
127
  sortRange(array, validStartIndex, validEndIndex, compareFunction, insertionSortThreshold);
149
128
  }
150
129
  return array;
@@ -1 +1 @@
1
- {"version":3,"file":"dualPivotQuickSort.js","sourceRoot":"","sources":["../../src/Array/dualPivotQuickSort.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dualPivotQuickSort.js","sourceRoot":"","sources":["../../src/Array/dualPivotQuickSort.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  import { compareFunctionDefault } from "./compareFunctionDefault";
2
+ import { applyInsertionSortIfNeeded } from "./sortingHelpers/applyInsertionSortIfNeeded";
3
+ import { validateRange } from "./sortingHelpers/rangeValidator";
2
4
  /**
3
5
  * Finds the median value among three elements in the array
4
6
  * @param array The array containing the elements
@@ -54,25 +56,6 @@ const partition = (array, low, high, compareFunction) => {
54
56
  [array[left], array[right]] = [array[right], array[left]];
55
57
  }
56
58
  };
57
- /**
58
- * Sorts a portion of the array using insertion sort algorithm
59
- * @param array Array to sort
60
- * @param low Starting index of the range to sort
61
- * @param high Ending index of the range to sort
62
- * @param compareFunction Function to compare elements
63
- */
64
- const insertionSort = (array, low, high, compareFunction) => {
65
- for (let index = low + 1; index <= high; index++) {
66
- const key = array[index];
67
- let currentIndex = index - 1;
68
- while (currentIndex >= low &&
69
- compareFunction(array[currentIndex], key) > 0) {
70
- array[currentIndex + 1] = array[currentIndex];
71
- currentIndex--;
72
- }
73
- array[currentIndex + 1] = key;
74
- }
75
- };
76
59
  /**
77
60
  * Internal implementation of the quicksort algorithm with tail-call optimization
78
61
  * @param array Array to sort
@@ -85,8 +68,7 @@ const sortImpl = (array, lowInit, highInit, compareFunction, insertionSortThresh
85
68
  let low = lowInit;
86
69
  let high = highInit;
87
70
  while (low < high) {
88
- if (high - low < insertionSortThreshold) {
89
- insertionSort(array, low, high, compareFunction);
71
+ if (applyInsertionSortIfNeeded(array, low, high, compareFunction, insertionSortThreshold)) {
90
72
  return;
91
73
  }
92
74
  const pivotIndex = partition(array, low, high, compareFunction);
@@ -114,10 +96,10 @@ const sortImpl = (array, lowInit, highInit, compareFunction, insertionSortThresh
114
96
  * quickSort(['b', 'a', 'c']); // ['a', 'b', 'c']
115
97
  */
116
98
  export const quickSort = (array, compareFunction = (compareFunctionDefault), startIndex = 0, endIndex = array.length - 1, insertionSortThreshold = 10) => {
117
- // Only sort within valid range
118
- const validStartIndex = Math.max(0, Math.min(startIndex, array.length - 1));
119
- const validEndIndex = Math.max(validStartIndex, Math.min(endIndex, array.length - 1));
120
- sortImpl(array, validStartIndex, validEndIndex, compareFunction, insertionSortThreshold);
99
+ const { startIndex: validStartIndex, endIndex: validEndIndex, shouldSort, } = validateRange(array, startIndex, endIndex);
100
+ if (shouldSort) {
101
+ sortImpl(array, validStartIndex, validEndIndex, compareFunction, insertionSortThreshold);
102
+ }
121
103
  return array;
122
104
  };
123
105
  //# sourceMappingURL=quickSort.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"quickSort.js","sourceRoot":"","sources":["../../src/Array/quickSort.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"quickSort.js","sourceRoot":"","sources":["../../src/Array/quickSort.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { CompareFunction } from "../../types/array/compareFunction";
2
+ /**
3
+ * Checks if a partition is small enough to apply insertion sort and applies it if so.
4
+ *
5
+ * @template T The type of elements in the array.
6
+ * @param {T[]} array The array containing the partition.
7
+ * @param {number} low The starting index of the partition.
8
+ * @param {number} high The ending index of the partition.
9
+ * @param {CompareFunction<T>} compareFunction The function to compare elements.
10
+ * @param {number} insertionSortThreshold The size threshold for switching to insertion sort.
11
+ * @returns {boolean} True if insertion sort was applied, false otherwise.
12
+ */
13
+ export declare const applyInsertionSortIfNeeded: <T>(array: T[], low: number, high: number, compareFunction: CompareFunction<T>, insertionSortThreshold: number) => boolean;
@@ -0,0 +1,20 @@
1
+ import { insertionSort } from "../../Array/insertionSort";
2
+ /**
3
+ * Checks if a partition is small enough to apply insertion sort and applies it if so.
4
+ *
5
+ * @template T The type of elements in the array.
6
+ * @param {T[]} array The array containing the partition.
7
+ * @param {number} low The starting index of the partition.
8
+ * @param {number} high The ending index of the partition.
9
+ * @param {CompareFunction<T>} compareFunction The function to compare elements.
10
+ * @param {number} insertionSortThreshold The size threshold for switching to insertion sort.
11
+ * @returns {boolean} True if insertion sort was applied, false otherwise.
12
+ */
13
+ export const applyInsertionSortIfNeeded = (array, low, high, compareFunction, insertionSortThreshold) => {
14
+ if (high - low + 1 <= insertionSortThreshold) {
15
+ insertionSort(array, compareFunction, low, high);
16
+ return true;
17
+ }
18
+ return false;
19
+ };
20
+ //# sourceMappingURL=applyInsertionSortIfNeeded.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applyInsertionSortIfNeeded.js","sourceRoot":"","sources":["../../../src/Array/sortingHelpers/applyInsertionSortIfNeeded.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,KAAU,EACV,GAAW,EACX,IAAY,EACZ,eAAmC,EACnC,sBAA8B,EACrB,EAAE;IACX,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC,IAAI,sBAAsB,EAAE,CAAC;QAC7C,aAAa,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
@@ -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"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * Curries a function.
3
+ *
4
+ * @param func - The function to curry.
5
+ * @returns The curried function.
6
+ *
7
+ * @example
8
+ * // Example with a function that adds three numbers
9
+ * const add = (a: number, b: number, c: number) => a + b + c;
10
+ * const curriedAdd = curry(add);
11
+ *
12
+ * console.log(curriedAdd(1)(2)(3)); // Output: 6
13
+ * console.log(curriedAdd(1, 2)(3)); // Output: 6
14
+ * console.log(curriedAdd(1, 2, 3)); // Output: 6
15
+ */
16
+ export declare function curry<Result>(function_: () => Result): () => Result;
17
+ export declare function curry<Argument1, Result>(function_: (argument1: Argument1) => Result): (argument1: Argument1) => Result;
18
+ export declare function curry<Argument1, Argument2, Result>(function_: (argument1: Argument1, argument2: Argument2) => Result): {
19
+ (argument1: Argument1): (argument2: Argument2) => Result;
20
+ (argument1: Argument1, argument2: Argument2): Result;
21
+ };
22
+ export declare function curry<Argument1, Argument2, Argument3, Result>(function_: (argument1: Argument1, argument2: Argument2, argument3: Argument3) => Result): {
23
+ (argument1: Argument1): {
24
+ (argument2: Argument2): (argument3: Argument3) => Result;
25
+ (argument2: Argument2, argument3: Argument3): Result;
26
+ };
27
+ (argument1: Argument1, argument2: Argument2): (argument3: Argument3) => Result;
28
+ (argument1: Argument1, argument2: Argument2, argument3: Argument3): Result;
29
+ };
30
+ export declare function curry<Argument1, Argument2, Argument3, Argument4, Result>(function_: (argument1: Argument1, argument2: Argument2, argument3: Argument3, argument4: Argument4) => Result): {
31
+ (argument1: Argument1): {
32
+ (argument2: Argument2): {
33
+ (argument3: Argument3): (argument4: Argument4) => Result;
34
+ (argument3: Argument3, argument4: Argument4): Result;
35
+ };
36
+ (argument2: Argument2, argument3: Argument3): (argument4: Argument4) => Result;
37
+ (argument2: Argument2, argument3: Argument3, argument4: Argument4): Result;
38
+ };
39
+ (argument1: Argument1, argument2: Argument2): {
40
+ (argument3: Argument3): (argument4: Argument4) => Result;
41
+ (argument3: Argument3, argument4: Argument4): Result;
42
+ };
43
+ (argument1: Argument1, argument2: Argument2, argument3: Argument3): (argument4: Argument4) => Result;
44
+ (argument1: Argument1, argument2: Argument2, argument3: Argument3, argument4: Argument4): Result;
45
+ };
46
+ export declare function curry<Argument1, Argument2, Argument3, Argument4, Argument5, Result>(function_: (argument1: Argument1, argument2: Argument2, argument3: Argument3, argument4: Argument4, argument5: Argument5) => Result): {
47
+ (argument1: Argument1): {
48
+ (argument2: Argument2): {
49
+ (argument3: Argument3): {
50
+ (argument4: Argument4): (argument5: Argument5) => Result;
51
+ (argument4: Argument4, argument5: Argument5): Result;
52
+ };
53
+ (argument3: Argument3, argument4: Argument4): (argument5: Argument5) => Result;
54
+ (argument3: Argument3, argument4: Argument4, argument5: Argument5): Result;
55
+ };
56
+ (argument2: Argument2, argument3: Argument3): {
57
+ (argument4: Argument4): (argument5: Argument5) => Result;
58
+ (argument4: Argument4, argument5: Argument5): Result;
59
+ };
60
+ (argument2: Argument2, argument3: Argument3, argument4: Argument4): (argument5: Argument5) => Result;
61
+ (argument2: Argument2, argument3: Argument3, argument4: Argument4, argument5: Argument5): Result;
62
+ };
63
+ (argument1: Argument1, argument2: Argument2): {
64
+ (argument3: Argument3): {
65
+ (argument4: Argument4): (argument5: Argument5) => Result;
66
+ (argument4: Argument4, argument5: Argument5): Result;
67
+ };
68
+ (argument3: Argument3, argument4: Argument4): (argument5: Argument5) => Result;
69
+ (argument3: Argument3, argument4: Argument4, argument5: Argument5): Result;
70
+ };
71
+ (argument1: Argument1, argument2: Argument2, argument3: Argument3): {
72
+ (argument4: Argument4): (argument5: Argument5) => Result;
73
+ (argument4: Argument4, argument5: Argument5): Result;
74
+ };
75
+ (argument1: Argument1, argument2: Argument2, argument3: Argument3, argument4: Argument4): (argument5: Argument5) => Result;
76
+ (argument1: Argument1, argument2: Argument2, argument3: Argument3, argument4: Argument4, argument5: Argument5): Result;
77
+ };
78
+ export declare function curry<Argument1, Argument2, Argument3, Argument4, Argument5, Argument6, Result>(function_: (argument1: Argument1, argument2: Argument2, argument3: Argument3, argument4: Argument4, argument5: Argument5, argument6: Argument6) => Result): {
79
+ (argument1: Argument1): {
80
+ (argument2: Argument2): {
81
+ (argument3: Argument3): {
82
+ (argument4: Argument4): {
83
+ (argument5: Argument5): (argument6: Argument6) => Result;
84
+ (argument5: Argument5, argument6: Argument6): Result;
85
+ };
86
+ (argument4: Argument4, argument5: Argument5): (argument6: Argument6) => Result;
87
+ (argument4: Argument4, argument5: Argument5, argument6: Argument6): Result;
88
+ };
89
+ (argument3: Argument3, argument4: Argument4): {
90
+ (argument5: Argument5): (argument6: Argument6) => Result;
91
+ (argument5: Argument5, argument6: Argument6): Result;
92
+ };
93
+ (argument3: Argument3, argument4: Argument4, argument5: Argument5): (argument6: Argument6) => Result;
94
+ (argument3: Argument3, argument4: Argument4, argument5: Argument5, argument6: Argument6): Result;
95
+ };
96
+ (argument2: Argument2, argument3: Argument3): {
97
+ (argument4: Argument4): {
98
+ (argument5: Argument5): (argument6: Argument6) => Result;
99
+ (argument5: Argument5, argument6: Argument6): Result;
100
+ };
101
+ (argument4: Argument4, argument5: Argument5): (argument6: Argument6) => Result;
102
+ (argument4: Argument4, argument5: Argument5, argument6: Argument6): Result;
103
+ };
104
+ (argument2: Argument2, argument3: Argument3, argument4: Argument4): {
105
+ (argument5: Argument5): (argument6: Argument6) => Result;
106
+ (argument5: Argument5, argument6: Argument6): Result;
107
+ };
108
+ (argument2: Argument2, argument3: Argument3, argument4: Argument4, argument5: Argument5): (argument6: Argument6) => Result;
109
+ (argument2: Argument2, argument3: Argument3, argument4: Argument4, argument5: Argument5, argument6: Argument6): Result;
110
+ };
111
+ (argument1: Argument1, argument2: Argument2): {
112
+ (argument3: Argument3): {
113
+ (argument4: Argument4): {
114
+ (argument5: Argument5): (argument6: Argument6) => Result;
115
+ (argument5: Argument5, argument6: Argument6): Result;
116
+ };
117
+ (argument4: Argument4, argument5: Argument5): (argument6: Argument6) => Result;
118
+ (argument4: Argument4, argument5: Argument5, argument6: Argument6): Result;
119
+ };
120
+ (argument3: Argument3, argument4: Argument4): {
121
+ (argument5: Argument5): (argument6: Argument6) => Result;
122
+ (argument5: Argument5, argument6: Argument6): Result;
123
+ };
124
+ (argument3: Argument3, argument4: Argument4, argument5: Argument5): (argument6: Argument6) => Result;
125
+ (argument3: Argument3, argument4: Argument4, argument5: Argument5, argument6: Argument6): Result;
126
+ };
127
+ (argument1: Argument1, argument2: Argument2, argument3: Argument3): {
128
+ (argument4: Argument4): {
129
+ (argument5: Argument5): (argument6: Argument6) => Result;
130
+ (argument5: Argument5, argument6: Argument6): Result;
131
+ };
132
+ (argument4: Argument4, argument5: Argument5): (argument6: Argument6) => Result;
133
+ (argument4: Argument4, argument5: Argument5, argument6: Argument6): Result;
134
+ };
135
+ (argument1: Argument1, argument2: Argument2, argument3: Argument3, argument4: Argument4): {
136
+ (argument5: Argument5): (argument6: Argument6) => Result;
137
+ (argument5: Argument5, argument6: Argument6): Result;
138
+ };
139
+ (argument1: Argument1, argument2: Argument2, argument3: Argument3, argument4: Argument4, argument5: Argument5): (argument6: Argument6) => Result;
140
+ (argument1: Argument1, argument2: Argument2, argument3: Argument3, argument4: Argument4, argument5: Argument5, argument6: Argument6): Result;
141
+ };
@@ -0,0 +1,11 @@
1
+ export function curry(function_) {
2
+ return function curried(...arguments_) {
3
+ if (arguments_.length >= function_.length) {
4
+ return function_.apply(this, arguments_);
5
+ }
6
+ return function (...moreArguments) {
7
+ return Reflect.apply(curried, this, [...arguments_, ...moreArguments]);
8
+ };
9
+ };
10
+ }
11
+ //# sourceMappingURL=curry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curry.js","sourceRoot":"","sources":["../../src/Function/curry.ts"],"names":[],"mappings":"AAiXA,MAAM,UAAU,KAAK,CAAC,SAAgD;IACpE,OAAO,SAAS,OAAO,CAAgB,GAAG,UAAqB;QAC7D,IAAI,UAAU,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YAC1C,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,UAAyB,GAAG,aAAwB;YACzD,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,UAAU,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC;QACzE,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1 @@
1
+ export * from "./curry";
@@ -0,0 +1,2 @@
1
+ export * from "./curry";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Function/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC"}
@@ -1,2 +1,3 @@
1
1
  export * from "./createPipeline";
2
2
  export * from "./parseJson";
3
+ export * from "./pipe";
@@ -1,3 +1,4 @@
1
1
  export * from "./createPipeline";
2
2
  export * from "./parseJson";
3
+ export * from "./pipe";
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Tool/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Tool/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC"}
@@ -0,0 +1,66 @@
1
+ import { type Result } from "../Error/safeExecute";
2
+ /**
3
+ * A class to handle pipeline processing
4
+ * Allows chaining transformations in a fluent interface
5
+ * @template T Type of the current value
6
+ */
7
+ export declare class Pipe<T> {
8
+ private readonly value;
9
+ /**
10
+ * @param value Current value in the pipe
11
+ */
12
+ constructor(value: T);
13
+ /**
14
+ * Applies a transformation function and returns a new Pipe instance
15
+ * @param fn Transformation function to apply
16
+ * @returns New Pipe instance with transformed value
17
+ */
18
+ map<U>(function_: (input: T) => U): Pipe<U>;
19
+ /**
20
+ * Applies a transformation function only if the condition is met
21
+ * @param predicate Condition function
22
+ * @param fn Transformation function to apply if condition is met
23
+ * @returns New Pipe instance with conditionally transformed value
24
+ */
25
+ when<U>(predicate: (input: T) => boolean, function_: (input: T) => U): Pipe<U | T>;
26
+ /**
27
+ * Executes a side effect without changing the value
28
+ * @param fn Function to execute as a side effect
29
+ * @returns Same Pipe instance
30
+ */
31
+ tap(function_: (input: T) => void): Pipe<T>;
32
+ /**
33
+ * Strictly filters the value based on a predicate function
34
+ * Throws an error if the predicate returns false
35
+ * @param predicate Condition function that determines if value should be filtered
36
+ * @returns New Pipe instance with filtered value and narrowed type
37
+ * @throws Error if the predicate returns false
38
+ */
39
+ filterStrict<U extends T>(predicate: (input: T) => input is U): Pipe<U>;
40
+ /**
41
+ * Filters the value based on a predicate function
42
+ * Returns a default value if the predicate returns false
43
+ * @param predicate Condition function that determines if value should be filtered
44
+ * @param defaultValue Default value to use if predicate returns false
45
+ * @returns New Pipe instance with filtered value or default value
46
+ */
47
+ filterWithDefault<U extends T>(predicate: (input: T) => input is U, defaultValue: U): Pipe<U>;
48
+ /**
49
+ * Filters the value based on a predicate function
50
+ * Returns a Result type containing either the filtered value or an error
51
+ * @param predicate Condition function that determines if value should be filtered
52
+ * @returns New Pipe instance with Result containing filtered value or error
53
+ */
54
+ filterResult<U extends T>(predicate: (input: T) => input is U): Pipe<Result<U, Error>>;
55
+ /**
56
+ * Terminates the pipeline and returns the final value
57
+ * @returns Final result of the pipeline processing
58
+ */
59
+ end(): T;
60
+ }
61
+ /**
62
+ * Creates a new Pipe instance with an initial value
63
+ * @param initialValue Initial value for the pipeline
64
+ * @returns New Pipe instance
65
+ */
66
+ export declare function pipe<T>(initialValue: T): Pipe<T>;
@@ -0,0 +1,98 @@
1
+ import { safeExecute } from "../Error/safeExecute";
2
+ /**
3
+ * A class to handle pipeline processing
4
+ * Allows chaining transformations in a fluent interface
5
+ * @template T Type of the current value
6
+ */
7
+ export class Pipe {
8
+ value;
9
+ /**
10
+ * @param value Current value in the pipe
11
+ */
12
+ constructor(value) {
13
+ this.value = value;
14
+ }
15
+ /**
16
+ * Applies a transformation function and returns a new Pipe instance
17
+ * @param fn Transformation function to apply
18
+ * @returns New Pipe instance with transformed value
19
+ */
20
+ map(function_) {
21
+ return new Pipe(function_(this.value));
22
+ }
23
+ /**
24
+ * Applies a transformation function only if the condition is met
25
+ * @param predicate Condition function
26
+ * @param fn Transformation function to apply if condition is met
27
+ * @returns New Pipe instance with conditionally transformed value
28
+ */
29
+ when(predicate, function_) {
30
+ return predicate(this.value)
31
+ ? new Pipe(function_(this.value))
32
+ : new Pipe(this.value);
33
+ }
34
+ /**
35
+ * Executes a side effect without changing the value
36
+ * @param fn Function to execute as a side effect
37
+ * @returns Same Pipe instance
38
+ */
39
+ tap(function_) {
40
+ function_(this.value);
41
+ return this;
42
+ }
43
+ /**
44
+ * Strictly filters the value based on a predicate function
45
+ * Throws an error if the predicate returns false
46
+ * @param predicate Condition function that determines if value should be filtered
47
+ * @returns New Pipe instance with filtered value and narrowed type
48
+ * @throws Error if the predicate returns false
49
+ */
50
+ filterStrict(predicate) {
51
+ if (predicate(this.value)) {
52
+ return new Pipe(this.value);
53
+ }
54
+ throw new Error("Value did not match filter predicate");
55
+ }
56
+ /**
57
+ * Filters the value based on a predicate function
58
+ * Returns a default value if the predicate returns false
59
+ * @param predicate Condition function that determines if value should be filtered
60
+ * @param defaultValue Default value to use if predicate returns false
61
+ * @returns New Pipe instance with filtered value or default value
62
+ */
63
+ filterWithDefault(predicate, defaultValue) {
64
+ return predicate(this.value)
65
+ ? new Pipe(this.value)
66
+ : new Pipe(defaultValue);
67
+ }
68
+ /**
69
+ * Filters the value based on a predicate function
70
+ * Returns a Result type containing either the filtered value or an error
71
+ * @param predicate Condition function that determines if value should be filtered
72
+ * @returns New Pipe instance with Result containing filtered value or error
73
+ */
74
+ filterResult(predicate) {
75
+ return new Pipe(safeExecute(() => {
76
+ if (predicate(this.value)) {
77
+ return this.value;
78
+ }
79
+ throw new Error("Value did not match filter predicate");
80
+ }));
81
+ }
82
+ /**
83
+ * Terminates the pipeline and returns the final value
84
+ * @returns Final result of the pipeline processing
85
+ */
86
+ end() {
87
+ return this.value;
88
+ }
89
+ }
90
+ /**
91
+ * Creates a new Pipe instance with an initial value
92
+ * @param initialValue Initial value for the pipeline
93
+ * @returns New Pipe instance
94
+ */
95
+ export function pipe(initialValue) {
96
+ return new Pipe(initialValue);
97
+ }
98
+ //# sourceMappingURL=pipe.js.map
@@ -0,0 +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"}