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
|
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.ultraNumberSort = void 0;
|
|
7
|
-
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
8
7
|
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
|
|
9
8
|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
10
9
|
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
@@ -19,18 +18,16 @@ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length)
|
|
|
19
18
|
*/
|
|
20
19
|
var ultraNumberSort = exports.ultraNumberSort = function ultraNumberSort(array) {
|
|
21
20
|
var ascending = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
22
|
-
var
|
|
23
|
-
var length = result.length;
|
|
21
|
+
var length = array.length;
|
|
24
22
|
if (length <= 1) {
|
|
25
|
-
return
|
|
23
|
+
return _toConsumableArray(array);
|
|
26
24
|
}
|
|
27
|
-
|
|
28
|
-
// For tiny arrays, use optimized inline sort
|
|
25
|
+
var result = _toConsumableArray(array);
|
|
29
26
|
if (length === 2) {
|
|
30
27
|
if (result[0] > result[1] === ascending) {
|
|
31
|
-
var
|
|
32
|
-
result[0] =
|
|
33
|
-
result[1] =
|
|
28
|
+
var temporary = result[0];
|
|
29
|
+
result[0] = result[1];
|
|
30
|
+
result[1] = temporary;
|
|
34
31
|
}
|
|
35
32
|
return result;
|
|
36
33
|
}
|
|
@@ -39,13 +36,25 @@ var ultraNumberSort = exports.ultraNumberSort = function ultraNumberSort(array)
|
|
|
39
36
|
return result;
|
|
40
37
|
}
|
|
41
38
|
|
|
39
|
+
// For small-medium arrays, skip integer/range analysis
|
|
40
|
+
if (length <= 128) {
|
|
41
|
+
for (var index = 0; index < length; index++) {
|
|
42
|
+
// biome-ignore lint/suspicious/noSelfCompare: NaN detection
|
|
43
|
+
if (result[index] !== result[index]) {
|
|
44
|
+
return handleNaNSort(result, ascending);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
numericQuickSort(result, 0, length - 1, ascending);
|
|
48
|
+
return result;
|
|
49
|
+
}
|
|
50
|
+
|
|
42
51
|
// Check if all numbers are integers and find range
|
|
43
52
|
var allIntegers = true;
|
|
44
53
|
var min = result[0];
|
|
45
54
|
var max = result[0];
|
|
46
55
|
var hasNaN = false;
|
|
47
|
-
for (var
|
|
48
|
-
var value = result[
|
|
56
|
+
for (var _index = 0; _index < length; _index++) {
|
|
57
|
+
var value = result[_index];
|
|
49
58
|
// biome-ignore lint/suspicious/noSelfCompare: ignore
|
|
50
59
|
if (value !== value) {
|
|
51
60
|
hasNaN = true;
|
|
@@ -62,23 +71,155 @@ var ultraNumberSort = exports.ultraNumberSort = function ultraNumberSort(array)
|
|
|
62
71
|
}
|
|
63
72
|
}
|
|
64
73
|
|
|
65
|
-
//
|
|
74
|
+
// For small integer ranges, use counting sort
|
|
75
|
+
if (!hasNaN && allIntegers && max - min < length * 2 && max - min < 1000000) {
|
|
76
|
+
return countingSort(result, min, max, ascending);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// For medium arrays, quicksort is faster than radix sort
|
|
80
|
+
// due to typed array allocation overhead
|
|
81
|
+
if (length < 4096) {
|
|
82
|
+
if (hasNaN) {
|
|
83
|
+
return handleNaNSort(result, ascending);
|
|
84
|
+
}
|
|
85
|
+
numericQuickSort(result, 0, length - 1, ascending);
|
|
86
|
+
return result;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// Use IEEE 754 Float64 radix sort for large arrays
|
|
90
|
+
return float64RadixSort(result, ascending, hasNaN);
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* IEEE 754 Float64 radix sort
|
|
95
|
+
* Works on all number types (integers and floats) by treating
|
|
96
|
+
* the 64-bit IEEE 754 bit pattern as a sortable unsigned integer.
|
|
97
|
+
*
|
|
98
|
+
* Bit transformation:
|
|
99
|
+
* - Positive numbers (sign bit 0): flip only the sign bit
|
|
100
|
+
* - Negative numbers (sign bit 1): flip ALL 64 bits
|
|
101
|
+
* After this transformation, unsigned integer comparison matches
|
|
102
|
+
* the original floating-point numerical order.
|
|
103
|
+
*/
|
|
104
|
+
var float64RadixSort = function float64RadixSort(array, ascending, hasNaN) {
|
|
105
|
+
var length = array.length;
|
|
106
|
+
var sourceBuffer = new ArrayBuffer(length * 8);
|
|
107
|
+
var sourceF64 = new Float64Array(sourceBuffer);
|
|
108
|
+
var sourceU32 = new Uint32Array(sourceBuffer);
|
|
109
|
+
var validLength;
|
|
66
110
|
if (hasNaN) {
|
|
67
|
-
|
|
111
|
+
var writeIndex = 0;
|
|
112
|
+
for (var index = 0; index < length; index++) {
|
|
113
|
+
var v = array[index];
|
|
114
|
+
// biome-ignore lint/suspicious/noSelfCompare: NaN detection
|
|
115
|
+
if (v === v) {
|
|
116
|
+
sourceF64[writeIndex++] = v;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
validLength = writeIndex;
|
|
120
|
+
} else {
|
|
121
|
+
for (var _index2 = 0; _index2 < length; _index2++) {
|
|
122
|
+
sourceF64[_index2] = array[_index2];
|
|
123
|
+
}
|
|
124
|
+
validLength = length;
|
|
125
|
+
}
|
|
126
|
+
if (validLength === 0) {
|
|
127
|
+
return array;
|
|
68
128
|
}
|
|
69
129
|
|
|
70
|
-
//
|
|
71
|
-
|
|
72
|
-
|
|
130
|
+
// Transform IEEE 754 bit patterns to sortable unsigned form
|
|
131
|
+
for (var _index3 = 0; _index3 < validLength; _index3++) {
|
|
132
|
+
var hiIndex = _index3 * 2 + 1;
|
|
133
|
+
var loIndex = _index3 * 2;
|
|
134
|
+
if (sourceU32[hiIndex] & 0x80000000) {
|
|
135
|
+
sourceU32[hiIndex] = ~sourceU32[hiIndex] >>> 0;
|
|
136
|
+
sourceU32[loIndex] = ~sourceU32[loIndex] >>> 0;
|
|
137
|
+
} else {
|
|
138
|
+
sourceU32[hiIndex] ^= 0x80000000;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
var destinationBuffer = new ArrayBuffer(validLength * 8);
|
|
142
|
+
var destinationU32 = new Uint32Array(destinationBuffer);
|
|
143
|
+
var count = new Uint32Array(256);
|
|
144
|
+
var currentSource = sourceU32;
|
|
145
|
+
var currentDestination = destinationU32;
|
|
146
|
+
var resultInSource = true;
|
|
147
|
+
|
|
148
|
+
// 8-pass LSD radix sort (8 bits per pass)
|
|
149
|
+
// Passes 0-3: low 32-bit word (index i*2)
|
|
150
|
+
// Passes 4-7: high 32-bit word (index i*2+1)
|
|
151
|
+
for (var pass = 0; pass < 8; pass++) {
|
|
152
|
+
count.fill(0);
|
|
153
|
+
var wordOffset = pass < 4 ? 0 : 1;
|
|
154
|
+
var shift = pass % 4 * 8;
|
|
155
|
+
for (var _index4 = 0; _index4 < validLength; _index4++) {
|
|
156
|
+
count[currentSource[_index4 * 2 + wordOffset] >>> shift & 0xff]++;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
// Skip pass if all elements have the same byte value
|
|
160
|
+
var skipPass = false;
|
|
161
|
+
for (var _index5 = 0; _index5 < 256; _index5++) {
|
|
162
|
+
if (count[_index5] === validLength) {
|
|
163
|
+
skipPass = true;
|
|
164
|
+
break;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
if (skipPass) {
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// Prefix sum (reverse for descending sort)
|
|
172
|
+
if (ascending) {
|
|
173
|
+
for (var _index6 = 1; _index6 < 256; _index6++) {
|
|
174
|
+
count[_index6] += count[_index6 - 1];
|
|
175
|
+
}
|
|
176
|
+
} else {
|
|
177
|
+
for (var _index7 = 254; _index7 >= 0; _index7--) {
|
|
178
|
+
count[_index7] += count[_index7 + 1];
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
// Scatter (backward for stability)
|
|
183
|
+
for (var _index8 = validLength - 1; _index8 >= 0; _index8--) {
|
|
184
|
+
var _byte = currentSource[_index8 * 2 + wordOffset] >>> shift & 0xff;
|
|
185
|
+
var pos = --count[_byte];
|
|
186
|
+
currentDestination[pos * 2] = currentSource[_index8 * 2];
|
|
187
|
+
currentDestination[pos * 2 + 1] = currentSource[_index8 * 2 + 1];
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
// Ping-pong swap
|
|
191
|
+
var temporary = currentSource;
|
|
192
|
+
currentSource = currentDestination;
|
|
193
|
+
currentDestination = temporary;
|
|
194
|
+
resultInSource = !resultInSource;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
// Determine which buffer holds the result
|
|
198
|
+
var resultU32 = currentSource;
|
|
199
|
+
var resultBuffer = resultInSource ? sourceBuffer : destinationBuffer;
|
|
200
|
+
var resultF64 = new Float64Array(resultBuffer);
|
|
201
|
+
|
|
202
|
+
// Reverse bit transformation
|
|
203
|
+
for (var _index9 = 0; _index9 < validLength; _index9++) {
|
|
204
|
+
var _hiIndex = _index9 * 2 + 1;
|
|
205
|
+
if (resultU32[_hiIndex] & 0x80000000) {
|
|
206
|
+
resultU32[_hiIndex] ^= 0x80000000;
|
|
207
|
+
} else {
|
|
208
|
+
resultU32[_hiIndex] = ~resultU32[_hiIndex] >>> 0;
|
|
209
|
+
resultU32[_index9 * 2] = ~resultU32[_index9 * 2] >>> 0;
|
|
210
|
+
}
|
|
73
211
|
}
|
|
74
212
|
|
|
75
|
-
//
|
|
76
|
-
|
|
77
|
-
|
|
213
|
+
// Copy results back
|
|
214
|
+
for (var _index0 = 0; _index0 < validLength; _index0++) {
|
|
215
|
+
array[_index0] = resultF64[_index0];
|
|
78
216
|
}
|
|
79
217
|
|
|
80
|
-
//
|
|
81
|
-
|
|
218
|
+
// Append NaN values at the end
|
|
219
|
+
for (var _index1 = validLength; _index1 < length; _index1++) {
|
|
220
|
+
array[_index1] = Number.NaN;
|
|
221
|
+
}
|
|
222
|
+
return array;
|
|
82
223
|
};
|
|
83
224
|
|
|
84
225
|
/**
|
|
@@ -88,36 +229,37 @@ var inlineSort3 = function inlineSort3(array, ascending) {
|
|
|
88
229
|
var a = array[0];
|
|
89
230
|
var b = array[1];
|
|
90
231
|
var c = array[2];
|
|
232
|
+
var temporary;
|
|
91
233
|
if (ascending) {
|
|
92
234
|
if (a > b) {
|
|
93
|
-
|
|
94
|
-
a =
|
|
95
|
-
b =
|
|
235
|
+
temporary = a;
|
|
236
|
+
a = b;
|
|
237
|
+
b = temporary;
|
|
96
238
|
}
|
|
97
239
|
if (b > c) {
|
|
98
|
-
|
|
99
|
-
b =
|
|
100
|
-
c =
|
|
240
|
+
temporary = b;
|
|
241
|
+
b = c;
|
|
242
|
+
c = temporary;
|
|
101
243
|
if (a > b) {
|
|
102
|
-
|
|
103
|
-
a =
|
|
104
|
-
b =
|
|
244
|
+
temporary = a;
|
|
245
|
+
a = b;
|
|
246
|
+
b = temporary;
|
|
105
247
|
}
|
|
106
248
|
}
|
|
107
249
|
} else {
|
|
108
250
|
if (a < b) {
|
|
109
|
-
|
|
110
|
-
a =
|
|
111
|
-
b =
|
|
251
|
+
temporary = a;
|
|
252
|
+
a = b;
|
|
253
|
+
b = temporary;
|
|
112
254
|
}
|
|
113
255
|
if (b < c) {
|
|
114
|
-
|
|
115
|
-
b =
|
|
116
|
-
c =
|
|
256
|
+
temporary = b;
|
|
257
|
+
b = c;
|
|
258
|
+
c = temporary;
|
|
117
259
|
if (a < b) {
|
|
118
|
-
|
|
119
|
-
a =
|
|
120
|
-
b =
|
|
260
|
+
temporary = a;
|
|
261
|
+
a = b;
|
|
262
|
+
b = temporary;
|
|
121
263
|
}
|
|
122
264
|
}
|
|
123
265
|
}
|
|
@@ -132,33 +274,27 @@ var inlineSort3 = function inlineSort3(array, ascending) {
|
|
|
132
274
|
var handleNaNSort = function handleNaNSort(array, ascending) {
|
|
133
275
|
var valid = [];
|
|
134
276
|
var nanCount = 0;
|
|
135
|
-
var
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
} else {
|
|
144
|
-
nanCount++;
|
|
145
|
-
}
|
|
277
|
+
var index = 0;
|
|
278
|
+
while (index < array.length) {
|
|
279
|
+
var element = array[index];
|
|
280
|
+
// biome-ignore lint/suspicious/noSelfCompare: ignore
|
|
281
|
+
if (element === element) {
|
|
282
|
+
valid.push(element);
|
|
283
|
+
} else {
|
|
284
|
+
nanCount++;
|
|
146
285
|
}
|
|
147
|
-
|
|
148
|
-
_iterator.e(err);
|
|
149
|
-
} finally {
|
|
150
|
-
_iterator.f();
|
|
286
|
+
index++;
|
|
151
287
|
}
|
|
152
288
|
numericQuickSort(valid, 0, valid.length - 1, ascending);
|
|
153
289
|
|
|
154
290
|
// NaN values go to the end
|
|
155
|
-
for (var
|
|
291
|
+
for (var _index10 = 0; _index10 < nanCount; _index10++) {
|
|
156
292
|
valid.push(Number.NaN);
|
|
157
293
|
}
|
|
158
294
|
|
|
159
295
|
// Copy back
|
|
160
|
-
for (var
|
|
161
|
-
array[
|
|
296
|
+
for (var _index11 = 0; _index11 < array.length; _index11++) {
|
|
297
|
+
array[_index11] = valid[_index11];
|
|
162
298
|
}
|
|
163
299
|
return array;
|
|
164
300
|
};
|
|
@@ -171,33 +307,26 @@ var countingSort = function countingSort(array, min, max, ascending) {
|
|
|
171
307
|
var count = new Uint32Array(range);
|
|
172
308
|
|
|
173
309
|
// Count occurrences
|
|
174
|
-
var
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
var element = _step2.value;
|
|
179
|
-
count[element - min]++;
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
// Reconstruct array
|
|
183
|
-
} catch (err) {
|
|
184
|
-
_iterator2.e(err);
|
|
185
|
-
} finally {
|
|
186
|
-
_iterator2.f();
|
|
310
|
+
var index_ = 0;
|
|
311
|
+
while (index_ < array.length) {
|
|
312
|
+
count[array[index_] - min]++;
|
|
313
|
+
index_++;
|
|
187
314
|
}
|
|
315
|
+
|
|
316
|
+
// Reconstruct array
|
|
188
317
|
var index = 0;
|
|
189
318
|
if (ascending) {
|
|
190
|
-
for (var
|
|
191
|
-
var cnt = count[
|
|
192
|
-
var value =
|
|
319
|
+
for (var _index_ = 0; _index_ < range; _index_++) {
|
|
320
|
+
var cnt = count[_index_];
|
|
321
|
+
var value = _index_ + min;
|
|
193
322
|
for (var index__ = 0; index__ < cnt; index__++) {
|
|
194
323
|
array[index++] = value;
|
|
195
324
|
}
|
|
196
325
|
}
|
|
197
326
|
} else {
|
|
198
|
-
for (var
|
|
199
|
-
var _cnt = count[
|
|
200
|
-
var _value =
|
|
327
|
+
for (var _index_2 = range - 1; _index_2 >= 0; _index_2--) {
|
|
328
|
+
var _cnt = count[_index_2];
|
|
329
|
+
var _value = _index_2 + min;
|
|
201
330
|
for (var _index__ = 0; _index__ < _cnt; _index__++) {
|
|
202
331
|
array[index++] = _value;
|
|
203
332
|
}
|
|
@@ -206,136 +335,6 @@ var countingSort = function countingSort(array, min, max, ascending) {
|
|
|
206
335
|
return array;
|
|
207
336
|
};
|
|
208
337
|
|
|
209
|
-
/**
|
|
210
|
-
* Radix sort for integers
|
|
211
|
-
*/
|
|
212
|
-
var radixSort = function radixSort(array, ascending) {
|
|
213
|
-
var length = array.length;
|
|
214
|
-
|
|
215
|
-
// Separate positive and negative numbers
|
|
216
|
-
var positive = [];
|
|
217
|
-
var negative = [];
|
|
218
|
-
var zeroCount = 0;
|
|
219
|
-
for (var index_ = 0; index_ < length; index_++) {
|
|
220
|
-
if (array[index_] > 0) {
|
|
221
|
-
positive.push(array[index_]);
|
|
222
|
-
} else if (array[index_] < 0) {
|
|
223
|
-
negative.push(-array[index_]);
|
|
224
|
-
} else {
|
|
225
|
-
zeroCount++;
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
// Sort positive numbers
|
|
230
|
-
if (positive.length > 0) {
|
|
231
|
-
radixSortPositive(positive);
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
// Sort negative numbers
|
|
235
|
-
if (negative.length > 0) {
|
|
236
|
-
radixSortPositive(negative);
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
// Merge results
|
|
240
|
-
var index = 0;
|
|
241
|
-
if (ascending) {
|
|
242
|
-
// Negative numbers first (in reverse order)
|
|
243
|
-
for (var _index_2 = negative.length - 1; _index_2 >= 0; _index_2--) {
|
|
244
|
-
array[index++] = -negative[_index_2];
|
|
245
|
-
}
|
|
246
|
-
// Zeros
|
|
247
|
-
for (var _index_3 = 0; _index_3 < zeroCount; _index_3++) {
|
|
248
|
-
array[index++] = 0;
|
|
249
|
-
}
|
|
250
|
-
// Positive numbers
|
|
251
|
-
var _iterator3 = _createForOfIteratorHelper(positive),
|
|
252
|
-
_step3;
|
|
253
|
-
try {
|
|
254
|
-
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
255
|
-
var element = _step3.value;
|
|
256
|
-
array[index++] = element;
|
|
257
|
-
}
|
|
258
|
-
} catch (err) {
|
|
259
|
-
_iterator3.e(err);
|
|
260
|
-
} finally {
|
|
261
|
-
_iterator3.f();
|
|
262
|
-
}
|
|
263
|
-
} else {
|
|
264
|
-
// Positive numbers first (in reverse order)
|
|
265
|
-
for (var _index_4 = positive.length - 1; _index_4 >= 0; _index_4--) {
|
|
266
|
-
array[index++] = positive[_index_4];
|
|
267
|
-
}
|
|
268
|
-
// Zeros
|
|
269
|
-
for (var _index_5 = 0; _index_5 < zeroCount; _index_5++) {
|
|
270
|
-
array[index++] = 0;
|
|
271
|
-
}
|
|
272
|
-
// Negative numbers
|
|
273
|
-
var _iterator4 = _createForOfIteratorHelper(negative),
|
|
274
|
-
_step4;
|
|
275
|
-
try {
|
|
276
|
-
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
277
|
-
var _element = _step4.value;
|
|
278
|
-
array[index++] = -_element;
|
|
279
|
-
}
|
|
280
|
-
} catch (err) {
|
|
281
|
-
_iterator4.e(err);
|
|
282
|
-
} finally {
|
|
283
|
-
_iterator4.f();
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
return array;
|
|
287
|
-
};
|
|
288
|
-
|
|
289
|
-
/**
|
|
290
|
-
* Radix sort for positive integers
|
|
291
|
-
*/
|
|
292
|
-
var radixSortPositive = function radixSortPositive(array) {
|
|
293
|
-
var length = array.length;
|
|
294
|
-
if (length <= 1) {
|
|
295
|
-
return;
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
// Find maximum to determine number of digits
|
|
299
|
-
var max = array[0];
|
|
300
|
-
for (var index = 1; index < length; index++) {
|
|
301
|
-
if (array[index] > max) {
|
|
302
|
-
max = array[index];
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
// Use typed arrays for better performance
|
|
307
|
-
var output = new Float64Array(length);
|
|
308
|
-
var count = new Uint32Array(256);
|
|
309
|
-
|
|
310
|
-
// Process 8 bits at a time
|
|
311
|
-
for (var shift = 0; max >> shift > 0; shift += 8) {
|
|
312
|
-
// Reset count array
|
|
313
|
-
count.fill(0);
|
|
314
|
-
|
|
315
|
-
// Count occurrences
|
|
316
|
-
for (var _index2 = 0; _index2 < length; _index2++) {
|
|
317
|
-
var digit = array[_index2] >> shift & 0xff;
|
|
318
|
-
count[digit]++;
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
// Change count[i] to actual position
|
|
322
|
-
for (var _index3 = 1; _index3 < 256; _index3++) {
|
|
323
|
-
count[_index3] += count[_index3 - 1];
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
// Build output array
|
|
327
|
-
for (var _index4 = length - 1; _index4 >= 0; _index4--) {
|
|
328
|
-
var _digit = array[_index4] >> shift & 0xff;
|
|
329
|
-
output[--count[_digit]] = array[_index4];
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
// Copy back
|
|
333
|
-
for (var _index5 = 0; _index5 < length; _index5++) {
|
|
334
|
-
array[_index5] = output[_index5];
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
};
|
|
338
|
-
|
|
339
338
|
/**
|
|
340
339
|
* Optimized quicksort for numbers
|
|
341
340
|
*/
|
|
@@ -382,14 +381,14 @@ var numericInsertionSort = function numericInsertionSort(array, low, high, ascen
|
|
|
382
381
|
array[index_ + 1] = key;
|
|
383
382
|
}
|
|
384
383
|
} else {
|
|
385
|
-
for (var
|
|
386
|
-
var _key = array[
|
|
387
|
-
var
|
|
388
|
-
while (
|
|
389
|
-
array[
|
|
390
|
-
|
|
384
|
+
for (var _index12 = low + 1; _index12 <= high; _index12++) {
|
|
385
|
+
var _key = array[_index12];
|
|
386
|
+
var _index_3 = _index12 - 1;
|
|
387
|
+
while (_index_3 >= low && array[_index_3] < _key) {
|
|
388
|
+
array[_index_3 + 1] = array[_index_3];
|
|
389
|
+
_index_3--;
|
|
391
390
|
}
|
|
392
|
-
array[
|
|
391
|
+
array[_index_3 + 1] = _key;
|
|
393
392
|
}
|
|
394
393
|
}
|
|
395
394
|
};
|
|
@@ -400,44 +399,45 @@ var numericInsertionSort = function numericInsertionSort(array, low, high, ascen
|
|
|
400
399
|
var numericPartition = function numericPartition(array, low, high, ascending) {
|
|
401
400
|
// Median-of-three pivot selection
|
|
402
401
|
var mid = low + (high - low >> 1);
|
|
402
|
+
var temporary;
|
|
403
403
|
if (ascending) {
|
|
404
404
|
if (array[mid] < array[low]) {
|
|
405
|
-
|
|
406
|
-
array[low] =
|
|
407
|
-
array[mid] =
|
|
405
|
+
temporary = array[low];
|
|
406
|
+
array[low] = array[mid];
|
|
407
|
+
array[mid] = temporary;
|
|
408
408
|
}
|
|
409
409
|
if (array[high] < array[low]) {
|
|
410
|
-
|
|
411
|
-
array[low] =
|
|
412
|
-
array[high] =
|
|
410
|
+
temporary = array[low];
|
|
411
|
+
array[low] = array[high];
|
|
412
|
+
array[high] = temporary;
|
|
413
413
|
}
|
|
414
414
|
if (array[high] < array[mid]) {
|
|
415
|
-
|
|
416
|
-
array[mid] =
|
|
417
|
-
array[high] =
|
|
415
|
+
temporary = array[mid];
|
|
416
|
+
array[mid] = array[high];
|
|
417
|
+
array[high] = temporary;
|
|
418
418
|
}
|
|
419
419
|
} else {
|
|
420
420
|
if (array[mid] > array[low]) {
|
|
421
|
-
|
|
422
|
-
array[low] =
|
|
423
|
-
array[mid] =
|
|
421
|
+
temporary = array[low];
|
|
422
|
+
array[low] = array[mid];
|
|
423
|
+
array[mid] = temporary;
|
|
424
424
|
}
|
|
425
425
|
if (array[high] > array[low]) {
|
|
426
|
-
|
|
427
|
-
array[low] =
|
|
428
|
-
array[high] =
|
|
426
|
+
temporary = array[low];
|
|
427
|
+
array[low] = array[high];
|
|
428
|
+
array[high] = temporary;
|
|
429
429
|
}
|
|
430
430
|
if (array[high] > array[mid]) {
|
|
431
|
-
|
|
432
|
-
array[mid] =
|
|
433
|
-
array[high] =
|
|
431
|
+
temporary = array[mid];
|
|
432
|
+
array[mid] = array[high];
|
|
433
|
+
array[high] = temporary;
|
|
434
434
|
}
|
|
435
435
|
}
|
|
436
436
|
|
|
437
437
|
// Move pivot to end-1
|
|
438
|
-
|
|
439
|
-
array[mid] =
|
|
440
|
-
array[high - 1] =
|
|
438
|
+
temporary = array[mid];
|
|
439
|
+
array[mid] = array[high - 1];
|
|
440
|
+
array[high - 1] = temporary;
|
|
441
441
|
var pivot = array[high - 1];
|
|
442
442
|
var index = low;
|
|
443
443
|
var index_ = high - 1;
|
|
@@ -452,9 +452,9 @@ var numericPartition = function numericPartition(array, low, high, ascending) {
|
|
|
452
452
|
if (index >= index_) {
|
|
453
453
|
break;
|
|
454
454
|
}
|
|
455
|
-
|
|
456
|
-
array[index] =
|
|
457
|
-
array[index_] =
|
|
455
|
+
temporary = array[index];
|
|
456
|
+
array[index] = array[index_];
|
|
457
|
+
array[index_] = temporary;
|
|
458
458
|
}
|
|
459
459
|
} else {
|
|
460
460
|
while (true) {
|
|
@@ -467,13 +467,13 @@ var numericPartition = function numericPartition(array, low, high, ascending) {
|
|
|
467
467
|
if (index >= index_) {
|
|
468
468
|
break;
|
|
469
469
|
}
|
|
470
|
-
|
|
471
|
-
array[index] =
|
|
472
|
-
array[index_] =
|
|
470
|
+
temporary = array[index];
|
|
471
|
+
array[index] = array[index_];
|
|
472
|
+
array[index_] = temporary;
|
|
473
473
|
}
|
|
474
474
|
}
|
|
475
|
-
|
|
476
|
-
array[index] =
|
|
477
|
-
array[high - 1] =
|
|
475
|
+
temporary = array[index];
|
|
476
|
+
array[index] = array[high - 1];
|
|
477
|
+
array[high - 1] = temporary;
|
|
478
478
|
return index;
|
|
479
479
|
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A deferred promise with externally accessible resolve and reject
|
|
3
|
+
*/
|
|
4
|
+
export interface Deferred<T> {
|
|
5
|
+
promise: Promise<T>;
|
|
6
|
+
resolve: (value: T | PromiseLike<T>) => void;
|
|
7
|
+
reject: (reason?: unknown) => void;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Creates a deferred promise whose resolve and reject can be
|
|
11
|
+
* called externally
|
|
12
|
+
* @returns {Deferred<T>} An object with promise, resolve, and reject
|
|
13
|
+
* @example
|
|
14
|
+
* const d = defer<number>();
|
|
15
|
+
* d.resolve(42);
|
|
16
|
+
* const value = await d.promise;
|
|
17
|
+
*/
|
|
18
|
+
export declare const defer: <T>() => Deferred<T>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.defer = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* A deferred promise with externally accessible resolve and reject
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Creates a deferred promise whose resolve and reject can be
|
|
13
|
+
* called externally
|
|
14
|
+
* @returns {Deferred<T>} An object with promise, resolve, and reject
|
|
15
|
+
* @example
|
|
16
|
+
* const d = defer<number>();
|
|
17
|
+
* d.resolve(42);
|
|
18
|
+
* const value = await d.promise;
|
|
19
|
+
*/
|
|
20
|
+
var defer = exports.defer = function defer() {
|
|
21
|
+
var resolve;
|
|
22
|
+
var reject;
|
|
23
|
+
var promise = new Promise(function (resolver, rejector) {
|
|
24
|
+
resolve = resolver;
|
|
25
|
+
reject = rejector;
|
|
26
|
+
});
|
|
27
|
+
return {
|
|
28
|
+
promise: promise,
|
|
29
|
+
resolve: resolve,
|
|
30
|
+
reject: reject
|
|
31
|
+
};
|
|
32
|
+
};
|