umt 2.2.1 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/module/Array/chunk.js +5 -3
- package/module/Array/chunk.js.map +1 -1
- package/module/Array/dualPivotQuickSort.d.ts +1 -2
- package/module/Array/dualPivotQuickSort.js +5 -26
- package/module/Array/dualPivotQuickSort.js.map +1 -1
- package/module/Array/quickSort.js +7 -25
- package/module/Array/quickSort.js.map +1 -1
- package/module/Array/sortingHelpers/applyInsertionSortIfNeeded.d.ts +13 -0
- package/module/Array/sortingHelpers/applyInsertionSortIfNeeded.js +20 -0
- package/module/Array/sortingHelpers/applyInsertionSortIfNeeded.js.map +1 -0
- package/module/Array/sortingHelpers/rangeValidator.d.ts +17 -0
- package/module/Array/sortingHelpers/rangeValidator.js +26 -0
- package/module/Array/sortingHelpers/rangeValidator.js.map +1 -0
- package/module/Function/curry.d.ts +141 -0
- package/module/Function/curry.js +11 -0
- package/module/Function/curry.js.map +1 -0
- package/module/Function/index.d.ts +1 -0
- package/module/Function/index.js +2 -0
- package/module/Function/index.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/Tool/pipe.d.ts +66 -0
- package/module/Tool/pipe.js +98 -0
- package/module/Tool/pipe.js.map +1 -0
- package/module/Validate/index.d.ts +1 -0
- package/module/Validate/index.js +1 -0
- package/module/Validate/index.js.map +1 -1
- package/module/Validate/isString.d.ts +9 -0
- package/module/Validate/isString.js +12 -0
- package/module/Validate/isString.js.map +1 -0
- package/module/Validate/object/core.d.ts +2 -6
- package/module/Validate/object/core.js.map +1 -1
- package/module/Validate/type.d.ts +1 -0
- package/module/es5/Array/chunk.js +5 -3
- package/module/es5/Array/dualPivotQuickSort.d.ts +1 -2
- package/module/es5/Array/dualPivotQuickSort.js +8 -28
- package/module/es5/Array/quickSort.js +10 -25
- package/module/es5/Array/sortingHelpers/applyInsertionSortIfNeeded.d.ts +13 -0
- package/module/es5/Array/sortingHelpers/applyInsertionSortIfNeeded.js +25 -0
- package/module/es5/Array/sortingHelpers/rangeValidator.d.ts +17 -0
- package/module/es5/Array/sortingHelpers/rangeValidator.js +35 -0
- package/module/es5/Function/curry.d.ts +141 -0
- package/module/es5/Function/curry.js +38 -0
- package/module/es5/Function/index.d.ts +1 -0
- package/module/es5/Function/index.js +16 -0
- package/module/es5/Tool/index.d.ts +1 -0
- package/module/es5/Tool/index.js +11 -0
- package/module/es5/Tool/pipe.d.ts +66 -0
- package/module/es5/Tool/pipe.js +129 -0
- package/module/es5/Validate/index.d.ts +1 -0
- package/module/es5/Validate/index.js +11 -0
- package/module/es5/Validate/isString.d.ts +9 -0
- package/module/es5/Validate/isString.js +16 -0
- package/module/es5/Validate/object/core.d.ts +2 -6
- package/module/es5/Validate/type.d.ts +1 -0
- package/module/es5/index.d.ts +1 -0
- package/module/es5/index.js +11 -0
- package/module/es5/tsconfig.tsbuildinfo +1 -1
- package/module/index.d.ts +1 -0
- package/module/index.js +1 -0
- package/module/index.js.map +1 -1
- package/package.json +26 -22
- package/module/es5/tests/integration/Array/drop-and-first.test.d.ts +0 -1
- package/module/es5/tests/integration/Array/drop-and-first.test.js +0 -34
- package/module/es5/tests/integration/Tool/parseJson-and-Validate.test.d.ts +0 -1
- package/module/es5/tests/integration/Tool/parseJson-and-Validate.test.js +0 -80
- package/module/es5/tests/unit/Advance/rangeAdvance.test.d.ts +0 -1
- package/module/es5/tests/unit/Advance/rangeAdvance.test.js +0 -26
- package/module/es5/tests/unit/Array/arraysJoin.test.d.ts +0 -1
- package/module/es5/tests/unit/Array/arraysJoin.test.js +0 -19
- package/module/es5/tests/unit/Array/binarySearch.test.d.ts +0 -1
- package/module/es5/tests/unit/Array/binarySearch.test.js +0 -32
- package/module/es5/tests/unit/Array/checkFlagAlignment.test.d.ts +0 -1
- package/module/es5/tests/unit/Array/checkFlagAlignment.test.js +0 -206
- package/module/es5/tests/unit/Array/chunk.test.d.ts +0 -1
- package/module/es5/tests/unit/Array/chunk.test.js +0 -51
- package/module/es5/tests/unit/Array/compact.test.d.ts +0 -1
- package/module/es5/tests/unit/Array/compact.test.js +0 -53
- package/module/es5/tests/unit/Array/compareFunctionDefault.test.d.ts +0 -1
- package/module/es5/tests/unit/Array/compareFunctionDefault.test.js +0 -29
- package/module/es5/tests/unit/Array/drop.test.d.ts +0 -1
- package/module/es5/tests/unit/Array/drop.test.js +0 -84
- package/module/es5/tests/unit/Array/dualPivotQuickSort.test.d.ts +0 -1
- package/module/es5/tests/unit/Array/dualPivotQuickSort.test.js +0 -87
- package/module/es5/tests/unit/Array/first.test.d.ts +0 -1
- package/module/es5/tests/unit/Array/first.test.js +0 -28
- package/module/es5/tests/unit/Array/generateNumberArray.test.d.ts +0 -1
- package/module/es5/tests/unit/Array/generateNumberArray.test.js +0 -34
- package/module/es5/tests/unit/Array/getArraysCommon.test.d.ts +0 -1
- package/module/es5/tests/unit/Array/getArraysCommon.test.js +0 -40
- package/module/es5/tests/unit/Array/getArraysDiff.test.d.ts +0 -1
- package/module/es5/tests/unit/Array/getArraysDiff.test.js +0 -99
- package/module/es5/tests/unit/Array/groupBy.test.d.ts +0 -1
- package/module/es5/tests/unit/Array/groupBy.test.js +0 -87
- package/module/es5/tests/unit/Array/insertionSort.test.d.ts +0 -1
- package/module/es5/tests/unit/Array/insertionSort.test.js +0 -37
- package/module/es5/tests/unit/Array/mergeSort.test.d.ts +0 -1
- package/module/es5/tests/unit/Array/mergeSort.test.js +0 -49
- package/module/es5/tests/unit/Array/pop.test.d.ts +0 -1
- package/module/es5/tests/unit/Array/pop.test.js +0 -50
- package/module/es5/tests/unit/Array/quickSort.test.d.ts +0 -1
- package/module/es5/tests/unit/Array/quickSort.test.js +0 -118
- package/module/es5/tests/unit/Array/randomSelect.test.d.ts +0 -1
- package/module/es5/tests/unit/Array/randomSelect.test.js +0 -51
- package/module/es5/tests/unit/Array/range.test.d.ts +0 -1
- package/module/es5/tests/unit/Array/range.test.js +0 -42
- package/module/es5/tests/unit/Array/shuffle.test.d.ts +0 -1
- package/module/es5/tests/unit/Array/shuffle.test.js +0 -84
- package/module/es5/tests/unit/Array/shuffle2DArray.test.d.ts +0 -1
- package/module/es5/tests/unit/Array/shuffle2DArray.test.js +0 -90
- package/module/es5/tests/unit/Array/sum.test.d.ts +0 -1
- package/module/es5/tests/unit/Array/sum.test.js +0 -44
- package/module/es5/tests/unit/Array/timSort.test.d.ts +0 -1
- package/module/es5/tests/unit/Array/timSort.test.js +0 -128
- package/module/es5/tests/unit/Array/zip.test.d.ts +0 -1
- package/module/es5/tests/unit/Array/zip.test.js +0 -69
- package/module/es5/tests/unit/Array/zipLongest.test.d.ts +0 -1
- package/module/es5/tests/unit/Array/zipLongest.test.js +0 -74
- package/module/es5/tests/unit/Color/cmykToRgba.test.d.ts +0 -1
- package/module/es5/tests/unit/Color/cmykToRgba.test.js +0 -58
- package/module/es5/tests/unit/Color/hexaToRgba.test.d.ts +0 -1
- package/module/es5/tests/unit/Color/hexaToRgba.test.js +0 -115
- package/module/es5/tests/unit/Color/hslaToRgba.test.d.ts +0 -1
- package/module/es5/tests/unit/Color/hslaToRgba.test.js +0 -141
- package/module/es5/tests/unit/Color/rgbaToCmyk.test.d.ts +0 -1
- package/module/es5/tests/unit/Color/rgbaToCmyk.test.js +0 -139
- package/module/es5/tests/unit/Color/rgbaToHexA.test.d.ts +0 -1
- package/module/es5/tests/unit/Color/rgbaToHexA.test.js +0 -114
- package/module/es5/tests/unit/Color/rgbaToHsla.test.d.ts +0 -1
- package/module/es5/tests/unit/Color/rgbaToHsla.test.js +0 -190
- package/module/es5/tests/unit/Consts/clock.test.d.ts +0 -1
- package/module/es5/tests/unit/Consts/clock.test.js +0 -71
- package/module/es5/tests/unit/Consts/httpClientErrorStatus.test.d.ts +0 -1
- package/module/es5/tests/unit/Consts/httpClientErrorStatus.test.js +0 -33
- package/module/es5/tests/unit/Consts/httpInformationalStatus.test.d.ts +0 -1
- package/module/es5/tests/unit/Consts/httpInformationalStatus.test.js +0 -13
- package/module/es5/tests/unit/Consts/httpRedirectionStatus.test.d.ts +0 -1
- package/module/es5/tests/unit/Consts/httpRedirectionStatus.test.js +0 -16
- package/module/es5/tests/unit/Consts/httpServerErrorStatus.test.d.ts +0 -1
- package/module/es5/tests/unit/Consts/httpServerErrorStatus.test.js +0 -15
- package/module/es5/tests/unit/Consts/httpStatus.test.d.ts +0 -1
- package/module/es5/tests/unit/Consts/httpStatus.test.js +0 -82
- package/module/es5/tests/unit/Consts/httpSuccessStatus.test.d.ts +0 -1
- package/module/es5/tests/unit/Consts/httpSuccessStatus.test.js +0 -16
- package/module/es5/tests/unit/Date/birthday.test.d.ts +0 -1
- package/module/es5/tests/unit/Date/birthday.test.js +0 -31
- package/module/es5/tests/unit/Date/dateRange.test.d.ts +0 -1
- package/module/es5/tests/unit/Date/dateRange.test.js +0 -40
- package/module/es5/tests/unit/Date/dayOfWeek.test.d.ts +0 -1
- package/module/es5/tests/unit/Date/dayOfWeek.test.js +0 -39
- package/module/es5/tests/unit/Date/deleteSpace.test.d.ts +0 -1
- package/module/es5/tests/unit/Date/deleteSpace.test.js +0 -35
- package/module/es5/tests/unit/Date/format.test.d.ts +0 -1
- package/module/es5/tests/unit/Date/format.test.js +0 -50
- package/module/es5/tests/unit/Date/getDay.test.d.ts +0 -1
- package/module/es5/tests/unit/Date/getDay.test.js +0 -40
- package/module/es5/tests/unit/Date/getTimezoneOffsetString.test.d.ts +0 -1
- package/module/es5/tests/unit/Date/getTimezoneOffsetString.test.js +0 -26
- package/module/es5/tests/unit/Date/isLeapYear.test.d.ts +0 -1
- package/module/es5/tests/unit/Date/isLeapYear.test.js +0 -30
- package/module/es5/tests/unit/Date/new.test.d.ts +0 -1
- package/module/es5/tests/unit/Date/new.test.js +0 -39
- package/module/es5/tests/unit/Date/now.test.d.ts +0 -1
- package/module/es5/tests/unit/Date/now.test.js +0 -42
- package/module/es5/tests/unit/Error/safeExecute.test.d.ts +0 -1
- package/module/es5/tests/unit/Error/safeExecute.test.js +0 -75
- package/module/es5/tests/unit/IP/cidrToLong.test.d.ts +0 -1
- package/module/es5/tests/unit/IP/cidrToLong.test.js +0 -32
- package/module/es5/tests/unit/IP/cidrToSubnetMask.test.d.ts +0 -1
- package/module/es5/tests/unit/IP/cidrToSubnetMask.test.js +0 -36
- package/module/es5/tests/unit/IP/getIpClass.test.d.ts +0 -1
- package/module/es5/tests/unit/IP/getIpClass.test.js +0 -36
- package/module/es5/tests/unit/IP/getNetworkAddress.test.d.ts +0 -1
- package/module/es5/tests/unit/IP/getNetworkAddress.test.js +0 -40
- package/module/es5/tests/unit/IP/ipToBinaryString.test.d.ts +0 -1
- package/module/es5/tests/unit/IP/ipToBinaryString.test.js +0 -46
- package/module/es5/tests/unit/IP/ipToLong.test.d.ts +0 -1
- package/module/es5/tests/unit/IP/ipToLong.test.js +0 -34
- package/module/es5/tests/unit/IP/isInRange.test.d.ts +0 -1
- package/module/es5/tests/unit/IP/isInRange.test.js +0 -82
- package/module/es5/tests/unit/IP/isPrivateIp.test.d.ts +0 -1
- package/module/es5/tests/unit/IP/isPrivateIp.test.js +0 -26
- package/module/es5/tests/unit/IP/longToIp.test.d.ts +0 -1
- package/module/es5/tests/unit/IP/longToIp.test.js +0 -39
- package/module/es5/tests/unit/IP/subnetMaskToCidr.test.d.ts +0 -1
- package/module/es5/tests/unit/IP/subnetMaskToCidr.test.js +0 -41
- package/module/es5/tests/unit/Math/addition.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/addition.test.js +0 -79
- package/module/es5/tests/unit/Math/average.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/average.test.js +0 -48
- package/module/es5/tests/unit/Math/bitwise.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/bitwise.test.js +0 -62
- package/module/es5/tests/unit/Math/calculator/calculator.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/calculator/calculator.test.js +0 -76
- package/module/es5/tests/unit/Math/calculator/calculatorInitialization.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/calculator/calculatorInitialization.test.js +0 -21
- package/module/es5/tests/unit/Math/calculator/convertCurrency.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/calculator/convertCurrency.test.js +0 -40
- package/module/es5/tests/unit/Math/calculator/literalExpression.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/calculator/literalExpression.test.js +0 -51
- package/module/es5/tests/unit/Math/degToRad.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/degToRad.test.js +0 -50
- package/module/es5/tests/unit/Math/deviationValue.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/deviationValue.test.js +0 -30
- package/module/es5/tests/unit/Math/division.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/division.test.js +0 -81
- package/module/es5/tests/unit/Math/factorial.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/factorial.test.js +0 -26
- package/module/es5/tests/unit/Math/factorize.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/factorize.test.js +0 -38
- package/module/es5/tests/unit/Math/flexibleNumberConversion.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/flexibleNumberConversion.test.js +0 -195
- package/module/es5/tests/unit/Math/gcd.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/gcd.test.js +0 -35
- package/module/es5/tests/unit/Math/getDecimalLength.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/getDecimalLength.test.js +0 -44
- package/module/es5/tests/unit/Math/lcm.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/lcm.test.js +0 -43
- package/module/es5/tests/unit/Math/linearCongruentialGenerator.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/linearCongruentialGenerator.test.js +0 -25
- package/module/es5/tests/unit/Math/mathConverter.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/mathConverter.test.js +0 -37
- package/module/es5/tests/unit/Math/mathSeparator.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/mathSeparator.test.js +0 -59
- package/module/es5/tests/unit/Math/max.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/max.test.js +0 -22
- package/module/es5/tests/unit/Math/median.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/median.test.js +0 -17
- package/module/es5/tests/unit/Math/min.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/min.test.js +0 -22
- package/module/es5/tests/unit/Math/multiples.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/multiples.test.js +0 -30
- package/module/es5/tests/unit/Math/multiplication.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/multiplication.test.js +0 -48
- package/module/es5/tests/unit/Math/nCr.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/nCr.test.js +0 -34
- package/module/es5/tests/unit/Math/nHr.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/nHr.test.js +0 -35
- package/module/es5/tests/unit/Math/nPr.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/nPr.test.js +0 -38
- package/module/es5/tests/unit/Math/primeFactorization.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/primeFactorization.test.js +0 -84
- package/module/es5/tests/unit/Math/quotient.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/quotient.test.js +0 -36
- package/module/es5/tests/unit/Math/radToDeg.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/radToDeg.test.js +0 -50
- package/module/es5/tests/unit/Math/random.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/random.test.js +0 -61
- package/module/es5/tests/unit/Math/reduce.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/reduce.test.js +0 -93
- package/module/es5/tests/unit/Math/repeatedTrial.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/repeatedTrial.test.js +0 -39
- package/module/es5/tests/unit/Math/roundOf.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/roundOf.test.js +0 -40
- package/module/es5/tests/unit/Math/solveEquation.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/solveEquation.test.js +0 -24
- package/module/es5/tests/unit/Math/standardDeviation.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/standardDeviation.test.js +0 -23
- package/module/es5/tests/unit/Math/subtract.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/subtract.test.js +0 -46
- package/module/es5/tests/unit/Math/toBaseN.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/toBaseN.test.js +0 -40
- package/module/es5/tests/unit/Math/toCelsius.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/toCelsius.test.js +0 -18
- package/module/es5/tests/unit/Math/toKelvin.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/toKelvin.test.js +0 -18
- package/module/es5/tests/unit/Math/uuidv7.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/uuidv7.test.js +0 -33
- package/module/es5/tests/unit/Math/valueSwap.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/valueSwap.test.js +0 -28
- package/module/es5/tests/unit/Math/xoshiro256.test.d.ts +0 -1
- package/module/es5/tests/unit/Math/xoshiro256.test.js +0 -33
- package/module/es5/tests/unit/Object/has.test.d.ts +0 -1
- package/module/es5/tests/unit/Object/has.test.js +0 -60
- package/module/es5/tests/unit/Object/keyBy.test.d.ts +0 -1
- package/module/es5/tests/unit/Object/keyBy.test.js +0 -120
- package/module/es5/tests/unit/Object/pick.test.d.ts +0 -1
- package/module/es5/tests/unit/Object/pick.test.js +0 -109
- package/module/es5/tests/unit/Object/pickDeep.test.d.ts +0 -1
- package/module/es5/tests/unit/Object/pickDeep.test.js +0 -222
- package/module/es5/tests/unit/Simple/Array/quickSortSimple.test.d.ts +0 -1
- package/module/es5/tests/unit/Simple/Array/quickSortSimple.test.js +0 -18
- package/module/es5/tests/unit/Simple/Date/dayOfWeekSimple.test.d.ts +0 -1
- package/module/es5/tests/unit/Simple/Date/dayOfWeekSimple.test.js +0 -58
- package/module/es5/tests/unit/Simple/Math/deviationValueSimple.test.d.ts +0 -1
- package/module/es5/tests/unit/Simple/Math/deviationValueSimple.test.js +0 -43
- package/module/es5/tests/unit/String/deleteSpaces.test.d.ts +0 -1
- package/module/es5/tests/unit/String/deleteSpaces.test.js +0 -22
- package/module/es5/tests/unit/String/formatString.test.d.ts +0 -1
- package/module/es5/tests/unit/String/formatString.test.js +0 -47
- package/module/es5/tests/unit/String/fromBase64.test.d.ts +0 -1
- package/module/es5/tests/unit/String/fromBase64.test.js +0 -37
- package/module/es5/tests/unit/String/hasNoLetters.test.d.ts +0 -1
- package/module/es5/tests/unit/String/hasNoLetters.test.js +0 -29
- package/module/es5/tests/unit/String/padEnd.test.d.ts +0 -1
- package/module/es5/tests/unit/String/padEnd.test.js +0 -22
- package/module/es5/tests/unit/String/padStart.test.d.ts +0 -1
- package/module/es5/tests/unit/String/padStart.test.js +0 -40
- package/module/es5/tests/unit/String/randomString.test.d.ts +0 -1
- package/module/es5/tests/unit/String/randomString.test.js +0 -21
- package/module/es5/tests/unit/String/randomStringInitialization.test.d.ts +0 -1
- package/module/es5/tests/unit/String/randomStringInitialization.test.js +0 -25
- package/module/es5/tests/unit/String/reverseString.test.d.ts +0 -1
- package/module/es5/tests/unit/String/reverseString.test.js +0 -35
- package/module/es5/tests/unit/String/toBase64.test.d.ts +0 -1
- package/module/es5/tests/unit/String/toBase64.test.js +0 -20
- package/module/es5/tests/unit/String/toHalfWidth.test.d.ts +0 -1
- package/module/es5/tests/unit/String/toHalfWidth.test.js +0 -16
- package/module/es5/tests/unit/String/trimCharacters.test.d.ts +0 -1
- package/module/es5/tests/unit/String/trimCharacters.test.js +0 -17
- package/module/es5/tests/unit/String/trimEndCharacters.test.d.ts +0 -1
- package/module/es5/tests/unit/String/trimEndCharacters.test.js +0 -33
- package/module/es5/tests/unit/String/trimStartCharacters.test.d.ts +0 -1
- package/module/es5/tests/unit/String/trimStartCharacters.test.js +0 -33
- package/module/es5/tests/unit/Time/convertTime.test.d.ts +0 -1
- package/module/es5/tests/unit/Time/convertTime.test.js +0 -135
- package/module/es5/tests/unit/Time/normalizeTimeUnit.test.d.ts +0 -1
- package/module/es5/tests/unit/Time/normalizeTimeUnit.test.js +0 -29
- package/module/es5/tests/unit/Tool/createPipeline.test.d.ts +0 -1
- package/module/es5/tests/unit/Tool/createPipeline.test.js +0 -184
- package/module/es5/tests/unit/Tool/parseJson.test.d.ts +0 -1
- package/module/es5/tests/unit/Tool/parseJson.test.js +0 -46
- package/module/es5/tests/unit/UA/extractBrowserFromUserAgent.test.d.ts +0 -1
- package/module/es5/tests/unit/UA/extractBrowserFromUserAgent.test.js +0 -47
- package/module/es5/tests/unit/UA/extractDeviceFromUserAgent.test.d.ts +0 -1
- package/module/es5/tests/unit/UA/extractDeviceFromUserAgent.test.js +0 -55
- package/module/es5/tests/unit/UA/extractOsFromUserAgent.test.d.ts +0 -1
- package/module/es5/tests/unit/UA/extractOsFromUserAgent.test.js +0 -57
- package/module/es5/tests/unit/UA/parseUserAgent.test.d.ts +0 -1
- package/module/es5/tests/unit/UA/parseUserAgent.test.js +0 -95
- package/module/es5/tests/unit/Unit/unitConverterInitialization.test.d.ts +0 -1
- package/module/es5/tests/unit/Unit/unitConverterInitialization.test.js +0 -40
- package/module/es5/tests/unit/Validate/array/core.test.d.ts +0 -1
- package/module/es5/tests/unit/Validate/array/core.test.js +0 -86
- package/module/es5/tests/unit/Validate/boolean/core.test.d.ts +0 -1
- package/module/es5/tests/unit/Validate/boolean/core.test.js +0 -29
- package/module/es5/tests/unit/Validate/core/core.test.d.ts +0 -1
- package/module/es5/tests/unit/Validate/core/core.test.js +0 -87
- package/module/es5/tests/unit/Validate/isArray.test.d.ts +0 -1
- package/module/es5/tests/unit/Validate/isArray.test.js +0 -36
- package/module/es5/tests/unit/Validate/isDictionaryObject.test.d.ts +0 -1
- package/module/es5/tests/unit/Validate/isDictionaryObject.test.js +0 -62
- package/module/es5/tests/unit/Validate/isDouble.test.d.ts +0 -1
- package/module/es5/tests/unit/Validate/isDouble.test.js +0 -47
- package/module/es5/tests/unit/Validate/isEqual.test.d.ts +0 -1
- package/module/es5/tests/unit/Validate/isEqual.test.js +0 -74
- package/module/es5/tests/unit/Validate/isNotEmpty.test.d.ts +0 -1
- package/module/es5/tests/unit/Validate/isNotEmpty.test.js +0 -43
- package/module/es5/tests/unit/Validate/isNumber.test.d.ts +0 -1
- package/module/es5/tests/unit/Validate/isNumber.test.js +0 -77
- package/module/es5/tests/unit/Validate/isPerfectSquare.test.d.ts +0 -1
- package/module/es5/tests/unit/Validate/isPerfectSquare.test.js +0 -27
- package/module/es5/tests/unit/Validate/isPrimeNumber.test.d.ts +0 -1
- package/module/es5/tests/unit/Validate/isPrimeNumber.test.js +0 -51
- package/module/es5/tests/unit/Validate/isValueNaN.test.d.ts +0 -1
- package/module/es5/tests/unit/Validate/isValueNaN.test.js +0 -54
- package/module/es5/tests/unit/Validate/number/core.test.d.ts +0 -1
- package/module/es5/tests/unit/Validate/number/core.test.js +0 -36
- package/module/es5/tests/unit/Validate/number/double.test.d.ts +0 -1
- package/module/es5/tests/unit/Validate/number/double.test.js +0 -23
- package/module/es5/tests/unit/Validate/number/even.test.d.ts +0 -1
- package/module/es5/tests/unit/Validate/number/even.test.js +0 -23
- package/module/es5/tests/unit/Validate/number/maxValue.test.d.ts +0 -1
- package/module/es5/tests/unit/Validate/number/maxValue.test.js +0 -20
- package/module/es5/tests/unit/Validate/number/minValue.test.d.ts +0 -1
- package/module/es5/tests/unit/Validate/number/minValue.test.js +0 -20
- package/module/es5/tests/unit/Validate/number/odd.test.d.ts +0 -1
- package/module/es5/tests/unit/Validate/number/odd.test.js +0 -23
- package/module/es5/tests/unit/Validate/number/prime.test.d.ts +0 -1
- package/module/es5/tests/unit/Validate/number/prime.test.js +0 -25
- package/module/es5/tests/unit/Validate/object/core.test.d.ts +0 -1
- package/module/es5/tests/unit/Validate/object/core.test.js +0 -79
- package/module/es5/tests/unit/Validate/string/core.test.d.ts +0 -1
- package/module/es5/tests/unit/Validate/string/core.test.js +0 -27
- package/module/es5/tests/unit/Validate/string/email.test.d.ts +0 -1
- package/module/es5/tests/unit/Validate/string/email.test.js +0 -21
- package/module/es5/tests/unit/Validate/string/length.test.d.ts +0 -1
- package/module/es5/tests/unit/Validate/string/length.test.js +0 -18
- package/module/es5/tests/unit/Validate/string/maxLength.test.d.ts +0 -1
- package/module/es5/tests/unit/Validate/string/maxLength.test.js +0 -18
- package/module/es5/tests/unit/Validate/string/minLength.test.d.ts +0 -1
- package/module/es5/tests/unit/Validate/string/minLength.test.js +0 -18
- package/module/es5/tests/unit/Validate/string/numberString.test.d.ts +0 -1
- package/module/es5/tests/unit/Validate/string/numberString.test.js +0 -22
- package/module/es5/tests/unit/Validate/string/regexMatch.test.d.ts +0 -1
- package/module/es5/tests/unit/Validate/string/regexMatch.test.js +0 -29
- package/module/es5/tests/unit/Validate/string/uuid.test.d.ts +0 -1
- package/module/es5/tests/unit/Validate/string/uuid.test.js +0 -72
- package/module/es5/tests/unit/types/arrayType.test.d.ts +0 -1
- package/module/es5/tests/unit/types/arrayType.test.js +0 -11
- package/module/es5/tests/unit/types/clockType.test.d.ts +0 -1
- package/module/es5/tests/unit/types/clockType.test.js +0 -37
package/module/Array/chunk.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
export const chunk = (array, n) => {
|
|
2
|
-
const
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
const length = array.length;
|
|
3
|
+
// eslint-disable-next-line unicorn/no-new-array
|
|
4
|
+
const result = new Array(Math.ceil(length / n));
|
|
5
|
+
for (let index = 0, k = 0; index < length; index += n, k++) {
|
|
6
|
+
result[k] = array.slice(index, index + n);
|
|
5
7
|
}
|
|
6
8
|
return result;
|
|
7
9
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk.js","sourceRoot":"","sources":["../../src/Array/chunk.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,KAAK,GAAG,CACnB,KAAQ,EACR,CAAI,EACkB,EAAE;IACxB,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"chunk.js","sourceRoot":"","sources":["../../src/Array/chunk.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,KAAK,GAAG,CACnB,KAAQ,EACR,CAAI,EACkB,EAAE;IACxB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,gDAAgD;IAChD,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAEhD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3D,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAmB,CAAC;IAC9D,CAAC;IAED,OAAO,MAA8B,CAAC;AACxC,CAAC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
type CompareFunction
|
|
1
|
+
import type { CompareFunction } from "../types/array/compareFunction";
|
|
2
2
|
/**
|
|
3
3
|
* Sort array using dual-pivot quicksort algorithm
|
|
4
4
|
* More efficient than traditional quicksort for arrays with many duplicate values
|
|
@@ -13,4 +13,3 @@ type CompareFunction<T> = (a: T, b: T) => number;
|
|
|
13
13
|
* dualPivotQuickSort(['banana', 'apple', 'orange']); // ['apple', 'banana', 'orange']
|
|
14
14
|
*/
|
|
15
15
|
export declare const dualPivotQuickSort: <T>(array: T[], compareFunction?: CompareFunction<T>, startIndex?: number, endIndex?: number, insertionSortThreshold?: number) => T[];
|
|
16
|
-
export {};
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { compareFunctionDefault } from "./compareFunctionDefault";
|
|
2
|
+
import { applyInsertionSortIfNeeded } from "./sortingHelpers/applyInsertionSortIfNeeded";
|
|
3
|
+
import { validateRange } from "./sortingHelpers/rangeValidator";
|
|
2
4
|
/**
|
|
3
5
|
* Get the median of three elements in the array
|
|
4
6
|
* @param array - The input array
|
|
@@ -83,24 +85,6 @@ const partition = (array, low, high, compareFunction) => {
|
|
|
83
85
|
[array[high], array[right]] = [array[right], array[high]];
|
|
84
86
|
return { leftPivotIndex: left, rightPivotIndex: right };
|
|
85
87
|
};
|
|
86
|
-
/**
|
|
87
|
-
* Sort small arrays using selection sort
|
|
88
|
-
* @param array - Array to be sorted
|
|
89
|
-
* @param start - Starting index
|
|
90
|
-
* @param end - Ending index
|
|
91
|
-
* @param compareFunction - Comparison function
|
|
92
|
-
*/
|
|
93
|
-
const insertionSort = (array, start, end, compareFunction) => {
|
|
94
|
-
for (let index = start + 1; index <= end; index++) {
|
|
95
|
-
const current = array[index];
|
|
96
|
-
let index_ = index - 1;
|
|
97
|
-
while (index_ >= start && compareFunction(array[index_], current) > 0) {
|
|
98
|
-
array[index_ + 1] = array[index_];
|
|
99
|
-
index_--;
|
|
100
|
-
}
|
|
101
|
-
array[index_ + 1] = current;
|
|
102
|
-
}
|
|
103
|
-
};
|
|
104
88
|
/**
|
|
105
89
|
* Internal implementation of dual-pivot quicksort
|
|
106
90
|
* @param array - Array to be sorted
|
|
@@ -110,9 +94,7 @@ const insertionSort = (array, start, end, compareFunction) => {
|
|
|
110
94
|
* @param insertionSortThreshold - Threshold for switching to insertion sort
|
|
111
95
|
*/
|
|
112
96
|
const sortRange = (array, start, end, compareFunction, insertionSortThreshold) => {
|
|
113
|
-
|
|
114
|
-
if (end - start + 1 <= insertionSortThreshold) {
|
|
115
|
-
insertionSort(array, start, end, compareFunction);
|
|
97
|
+
if (applyInsertionSortIfNeeded(array, start, end, compareFunction, insertionSortThreshold)) {
|
|
116
98
|
return;
|
|
117
99
|
}
|
|
118
100
|
// Get partition indices
|
|
@@ -140,11 +122,8 @@ const sortRange = (array, start, end, compareFunction, insertionSortThreshold) =
|
|
|
140
122
|
* dualPivotQuickSort(['banana', 'apple', 'orange']); // ['apple', 'banana', 'orange']
|
|
141
123
|
*/
|
|
142
124
|
export const dualPivotQuickSort = (array, compareFunction = (compareFunctionDefault), startIndex = 0, endIndex = array.length - 1, insertionSortThreshold = 10) => {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
const validEndIndex = Math.max(validStartIndex, Math.min(endIndex, array.length - 1));
|
|
146
|
-
// Sort array if valid range exists
|
|
147
|
-
if (validEndIndex >= validStartIndex) {
|
|
125
|
+
const { startIndex: validStartIndex, endIndex: validEndIndex, shouldSort, } = validateRange(array, startIndex, endIndex);
|
|
126
|
+
if (shouldSort) {
|
|
148
127
|
sortRange(array, validStartIndex, validEndIndex, compareFunction, insertionSortThreshold);
|
|
149
128
|
}
|
|
150
129
|
return array;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dualPivotQuickSort.js","sourceRoot":"","sources":["../../src/Array/dualPivotQuickSort.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"dualPivotQuickSort.js","sourceRoot":"","sources":["../../src/Array/dualPivotQuickSort.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { compareFunctionDefault } from "./compareFunctionDefault";
|
|
2
|
+
import { applyInsertionSortIfNeeded } from "./sortingHelpers/applyInsertionSortIfNeeded";
|
|
3
|
+
import { validateRange } from "./sortingHelpers/rangeValidator";
|
|
2
4
|
/**
|
|
3
5
|
* Finds the median value among three elements in the array
|
|
4
6
|
* @param array The array containing the elements
|
|
@@ -54,25 +56,6 @@ const partition = (array, low, high, compareFunction) => {
|
|
|
54
56
|
[array[left], array[right]] = [array[right], array[left]];
|
|
55
57
|
}
|
|
56
58
|
};
|
|
57
|
-
/**
|
|
58
|
-
* Sorts a portion of the array using insertion sort algorithm
|
|
59
|
-
* @param array Array to sort
|
|
60
|
-
* @param low Starting index of the range to sort
|
|
61
|
-
* @param high Ending index of the range to sort
|
|
62
|
-
* @param compareFunction Function to compare elements
|
|
63
|
-
*/
|
|
64
|
-
const insertionSort = (array, low, high, compareFunction) => {
|
|
65
|
-
for (let index = low + 1; index <= high; index++) {
|
|
66
|
-
const key = array[index];
|
|
67
|
-
let currentIndex = index - 1;
|
|
68
|
-
while (currentIndex >= low &&
|
|
69
|
-
compareFunction(array[currentIndex], key) > 0) {
|
|
70
|
-
array[currentIndex + 1] = array[currentIndex];
|
|
71
|
-
currentIndex--;
|
|
72
|
-
}
|
|
73
|
-
array[currentIndex + 1] = key;
|
|
74
|
-
}
|
|
75
|
-
};
|
|
76
59
|
/**
|
|
77
60
|
* Internal implementation of the quicksort algorithm with tail-call optimization
|
|
78
61
|
* @param array Array to sort
|
|
@@ -85,8 +68,7 @@ const sortImpl = (array, lowInit, highInit, compareFunction, insertionSortThresh
|
|
|
85
68
|
let low = lowInit;
|
|
86
69
|
let high = highInit;
|
|
87
70
|
while (low < high) {
|
|
88
|
-
if (
|
|
89
|
-
insertionSort(array, low, high, compareFunction);
|
|
71
|
+
if (applyInsertionSortIfNeeded(array, low, high, compareFunction, insertionSortThreshold)) {
|
|
90
72
|
return;
|
|
91
73
|
}
|
|
92
74
|
const pivotIndex = partition(array, low, high, compareFunction);
|
|
@@ -114,10 +96,10 @@ const sortImpl = (array, lowInit, highInit, compareFunction, insertionSortThresh
|
|
|
114
96
|
* quickSort(['b', 'a', 'c']); // ['a', 'b', 'c']
|
|
115
97
|
*/
|
|
116
98
|
export const quickSort = (array, compareFunction = (compareFunctionDefault), startIndex = 0, endIndex = array.length - 1, insertionSortThreshold = 10) => {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
99
|
+
const { startIndex: validStartIndex, endIndex: validEndIndex, shouldSort, } = validateRange(array, startIndex, endIndex);
|
|
100
|
+
if (shouldSort) {
|
|
101
|
+
sortImpl(array, validStartIndex, validEndIndex, compareFunction, insertionSortThreshold);
|
|
102
|
+
}
|
|
121
103
|
return array;
|
|
122
104
|
};
|
|
123
105
|
//# sourceMappingURL=quickSort.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quickSort.js","sourceRoot":"","sources":["../../src/Array/quickSort.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"quickSort.js","sourceRoot":"","sources":["../../src/Array/quickSort.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { CompareFunction } from "../../types/array/compareFunction";
|
|
2
|
+
/**
|
|
3
|
+
* Checks if a partition is small enough to apply insertion sort and applies it if so.
|
|
4
|
+
*
|
|
5
|
+
* @template T The type of elements in the array.
|
|
6
|
+
* @param {T[]} array The array containing the partition.
|
|
7
|
+
* @param {number} low The starting index of the partition.
|
|
8
|
+
* @param {number} high The ending index of the partition.
|
|
9
|
+
* @param {CompareFunction<T>} compareFunction The function to compare elements.
|
|
10
|
+
* @param {number} insertionSortThreshold The size threshold for switching to insertion sort.
|
|
11
|
+
* @returns {boolean} True if insertion sort was applied, false otherwise.
|
|
12
|
+
*/
|
|
13
|
+
export declare const applyInsertionSortIfNeeded: <T>(array: T[], low: number, high: number, compareFunction: CompareFunction<T>, insertionSortThreshold: number) => boolean;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { insertionSort } from "../../Array/insertionSort";
|
|
2
|
+
/**
|
|
3
|
+
* Checks if a partition is small enough to apply insertion sort and applies it if so.
|
|
4
|
+
*
|
|
5
|
+
* @template T The type of elements in the array.
|
|
6
|
+
* @param {T[]} array The array containing the partition.
|
|
7
|
+
* @param {number} low The starting index of the partition.
|
|
8
|
+
* @param {number} high The ending index of the partition.
|
|
9
|
+
* @param {CompareFunction<T>} compareFunction The function to compare elements.
|
|
10
|
+
* @param {number} insertionSortThreshold The size threshold for switching to insertion sort.
|
|
11
|
+
* @returns {boolean} True if insertion sort was applied, false otherwise.
|
|
12
|
+
*/
|
|
13
|
+
export const applyInsertionSortIfNeeded = (array, low, high, compareFunction, insertionSortThreshold) => {
|
|
14
|
+
if (high - low + 1 <= insertionSortThreshold) {
|
|
15
|
+
insertionSort(array, compareFunction, low, high);
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
return false;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=applyInsertionSortIfNeeded.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"applyInsertionSortIfNeeded.js","sourceRoot":"","sources":["../../../src/Array/sortingHelpers/applyInsertionSortIfNeeded.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,KAAU,EACV,GAAW,EACX,IAAY,EACZ,eAAmC,EACnC,sBAA8B,EACrB,EAAE;IACX,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC,IAAI,sBAAsB,EAAE,CAAC;QAC7C,aAAa,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface ValidatedSortRange {
|
|
2
|
+
startIndex: number;
|
|
3
|
+
endIndex: number;
|
|
4
|
+
shouldSort: boolean;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Validates and adjusts the start and end indices for an operation on an array.
|
|
8
|
+
* Ensures indices are within the bounds of the array.
|
|
9
|
+
*
|
|
10
|
+
* @template T The type of elements in the array.
|
|
11
|
+
* @param {T[]} array The array.
|
|
12
|
+
* @param {number} startIndex The desired starting index.
|
|
13
|
+
* @param {number} endIndex The desired ending index.
|
|
14
|
+
* @returns {ValidatedSortRange} An object containing the validated start index, end index,
|
|
15
|
+
* and a boolean indicating if the operation should proceed on the range.
|
|
16
|
+
*/
|
|
17
|
+
export declare const validateRange: <T>(array: T[], startIndex: number, endIndex: number) => ValidatedSortRange;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validates and adjusts the start and end indices for an operation on an array.
|
|
3
|
+
* Ensures indices are within the bounds of the array.
|
|
4
|
+
*
|
|
5
|
+
* @template T The type of elements in the array.
|
|
6
|
+
* @param {T[]} array The array.
|
|
7
|
+
* @param {number} startIndex The desired starting index.
|
|
8
|
+
* @param {number} endIndex The desired ending index.
|
|
9
|
+
* @returns {ValidatedSortRange} An object containing the validated start index, end index,
|
|
10
|
+
* and a boolean indicating if the operation should proceed on the range.
|
|
11
|
+
*/
|
|
12
|
+
export const validateRange = (array, startIndex, endIndex) => {
|
|
13
|
+
const length = array.length;
|
|
14
|
+
// Handle empty arrays early
|
|
15
|
+
if (length === 0) {
|
|
16
|
+
return { startIndex: 0, endIndex: -1, shouldSort: false };
|
|
17
|
+
}
|
|
18
|
+
const validatedStartIndex = Math.max(0, Math.min(startIndex, length - 1));
|
|
19
|
+
const validatedEndIndex = Math.max(validatedStartIndex, Math.min(endIndex, length - 1));
|
|
20
|
+
return {
|
|
21
|
+
startIndex: validatedStartIndex,
|
|
22
|
+
endIndex: validatedEndIndex,
|
|
23
|
+
shouldSort: validatedEndIndex >= validatedStartIndex,
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=rangeValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rangeValidator.js","sourceRoot":"","sources":["../../../src/Array/sortingHelpers/rangeValidator.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,KAAU,EACV,UAAkB,EAClB,QAAgB,EACI,EAAE;IACtB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,4BAA4B;IAC5B,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;QACjB,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAC5D,CAAC;IAED,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1E,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAChC,mBAAmB,EACnB,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC,CAC/B,CAAC;IAEF,OAAO;QACL,UAAU,EAAE,mBAAmB;QAC/B,QAAQ,EAAE,iBAAiB;QAC3B,UAAU,EAAE,iBAAiB,IAAI,mBAAmB;KACrD,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Curries a function.
|
|
3
|
+
*
|
|
4
|
+
* @param func - The function to curry.
|
|
5
|
+
* @returns The curried function.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* // Example with a function that adds three numbers
|
|
9
|
+
* const add = (a: number, b: number, c: number) => a + b + c;
|
|
10
|
+
* const curriedAdd = curry(add);
|
|
11
|
+
*
|
|
12
|
+
* console.log(curriedAdd(1)(2)(3)); // Output: 6
|
|
13
|
+
* console.log(curriedAdd(1, 2)(3)); // Output: 6
|
|
14
|
+
* console.log(curriedAdd(1, 2, 3)); // Output: 6
|
|
15
|
+
*/
|
|
16
|
+
export declare function curry<Result>(function_: () => Result): () => Result;
|
|
17
|
+
export declare function curry<Argument1, Result>(function_: (argument1: Argument1) => Result): (argument1: Argument1) => Result;
|
|
18
|
+
export declare function curry<Argument1, Argument2, Result>(function_: (argument1: Argument1, argument2: Argument2) => Result): {
|
|
19
|
+
(argument1: Argument1): (argument2: Argument2) => Result;
|
|
20
|
+
(argument1: Argument1, argument2: Argument2): Result;
|
|
21
|
+
};
|
|
22
|
+
export declare function curry<Argument1, Argument2, Argument3, Result>(function_: (argument1: Argument1, argument2: Argument2, argument3: Argument3) => Result): {
|
|
23
|
+
(argument1: Argument1): {
|
|
24
|
+
(argument2: Argument2): (argument3: Argument3) => Result;
|
|
25
|
+
(argument2: Argument2, argument3: Argument3): Result;
|
|
26
|
+
};
|
|
27
|
+
(argument1: Argument1, argument2: Argument2): (argument3: Argument3) => Result;
|
|
28
|
+
(argument1: Argument1, argument2: Argument2, argument3: Argument3): Result;
|
|
29
|
+
};
|
|
30
|
+
export declare function curry<Argument1, Argument2, Argument3, Argument4, Result>(function_: (argument1: Argument1, argument2: Argument2, argument3: Argument3, argument4: Argument4) => Result): {
|
|
31
|
+
(argument1: Argument1): {
|
|
32
|
+
(argument2: Argument2): {
|
|
33
|
+
(argument3: Argument3): (argument4: Argument4) => Result;
|
|
34
|
+
(argument3: Argument3, argument4: Argument4): Result;
|
|
35
|
+
};
|
|
36
|
+
(argument2: Argument2, argument3: Argument3): (argument4: Argument4) => Result;
|
|
37
|
+
(argument2: Argument2, argument3: Argument3, argument4: Argument4): Result;
|
|
38
|
+
};
|
|
39
|
+
(argument1: Argument1, argument2: Argument2): {
|
|
40
|
+
(argument3: Argument3): (argument4: Argument4) => Result;
|
|
41
|
+
(argument3: Argument3, argument4: Argument4): Result;
|
|
42
|
+
};
|
|
43
|
+
(argument1: Argument1, argument2: Argument2, argument3: Argument3): (argument4: Argument4) => Result;
|
|
44
|
+
(argument1: Argument1, argument2: Argument2, argument3: Argument3, argument4: Argument4): Result;
|
|
45
|
+
};
|
|
46
|
+
export declare function curry<Argument1, Argument2, Argument3, Argument4, Argument5, Result>(function_: (argument1: Argument1, argument2: Argument2, argument3: Argument3, argument4: Argument4, argument5: Argument5) => Result): {
|
|
47
|
+
(argument1: Argument1): {
|
|
48
|
+
(argument2: Argument2): {
|
|
49
|
+
(argument3: Argument3): {
|
|
50
|
+
(argument4: Argument4): (argument5: Argument5) => Result;
|
|
51
|
+
(argument4: Argument4, argument5: Argument5): Result;
|
|
52
|
+
};
|
|
53
|
+
(argument3: Argument3, argument4: Argument4): (argument5: Argument5) => Result;
|
|
54
|
+
(argument3: Argument3, argument4: Argument4, argument5: Argument5): Result;
|
|
55
|
+
};
|
|
56
|
+
(argument2: Argument2, argument3: Argument3): {
|
|
57
|
+
(argument4: Argument4): (argument5: Argument5) => Result;
|
|
58
|
+
(argument4: Argument4, argument5: Argument5): Result;
|
|
59
|
+
};
|
|
60
|
+
(argument2: Argument2, argument3: Argument3, argument4: Argument4): (argument5: Argument5) => Result;
|
|
61
|
+
(argument2: Argument2, argument3: Argument3, argument4: Argument4, argument5: Argument5): Result;
|
|
62
|
+
};
|
|
63
|
+
(argument1: Argument1, argument2: Argument2): {
|
|
64
|
+
(argument3: Argument3): {
|
|
65
|
+
(argument4: Argument4): (argument5: Argument5) => Result;
|
|
66
|
+
(argument4: Argument4, argument5: Argument5): Result;
|
|
67
|
+
};
|
|
68
|
+
(argument3: Argument3, argument4: Argument4): (argument5: Argument5) => Result;
|
|
69
|
+
(argument3: Argument3, argument4: Argument4, argument5: Argument5): Result;
|
|
70
|
+
};
|
|
71
|
+
(argument1: Argument1, argument2: Argument2, argument3: Argument3): {
|
|
72
|
+
(argument4: Argument4): (argument5: Argument5) => Result;
|
|
73
|
+
(argument4: Argument4, argument5: Argument5): Result;
|
|
74
|
+
};
|
|
75
|
+
(argument1: Argument1, argument2: Argument2, argument3: Argument3, argument4: Argument4): (argument5: Argument5) => Result;
|
|
76
|
+
(argument1: Argument1, argument2: Argument2, argument3: Argument3, argument4: Argument4, argument5: Argument5): Result;
|
|
77
|
+
};
|
|
78
|
+
export declare function curry<Argument1, Argument2, Argument3, Argument4, Argument5, Argument6, Result>(function_: (argument1: Argument1, argument2: Argument2, argument3: Argument3, argument4: Argument4, argument5: Argument5, argument6: Argument6) => Result): {
|
|
79
|
+
(argument1: Argument1): {
|
|
80
|
+
(argument2: Argument2): {
|
|
81
|
+
(argument3: Argument3): {
|
|
82
|
+
(argument4: Argument4): {
|
|
83
|
+
(argument5: Argument5): (argument6: Argument6) => Result;
|
|
84
|
+
(argument5: Argument5, argument6: Argument6): Result;
|
|
85
|
+
};
|
|
86
|
+
(argument4: Argument4, argument5: Argument5): (argument6: Argument6) => Result;
|
|
87
|
+
(argument4: Argument4, argument5: Argument5, argument6: Argument6): Result;
|
|
88
|
+
};
|
|
89
|
+
(argument3: Argument3, argument4: Argument4): {
|
|
90
|
+
(argument5: Argument5): (argument6: Argument6) => Result;
|
|
91
|
+
(argument5: Argument5, argument6: Argument6): Result;
|
|
92
|
+
};
|
|
93
|
+
(argument3: Argument3, argument4: Argument4, argument5: Argument5): (argument6: Argument6) => Result;
|
|
94
|
+
(argument3: Argument3, argument4: Argument4, argument5: Argument5, argument6: Argument6): Result;
|
|
95
|
+
};
|
|
96
|
+
(argument2: Argument2, argument3: Argument3): {
|
|
97
|
+
(argument4: Argument4): {
|
|
98
|
+
(argument5: Argument5): (argument6: Argument6) => Result;
|
|
99
|
+
(argument5: Argument5, argument6: Argument6): Result;
|
|
100
|
+
};
|
|
101
|
+
(argument4: Argument4, argument5: Argument5): (argument6: Argument6) => Result;
|
|
102
|
+
(argument4: Argument4, argument5: Argument5, argument6: Argument6): Result;
|
|
103
|
+
};
|
|
104
|
+
(argument2: Argument2, argument3: Argument3, argument4: Argument4): {
|
|
105
|
+
(argument5: Argument5): (argument6: Argument6) => Result;
|
|
106
|
+
(argument5: Argument5, argument6: Argument6): Result;
|
|
107
|
+
};
|
|
108
|
+
(argument2: Argument2, argument3: Argument3, argument4: Argument4, argument5: Argument5): (argument6: Argument6) => Result;
|
|
109
|
+
(argument2: Argument2, argument3: Argument3, argument4: Argument4, argument5: Argument5, argument6: Argument6): Result;
|
|
110
|
+
};
|
|
111
|
+
(argument1: Argument1, argument2: Argument2): {
|
|
112
|
+
(argument3: Argument3): {
|
|
113
|
+
(argument4: Argument4): {
|
|
114
|
+
(argument5: Argument5): (argument6: Argument6) => Result;
|
|
115
|
+
(argument5: Argument5, argument6: Argument6): Result;
|
|
116
|
+
};
|
|
117
|
+
(argument4: Argument4, argument5: Argument5): (argument6: Argument6) => Result;
|
|
118
|
+
(argument4: Argument4, argument5: Argument5, argument6: Argument6): Result;
|
|
119
|
+
};
|
|
120
|
+
(argument3: Argument3, argument4: Argument4): {
|
|
121
|
+
(argument5: Argument5): (argument6: Argument6) => Result;
|
|
122
|
+
(argument5: Argument5, argument6: Argument6): Result;
|
|
123
|
+
};
|
|
124
|
+
(argument3: Argument3, argument4: Argument4, argument5: Argument5): (argument6: Argument6) => Result;
|
|
125
|
+
(argument3: Argument3, argument4: Argument4, argument5: Argument5, argument6: Argument6): Result;
|
|
126
|
+
};
|
|
127
|
+
(argument1: Argument1, argument2: Argument2, argument3: Argument3): {
|
|
128
|
+
(argument4: Argument4): {
|
|
129
|
+
(argument5: Argument5): (argument6: Argument6) => Result;
|
|
130
|
+
(argument5: Argument5, argument6: Argument6): Result;
|
|
131
|
+
};
|
|
132
|
+
(argument4: Argument4, argument5: Argument5): (argument6: Argument6) => Result;
|
|
133
|
+
(argument4: Argument4, argument5: Argument5, argument6: Argument6): Result;
|
|
134
|
+
};
|
|
135
|
+
(argument1: Argument1, argument2: Argument2, argument3: Argument3, argument4: Argument4): {
|
|
136
|
+
(argument5: Argument5): (argument6: Argument6) => Result;
|
|
137
|
+
(argument5: Argument5, argument6: Argument6): Result;
|
|
138
|
+
};
|
|
139
|
+
(argument1: Argument1, argument2: Argument2, argument3: Argument3, argument4: Argument4, argument5: Argument5): (argument6: Argument6) => Result;
|
|
140
|
+
(argument1: Argument1, argument2: Argument2, argument3: Argument3, argument4: Argument4, argument5: Argument5, argument6: Argument6): Result;
|
|
141
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export function curry(function_) {
|
|
2
|
+
return function curried(...arguments_) {
|
|
3
|
+
if (arguments_.length >= function_.length) {
|
|
4
|
+
return function_.apply(this, arguments_);
|
|
5
|
+
}
|
|
6
|
+
return function (...moreArguments) {
|
|
7
|
+
return Reflect.apply(curried, this, [...arguments_, ...moreArguments]);
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=curry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"curry.js","sourceRoot":"","sources":["../../src/Function/curry.ts"],"names":[],"mappings":"AAiXA,MAAM,UAAU,KAAK,CAAC,SAAgD;IACpE,OAAO,SAAS,OAAO,CAAgB,GAAG,UAAqB;QAC7D,IAAI,UAAU,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YAC1C,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,UAAyB,GAAG,aAAwB;YACzD,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,UAAU,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC;QACzE,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./curry";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Function/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC"}
|
package/module/Tool/index.d.ts
CHANGED
package/module/Tool/index.js
CHANGED
package/module/Tool/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Tool/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Tool/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { type Result } from "../Error/safeExecute";
|
|
2
|
+
/**
|
|
3
|
+
* A class to handle pipeline processing
|
|
4
|
+
* Allows chaining transformations in a fluent interface
|
|
5
|
+
* @template T Type of the current value
|
|
6
|
+
*/
|
|
7
|
+
export declare class Pipe<T> {
|
|
8
|
+
private readonly value;
|
|
9
|
+
/**
|
|
10
|
+
* @param value Current value in the pipe
|
|
11
|
+
*/
|
|
12
|
+
constructor(value: T);
|
|
13
|
+
/**
|
|
14
|
+
* Applies a transformation function and returns a new Pipe instance
|
|
15
|
+
* @param fn Transformation function to apply
|
|
16
|
+
* @returns New Pipe instance with transformed value
|
|
17
|
+
*/
|
|
18
|
+
map<U>(function_: (input: T) => U): Pipe<U>;
|
|
19
|
+
/**
|
|
20
|
+
* Applies a transformation function only if the condition is met
|
|
21
|
+
* @param predicate Condition function
|
|
22
|
+
* @param fn Transformation function to apply if condition is met
|
|
23
|
+
* @returns New Pipe instance with conditionally transformed value
|
|
24
|
+
*/
|
|
25
|
+
when<U>(predicate: (input: T) => boolean, function_: (input: T) => U): Pipe<U | T>;
|
|
26
|
+
/**
|
|
27
|
+
* Executes a side effect without changing the value
|
|
28
|
+
* @param fn Function to execute as a side effect
|
|
29
|
+
* @returns Same Pipe instance
|
|
30
|
+
*/
|
|
31
|
+
tap(function_: (input: T) => void): Pipe<T>;
|
|
32
|
+
/**
|
|
33
|
+
* Strictly filters the value based on a predicate function
|
|
34
|
+
* Throws an error if the predicate returns false
|
|
35
|
+
* @param predicate Condition function that determines if value should be filtered
|
|
36
|
+
* @returns New Pipe instance with filtered value and narrowed type
|
|
37
|
+
* @throws Error if the predicate returns false
|
|
38
|
+
*/
|
|
39
|
+
filterStrict<U extends T>(predicate: (input: T) => input is U): Pipe<U>;
|
|
40
|
+
/**
|
|
41
|
+
* Filters the value based on a predicate function
|
|
42
|
+
* Returns a default value if the predicate returns false
|
|
43
|
+
* @param predicate Condition function that determines if value should be filtered
|
|
44
|
+
* @param defaultValue Default value to use if predicate returns false
|
|
45
|
+
* @returns New Pipe instance with filtered value or default value
|
|
46
|
+
*/
|
|
47
|
+
filterWithDefault<U extends T>(predicate: (input: T) => input is U, defaultValue: U): Pipe<U>;
|
|
48
|
+
/**
|
|
49
|
+
* Filters the value based on a predicate function
|
|
50
|
+
* Returns a Result type containing either the filtered value or an error
|
|
51
|
+
* @param predicate Condition function that determines if value should be filtered
|
|
52
|
+
* @returns New Pipe instance with Result containing filtered value or error
|
|
53
|
+
*/
|
|
54
|
+
filterResult<U extends T>(predicate: (input: T) => input is U): Pipe<Result<U, Error>>;
|
|
55
|
+
/**
|
|
56
|
+
* Terminates the pipeline and returns the final value
|
|
57
|
+
* @returns Final result of the pipeline processing
|
|
58
|
+
*/
|
|
59
|
+
end(): T;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Creates a new Pipe instance with an initial value
|
|
63
|
+
* @param initialValue Initial value for the pipeline
|
|
64
|
+
* @returns New Pipe instance
|
|
65
|
+
*/
|
|
66
|
+
export declare function pipe<T>(initialValue: T): Pipe<T>;
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { safeExecute } from "../Error/safeExecute";
|
|
2
|
+
/**
|
|
3
|
+
* A class to handle pipeline processing
|
|
4
|
+
* Allows chaining transformations in a fluent interface
|
|
5
|
+
* @template T Type of the current value
|
|
6
|
+
*/
|
|
7
|
+
export class Pipe {
|
|
8
|
+
value;
|
|
9
|
+
/**
|
|
10
|
+
* @param value Current value in the pipe
|
|
11
|
+
*/
|
|
12
|
+
constructor(value) {
|
|
13
|
+
this.value = value;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Applies a transformation function and returns a new Pipe instance
|
|
17
|
+
* @param fn Transformation function to apply
|
|
18
|
+
* @returns New Pipe instance with transformed value
|
|
19
|
+
*/
|
|
20
|
+
map(function_) {
|
|
21
|
+
return new Pipe(function_(this.value));
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Applies a transformation function only if the condition is met
|
|
25
|
+
* @param predicate Condition function
|
|
26
|
+
* @param fn Transformation function to apply if condition is met
|
|
27
|
+
* @returns New Pipe instance with conditionally transformed value
|
|
28
|
+
*/
|
|
29
|
+
when(predicate, function_) {
|
|
30
|
+
return predicate(this.value)
|
|
31
|
+
? new Pipe(function_(this.value))
|
|
32
|
+
: new Pipe(this.value);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Executes a side effect without changing the value
|
|
36
|
+
* @param fn Function to execute as a side effect
|
|
37
|
+
* @returns Same Pipe instance
|
|
38
|
+
*/
|
|
39
|
+
tap(function_) {
|
|
40
|
+
function_(this.value);
|
|
41
|
+
return this;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Strictly filters the value based on a predicate function
|
|
45
|
+
* Throws an error if the predicate returns false
|
|
46
|
+
* @param predicate Condition function that determines if value should be filtered
|
|
47
|
+
* @returns New Pipe instance with filtered value and narrowed type
|
|
48
|
+
* @throws Error if the predicate returns false
|
|
49
|
+
*/
|
|
50
|
+
filterStrict(predicate) {
|
|
51
|
+
if (predicate(this.value)) {
|
|
52
|
+
return new Pipe(this.value);
|
|
53
|
+
}
|
|
54
|
+
throw new Error("Value did not match filter predicate");
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Filters the value based on a predicate function
|
|
58
|
+
* Returns a default value if the predicate returns false
|
|
59
|
+
* @param predicate Condition function that determines if value should be filtered
|
|
60
|
+
* @param defaultValue Default value to use if predicate returns false
|
|
61
|
+
* @returns New Pipe instance with filtered value or default value
|
|
62
|
+
*/
|
|
63
|
+
filterWithDefault(predicate, defaultValue) {
|
|
64
|
+
return predicate(this.value)
|
|
65
|
+
? new Pipe(this.value)
|
|
66
|
+
: new Pipe(defaultValue);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Filters the value based on a predicate function
|
|
70
|
+
* Returns a Result type containing either the filtered value or an error
|
|
71
|
+
* @param predicate Condition function that determines if value should be filtered
|
|
72
|
+
* @returns New Pipe instance with Result containing filtered value or error
|
|
73
|
+
*/
|
|
74
|
+
filterResult(predicate) {
|
|
75
|
+
return new Pipe(safeExecute(() => {
|
|
76
|
+
if (predicate(this.value)) {
|
|
77
|
+
return this.value;
|
|
78
|
+
}
|
|
79
|
+
throw new Error("Value did not match filter predicate");
|
|
80
|
+
}));
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Terminates the pipeline and returns the final value
|
|
84
|
+
* @returns Final result of the pipeline processing
|
|
85
|
+
*/
|
|
86
|
+
end() {
|
|
87
|
+
return this.value;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Creates a new Pipe instance with an initial value
|
|
92
|
+
* @param initialValue Initial value for the pipeline
|
|
93
|
+
* @returns New Pipe instance
|
|
94
|
+
*/
|
|
95
|
+
export function pipe(initialValue) {
|
|
96
|
+
return new Pipe(initialValue);
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=pipe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipe.js","sourceRoot":"","sources":["../../src/Tool/pipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAe,MAAM,qBAAqB,CAAC;AAE/D;;;;GAIG;AACH,MAAM,OAAO,IAAI;IAIc;IAH7B;;OAEG;IACH,YAA6B,KAAQ;QAAR,UAAK,GAAL,KAAK,CAAG;IAAG,CAAC;IAEzC;;;;OAIG;IACH,GAAG,CAAI,SAA0B;QAC/B,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACzC,CAAC;IAED;;;;;OAKG;IACH,IAAI,CACF,SAAgC,EAChC,SAA0B;QAE1B,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1B,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAyB,CAAC,CAAC;IAC/C,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,SAA6B;QAC/B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,YAAY,CAAc,SAAmC;QAC3D,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;;OAMG;IACH,iBAAiB,CACf,SAAmC,EACnC,YAAe;QAEf,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1B,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YACtB,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;OAKG;IACH,YAAY,CACV,SAAmC;QAEnC,OAAO,IAAI,IAAI,CACb,WAAW,CAAW,GAAG,EAAE;YACzB,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC,KAAK,CAAC;YACpB,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,GAAG;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,IAAI,CAAI,YAAe;IACrC,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;AAChC,CAAC"}
|