umt 2.12.3 → 2.14.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.
- package/README.md +60 -0
- package/module/Array/arraysJoin.js +1 -1
- package/module/Array/arraysJoin.js.map +1 -1
- package/module/Array/chunk.js +1 -2
- package/module/Array/chunk.js.map +1 -1
- package/module/Array/generateNumberArray.js +13 -3
- package/module/Array/generateNumberArray.js.map +1 -1
- package/module/Array/getArraysDiff.js +5 -1
- package/module/Array/getArraysDiff.js.map +1 -1
- package/module/Array/mergeSort.js +45 -18
- package/module/Array/mergeSort.js.map +1 -1
- package/module/Array/pop.js +2 -1
- package/module/Array/pop.js.map +1 -1
- package/module/Array/randomSelect.js +8 -0
- package/module/Array/randomSelect.js.map +1 -1
- package/module/Array/sortingHelpers/rangeValidator.js +3 -2
- package/module/Array/sortingHelpers/rangeValidator.js.map +1 -1
- package/module/Array/timSort.js +25 -23
- package/module/Array/timSort.js.map +1 -1
- package/module/Array/ultraNumberSort.js +214 -136
- package/module/Array/ultraNumberSort.js.map +1 -1
- package/module/Async/defer.d.ts +18 -0
- package/module/Async/defer.js +19 -0
- package/module/Async/defer.js.map +1 -0
- package/module/Async/index.d.ts +4 -0
- package/module/Async/index.js +5 -0
- package/module/Async/index.js.map +1 -0
- package/module/Async/parallel.d.ts +10 -0
- package/module/Async/parallel.js +44 -0
- package/module/Async/parallel.js.map +1 -0
- package/module/Async/sleep.d.ts +8 -0
- package/module/Async/sleep.js +11 -0
- package/module/Async/sleep.js.map +1 -0
- package/module/Async/timeout.d.ts +10 -0
- package/module/Async/timeout.js +22 -0
- package/module/Async/timeout.js.map +1 -0
- package/module/Color/cmykToRgba.js +6 -7
- package/module/Color/cmykToRgba.js.map +1 -1
- package/module/Color/hexaToRgba.js +1 -8
- package/module/Color/hexaToRgba.js.map +1 -1
- package/module/Color/hslaToRgba.d.ts +0 -1
- package/module/Color/hslaToRgba.js +7 -22
- package/module/Color/hslaToRgba.js.map +1 -1
- package/module/Color/rgbaToCmyk.js +0 -11
- package/module/Color/rgbaToCmyk.js.map +1 -1
- package/module/Color/rgbaToHexA.js +2 -15
- package/module/Color/rgbaToHexA.js.map +1 -1
- package/module/Color/rgbaToHsla.d.ts +0 -1
- package/module/Color/rgbaToHsla.js +0 -12
- package/module/Color/rgbaToHsla.js.map +1 -1
- package/module/Crypto/constants.d.ts +2 -0
- package/module/Crypto/constants.js +3 -0
- package/module/Crypto/constants.js.map +1 -0
- package/module/Crypto/decodeBase32.js +4 -5
- package/module/Crypto/decodeBase32.js.map +1 -1
- package/module/Crypto/decodeBase58.js +7 -6
- package/module/Crypto/decodeBase58.js.map +1 -1
- package/module/Crypto/encodeBase32.js +2 -1
- package/module/Crypto/encodeBase32.js.map +1 -1
- package/module/Crypto/encodeBase58.js +7 -3
- package/module/Crypto/encodeBase58.js.map +1 -1
- package/module/DataStructure/index.d.ts +2 -0
- package/module/DataStructure/index.js +2 -0
- package/module/DataStructure/index.js.map +1 -1
- package/module/DataStructure/lruCache.d.ts +139 -0
- package/module/DataStructure/lruCache.js +172 -0
- package/module/DataStructure/lruCache.js.map +1 -0
- package/module/DataStructure/ttlCache.d.ts +139 -0
- package/module/DataStructure/ttlCache.js +172 -0
- package/module/DataStructure/ttlCache.js.map +1 -0
- package/module/Error/flatMapResult.d.ts +23 -0
- package/module/Error/flatMapResult.js +28 -0
- package/module/Error/flatMapResult.js.map +1 -0
- package/module/Error/index.d.ts +3 -0
- package/module/Error/index.js +3 -0
- package/module/Error/index.js.map +1 -1
- package/module/Error/mapResult.d.ts +21 -0
- package/module/Error/mapResult.js +27 -0
- package/module/Error/mapResult.js.map +1 -0
- package/module/Error/matchResult.d.ts +25 -0
- package/module/Error/matchResult.js +27 -0
- package/module/Error/matchResult.js.map +1 -0
- package/module/Error/safeExecute.d.ts +16 -3
- package/module/Error/safeExecute.js +5 -2
- package/module/Error/safeExecute.js.map +1 -1
- package/module/Function/debounce.d.ts +38 -0
- package/module/Function/debounce.js +67 -0
- package/module/Function/debounce.js.map +1 -0
- package/module/Function/index.d.ts +4 -0
- package/module/Function/index.js +4 -0
- package/module/Function/index.js.map +1 -1
- package/module/Function/memoize.d.ts +36 -0
- package/module/Function/memoize.js +54 -0
- package/module/Function/memoize.js.map +1 -0
- package/module/Function/once.d.ts +18 -0
- package/module/Function/once.js +29 -0
- package/module/Function/once.js.map +1 -0
- package/module/Function/throttle.d.ts +25 -0
- package/module/Function/throttle.js +55 -0
- package/module/Function/throttle.js.map +1 -0
- package/module/IP/cidrToLong.d.ts +0 -1
- package/module/IP/cidrToLong.js +0 -4
- package/module/IP/cidrToLong.js.map +1 -1
- package/module/IP/cidrToSubnetMask.d.ts +0 -1
- package/module/IP/cidrToSubnetMask.js +0 -1
- package/module/IP/cidrToSubnetMask.js.map +1 -1
- package/module/IP/getNetworkAddress.d.ts +0 -1
- package/module/IP/getNetworkAddress.js +2 -32
- package/module/IP/getNetworkAddress.js.map +1 -1
- package/module/IP/ipToBinaryString.d.ts +0 -1
- package/module/IP/ipToBinaryString.js +2 -25
- package/module/IP/ipToBinaryString.js.map +1 -1
- package/module/IP/ipToLong.d.ts +0 -1
- package/module/IP/ipToLong.js +0 -1
- package/module/IP/ipToLong.js.map +1 -1
- package/module/IP/isInRange.d.ts +0 -1
- package/module/IP/isInRange.js +5 -28
- package/module/IP/isInRange.js.map +1 -1
- package/module/IP/isPrivateIp.d.ts +0 -1
- package/module/IP/isPrivateIp.js +1 -10
- package/module/IP/isPrivateIp.js.map +1 -1
- package/module/IP/longToIp.d.ts +0 -1
- package/module/IP/longToIp.js +0 -8
- package/module/IP/longToIp.js.map +1 -1
- package/module/IP/subnetMaskToCidr.d.ts +0 -1
- package/module/IP/subnetMaskToCidr.js +2 -23
- package/module/IP/subnetMaskToCidr.js.map +1 -1
- package/module/Iterator/index.d.ts +3 -0
- package/module/Iterator/index.js +4 -0
- package/module/Iterator/index.js.map +1 -0
- package/module/Iterator/lazyFilter.d.ts +10 -0
- package/module/Iterator/lazyFilter.js +19 -0
- package/module/Iterator/lazyFilter.js.map +1 -0
- package/module/Iterator/lazyMap.d.ts +10 -0
- package/module/Iterator/lazyMap.js +17 -0
- package/module/Iterator/lazyMap.js.map +1 -0
- package/module/Iterator/lazyTake.d.ts +10 -0
- package/module/Iterator/lazyTake.js +20 -0
- package/module/Iterator/lazyTake.js.map +1 -0
- package/module/Math/addition.js +20 -4
- package/module/Math/addition.js.map +1 -1
- package/module/Math/average.js +3 -3
- package/module/Math/average.js.map +1 -1
- package/module/Math/bitwise.js +1 -1
- package/module/Math/bitwise.js.map +1 -1
- package/module/Math/calculator/core.js +2 -1
- package/module/Math/calculator/core.js.map +1 -1
- package/module/Math/calculator/literalExpression.js +1 -1
- package/module/Math/clamp.d.ts +16 -0
- package/module/Math/clamp.js +19 -0
- package/module/Math/clamp.js.map +1 -0
- package/module/Math/correlationCoefficient.js +0 -3
- package/module/Math/correlationCoefficient.js.map +1 -1
- package/module/Math/inRange.d.ts +19 -0
- package/module/Math/inRange.js +24 -0
- package/module/Math/inRange.js.map +1 -0
- package/module/Math/index.d.ts +3 -0
- package/module/Math/index.js +3 -0
- package/module/Math/index.js.map +1 -1
- package/module/Math/median.js +2 -2
- package/module/Math/median.js.map +1 -1
- package/module/Math/nCr.js +2 -4
- package/module/Math/nCr.js.map +1 -1
- package/module/Math/percentile.js +2 -5
- package/module/Math/percentile.js.map +1 -1
- package/module/Math/primeFactorization.js +1 -1
- package/module/Math/primeFactorization.js.map +1 -1
- package/module/Math/sumPrecise.d.ts +14 -0
- package/module/Math/sumPrecise.js +27 -0
- package/module/Math/sumPrecise.js.map +1 -0
- package/module/Math/uuidv7.js +56 -22
- package/module/Math/uuidv7.js.map +1 -1
- package/module/Number/formatNumber.d.ts +42 -0
- package/module/Number/formatNumber.js +44 -0
- package/module/Number/formatNumber.js.map +1 -0
- package/module/Number/index.d.ts +3 -0
- package/module/Number/index.js +4 -0
- package/module/Number/index.js.map +1 -0
- package/module/Number/toOrdinal.d.ts +20 -0
- package/module/Number/toOrdinal.js +37 -0
- package/module/Number/toOrdinal.js.map +1 -0
- package/module/Number/toPercentage.d.ts +20 -0
- package/module/Number/toPercentage.js +27 -0
- package/module/Number/toPercentage.js.map +1 -0
- package/module/Object/deepClone.d.ts +15 -0
- package/module/Object/deepClone.js +65 -0
- package/module/Object/deepClone.js.map +1 -0
- package/module/Object/getObjectsCommon.d.ts +23 -0
- package/module/Object/getObjectsCommon.js +60 -0
- package/module/Object/getObjectsCommon.js.map +1 -0
- package/module/Object/getObjectsDiff.d.ts +25 -0
- package/module/Object/getObjectsDiff.js +79 -0
- package/module/Object/getObjectsDiff.js.map +1 -0
- package/module/Object/index.d.ts +6 -0
- package/module/Object/index.js +6 -0
- package/module/Object/index.js.map +1 -1
- package/module/Object/isPlainObject.d.ts +16 -0
- package/module/Object/isPlainObject.js +32 -0
- package/module/Object/isPlainObject.js.map +1 -0
- package/module/Object/mapKeys.d.ts +15 -0
- package/module/Object/mapKeys.js +28 -0
- package/module/Object/mapKeys.js.map +1 -0
- package/module/Object/mapValues.d.ts +15 -0
- package/module/Object/mapValues.js +27 -0
- package/module/Object/mapValues.js.map +1 -0
- package/module/Object/mergeDeep.js +4 -9
- package/module/Object/mergeDeep.js.map +1 -1
- package/module/Object/omit.d.ts +1 -1
- package/module/Object/omit.js.map +1 -1
- package/module/Object/pickDeep.js +6 -1
- package/module/Object/pickDeep.js.map +1 -1
- package/module/Predicate/every.d.ts +14 -0
- package/module/Predicate/every.js +22 -0
- package/module/Predicate/every.js.map +1 -0
- package/module/Predicate/index.d.ts +6 -0
- package/module/Predicate/index.js +7 -0
- package/module/Predicate/index.js.map +1 -0
- package/module/Predicate/isNotNullish.d.ts +11 -0
- package/module/Predicate/isNotNullish.js +12 -0
- package/module/Predicate/isNotNullish.js.map +1 -0
- package/module/Predicate/isNullish.d.ts +11 -0
- package/module/Predicate/isNullish.js +12 -0
- package/module/Predicate/isNullish.js.map +1 -0
- package/module/Predicate/matches.d.ts +11 -0
- package/module/Predicate/matches.js +20 -0
- package/module/Predicate/matches.js.map +1 -0
- package/module/Predicate/not.d.ts +10 -0
- package/module/Predicate/not.js +11 -0
- package/module/Predicate/not.js.map +1 -0
- package/module/Predicate/some.d.ts +15 -0
- package/module/Predicate/some.js +23 -0
- package/module/Predicate/some.js.map +1 -0
- package/module/String/camelCase.js +2 -2
- package/module/String/camelCase.js.map +1 -1
- package/module/String/escapeHtml.js +1 -1
- package/module/String/formatString/getValue.js +1 -1
- package/module/String/formatString/getValue.js.map +1 -1
- package/module/String/fromBase64.d.ts +0 -1
- package/module/String/fromBase64.js +1 -9
- package/module/String/fromBase64.js.map +1 -1
- package/module/String/fuzzySearch.js +74 -6
- package/module/String/fuzzySearch.js.map +1 -1
- package/module/String/kebabCase.js +1 -1
- package/module/String/kebabCase.js.map +1 -1
- package/module/String/levenshteinDistance.js +1 -2
- package/module/String/levenshteinDistance.js.map +1 -1
- package/module/String/randomString.js +23 -2
- package/module/String/randomString.js.map +1 -1
- package/module/String/reverseString.js +1 -1
- package/module/String/reverseString.js.map +1 -1
- package/module/String/slugify.js +1 -1
- package/module/String/toHalfWidth.js +2 -2
- package/module/String/toHalfWidth.js.map +1 -1
- package/module/String/truncate.js +0 -3
- package/module/String/truncate.js.map +1 -1
- package/module/String/unescapeHtml.js +1 -1
- package/module/String/unescapeHtml.js.map +1 -1
- package/module/Time/convertTime.js +4 -3
- package/module/Time/convertTime.js.map +1 -1
- package/module/Tool/escapeRegExp.d.ts +8 -0
- package/module/Tool/escapeRegExp.js +11 -0
- package/module/Tool/escapeRegExp.js.map +1 -0
- package/module/Tool/index.d.ts +1 -0
- package/module/Tool/index.js +1 -0
- package/module/Tool/index.js.map +1 -1
- package/module/URL/buildUrl.d.ts +17 -0
- package/module/URL/buildUrl.js +24 -0
- package/module/URL/buildUrl.js.map +1 -0
- package/module/URL/index.d.ts +4 -0
- package/module/URL/index.js +5 -0
- package/module/URL/index.js.map +1 -0
- package/module/URL/isAbsoluteUrl.d.ts +20 -0
- package/module/URL/isAbsoluteUrl.js +23 -0
- package/module/URL/isAbsoluteUrl.js.map +1 -0
- package/module/URL/joinPath.d.ts +24 -0
- package/module/URL/joinPath.js +43 -0
- package/module/URL/joinPath.js.map +1 -0
- package/module/URL/parseQueryString.d.ts +22 -0
- package/module/URL/parseQueryString.js +34 -0
- package/module/URL/parseQueryString.js.map +1 -0
- package/module/Validate/parseEmail.js +5 -5
- package/module/Validate/parseEmail.js.map +1 -1
- package/module/es5/Array/arraysJoin.js +1 -1
- package/module/es5/Array/chunk.js +3 -2
- package/module/es5/Array/generateNumberArray.js +21 -3
- package/module/es5/Array/getArraysDiff.js +5 -3
- package/module/es5/Array/mergeSort.js +51 -19
- package/module/es5/Array/pop.js +2 -7
- package/module/es5/Array/randomSelect.js +8 -0
- package/module/es5/Array/sortingHelpers/rangeValidator.js +3 -2
- package/module/es5/Array/timSort.js +25 -23
- package/module/es5/Array/ultraNumberSort.js +243 -243
- package/module/es5/Async/defer.d.ts +18 -0
- package/module/es5/Async/defer.js +32 -0
- package/module/es5/Async/index.d.ts +4 -0
- package/module/es5/Async/index.js +49 -0
- package/module/es5/Async/parallel.d.ts +10 -0
- package/module/es5/Async/parallel.js +48 -0
- package/module/es5/Async/sleep.d.ts +8 -0
- package/module/es5/Async/sleep.js +18 -0
- package/module/es5/Async/timeout.d.ts +10 -0
- package/module/es5/Async/timeout.js +29 -0
- package/module/es5/Color/cmykToRgba.js +6 -7
- package/module/es5/Color/hexaToRgba.js +7 -5
- package/module/es5/Color/hslaToRgba.d.ts +0 -1
- package/module/es5/Color/hslaToRgba.js +7 -22
- package/module/es5/Color/rgbaToCmyk.js +0 -4
- package/module/es5/Color/rgbaToHexA.js +2 -6
- package/module/es5/Color/rgbaToHsla.d.ts +0 -1
- package/module/es5/Color/rgbaToHsla.js +0 -5
- package/module/es5/Crypto/constants.d.ts +2 -0
- package/module/es5/Crypto/constants.js +8 -0
- package/module/es5/Crypto/decodeBase32.js +12 -5
- package/module/es5/Crypto/decodeBase58.js +14 -8
- package/module/es5/Crypto/encodeBase32.js +2 -1
- package/module/es5/Crypto/encodeBase58.js +8 -3
- package/module/es5/DataStructure/index.d.ts +2 -0
- package/module/es5/DataStructure/index.js +22 -0
- package/module/es5/DataStructure/lruCache.d.ts +139 -0
- package/module/es5/DataStructure/lruCache.js +205 -0
- package/module/es5/DataStructure/ttlCache.d.ts +139 -0
- package/module/es5/DataStructure/ttlCache.js +211 -0
- package/module/es5/Error/flatMapResult.d.ts +23 -0
- package/module/es5/Error/flatMapResult.js +33 -0
- package/module/es5/Error/index.d.ts +3 -0
- package/module/es5/Error/index.js +33 -0
- package/module/es5/Error/mapResult.d.ts +21 -0
- package/module/es5/Error/mapResult.js +32 -0
- package/module/es5/Error/matchResult.d.ts +25 -0
- package/module/es5/Error/matchResult.js +32 -0
- package/module/es5/Error/safeExecute.d.ts +16 -3
- package/module/es5/Error/safeExecute.js +3 -3
- package/module/es5/Function/debounce.d.ts +38 -0
- package/module/es5/Function/debounce.js +88 -0
- package/module/es5/Function/index.d.ts +4 -0
- package/module/es5/Function/index.js +44 -0
- package/module/es5/Function/memoize.d.ts +36 -0
- package/module/es5/Function/memoize.js +73 -0
- package/module/es5/Function/once.d.ts +18 -0
- package/module/es5/Function/once.js +37 -0
- package/module/es5/Function/throttle.d.ts +25 -0
- package/module/es5/Function/throttle.js +69 -0
- package/module/es5/IP/cidrToLong.d.ts +0 -1
- package/module/es5/IP/cidrToLong.js +0 -4
- package/module/es5/IP/cidrToSubnetMask.d.ts +0 -1
- package/module/es5/IP/cidrToSubnetMask.js +0 -1
- package/module/es5/IP/getNetworkAddress.d.ts +0 -1
- package/module/es5/IP/getNetworkAddress.js +2 -31
- package/module/es5/IP/ipToBinaryString.d.ts +0 -1
- package/module/es5/IP/ipToBinaryString.js +1 -40
- package/module/es5/IP/ipToLong.d.ts +0 -1
- package/module/es5/IP/ipToLong.js +0 -1
- package/module/es5/IP/isInRange.d.ts +0 -1
- package/module/es5/IP/isInRange.js +5 -29
- package/module/es5/IP/isPrivateIp.d.ts +0 -1
- package/module/es5/IP/isPrivateIp.js +3 -12
- package/module/es5/IP/longToIp.d.ts +0 -1
- package/module/es5/IP/longToIp.js +0 -6
- package/module/es5/IP/subnetMaskToCidr.d.ts +0 -1
- package/module/es5/IP/subnetMaskToCidr.js +2 -26
- package/module/es5/Iterator/index.d.ts +3 -0
- package/module/es5/Iterator/index.js +38 -0
- package/module/es5/Iterator/lazyFilter.d.ts +10 -0
- package/module/es5/Iterator/lazyFilter.js +63 -0
- package/module/es5/Iterator/lazyMap.d.ts +10 -0
- package/module/es5/Iterator/lazyMap.js +59 -0
- package/module/es5/Iterator/lazyTake.d.ts +10 -0
- package/module/es5/Iterator/lazyTake.js +65 -0
- package/module/es5/Math/addition.js +24 -14
- package/module/es5/Math/average.js +3 -5
- package/module/es5/Math/bitwise.js +1 -1
- package/module/es5/Math/calculator/core.js +2 -1
- package/module/es5/Math/calculator/literalExpression.js +1 -1
- package/module/es5/Math/clamp.d.ts +16 -0
- package/module/es5/Math/clamp.js +24 -0
- package/module/es5/Math/correlationCoefficient.js +0 -3
- package/module/es5/Math/inRange.d.ts +19 -0
- package/module/es5/Math/inRange.js +29 -0
- package/module/es5/Math/index.d.ts +3 -0
- package/module/es5/Math/index.js +33 -0
- package/module/es5/Math/median.js +2 -2
- package/module/es5/Math/nCr.js +2 -4
- package/module/es5/Math/percentile.js +2 -11
- package/module/es5/Math/primeFactorization.js +1 -1
- package/module/es5/Math/sumPrecise.d.ts +14 -0
- package/module/es5/Math/sumPrecise.js +41 -0
- package/module/es5/Math/uuidv7.js +25 -40
- package/module/es5/Number/formatNumber.d.ts +42 -0
- package/module/es5/Number/formatNumber.js +58 -0
- package/module/es5/Number/index.d.ts +3 -0
- package/module/es5/Number/index.js +38 -0
- package/module/es5/Number/toOrdinal.d.ts +20 -0
- package/module/es5/Number/toOrdinal.js +42 -0
- package/module/es5/Number/toPercentage.d.ts +20 -0
- package/module/es5/Number/toPercentage.js +33 -0
- package/module/es5/Object/deepClone.d.ts +15 -0
- package/module/es5/Object/deepClone.js +110 -0
- package/module/es5/Object/getObjectsCommon.d.ts +23 -0
- package/module/es5/Object/getObjectsCommon.js +92 -0
- package/module/es5/Object/getObjectsDiff.d.ts +25 -0
- package/module/es5/Object/getObjectsDiff.js +146 -0
- package/module/es5/Object/index.d.ts +6 -0
- package/module/es5/Object/index.js +66 -0
- package/module/es5/Object/isPlainObject.d.ts +16 -0
- package/module/es5/Object/isPlainObject.js +39 -0
- package/module/es5/Object/mapKeys.d.ts +15 -0
- package/module/es5/Object/mapKeys.js +33 -0
- package/module/es5/Object/mapValues.d.ts +15 -0
- package/module/es5/Object/mapValues.js +32 -0
- package/module/es5/Object/mergeDeep.js +7 -10
- package/module/es5/Object/omit.d.ts +1 -1
- package/module/es5/Object/pickDeep.js +4 -6
- package/module/es5/Predicate/every.d.ts +14 -0
- package/module/es5/Predicate/every.js +33 -0
- package/module/es5/Predicate/index.d.ts +6 -0
- package/module/es5/Predicate/index.js +71 -0
- package/module/es5/Predicate/isNotNullish.d.ts +11 -0
- package/module/es5/Predicate/isNotNullish.js +19 -0
- package/module/es5/Predicate/isNullish.d.ts +11 -0
- package/module/es5/Predicate/isNullish.js +19 -0
- package/module/es5/Predicate/matches.d.ts +11 -0
- package/module/es5/Predicate/matches.js +28 -0
- package/module/es5/Predicate/not.d.ts +10 -0
- package/module/es5/Predicate/not.js +20 -0
- package/module/es5/Predicate/some.d.ts +15 -0
- package/module/es5/Predicate/some.js +34 -0
- package/module/es5/String/camelCase.js +2 -2
- package/module/es5/String/escapeHtml.js +1 -1
- package/module/es5/String/formatString/getValue.js +1 -1
- package/module/es5/String/fromBase64.d.ts +0 -1
- package/module/es5/String/fromBase64.js +9 -8
- package/module/es5/String/fuzzySearch.js +84 -9
- package/module/es5/String/kebabCase.js +1 -1
- package/module/es5/String/levenshteinDistance.js +3 -2
- package/module/es5/String/randomString.js +24 -2
- package/module/es5/String/reverseString.js +7 -1
- package/module/es5/String/slugify.js +1 -1
- package/module/es5/String/toHalfWidth.js +2 -2
- package/module/es5/String/truncate.js +0 -3
- package/module/es5/String/unescapeHtml.js +1 -1
- package/module/es5/Time/convertTime.js +4 -3
- package/module/es5/Tool/escapeRegExp.d.ts +8 -0
- package/module/es5/Tool/escapeRegExp.js +18 -0
- package/module/es5/Tool/index.d.ts +1 -0
- package/module/es5/Tool/index.js +11 -0
- package/module/es5/URL/buildUrl.d.ts +17 -0
- package/module/es5/URL/buildUrl.js +31 -0
- package/module/es5/URL/index.d.ts +4 -0
- package/module/es5/URL/index.js +49 -0
- package/module/es5/URL/isAbsoluteUrl.d.ts +20 -0
- package/module/es5/URL/isAbsoluteUrl.js +28 -0
- package/module/es5/URL/joinPath.d.ts +24 -0
- package/module/es5/URL/joinPath.js +48 -0
- package/module/es5/URL/parseQueryString.d.ts +22 -0
- package/module/es5/URL/parseQueryString.js +57 -0
- package/module/es5/Validate/parseEmail.js +5 -5
- package/module/es5/index.d.ts +5 -0
- package/module/es5/index.js +73 -18
- package/module/es5/tsconfig.tsbuildinfo +1 -1
- package/module/index.d.ts +5 -0
- package/module/index.js +5 -0
- package/module/index.js.map +1 -1
- package/package.json +58 -27
package/README.md
CHANGED
|
@@ -60,11 +60,22 @@ bun add umt
|
|
|
60
60
|
| zip | `<T extends unknown[][]>(...arrays: T) => ZipArrayType<T>` | Creates a new array by combining elements from multiple arrays at corresponding positions | `zip([1, 2], ['a', 'b']); // [[1, 'a'], [2, 'b']]` |
|
|
61
61
|
| zipLongest | `<T extends unknown[][]>(...arrays: T) => ZipArrayType<T>` | Combines arrays of different lengths by padding shorter arrays with undefined values | `zipLongest([1, 2], ['a']); // [[1, 'a'], [2, undefined]]` |
|
|
62
62
|
|
|
63
|
+
### Async
|
|
64
|
+
|
|
65
|
+
| name | type | description | example |
|
|
66
|
+
|------|------|-------------|---------|
|
|
67
|
+
| defer | `<T>() => Deferred<T>` | Creates a deferred promise with externally accessible resolve and reject | `const d = defer<number>(); d.resolve(42); await d.promise; // 42` |
|
|
68
|
+
| parallel | `<T, U>(limit: number, items: T[], function_: (item: T, index: number) => Promise<U>) => Promise<U[]>` | Executes async functions in parallel with a concurrency limit | `await parallel(2, [1, 2, 3], async (n) => n * 2); // [2, 4, 6]` |
|
|
69
|
+
| sleep | `(ms: number) => Promise<void>` | Returns a promise that resolves after the specified milliseconds | `await sleep(1000);` |
|
|
70
|
+
| timeout | `<T>(promise: Promise<T>, ms: number) => Promise<T>` | Wraps a promise with a timeout, rejecting if it does not resolve in time | `await timeout(fetch("/api"), 5000);` |
|
|
71
|
+
|
|
63
72
|
### DataStructure
|
|
64
73
|
|
|
65
74
|
| name | type | description | example |
|
|
66
75
|
|------|------|-------------|---------|
|
|
76
|
+
| LRUCache | `class LRUCache<K, V>` | Least Recently Used cache with O(1) get/set using Map and doubly linked list | `const cache = new LRUCache<string, number>(3); cache.set("a", 1); cache.get("a"); // 1` |
|
|
67
77
|
| PriorityQueue | `class PriorityQueue<T>` | A priority queue implementation using a binary heap. Higher priority values are dequeued first. | `const queue = new PriorityQueue<string>(); queue.enqueue("low", 1); queue.enqueue("high", 3); queue.enqueueBack("back"); queue.dequeue(); // "high"` |
|
|
78
|
+
| TTLCache | `class TTLCache<K, V>` | Time-to-live cache with lazy expiration and optional max size | `const cache = new TTLCache<string, number>({ defaultTTL: 5000 }); cache.set("a", 1); cache.get("a"); // 1` |
|
|
68
79
|
|
|
69
80
|
### Color
|
|
70
81
|
|
|
@@ -107,6 +118,9 @@ bun add umt
|
|
|
107
118
|
|
|
108
119
|
| name | type | description | example |
|
|
109
120
|
|------|------|-------------|---------|
|
|
121
|
+
| flatMapResult | `<V, E, U, F>(result: Result<V, E>, function_: (value: V) => Result<U, F>) => Result<U, E \| F>` | Transforms a success Result's value using a function that returns a Result | `flatMapResult({type: "success", value: 5}, (n) => ({type: "success", value: n * 2})); // {type: "success", value: 10}` |
|
|
122
|
+
| mapResult | `<V, E, U>(result: Result<V, E>, function_: (value: V) => U) => Result<U, E>` | Transforms a success Result's value using the provided function | `mapResult({type: "success", value: 5}, (n) => n * 2); // {type: "success", value: 10}` |
|
|
123
|
+
| matchResult | `<V, E, S, F>(result: Result<V, E>, handlers: {onSuccess: (value: V) => S; onError: (error: E) => F}) => S \| F` | Pattern matches on a Result, applying the appropriate handler | `matchResult({type: "success", value: 42}, {onSuccess: (v) => "Got " + v, onError: (e) => "Failed"}); // "Got 42"` |
|
|
110
124
|
| safeExecute | `<V, E = Error>(callback: () => V) => Result<V, E>` | Safely executes a callback function and returns a Result type | `safeExecute(() => JSON.parse('{"a": 1}')); // {type: "success", value: {a: 1}}` |
|
|
111
125
|
|
|
112
126
|
### Function
|
|
@@ -114,6 +128,18 @@ bun add umt
|
|
|
114
128
|
| name | type | description | example |
|
|
115
129
|
|------|------|-------------|---------|
|
|
116
130
|
| curry | `(func: (...args: unknown[]) => unknown) => Function` | Curries a function | `const add = (a, b, c) => a + b + c; curry(add)(1)(2)(3); // 6` |
|
|
131
|
+
| debounce | `<T>(function_: T, wait: number, options?: DebounceOptions) => DebouncedFunction<T>` | Creates a debounced version of the provided function with leading/trailing options | `const debounced = debounce(() => console.log("called"), 300); debounced(); debounced.cancel();` |
|
|
132
|
+
| memoize | `<A extends unknown[], R, K>(function_: (...args: A) => R, options?: MemoizeOptions<K>) => MemoizedFunction<A, R, K>` | Creates a memoized version of the provided function with optional maxSize | `const m = memoize((n: number) => n * 2); m(5); // 10 (computed); m(5); // 10 (cached)` |
|
|
133
|
+
| once | `<A extends unknown[], R>(function_: (...args: A) => R) => (...args: A) => R` | Creates a function that is restricted to be called only once | `const init = once(() => 42); init(); // 42; init(); // 42 (cached)` |
|
|
134
|
+
| throttle | `<T>(function_: T, wait: number) => ThrottledFunction<T>` | Creates a throttled version of the provided function | `const throttled = throttle(() => console.log("called"), 300); throttled(); throttled.cancel();` |
|
|
135
|
+
|
|
136
|
+
### Iterator
|
|
137
|
+
|
|
138
|
+
| name | type | description | example |
|
|
139
|
+
|------|------|-------------|---------|
|
|
140
|
+
| lazyFilter | `function*<T>(iterable: Iterable<T>, predicate: (value: T, index: number) => boolean) => Generator<T>` | Lazily filters values from an iterable using a generator | `[...lazyFilter([1, 2, 3, 4], (n) => n % 2 === 0)]; // [2, 4]` |
|
|
141
|
+
| lazyMap | `function*<T, U>(iterable: Iterable<T>, function_: (value: T, index: number) => U) => Generator<U>` | Lazily maps values from an iterable using a generator | `[...lazyMap([1, 2, 3], (n) => n * 2)]; // [2, 4, 6]` |
|
|
142
|
+
| lazyTake | `function*<T>(iterable: Iterable<T>, n: number) => Generator<T>` | Lazily takes the first n values from an iterable | `[...lazyTake([1, 2, 3, 4, 5], 3)]; // [1, 2, 3]` |
|
|
117
143
|
|
|
118
144
|
### IP
|
|
119
145
|
|
|
@@ -136,6 +162,7 @@ bun add umt
|
|
|
136
162
|
|------|------|-------------|---------|
|
|
137
163
|
| addition | `(...numbers: number[]) => number` | Addition without floating point errors | `addition(0.1, 0.2); // 0.3` |
|
|
138
164
|
| average | `(numbers: number[]) => number` | Calculates the arithmetic mean of an array of numbers | `average([1, 2, 3]); // 2` |
|
|
165
|
+
| clamp | `(value: number, min: number, max: number) => number` | Clamps a number between a minimum and maximum value | `clamp(-3, 0, 10); // 0` |
|
|
139
166
|
| correlationCoefficient | `(x: number[], y: number[]) => number` | Calculate the Pearson correlation coefficient between two arrays | `correlationCoefficient([1, 2, 3, 4, 5], [2, 4, 6, 8, 10]); // 1` |
|
|
140
167
|
| bitwise | `(x: number, k: number, direction?: "left" \| "right") => number` | Performs bit rotation on a number | `bitwise(0x12345678, 8); // 0x34567812` |
|
|
141
168
|
| calculator | `<T extends Record<string, string \| number>>(expression: string, exchange?: T) => string` | Calculator function that handles mathematical expressions and simple equations | `calculator("1+2"); // "3"` |
|
|
@@ -149,6 +176,7 @@ bun add umt
|
|
|
149
176
|
| flexibleNumberConversion | `(value: unknown) => number` | Flexible function to convert various inputs to numbers whenever possible | `flexibleNumberConversion("456"); // 456` |
|
|
150
177
|
| gcd | `(x: number, y: number, ...z: number[]) => number` | Greatest Common Divisor (GCD) | `gcd(12, 18); // 6` |
|
|
151
178
|
| getDecimalLength | `(value: number) => number` | Gets the number of decimal places in a number | `getDecimalLength(1.23); // 2` |
|
|
179
|
+
| inRange | `(value: number, start: number, end?: number) => boolean` | Checks if a number is within a specified range | `inRange(3, 5); // true (range: [0, 5))` |
|
|
152
180
|
| lcm | `(x: number, y: number) => number` | Least Common Multiple (LCM) | `lcm(2, 3); // 6` |
|
|
153
181
|
| linearCongruentialGenerator | `(seed: number, max?: number, multiplier?: number, increment?: number) => number` | Linear Congruential Generator for random number generation | `linearCongruentialGenerator(12345);` |
|
|
154
182
|
| literalExpression | `(x: string) => string` | Solves literal equations with variables | `literalExpression("x+1=2"); // "1"` |
|
|
@@ -174,6 +202,7 @@ bun add umt
|
|
|
174
202
|
| solveEquation | `(coefficients: number[][], constants: number[]) => number[]` | Solves a system of linear equations using Gaussian elimination | `solveEquation([[1, 1], [1, 2]], [4, 10]); // [-2, 6]` |
|
|
175
203
|
| standardDeviation | `(values: number[]) => number` | Calculates the standard deviation of a set of values | `standardDeviation([1, 2, 3]); // 0.816496580927726` |
|
|
176
204
|
| subtract | `(...numbers: number[]) => number` | Performs subtraction with arbitrary number of arguments without floating point errors | `subtract(0.1, 0.2); // -0.1` |
|
|
205
|
+
| sumPrecise | `(numbers: number[]) => number` | Calculates the sum using Neumaier summation for improved floating-point precision | `sumPrecise([1e20, 1, -1e20]); // 1` |
|
|
177
206
|
| toBaseN | `(value: number, radix?: number) => string` | Converts a number to a string representation in the specified base | `toBaseN(10); // "1010" (binary)` |
|
|
178
207
|
| toCelsius | `(kelvin: number) => number` | Converts temperature from Kelvin to Celsius | `toCelsius(300); // 26.85` |
|
|
179
208
|
| toKelvin | `(celsius: number) => number` | Converts temperature from Celsius to Kelvin | `toKelvin(26.85); // 300` |
|
|
@@ -181,19 +210,41 @@ bun add umt
|
|
|
181
210
|
| valueSwap | `(x: number, y: number) => [number, number]` | Swaps two numbers to ensure x < y | `valueSwap(2, 1); // [1, 2]` |
|
|
182
211
|
| xoshiro256 | `(state: [number, number, number, number], min?: number, max?: number) => number` | Generates random numbers using the Xoshiro256** algorithm | `xoshiro256([1, 2, 3, 4]); // random number between 0 and 1` |
|
|
183
212
|
|
|
213
|
+
### Number
|
|
214
|
+
|
|
215
|
+
| name | type | description | example |
|
|
216
|
+
|------|------|-------------|---------|
|
|
217
|
+
| formatNumber | `(value: number, options?: FormatNumberOptions) => string` | Formats a number using Intl.NumberFormat | `formatNumber(1234567.89); // "1,234,567.89"` |
|
|
218
|
+
| toOrdinal | `(value: number) => string` | Converts a number to its English ordinal string representation | `toOrdinal(1); // "1st"` |
|
|
219
|
+
| toPercentage | `(value: number, total: number, decimals?: number) => number` | Calculates the percentage of a value relative to a total | `toPercentage(1, 3); // 33.33` |
|
|
220
|
+
|
|
184
221
|
### Object
|
|
185
222
|
|
|
186
223
|
| name | type | description | example |
|
|
187
224
|
|------|------|-------------|---------|
|
|
225
|
+
| deepClone | `<T>(value: T) => T` | Creates a deep clone of the given value using structuredClone | `const cloned = deepClone({a: {b: 1}}); cloned.a.b = 99; // original unchanged` |
|
|
188
226
|
| has | `<T extends { [key: string]: unknown }>(object: T, path: string \| string[]) => boolean` | Determines if an object has a specified path | `has({ a: { b: 1 } }, "a.b"); // true` |
|
|
227
|
+
| isPlainObject | `(value: unknown) => value is Record<string, unknown>` | Checks if a value is a plain object | `isPlainObject({}); // true; isPlainObject(new Map()); // false` |
|
|
189
228
|
| isEmpty | `(object: Record<string, unknown>) => boolean` | Checks if an object is empty (has no own properties) | `isEmpty({}); // true` |
|
|
190
229
|
| keyBy | `<T>(collection: T[] \| Record<PropertyName, T>, iteratee?: Iteratee<T>) => Record<PropertyName, T>` | Creates an object composed of keys generated from the results of running each element of collection through iteratee | `keyBy([{id: 1, name: 'a'}, {id: 2, name: 'b'}], 'id'); // {1: {id: 1, name: 'a'}, 2: {id: 2, name: 'b'}}` |
|
|
230
|
+
| mapKeys | `<T extends Record<string, unknown>>(object: T, function_: (value: T[keyof T], key: string) => string) => Record<string, T[keyof T]>` | Creates an object with the same values but keys transformed by the provided function | `mapKeys({a: 1, b: 2}, (_v, k) => k.toUpperCase()); // {A: 1, B: 2}` |
|
|
231
|
+
| mapValues | `<T extends Record<string, unknown>, R>(object: T, function_: (value: T[keyof T], key: string) => R) => Record<keyof T, R>` | Creates an object with the same keys but values transformed by the provided function | `mapValues({a: 1, b: 2}, (v) => v * 2); // {a: 2, b: 4}` |
|
|
191
232
|
| merge | `<T extends Record<string, unknown>>(target: T, ...sources: Partial<T>[]) => T` | Merges multiple objects into a single object (shallow merge) | `merge({a: 1}, {b: 2}); // {a: 1, b: 2}` |
|
|
192
233
|
| mergeDeep | `<T extends Record<string, unknown>>(target: T, ...sources: Partial<T>[]) => T` | Deeply merges multiple objects into a single object | `mergeDeep({a: {b: 1}}, {a: {c: 2}}); // {a: {b: 1, c: 2}}` |
|
|
193
234
|
| omit | `<T extends Record<string, unknown>, K extends keyof T>(object: T, ...keys: K[]) => Omit<T, K>` | Creates an object without the specified keys | `omit({a: 1, b: 2, c: 3}, 'b'); // {a: 1, c: 3}` |
|
|
194
235
|
| pick | `<T extends object, K extends keyof T>(object: T, ...keys: K[]) => Pick<T, K>` | Creates a new object with only the specified properties from the source object | `pick({ id: 1, name: 'Alice', age: 30 }, 'id', 'name'); // { id: 1, name: 'Alice' }` |
|
|
195
236
|
| pickDeep | `<T extends object, K extends PickDeepKey<T>>(object: T, ...keys: K[]) => PickDeep<T>` | Creates a new object by deeply selecting properties from the source object based on specified keys | `pickDeep({ a: { b: { c: 1, d: 2 }, e: 3 }, f: 4 }, 'a.b.c', 'f'); // { a: { b: { c: 1 } }, f: 4 }` |
|
|
196
237
|
|
|
238
|
+
### Predicate
|
|
239
|
+
|
|
240
|
+
| name | type | description | example |
|
|
241
|
+
|------|------|-------------|---------|
|
|
242
|
+
| every | `<T extends unknown[]>(...predicates: ((...args: T) => boolean)[]) => (...args: T) => boolean` | Creates a predicate that returns true only when all given predicates return true | `every((n: number) => n > 0, (n) => n % 2 === 0)(4); // true` |
|
|
243
|
+
| isNullish | `(value: unknown) => value is null \| undefined` | Checks if a value is null or undefined | `isNullish(null); // true; isNullish(0); // false` |
|
|
244
|
+
| matches | `(pattern: Record<string, unknown>) => (object: Record<string, unknown>) => boolean` | Creates a predicate that checks if an object matches a given pattern | `matches({role: "admin"})({name: "Alice", role: "admin"}); // true` |
|
|
245
|
+
| not | `<T extends unknown[]>(function_: (...args: T) => boolean) => (...args: T) => boolean` | Creates a predicate that negates the given predicate | `const isOdd = not((n: number) => n % 2 === 0); isOdd(3); // true` |
|
|
246
|
+
| some | `<T extends unknown[]>(...predicates: ((...args: T) => boolean)[]) => (...args: T) => boolean` | Creates a predicate that returns true when at least one predicate returns true | `some((n: number) => n === 0, (n) => n < 0)(0); // true` |
|
|
247
|
+
|
|
197
248
|
### Simple
|
|
198
249
|
|
|
199
250
|
| name | type | description | example |
|
|
@@ -256,6 +307,15 @@ bun add umt
|
|
|
256
307
|
| extractOsFromUserAgent | `(ua: string) => SimplifiedUserAgentInfoOs` | Extracts operating system information from a User-Agent string | `extractOsFromUserAgent(navigator.userAgent); // "macos"` |
|
|
257
308
|
| parseUserAgent | `(userAgent: string) => SimplifiedUserAgentInfo` | Parse a User-Agent string to extract browser, device, and OS information | `parseUserAgent(navigator.userAgent); // {browser: "chrome", device: "desktop", os: "macos"}` |
|
|
258
309
|
|
|
310
|
+
### URL
|
|
311
|
+
|
|
312
|
+
| name | type | description | example |
|
|
313
|
+
|------|------|-------------|---------|
|
|
314
|
+
| buildUrl | `(base: string, parameters?: Record<string, string>) => string` | Builds a URL with query parameters appended | `buildUrl("https://example.com", {page: "1", q: "search"}); // "https://example.com/?page=1&q=search"` |
|
|
315
|
+
| isAbsoluteUrl | `(url: string) => boolean` | Checks if a URL is absolute (RFC 3986) | `isAbsoluteUrl("https://example.com"); // true; isAbsoluteUrl("/path"); // false` |
|
|
316
|
+
| joinPath | `(...segments: string[]) => string` | Joins multiple path segments into one path, normalizing slashes | `joinPath("https://example.com/", "/api/", "/users"); // "https://example.com/api/users"` |
|
|
317
|
+
| parseQueryString | `(query: string) => Record<string, string>` | Parses a query string into a key-value record | `parseQueryString("?page=1&q=search"); // {page: "1", q: "search"}` |
|
|
318
|
+
|
|
259
319
|
### Unit
|
|
260
320
|
|
|
261
321
|
| name | type | description | example |
|
|
@@ -6,6 +6,6 @@
|
|
|
6
6
|
* @example arraysJoin([1, 2, 3], [2, 3, 4]); // [1, 2, 3, 4]
|
|
7
7
|
*/
|
|
8
8
|
export const arraysJoin = (array, ...arrays) => {
|
|
9
|
-
return [...new Set(array.
|
|
9
|
+
return [...new Set([...array, ...arrays.flat()])];
|
|
10
10
|
};
|
|
11
11
|
//# sourceMappingURL=arraysJoin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arraysJoin.js","sourceRoot":"","sources":["../../src/Array/arraysJoin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,KAAgB,EAChB,GAAG,MAAiB,EACpB,EAAE;IACF,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"arraysJoin.js","sourceRoot":"","sources":["../../src/Array/arraysJoin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,KAAgB,EAChB,GAAG,MAAiB,EACpB,EAAE;IACF,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAM,CAAC;AACzD,CAAC,CAAC"}
|
package/module/Array/chunk.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
export const chunk = (array, n) => {
|
|
2
2
|
const length = array.length;
|
|
3
|
-
|
|
4
|
-
const result = new Array(Math.ceil(length / n));
|
|
3
|
+
const result = Array.from({ length: Math.ceil(length / n) });
|
|
5
4
|
for (let index = 0, k = 0; index < length; index += n, k++) {
|
|
6
5
|
result[k] = array.slice(index, index + n);
|
|
7
6
|
}
|
|
@@ -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,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,
|
|
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,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAE7D,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"}
|
|
@@ -18,15 +18,25 @@ export const generateNumberArray = (length, min = 0, max, random = false) => {
|
|
|
18
18
|
if (actualLength <= 0) {
|
|
19
19
|
return [];
|
|
20
20
|
}
|
|
21
|
-
if (min > actualMax) {
|
|
22
|
-
throw new Error("min should be less than or equal to max");
|
|
23
|
-
}
|
|
24
21
|
if (actualLength === 1) {
|
|
25
22
|
return [min];
|
|
26
23
|
}
|
|
24
|
+
const isIntegerInputs = Number.isSafeInteger(min) && Number.isSafeInteger(actualMax);
|
|
27
25
|
if (random) {
|
|
26
|
+
if (isIntegerInputs) {
|
|
27
|
+
const range = actualMax - min + 1;
|
|
28
|
+
return Array.from({ length: actualLength }, () => Math.floor(Math.random() * range) + min);
|
|
29
|
+
}
|
|
28
30
|
return Array.from({ length: actualLength }, () => addition(Math.floor(multiplication(Math.random(), addition(subtract(actualMax, min), 1))), min));
|
|
29
31
|
}
|
|
32
|
+
if (isIntegerInputs) {
|
|
33
|
+
const range = actualMax - min;
|
|
34
|
+
const steps = actualLength - 1;
|
|
35
|
+
if (range % steps === 0) {
|
|
36
|
+
const step = range / steps;
|
|
37
|
+
return Array.from({ length: actualLength }, (_, index) => min + index * step);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
30
40
|
const step = division(subtract(actualMax, min), subtract(actualLength, 1));
|
|
31
41
|
return Array.from({ length: actualLength }, (_, index) => addition(min, multiplication(index, step)));
|
|
32
42
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateNumberArray.js","sourceRoot":"","sources":["../../src/Array/generateNumberArray.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,MAAc,EACd,GAAG,GAAG,CAAC,EACP,GAAY,EACZ,MAAM,GAAG,KAAK,EACJ,EAAE;IACZ,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,GAAG,IAAI,YAAY,GAAG,CAAC,CAAC;IAC1C,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,
|
|
1
|
+
{"version":3,"file":"generateNumberArray.js","sourceRoot":"","sources":["../../src/Array/generateNumberArray.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,MAAc,EACd,GAAG,GAAG,CAAC,EACP,GAAY,EACZ,MAAM,GAAG,KAAK,EACJ,EAAE;IACZ,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,GAAG,IAAI,YAAY,GAAG,CAAC,CAAC;IAC1C,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IAED,MAAM,eAAe,GACnB,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAE/D,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,KAAK,GAAG,SAAS,GAAG,GAAG,GAAG,CAAC,CAAC;YAClC,OAAO,KAAK,CAAC,IAAI,CACf,EAAE,MAAM,EAAE,YAAY,EAAE,EACxB,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,CAC9C,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,CAC/C,QAAQ,CACN,IAAI,CAAC,KAAK,CACR,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CACrE,EACD,GAAG,CACJ,CACF,CAAC;IACJ,CAAC;IAED,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,SAAS,GAAG,GAAG,CAAC;QAC9B,MAAM,KAAK,GAAG,YAAY,GAAG,CAAC,CAAC;QAC/B,IAAI,KAAK,GAAG,KAAK,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;YAC3B,OAAO,KAAK,CAAC,IAAI,CACf,EAAE,MAAM,EAAE,YAAY,EAAE,EACxB,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,GAAG,IAAI,CACjC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3E,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CACvD,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAC3C,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -10,7 +10,11 @@ export const getArraysDiff = (array, ...arrays) => {
|
|
|
10
10
|
const duplicates = new Set();
|
|
11
11
|
for (const array_ of arrays) {
|
|
12
12
|
for (const value of array_) {
|
|
13
|
+
if (duplicates.has(value)) {
|
|
14
|
+
continue;
|
|
15
|
+
}
|
|
13
16
|
if (allValues.has(value)) {
|
|
17
|
+
allValues.delete(value);
|
|
14
18
|
duplicates.add(value);
|
|
15
19
|
}
|
|
16
20
|
else {
|
|
@@ -18,6 +22,6 @@ export const getArraysDiff = (array, ...arrays) => {
|
|
|
18
22
|
}
|
|
19
23
|
}
|
|
20
24
|
}
|
|
21
|
-
return [...allValues]
|
|
25
|
+
return [...allValues];
|
|
22
26
|
};
|
|
23
27
|
//# sourceMappingURL=getArraysDiff.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getArraysDiff.js","sourceRoot":"","sources":["../../src/Array/getArraysDiff.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,KAAQ,EACR,GAAG,MAAW,EACX,EAAE;IACL,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAK,CAAC;IAEhC,KAAK,MAAM,MAAM,IAAI,MAAM,EAAE,CAAC;QAC5B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,UAAU,CAAC,GAAG,CAAC,KAAU,CAAC,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"getArraysDiff.js","sourceRoot":"","sources":["../../src/Array/getArraysDiff.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,KAAQ,EACR,GAAG,MAAW,EACX,EAAE;IACL,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAK,CAAC;IAEhC,KAAK,MAAM,MAAM,IAAI,MAAM,EAAE,CAAC;QAC5B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,UAAU,CAAC,GAAG,CAAC,KAAU,CAAC,EAAE,CAAC;gBAC/B,SAAS;YACX,CAAC;YACD,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACxB,UAAU,CAAC,GAAG,CAAC,KAAU,CAAC,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,SAAS,CAAiB,CAAC;AACxC,CAAC,CAAC"}
|
|
@@ -10,30 +10,57 @@ export const mergeSort = (array, compareFunction = compareFunctionDefault) => {
|
|
|
10
10
|
if (array.length <= 1) {
|
|
11
11
|
return array;
|
|
12
12
|
}
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
|
|
13
|
+
const length = array.length;
|
|
14
|
+
const result = [...array];
|
|
15
|
+
const aux = [...array];
|
|
16
|
+
mergeSortRecursive(result, aux, 0, length, compareFunction);
|
|
17
|
+
return result;
|
|
17
18
|
};
|
|
18
19
|
/**
|
|
19
|
-
*
|
|
20
|
-
* @param
|
|
21
|
-
* @param
|
|
22
|
-
* @param
|
|
23
|
-
* @
|
|
20
|
+
* Recursive merge sort implementation
|
|
21
|
+
* @param array Array to sort
|
|
22
|
+
* @param aux Auxiliary array
|
|
23
|
+
* @param start Start index
|
|
24
|
+
* @param end End index
|
|
25
|
+
* @param compareFunction Comparison function
|
|
24
26
|
*/
|
|
25
|
-
function
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
function mergeSortRecursive(array, aux, start, end, compareFunction) {
|
|
28
|
+
if (end - start <= 1) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const mid = (start + end) >>> 1;
|
|
32
|
+
mergeSortRecursive(array, aux, start, mid, compareFunction);
|
|
33
|
+
mergeSortRecursive(array, aux, mid, end, compareFunction);
|
|
34
|
+
merge(array, aux, start, mid, end, compareFunction);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Merges two sorted subarrays
|
|
38
|
+
* @param array Array containing the subarrays
|
|
39
|
+
* @param aux Auxiliary array
|
|
40
|
+
* @param start Start index
|
|
41
|
+
* @param mid Middle index
|
|
42
|
+
* @param end End index
|
|
43
|
+
* @param compareFunction Comparison function
|
|
44
|
+
*/
|
|
45
|
+
function merge(array, aux, start, mid, end, compareFunction) {
|
|
46
|
+
for (let index = start; index < end; index++) {
|
|
47
|
+
aux[index] = array[index];
|
|
48
|
+
}
|
|
49
|
+
let leftIndex = start;
|
|
50
|
+
let rightIndex = mid;
|
|
51
|
+
for (let k = start; k < end; k++) {
|
|
52
|
+
if (leftIndex >= mid) {
|
|
53
|
+
array[k] = aux[rightIndex++];
|
|
54
|
+
}
|
|
55
|
+
else if (rightIndex >= end) {
|
|
56
|
+
array[k] = aux[leftIndex++];
|
|
57
|
+
}
|
|
58
|
+
else if (compareFunction(aux[leftIndex], aux[rightIndex]) <= 0) {
|
|
59
|
+
array[k] = aux[leftIndex++];
|
|
32
60
|
}
|
|
33
61
|
else {
|
|
34
|
-
array
|
|
62
|
+
array[k] = aux[rightIndex++];
|
|
35
63
|
}
|
|
36
64
|
}
|
|
37
|
-
return array.concat(left.slice(lIndex)).concat(right.slice(rIndex));
|
|
38
65
|
}
|
|
39
66
|
//# sourceMappingURL=mergeSort.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mergeSort.js","sourceRoot":"","sources":["../../src/Array/mergeSort.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAIlE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,KAAU,EACV,kBAAsC,sBAAsB,EACvD,EAAE;IACP,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"mergeSort.js","sourceRoot":"","sources":["../../src/Array/mergeSort.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAIlE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,KAAU,EACV,kBAAsC,sBAAsB,EACvD,EAAE;IACP,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IAC1B,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IAEvB,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;IAE5D,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,SAAS,kBAAkB,CACzB,KAAU,EACV,GAAQ,EACR,KAAa,EACb,GAAW,EACX,eAAuC;IAEvC,IAAI,GAAG,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;IAEhC,kBAAkB,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;IAC5D,kBAAkB,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;IAE1D,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;AACtD,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,KAAK,CACZ,KAAU,EACV,GAAQ,EACR,KAAa,EACb,GAAW,EACX,GAAW,EACX,eAAuC;IAEvC,KAAK,IAAI,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC;QAC7C,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,UAAU,GAAG,GAAG,CAAC;IAErB,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACjC,IAAI,SAAS,IAAI,GAAG,EAAE,CAAC;YACrB,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;QAC/B,CAAC;aAAM,IAAI,UAAU,IAAI,GAAG,EAAE,CAAC;YAC7B,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;QAC9B,CAAC;aAAM,IAAI,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YACjE,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;AACH,CAAC"}
|
package/module/Array/pop.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* @returns {T | undefined} - The last element of the array, or undefined if the array is empty.
|
|
5
5
|
*/
|
|
6
6
|
export const pop = (array) => {
|
|
7
|
-
|
|
7
|
+
// O(1) performance instead of O(N) from [...array].pop()
|
|
8
|
+
return array.at(-1);
|
|
8
9
|
};
|
|
9
10
|
//# sourceMappingURL=pop.js.map
|
package/module/Array/pop.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pop.js","sourceRoot":"","sources":["../../src/Array/pop.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAI,KAAU,
|
|
1
|
+
{"version":3,"file":"pop.js","sourceRoot":"","sources":["../../src/Array/pop.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAI,KAAU,EAAiB,EAAE;IAClD,yDAAyD;IACzD,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { shuffle } from "./shuffle";
|
|
1
2
|
/**
|
|
2
3
|
* Randomly selects a specified number of elements from an array
|
|
3
4
|
* @param array Source array
|
|
@@ -7,6 +8,13 @@
|
|
|
7
8
|
* @example randomSelect([1, 2, 3, 4, 5], 2); // [3, 1]
|
|
8
9
|
*/
|
|
9
10
|
export const randomSelect = (array, count, allowDuplicates = false) => {
|
|
11
|
+
if (!allowDuplicates && count > array.length * 0.8) {
|
|
12
|
+
const shuffled = shuffle(array);
|
|
13
|
+
if (count < shuffled.length) {
|
|
14
|
+
shuffled.length = count;
|
|
15
|
+
}
|
|
16
|
+
return shuffled;
|
|
17
|
+
}
|
|
10
18
|
const result = [];
|
|
11
19
|
const usedIndices = new Set();
|
|
12
20
|
while (result.length < count &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"randomSelect.js","sourceRoot":"","sources":["../../src/Array/randomSelect.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,KAAU,EACV,KAAa,EACb,eAAe,GAAG,KAAK,EAClB,EAAE;IACP,MAAM,MAAM,GAAQ,EAAE,CAAC;IACvB,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IAEtC,OACE,MAAM,CAAC,MAAM,GAAG,KAAK;QACrB,CAAC,eAAe,IAAI,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,EACjD,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7D,IAAI,eAAe,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YACrD,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"randomSelect.js","sourceRoot":"","sources":["../../src/Array/randomSelect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,KAAU,EACV,KAAa,EACb,eAAe,GAAG,KAAK,EAClB,EAAE;IACP,IAAI,CAAC,eAAe,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC5B,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC;QAC1B,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAQ,EAAE,CAAC;IACvB,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IAEtC,OACE,MAAM,CAAC,MAAM,GAAG,KAAK;QACrB,CAAC,eAAe,IAAI,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,EACjD,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7D,IAAI,eAAe,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YACrD,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { clamp } from "../../Math/clamp";
|
|
1
2
|
/**
|
|
2
3
|
* Validates and adjusts the start and end indices for an operation on an array.
|
|
3
4
|
* Ensures indices are within the bounds of the array.
|
|
@@ -15,8 +16,8 @@ export const validateRange = (array, startIndex, endIndex) => {
|
|
|
15
16
|
if (length === 0) {
|
|
16
17
|
return { startIndex: 0, endIndex: -1, shouldSort: false };
|
|
17
18
|
}
|
|
18
|
-
const validatedStartIndex =
|
|
19
|
-
const validatedEndIndex = Math.max(validatedStartIndex,
|
|
19
|
+
const validatedStartIndex = clamp(startIndex, 0, length - 1);
|
|
20
|
+
const validatedEndIndex = Math.max(validatedStartIndex, clamp(endIndex, 0, length - 1));
|
|
20
21
|
return {
|
|
21
22
|
startIndex: validatedStartIndex,
|
|
22
23
|
endIndex: validatedEndIndex,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rangeValidator.js","sourceRoot":"","sources":["../../../src/Array/sortingHelpers/rangeValidator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rangeValidator.js","sourceRoot":"","sources":["../../../src/Array/sortingHelpers/rangeValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAQrC;;;;;;;;;;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,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;IAC7D,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAChC,mBAAmB,EACnB,KAAK,CAAC,QAAQ,EAAE,CAAC,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"}
|
package/module/Array/timSort.js
CHANGED
|
@@ -8,33 +8,34 @@ const MIN_RUN = 32;
|
|
|
8
8
|
* @param mid Middle index separating the two portions
|
|
9
9
|
* @param end Ending index of the second portion
|
|
10
10
|
* @param compareFunction Function to compare elements
|
|
11
|
+
* @param temporary Temporary array for merging
|
|
11
12
|
*/
|
|
12
|
-
const merge = (array, start, mid, end, compareFunction) => {
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
let
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
13
|
+
const merge = (array, start, mid, end, compareFunction, temporary) => {
|
|
14
|
+
const length1 = mid - start + 1;
|
|
15
|
+
if (compareFunction(array[mid], array[mid + 1]) <= 0) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
for (let index = 0; index < length1; index++) {
|
|
19
|
+
temporary[index] = array[start + index];
|
|
20
|
+
}
|
|
21
|
+
let index = 0;
|
|
22
|
+
let index_ = mid + 1;
|
|
23
|
+
let k = start;
|
|
24
|
+
while (index < length1 && index_ <= end) {
|
|
25
|
+
if (compareFunction(temporary[index], array[index_]) <= 0) {
|
|
26
|
+
array[k] = temporary[index];
|
|
27
|
+
index++;
|
|
22
28
|
}
|
|
23
29
|
else {
|
|
24
|
-
array[
|
|
25
|
-
|
|
30
|
+
array[k] = array[index_];
|
|
31
|
+
index_++;
|
|
26
32
|
}
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
while (leftIndex < left.length) {
|
|
30
|
-
array[arrayIndex] = left[leftIndex];
|
|
31
|
-
leftIndex++;
|
|
32
|
-
arrayIndex++;
|
|
33
|
+
k++;
|
|
33
34
|
}
|
|
34
|
-
while (
|
|
35
|
-
array[
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
while (index < length1) {
|
|
36
|
+
array[k] = temporary[index];
|
|
37
|
+
k++;
|
|
38
|
+
index++;
|
|
38
39
|
}
|
|
39
40
|
};
|
|
40
41
|
/**
|
|
@@ -75,12 +76,13 @@ export const timSort = (array, compareFunction = (compareFunctionDefault), start
|
|
|
75
76
|
const runEnd = Math.min(runStart + minRun - 1, end);
|
|
76
77
|
insertionSortRange(result, compareFunction, runStart, runEnd);
|
|
77
78
|
}
|
|
79
|
+
const temporary = [];
|
|
78
80
|
for (let size = minRun; size < n; size *= 2) {
|
|
79
81
|
for (let left = start; left <= end; left += 2 * size) {
|
|
80
82
|
const mid = left + size - 1;
|
|
81
83
|
const right = Math.min(left + 2 * size - 1, end);
|
|
82
84
|
if (mid < right) {
|
|
83
|
-
merge(result, left, mid, right, compareFunction);
|
|
85
|
+
merge(result, left, mid, right, compareFunction, temporary);
|
|
84
86
|
}
|
|
85
87
|
}
|
|
86
88
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timSort.js","sourceRoot":"","sources":["../../src/Array/timSort.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAIzE,MAAM,OAAO,GAAG,EAAE,CAAC;AAEnB
|
|
1
|
+
{"version":3,"file":"timSort.js","sourceRoot":"","sources":["../../src/Array/timSort.ts"],"names":[],"mappings":"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"}
|