umt 2.5.0 → 2.7.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 +36 -0
- package/module/Array/generateNumberArray.js +13 -7
- package/module/Array/generateNumberArray.js.map +1 -1
- package/module/Array/getArraysCommon.js +21 -3
- package/module/Array/getArraysCommon.js.map +1 -1
- package/module/Array/groupBy.js +1 -1
- package/module/Array/groupBy.js.map +1 -1
- package/module/Array/index.d.ts +2 -0
- package/module/Array/index.js +2 -0
- package/module/Array/index.js.map +1 -1
- package/module/Array/ultraNumberSort.js +2 -2
- package/module/Array/ultraNumberSort.js.map +1 -1
- package/module/Array/uniqBy.d.ts +7 -0
- package/module/Array/uniqBy.js +19 -0
- package/module/Array/uniqBy.js.map +1 -0
- package/module/Array/unique.d.ts +6 -0
- package/module/Array/unique.js +9 -0
- package/module/Array/unique.js.map +1 -0
- package/module/Color/rgbaToHsla.js +1 -1
- package/module/Color/rgbaToHsla.js.map +1 -1
- package/module/Crypto/decodeBase32.d.ts +7 -0
- package/module/Crypto/decodeBase32.js +27 -0
- package/module/Crypto/decodeBase32.js.map +1 -0
- package/module/Crypto/decodeBase32ToString.d.ts +7 -0
- package/module/Crypto/decodeBase32ToString.js +11 -0
- package/module/Crypto/decodeBase32ToString.js.map +1 -0
- package/module/Crypto/decodeBase58.d.ts +7 -0
- package/module/Crypto/decodeBase58.js +34 -0
- package/module/Crypto/decodeBase58.js.map +1 -0
- package/module/Crypto/decodeBase58ToString.d.ts +7 -0
- package/module/Crypto/decodeBase58ToString.js +11 -0
- package/module/Crypto/decodeBase58ToString.js.map +1 -0
- package/module/Crypto/encodeBase32.d.ts +7 -0
- package/module/Crypto/encodeBase32.js +28 -0
- package/module/Crypto/encodeBase32.js.map +1 -0
- package/module/Crypto/encodeBase58.d.ts +7 -0
- package/module/Crypto/encodeBase58.js +29 -0
- package/module/Crypto/encodeBase58.js.map +1 -0
- package/module/Crypto/index.d.ts +6 -0
- package/module/Crypto/index.js +7 -0
- package/module/Crypto/index.js.map +1 -0
- package/module/DataStructure/index.d.ts +1 -0
- package/module/DataStructure/index.js +2 -0
- package/module/DataStructure/index.js.map +1 -0
- package/module/DataStructure/priorityQueue.d.ts +241 -0
- package/module/DataStructure/priorityQueue.js +327 -0
- package/module/DataStructure/priorityQueue.js.map +1 -0
- package/module/Date/birthday.js +14 -6
- package/module/Date/birthday.js.map +1 -1
- package/module/Date/isLeapYear.js +3 -0
- package/module/Date/isLeapYear.js.map +1 -1
- package/module/Error/index.d.ts +1 -0
- package/module/Error/index.js +1 -0
- package/module/Error/index.js.map +1 -1
- package/module/Error/retry.d.ts +37 -0
- package/module/Error/retry.js +47 -0
- package/module/Error/retry.js.map +1 -0
- package/module/IP/getIpClass.js +1 -1
- package/module/IP/getIpClass.js.map +1 -1
- package/module/IP/getNetworkAddress.js +2 -2
- package/module/IP/getNetworkAddress.js.map +1 -1
- package/module/IP/ipToBinaryString.js +2 -2
- package/module/IP/ipToBinaryString.js.map +1 -1
- package/module/IP/subnetMaskToCidr.js +1 -1
- package/module/IP/subnetMaskToCidr.js.map +1 -1
- package/module/Math/calculator/core.js +21 -13
- package/module/Math/calculator/core.js.map +1 -1
- package/module/Math/calculator/literalExpression.js +19 -7
- package/module/Math/calculator/literalExpression.js.map +1 -1
- package/module/Math/correlationCoefficient.d.ts +11 -0
- package/module/Math/correlationCoefficient.js +40 -0
- package/module/Math/correlationCoefficient.js.map +1 -0
- package/module/Math/division.js +3 -3
- package/module/Math/division.js.map +1 -1
- package/module/Math/gcd.js +26 -4
- package/module/Math/gcd.js.map +1 -1
- 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/mode.d.ts +10 -0
- package/module/Math/mode.js +31 -0
- package/module/Math/mode.js.map +1 -0
- package/module/Math/percentile.d.ts +11 -0
- package/module/Math/percentile.js +31 -0
- package/module/Math/percentile.js.map +1 -0
- package/module/Math/standardDeviation.js +4 -2
- package/module/Math/standardDeviation.js.map +1 -1
- package/module/Object/has.js +1 -2
- package/module/Object/has.js.map +1 -1
- package/module/Object/index.d.ts +4 -0
- package/module/Object/index.js +4 -0
- package/module/Object/index.js.map +1 -1
- package/module/Object/isEmpty.d.ts +6 -0
- package/module/Object/isEmpty.js +20 -0
- package/module/Object/isEmpty.js.map +1 -0
- package/module/Object/merge.d.ts +8 -0
- package/module/Object/merge.js +10 -0
- package/module/Object/merge.js.map +1 -0
- package/module/Object/mergeDeep.d.ts +8 -0
- package/module/Object/mergeDeep.js +37 -0
- package/module/Object/mergeDeep.js.map +1 -0
- package/module/Object/omit.d.ts +7 -0
- package/module/Object/omit.js +14 -0
- package/module/Object/omit.js.map +1 -0
- package/module/Object/pickDeep.d.ts +2 -2
- package/module/Object/pickDeep.js +4 -4
- package/module/Object/pickDeep.js.map +1 -1
- package/module/Simple/Date/dayOfWeekSimple.js +3 -3
- package/module/Simple/Date/dayOfWeekSimple.js.map +1 -1
- package/module/String/camelCase.d.ts +6 -0
- package/module/String/camelCase.js +12 -0
- package/module/String/camelCase.js.map +1 -0
- package/module/String/escapeHtml.d.ts +6 -0
- package/module/String/escapeHtml.js +19 -0
- package/module/String/escapeHtml.js.map +1 -0
- package/module/String/formatString/applyFormatter.d.ts +25 -0
- package/module/String/formatString/applyFormatter.js +71 -0
- package/module/String/formatString/applyFormatter.js.map +1 -0
- package/module/String/formatString/defaultFormatters.d.ts +24 -0
- package/module/String/formatString/defaultFormatters.js +59 -0
- package/module/String/formatString/defaultFormatters.js.map +1 -0
- package/module/String/formatString/detectMode.d.ts +26 -0
- package/module/String/formatString/detectMode.js +61 -0
- package/module/String/formatString/detectMode.js.map +1 -0
- package/module/String/formatString/getValue.d.ts +27 -0
- package/module/String/formatString/getValue.js +56 -0
- package/module/String/formatString/getValue.js.map +1 -0
- package/module/String/formatString/index.d.ts +91 -0
- package/module/String/formatString/index.js +38 -0
- package/module/String/formatString/index.js.map +1 -0
- package/module/String/fuzzySearch.d.ts +14 -0
- package/module/String/fuzzySearch.js +27 -0
- package/module/String/fuzzySearch.js.map +1 -0
- package/module/String/index.d.ts +9 -0
- package/module/String/index.js +9 -0
- package/module/String/index.js.map +1 -1
- package/module/String/kebabCase.d.ts +6 -0
- package/module/String/kebabCase.js +22 -0
- package/module/String/kebabCase.js.map +1 -0
- package/module/String/levenshteinDistance.d.ts +8 -0
- package/module/String/levenshteinDistance.js +38 -0
- package/module/String/levenshteinDistance.js.map +1 -0
- package/module/String/slugify.d.ts +10 -0
- package/module/String/slugify.js +21 -0
- package/module/String/slugify.js.map +1 -0
- package/module/String/stringSimilarity.d.ts +8 -0
- package/module/String/stringSimilarity.js +23 -0
- package/module/String/stringSimilarity.js.map +1 -0
- package/module/String/truncate.d.ts +12 -0
- package/module/String/truncate.js +21 -0
- package/module/String/truncate.js.map +1 -0
- package/module/String/unescapeHtml.d.ts +17 -0
- package/module/String/unescapeHtml.js +45 -0
- package/module/String/unescapeHtml.js.map +1 -0
- package/module/Validate/core/index.js +0 -1
- package/module/Validate/core/index.js.map +1 -1
- 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/isDeepEqual.d.ts +28 -0
- package/module/Validate/isDeepEqual.js +148 -0
- package/module/Validate/isDeepEqual.js.map +1 -0
- package/module/Validate/isDouble.js +1 -1
- package/module/Validate/isDouble.js.map +1 -1
- package/module/Validate/isNode.js +1 -0
- package/module/Validate/isNode.js.map +1 -1
- package/module/Validate/isNumber.js +1 -1
- package/module/Validate/isNumber.js.map +1 -1
- package/module/Validate/isValueNaN.js +1 -1
- package/module/Validate/isValueNaN.js.map +1 -1
- package/module/Validate/number/even.js +7 -1
- package/module/Validate/number/even.js.map +1 -1
- package/module/Validate/number/odd.js +7 -1
- package/module/Validate/number/odd.js.map +1 -1
- package/module/Validate/string/email.js +20 -2
- package/module/Validate/string/email.js.map +1 -1
- package/module/es5/Array/generateNumberArray.js +15 -9
- package/module/es5/Array/getArraysCommon.js +39 -4
- package/module/es5/Array/groupBy.js +1 -1
- package/module/es5/Array/index.d.ts +2 -0
- package/module/es5/Array/index.js +22 -0
- package/module/es5/Array/ultraNumberSort.js +2 -2
- package/module/es5/Array/uniqBy.d.ts +7 -0
- package/module/es5/Array/uniqBy.js +36 -0
- package/module/es5/Array/unique.d.ts +6 -0
- package/module/es5/Array/unique.js +20 -0
- package/module/es5/Color/rgbaToHsla.js +1 -1
- package/module/es5/Crypto/decodeBase32.d.ts +7 -0
- package/module/es5/Crypto/decodeBase32.js +44 -0
- package/module/es5/Crypto/decodeBase32ToString.d.ts +7 -0
- package/module/es5/Crypto/decodeBase32ToString.js +16 -0
- package/module/es5/Crypto/decodeBase58.d.ts +7 -0
- package/module/es5/Crypto/decodeBase58.js +63 -0
- package/module/es5/Crypto/decodeBase58ToString.d.ts +7 -0
- package/module/es5/Crypto/decodeBase58ToString.js +16 -0
- package/module/es5/Crypto/encodeBase32.d.ts +7 -0
- package/module/es5/Crypto/encodeBase32.js +45 -0
- package/module/es5/Crypto/encodeBase58.d.ts +7 -0
- package/module/es5/Crypto/encodeBase58.js +55 -0
- package/module/es5/Crypto/index.d.ts +6 -0
- package/module/es5/Crypto/index.js +71 -0
- package/module/es5/DataStructure/index.d.ts +1 -0
- package/module/es5/DataStructure/index.js +16 -0
- package/module/es5/DataStructure/priorityQueue.d.ts +241 -0
- package/module/es5/DataStructure/priorityQueue.js +405 -0
- package/module/es5/Date/birthday.js +17 -3
- package/module/es5/Date/isLeapYear.js +3 -0
- package/module/es5/Error/index.d.ts +1 -0
- package/module/es5/Error/index.js +11 -0
- package/module/es5/Error/retry.d.ts +37 -0
- package/module/es5/Error/retry.js +88 -0
- package/module/es5/IP/getIpClass.js +1 -1
- package/module/es5/IP/getNetworkAddress.js +2 -2
- package/module/es5/IP/ipToBinaryString.js +2 -2
- package/module/es5/IP/subnetMaskToCidr.js +1 -1
- package/module/es5/Math/calculator/core.js +17 -9
- package/module/es5/Math/calculator/literalExpression.js +19 -6
- package/module/es5/Math/correlationCoefficient.d.ts +11 -0
- package/module/es5/Math/correlationCoefficient.js +63 -0
- package/module/es5/Math/division.js +3 -3
- package/module/es5/Math/gcd.js +43 -5
- package/module/es5/Math/index.d.ts +3 -0
- package/module/es5/Math/index.js +33 -0
- package/module/es5/Math/mode.d.ts +10 -0
- package/module/es5/Math/mode.js +67 -0
- package/module/es5/Math/percentile.d.ts +11 -0
- package/module/es5/Math/percentile.js +42 -0
- package/module/es5/Math/standardDeviation.js +4 -2
- package/module/es5/Object/has.js +1 -1
- package/module/es5/Object/index.d.ts +4 -0
- package/module/es5/Object/index.js +44 -0
- package/module/es5/Object/isEmpty.d.ts +6 -0
- package/module/es5/Object/isEmpty.js +26 -0
- package/module/es5/Object/merge.d.ts +8 -0
- package/module/es5/Object/merge.js +18 -0
- package/module/es5/Object/mergeDeep.d.ts +8 -0
- package/module/es5/Object/mergeDeep.js +46 -0
- package/module/es5/Object/omit.d.ts +7 -0
- package/module/es5/Object/omit.js +29 -0
- package/module/es5/Object/pickDeep.d.ts +2 -2
- package/module/es5/Object/pickDeep.js +4 -4
- package/module/es5/Simple/Date/dayOfWeekSimple.js +3 -3
- package/module/es5/String/camelCase.d.ts +6 -0
- package/module/es5/String/camelCase.js +18 -0
- package/module/es5/String/escapeHtml.d.ts +6 -0
- package/module/es5/String/escapeHtml.js +27 -0
- package/module/es5/String/formatString/applyFormatter.d.ts +25 -0
- package/module/es5/String/formatString/applyFormatter.js +100 -0
- package/module/es5/String/formatString/defaultFormatters.d.ts +24 -0
- package/module/es5/String/formatString/defaultFormatters.js +79 -0
- package/module/es5/String/formatString/detectMode.d.ts +26 -0
- package/module/es5/String/formatString/detectMode.js +60 -0
- package/module/es5/String/formatString/getValue.d.ts +27 -0
- package/module/es5/String/formatString/getValue.js +85 -0
- package/module/es5/String/formatString/index.d.ts +91 -0
- package/module/es5/String/formatString/index.js +152 -0
- package/module/es5/String/fuzzySearch.d.ts +14 -0
- package/module/es5/String/fuzzySearch.js +50 -0
- package/module/es5/String/index.d.ts +9 -0
- package/module/es5/String/index.js +99 -0
- package/module/es5/String/kebabCase.d.ts +6 -0
- package/module/es5/String/kebabCase.js +26 -0
- package/module/es5/String/levenshteinDistance.d.ts +8 -0
- package/module/es5/String/levenshteinDistance.js +58 -0
- package/module/es5/String/slugify.d.ts +10 -0
- package/module/es5/String/slugify.js +18 -0
- package/module/es5/String/stringSimilarity.d.ts +8 -0
- package/module/es5/String/stringSimilarity.js +30 -0
- package/module/es5/String/truncate.d.ts +12 -0
- package/module/es5/String/truncate.js +27 -0
- package/module/es5/String/unescapeHtml.d.ts +17 -0
- package/module/es5/String/unescapeHtml.js +51 -0
- package/module/es5/Validate/core/index.js +0 -1
- package/module/es5/Validate/index.d.ts +1 -0
- package/module/es5/Validate/index.js +11 -0
- package/module/es5/Validate/isDeepEqual.d.ts +28 -0
- package/module/es5/Validate/isDeepEqual.js +232 -0
- package/module/es5/Validate/isDouble.js +1 -1
- package/module/es5/Validate/isNode.js +1 -0
- package/module/es5/Validate/isNumber.js +1 -1
- package/module/es5/Validate/isValueNaN.js +1 -1
- package/module/es5/Validate/number/even.js +4 -0
- package/module/es5/Validate/number/odd.js +4 -0
- package/module/es5/Validate/string/email.js +26 -1
- package/module/es5/index.d.ts +2 -0
- package/module/es5/index.js +22 -0
- package/module/es5/tsconfig.tsbuildinfo +1 -1
- package/module/es5/types/index.d.ts +1 -0
- package/module/es5/types/index.js +11 -0
- package/module/es5/types/logic/deepPartial.d.ts +37 -0
- package/module/es5/types/logic/deepPartial.js +5 -0
- package/module/es5/types/logic/deepRequired.d.ts +37 -0
- package/module/es5/types/logic/deepRequired.js +5 -0
- package/module/es5/types/logic/index.d.ts +3 -0
- package/module/es5/types/logic/index.js +33 -0
- package/module/es5/types/logic/unionToIntersection.d.ts +12 -0
- package/module/es5/types/logic/unionToIntersection.js +5 -0
- package/module/es5/types/object/index.d.ts +1 -0
- package/module/es5/types/object/index.js +11 -0
- package/module/es5/types/object/pickDeep.d.ts +13 -1
- package/module/es5/types/object/shallowObjectValue.d.ts +9 -0
- package/module/es5/types/object/shallowObjectValue.js +5 -0
- package/module/es5/types/string/formatString/formatData.d.ts +17 -0
- package/module/es5/types/string/formatString/formatData.js +5 -0
- package/module/es5/types/string/formatString/formatOptions.d.ts +21 -0
- package/module/es5/types/string/formatString/formatOptions.js +5 -0
- package/module/es5/types/string/formatString/formatString.d.ts +4 -0
- package/module/es5/types/string/formatString/formatString.js +49 -0
- package/module/es5/types/string/formatString/formatValue.d.ts +15 -0
- package/module/es5/types/string/formatString/formatValue.js +5 -0
- package/module/es5/types/string/formatString/formatter.d.ts +13 -0
- package/module/es5/types/string/formatString/formatter.js +5 -0
- package/module/es5/types/string/formatString/index.d.ts +5 -0
- package/module/es5/types/string/formatString/index.js +60 -0
- package/module/es5/types/string/index.d.ts +1 -0
- package/module/es5/types/string/index.js +16 -0
- package/module/index.d.ts +2 -0
- package/module/index.js +2 -0
- package/module/index.js.map +1 -1
- package/module/types/index.d.ts +1 -0
- package/module/types/index.js +1 -0
- package/module/types/index.js.map +1 -1
- package/module/types/logic/deepPartial.d.ts +37 -0
- package/module/types/logic/deepPartial.js +36 -0
- package/module/types/logic/deepPartial.js.map +1 -0
- package/module/types/logic/deepRequired.d.ts +37 -0
- package/module/types/logic/deepRequired.js +2 -0
- package/module/types/logic/deepRequired.js.map +1 -0
- package/module/types/logic/index.d.ts +3 -0
- package/module/types/logic/index.js +3 -0
- package/module/types/logic/index.js.map +1 -1
- package/module/types/logic/unionToIntersection.d.ts +12 -0
- package/module/types/logic/unionToIntersection.js +2 -0
- package/module/types/logic/unionToIntersection.js.map +1 -0
- package/module/types/object/index.d.ts +1 -0
- package/module/types/object/index.js +1 -0
- package/module/types/object/index.js.map +1 -1
- package/module/types/object/pickDeep.d.ts +13 -1
- package/module/types/object/shallowObjectValue.d.ts +9 -0
- package/module/types/object/shallowObjectValue.js +2 -0
- package/module/types/object/shallowObjectValue.js.map +1 -0
- package/module/types/string/formatString/formatData.d.ts +17 -0
- package/module/types/string/formatString/formatData.js +2 -0
- package/module/types/string/formatString/formatData.js.map +1 -0
- package/module/types/string/formatString/formatOptions.d.ts +21 -0
- package/module/types/string/formatString/formatOptions.js +2 -0
- package/module/types/string/formatString/formatOptions.js.map +1 -0
- package/module/types/string/formatString/formatString.d.ts +4 -0
- package/module/types/string/formatString/formatString.js +5 -0
- package/module/types/string/formatString/formatString.js.map +1 -0
- package/module/types/string/formatString/formatValue.d.ts +15 -0
- package/module/types/string/formatString/formatValue.js +2 -0
- package/module/types/string/formatString/formatValue.js.map +1 -0
- package/module/types/string/formatString/formatter.d.ts +13 -0
- package/module/types/string/formatString/formatter.js +2 -0
- package/module/types/string/formatString/formatter.js.map +1 -0
- package/module/types/string/formatString/index.d.ts +5 -0
- package/module/types/string/formatString/index.js +6 -0
- package/module/types/string/formatString/index.js.map +1 -0
- package/module/types/string/index.d.ts +1 -0
- package/module/types/string/index.js +2 -0
- package/module/types/string/index.js.map +1 -0
- package/package.json +40 -41
- package/module/String/formatString.d.ts +0 -13
- package/module/String/formatString.js +0 -18
- package/module/String/formatString.js.map +0 -1
- package/module/es5/String/formatString.d.ts +0 -13
- package/module/es5/String/formatString.js +0 -26
|
@@ -9,6 +9,9 @@
|
|
|
9
9
|
* isLeapYear(2023); // Returns false (not divisible by 4)
|
|
10
10
|
*/
|
|
11
11
|
export const isLeapYear = (year) => {
|
|
12
|
+
if (!Number.isInteger(year)) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
12
15
|
return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
|
|
13
16
|
};
|
|
14
17
|
//# sourceMappingURL=isLeapYear.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isLeapYear.js","sourceRoot":"","sources":["../../src/Date/isLeapYear.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAW,EAAE;IAClD,OAAO,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC;AAClE,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"isLeapYear.js","sourceRoot":"","sources":["../../src/Date/isLeapYear.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAW,EAAE;IAClD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC;AAClE,CAAC,CAAC"}
|
package/module/Error/index.d.ts
CHANGED
package/module/Error/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Error/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Error/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export interface RetryOptions {
|
|
2
|
+
retries?: number;
|
|
3
|
+
delay?: number;
|
|
4
|
+
shouldRetry?: (error: unknown) => boolean;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Retries a given async function with configurable retry logic
|
|
8
|
+
*
|
|
9
|
+
* @template T - The return type of the function
|
|
10
|
+
* @param function_ - The async function to retry
|
|
11
|
+
* @param options - Configuration options for retry behavior
|
|
12
|
+
* @param options.retries - Maximum number of retry attempts (default: 3)
|
|
13
|
+
* @param options.delay - Delay between retries in milliseconds (default: 1000)
|
|
14
|
+
* @param options.shouldRetry - Function to determine if an error should trigger a retry (default: always retry)
|
|
15
|
+
* @returns Promise that resolves with the function result or rejects with the final error
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* // Basic usage with default options
|
|
20
|
+
* const result = await retry(async () => {
|
|
21
|
+
* const response = await fetch('/api/data');
|
|
22
|
+
* if (!response.ok) throw new Error('Failed to fetch');
|
|
23
|
+
* return response.json();
|
|
24
|
+
* });
|
|
25
|
+
*
|
|
26
|
+
* // Custom retry configuration
|
|
27
|
+
* const result = await retry(
|
|
28
|
+
* () => riskyOperation(),
|
|
29
|
+
* {
|
|
30
|
+
* retries: 5,
|
|
31
|
+
* delay: 2000,
|
|
32
|
+
* shouldRetry: (error) => error instanceof NetworkError
|
|
33
|
+
* }
|
|
34
|
+
* );
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export declare const retry: <T>(function_: () => Promise<T>, options?: RetryOptions) => Promise<T>;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Retries a given async function with configurable retry logic
|
|
3
|
+
*
|
|
4
|
+
* @template T - The return type of the function
|
|
5
|
+
* @param function_ - The async function to retry
|
|
6
|
+
* @param options - Configuration options for retry behavior
|
|
7
|
+
* @param options.retries - Maximum number of retry attempts (default: 3)
|
|
8
|
+
* @param options.delay - Delay between retries in milliseconds (default: 1000)
|
|
9
|
+
* @param options.shouldRetry - Function to determine if an error should trigger a retry (default: always retry)
|
|
10
|
+
* @returns Promise that resolves with the function result or rejects with the final error
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* // Basic usage with default options
|
|
15
|
+
* const result = await retry(async () => {
|
|
16
|
+
* const response = await fetch('/api/data');
|
|
17
|
+
* if (!response.ok) throw new Error('Failed to fetch');
|
|
18
|
+
* return response.json();
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* // Custom retry configuration
|
|
22
|
+
* const result = await retry(
|
|
23
|
+
* () => riskyOperation(),
|
|
24
|
+
* {
|
|
25
|
+
* retries: 5,
|
|
26
|
+
* delay: 2000,
|
|
27
|
+
* shouldRetry: (error) => error instanceof NetworkError
|
|
28
|
+
* }
|
|
29
|
+
* );
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export const retry = (function_, options = {}) => {
|
|
33
|
+
const { retries = 3, delay = 1000, shouldRetry = () => true } = options;
|
|
34
|
+
const attempt = async (remainingAttempts) => {
|
|
35
|
+
try {
|
|
36
|
+
return await function_();
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
if (remainingAttempts <= 0 || !shouldRetry(error)) {
|
|
40
|
+
throw error;
|
|
41
|
+
}
|
|
42
|
+
return await new Promise((resolve) => setTimeout(() => resolve(attempt(remainingAttempts - 1)), delay));
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
return attempt(retries);
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=retry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/Error/retry.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CACnB,SAA2B,EAC3B,UAAwB,EAAE,EACd,EAAE;IACd,MAAM,EAAE,OAAO,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE,WAAW,GAAG,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC;IACxE,MAAM,OAAO,GAAG,KAAK,EAAE,iBAAyB,EAAc,EAAE;QAC9D,IAAI,CAAC;YACH,OAAO,MAAM,SAAS,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,iBAAiB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClD,MAAM,KAAK,CAAC;YACd,CAAC;YACD,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CACnC,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CACjE,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;IACF,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC;AAC1B,CAAC,CAAC"}
|
package/module/IP/getIpClass.js
CHANGED
|
@@ -12,7 +12,7 @@ export const getIpClass = (ip) => {
|
|
|
12
12
|
if (parts.length !== 4) {
|
|
13
13
|
return "";
|
|
14
14
|
}
|
|
15
|
-
const firstOctet = Number.parseInt(parts[0]);
|
|
15
|
+
const firstOctet = Number.parseInt(parts[0], 10);
|
|
16
16
|
if (Number.isNaN(firstOctet) || firstOctet < 0 || firstOctet > 255) {
|
|
17
17
|
return "";
|
|
18
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getIpClass.js","sourceRoot":"","sources":["../../src/IP/getIpClass.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EAAU,EAAU,EAAE;IAC/C,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,qBAAqB;IACrB,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"getIpClass.js","sourceRoot":"","sources":["../../src/IP/getIpClass.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EAAU,EAAU,EAAE;IAC/C,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,qBAAqB;IACrB,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACjD,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,GAAG,EAAE,CAAC;QACnE,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,yBAAyB;IACzB,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,WAAW;QACb,KAAK,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC;YACtB,OAAO,GAAG,CAAC;QACb,CAAC,CAAC,QAAQ;QACV,KAAK,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC;YACtB,OAAO,GAAG,CAAC;QACb,CAAC,CAAC,UAAU;QACZ,KAAK,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC;YACtB,OAAO,GAAG,CAAC;QACb,CAAC,CAAC,UAAU;QACZ,KAAK,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC;YACtB,OAAO,GAAG,CAAC;QACb,CAAC,CAAC,UAAU;QACZ,OAAO,CAAC,CAAC,CAAC;YACR,OAAO,GAAG,CAAC;QACb,CAAC,CAAC,UAAU;IACd,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -19,7 +19,7 @@ export const getNetworkAddress = (ip, subnetMask) => {
|
|
|
19
19
|
const ipParts = ip.split(".");
|
|
20
20
|
if (ipParts.length !== 4 ||
|
|
21
21
|
!ipParts.every((part) => {
|
|
22
|
-
const number_ = Number.parseInt(part);
|
|
22
|
+
const number_ = Number.parseInt(part, 10);
|
|
23
23
|
return !Number.isNaN(number_) && number_ >= 0 && number_ <= 255;
|
|
24
24
|
})) {
|
|
25
25
|
throw new TypeError("Invalid IP address or subnet mask");
|
|
@@ -28,7 +28,7 @@ export const getNetworkAddress = (ip, subnetMask) => {
|
|
|
28
28
|
const maskParts = subnetMask.split(".");
|
|
29
29
|
if (maskParts.length !== 4 ||
|
|
30
30
|
!maskParts.every((part) => {
|
|
31
|
-
const number_ = Number.parseInt(part);
|
|
31
|
+
const number_ = Number.parseInt(part, 10);
|
|
32
32
|
return !Number.isNaN(number_) && number_ >= 0 && number_ <= 255;
|
|
33
33
|
})) {
|
|
34
34
|
throw new TypeError("Invalid IP address or subnet mask");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getNetworkAddress.js","sourceRoot":"","sources":["../../src/IP/getNetworkAddress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAAU,EAAE,UAAkB,EAAU,EAAE;IAC1E,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,qBAAqB;IACrB,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,IACE,OAAO,CAAC,MAAM,KAAK,CAAC;QACpB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE;YACtB,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"getNetworkAddress.js","sourceRoot":"","sources":["../../src/IP/getNetworkAddress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAAU,EAAE,UAAkB,EAAU,EAAE;IAC1E,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,qBAAqB;IACrB,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,IACE,OAAO,CAAC,MAAM,KAAK,CAAC;QACpB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE;YACtB,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,OAAO,IAAI,GAAG,CAAC;QAClE,CAAC,CAAC,EACF,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAC;IAC3D,CAAC;IAED,8BAA8B;IAC9B,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxC,IACE,SAAS,CAAC,MAAM,KAAK,CAAC;QACtB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE;YACxB,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,OAAO,IAAI,GAAG,CAAC;QAClE,CAAC,CAAC,EACF,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,CAAC;QACH,MAAM,cAAc,GAClB,QAAQ,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;QAC1D,OAAO,cAAc,KAAK,CAAC,CAAC,CAAC,qCAAqC;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -22,14 +22,14 @@ export const ipToBinaryString = (ip) => {
|
|
|
22
22
|
if (!octet || (octet.length > 1 && octet[0] === "0")) {
|
|
23
23
|
throw new Error("Invalid IP address format");
|
|
24
24
|
}
|
|
25
|
-
const number = Number.parseInt(octet);
|
|
25
|
+
const number = Number.parseInt(octet, 10);
|
|
26
26
|
if (Number.isNaN(number) || number < 0 || number > 255) {
|
|
27
27
|
throw new Error("Invalid IP address format");
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
// Convert to binary
|
|
31
31
|
return parts
|
|
32
|
-
.map((octet) => Number.parseInt(octet).toString(2).padStart(8, "0"))
|
|
32
|
+
.map((octet) => Number.parseInt(octet, 10).toString(2).padStart(8, "0"))
|
|
33
33
|
.join("");
|
|
34
34
|
};
|
|
35
35
|
//# sourceMappingURL=ipToBinaryString.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipToBinaryString.js","sourceRoot":"","sources":["../../src/IP/ipToBinaryString.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAAU,EAAU,EAAE;IACrD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IAED,+BAA+B;IAC/B,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IAED,sBAAsB;IACtB,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,yCAAyC;QACzC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ipToBinaryString.js","sourceRoot":"","sources":["../../src/IP/ipToBinaryString.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAAU,EAAU,EAAE;IACrD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IAED,+BAA+B;IAC/B,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IAED,sBAAsB;IACtB,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,yCAAyC;QACzC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC1C,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SACvE,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC,CAAC"}
|
|
@@ -15,7 +15,7 @@ export const subnetMaskToCidr = (subnetMask) => {
|
|
|
15
15
|
}
|
|
16
16
|
// Validate each octet
|
|
17
17
|
const binaryOctets = octets.map((octet) => {
|
|
18
|
-
const number_ = Number.parseInt(octet);
|
|
18
|
+
const number_ = Number.parseInt(octet, 10);
|
|
19
19
|
if (Number.isNaN(number_) || number_ < 0 || number_ > 255) {
|
|
20
20
|
throw new Error("Invalid subnet mask format");
|
|
21
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subnetMaskToCidr.js","sourceRoot":"","sources":["../../src/IP/subnetMaskToCidr.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,UAAkB,EAAU,EAAE;IAC7D,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,mCAAmC;IACnC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IAED,sBAAsB;IACtB,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACxC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"subnetMaskToCidr.js","sourceRoot":"","sources":["../../src/IP/subnetMaskToCidr.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,UAAkB,EAAU,EAAE;IAC7D,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,mCAAmC;IACnC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IAED,sBAAsB;IACtB,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACxC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC3C,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,GAAG,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,uCAAuC;IACvC,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IAED,WAAW;IACX,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;IACnD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
|
|
@@ -5,6 +5,10 @@ import { multiplication } from "../../Math/multiplication";
|
|
|
5
5
|
import { subtract } from "../../Math/subtract";
|
|
6
6
|
import { isNumber } from "../../Validate/isNumber";
|
|
7
7
|
export const calculatorCore = (expression, currencyExchange) => {
|
|
8
|
+
// Handle empty string
|
|
9
|
+
if (expression === "") {
|
|
10
|
+
return "";
|
|
11
|
+
}
|
|
8
12
|
let sanitizedExpression = expression;
|
|
9
13
|
// Handle signs
|
|
10
14
|
sanitizedExpression = sanitizeSigns(sanitizedExpression);
|
|
@@ -49,6 +53,12 @@ export const calculatorCore = (expression, currencyExchange) => {
|
|
|
49
53
|
}
|
|
50
54
|
// Return result if no more calculations needed
|
|
51
55
|
else {
|
|
56
|
+
const number_ = Number(sanitizedExpression);
|
|
57
|
+
if (!Number.isNaN(number_)) {
|
|
58
|
+
// Handle floating point precision issues
|
|
59
|
+
const rounded = Math.round(number_ * 1e10) / 1e10;
|
|
60
|
+
return rounded.toString();
|
|
61
|
+
}
|
|
52
62
|
return sanitizedExpression;
|
|
53
63
|
}
|
|
54
64
|
}
|
|
@@ -78,7 +88,7 @@ const containsParentheses = (expr) => {
|
|
|
78
88
|
};
|
|
79
89
|
const resolveParentheses = (expr) => {
|
|
80
90
|
// Logic for calculations inside parentheses
|
|
81
|
-
const match = expr.match(/\(
|
|
91
|
+
const match = expr.match(/\((-?\d+(?:\.\d+)?)([*+/-])(-?\d+(?:\.\d+)?)\)/);
|
|
82
92
|
if (match) {
|
|
83
93
|
return expr.replace(match[0], calculatorCore(match[0].replaceAll(/\(|\)/g, "")));
|
|
84
94
|
}
|
|
@@ -92,22 +102,20 @@ const containsDiv = (expr) => {
|
|
|
92
102
|
};
|
|
93
103
|
const resolveMulExp = (expr) => {
|
|
94
104
|
// Logic for multiplication and exponentiation
|
|
95
|
-
const match = expr.match(/(.*?)(
|
|
105
|
+
const match = expr.match(/(.*?)(-?\d+(?:\.\d+)?)([*^])(-?\d+(?:\.\d+)?)$/);
|
|
96
106
|
if (match) {
|
|
97
|
-
const
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
: multiplication(Number(operands[0]), Number(operands[2]));
|
|
107
|
+
const result = match[3] === "^"
|
|
108
|
+
? Number(match[2]) ** Number(match[4])
|
|
109
|
+
: multiplication(Number(match[2]), Number(match[4]));
|
|
101
110
|
return `${match[1]}${result}`;
|
|
102
111
|
}
|
|
103
112
|
return Number.NaN.toString();
|
|
104
113
|
};
|
|
105
114
|
const resolveDiv = (expr) => {
|
|
106
115
|
// Logic for division
|
|
107
|
-
const match = expr.match(
|
|
116
|
+
const match = expr.match(/(-?\d+(?:\.\d+)?)\/(-?\d+(?:\.\d+)?)/);
|
|
108
117
|
if (match) {
|
|
109
|
-
const
|
|
110
|
-
const result = division(Number(operands[0]), Number(operands[2]));
|
|
118
|
+
const result = division(Number(match[1]), Number(match[2]));
|
|
111
119
|
return expr.replace(match[0], String(result));
|
|
112
120
|
}
|
|
113
121
|
return Number.NaN.toString();
|
|
@@ -117,11 +125,11 @@ const containsAddSub = (expr) => {
|
|
|
117
125
|
};
|
|
118
126
|
const resolveAddSub = (expr) => {
|
|
119
127
|
// Logic for addition and subtraction
|
|
120
|
-
const match = expr.match(/(-?\d+
|
|
128
|
+
const match = expr.match(/(-?\d+(?:\.\d+)?)(\+|-)(-?\d+(?:\.\d+)?)/);
|
|
121
129
|
if (match) {
|
|
122
|
-
const result = match[
|
|
123
|
-
? addition(Number(match[1]), Number(match[
|
|
124
|
-
: subtract(Number(match[1]), Number(match[
|
|
130
|
+
const result = match[2] === "+"
|
|
131
|
+
? addition(Number(match[1]), Number(match[3]))
|
|
132
|
+
: subtract(Number(match[1]), Number(match[3]));
|
|
125
133
|
return expr.replace(match[0], String(result));
|
|
126
134
|
}
|
|
127
135
|
return Number.NaN.toString();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/Math/calculator/core.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/Math/calculator/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,UAAkB,EAClB,gBAAoB,EACZ,EAAE;IACV,sBAAsB;IACtB,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,mBAAmB,GAAG,UAAU,CAAC;IAErC,eAAe;IACf,mBAAmB,GAAG,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAEzD,wBAAwB;IACxB,OAAO,IAAI,EAAE,CAAC;QACZ,sBAAsB;QACtB,IAAI,gBAAgB,EAAE,CAAC;YACrB,mBAAmB,GAAG,qBAAqB,CACzC,mBAAmB,EACnB,gBAAgB,CACjB,CAAC;QACJ,CAAC;QAED,qBAAqB;QACrB,IAAI,mBAAmB,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC7C,MAAM,SAAS,GAAG,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;YAC1D,IAAI,SAAS,KAAK,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACxC,OAAO,mBAAmB,CAAC;YAC7B,CAAC;YACD,mBAAmB,GAAG,SAAS,CAAC;QAClC,CAAC;QAED,2CAA2C;aACtC,IAAI,cAAc,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC7C,MAAM,SAAS,GAAG,aAAa,CAAC,mBAAmB,CAAC,CAAC;YACrD,IAAI,SAAS,KAAK,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACxC,OAAO,mBAAmB,CAAC;YAC7B,CAAC;YACD,mBAAmB,GAAG,SAAS,CAAC;QAClC,CAAC;QAED,kBAAkB;aACb,IAAI,WAAW,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC1C,MAAM,SAAS,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC;YAClD,IAAI,SAAS,KAAK,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACxC,OAAO,mBAAmB,CAAC;YAC7B,CAAC;YACD,mBAAmB,GAAG,SAAS,CAAC;QAClC,CAAC;QAED,kCAAkC;aAC7B,IACH,cAAc,CAAC,mBAAmB,CAAC;YACnC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAC9B,CAAC;YACD,MAAM,SAAS,GAAG,aAAa,CAAC,mBAAmB,CAAC,CAAC;YACrD,IAAI,SAAS,KAAK,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACxC,OAAO,mBAAmB,CAAC;YAC7B,CAAC;YACD,mBAAmB,GAAG,SAAS,CAAC;QAClC,CAAC;QAED,+CAA+C;aAC1C,CAAC;YACJ,MAAM,OAAO,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,yCAAyC;gBACzC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;gBAClD,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC5B,CAAC;YACD,OAAO,mBAAmB,CAAC;QAC7B,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,IAAY,EAAU,EAAE;IAC7C,OAAO,IAAI;SACR,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC;SACrB,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC;SACrB,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;SACvB,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC7B,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAC5B,IAAY,EACZ,KAAQ,EACA,EAAE;IACV,IAAI,UAAU,GAAG,IAAI,CAAC;IACtB,0BAA0B;IAC1B,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC;YAC7D,IAAI,CAAC,EAAE,CAAC;gBACN,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAW,EAAE;IACpD,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAU,EAAE;IAClD,4CAA4C;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;IAC3E,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,IAAI,CAAC,OAAO,CACjB,KAAK,CAAC,CAAC,CAAC,EACR,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAClD,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;AAC/B,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,IAAY,EAAW,EAAE;IAC/C,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,IAAY,EAAW,EAAE;IAC5C,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,IAAY,EAAU,EAAE;IAC7C,8CAA8C;IAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;IAC3E,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,MAAM,GACV,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG;YACd,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACtC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC;IAChC,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;AAC/B,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,IAAY,EAAU,EAAE;IAC1C,qBAAqB;IACrB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;IACjE,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;AAC/B,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,IAAY,EAAW,EAAE;IAC/C,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,IAAY,EAAU,EAAE;IAC7C,qCAAqC;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;IACrE,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,MAAM,GACV,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG;YACd,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;AAC/B,CAAC,CAAC"}
|
|
@@ -10,14 +10,19 @@ import { gcd } from "../../Math/gcd";
|
|
|
10
10
|
* @example literalExpression("3x+2=8"); // "2"
|
|
11
11
|
*/
|
|
12
12
|
export const literalExpression = (x) => {
|
|
13
|
+
// Handle invalid equations like x=x
|
|
14
|
+
const sides = x.split("=");
|
|
15
|
+
if (sides.length === 2 && sides[0] === sides[1]) {
|
|
16
|
+
return "";
|
|
17
|
+
}
|
|
13
18
|
// Store numerical and variable parts of the equation
|
|
14
19
|
let numericalPart = "";
|
|
15
20
|
let variablePart = [];
|
|
16
21
|
// Split by equals sign and identify numerical and variable parts
|
|
17
|
-
for (const part of
|
|
22
|
+
for (const part of sides) {
|
|
18
23
|
if (/[A-Za-z]+/.test(part)) {
|
|
19
24
|
variablePart = part
|
|
20
|
-
.split(/(
|
|
25
|
+
.split(/([-+]?\d*[A-Za-z]+)|([-+]?\d+)/)
|
|
21
26
|
.filter((n) => n && n !== undefined);
|
|
22
27
|
}
|
|
23
28
|
else {
|
|
@@ -26,16 +31,23 @@ export const literalExpression = (x) => {
|
|
|
26
31
|
}
|
|
27
32
|
// Calculate the variable part (and invert signs for moving to other side of equation)
|
|
28
33
|
if (variablePart[1]) {
|
|
29
|
-
|
|
34
|
+
// Invert signs before calculating
|
|
35
|
+
const invertedPart = variablePart[1]
|
|
30
36
|
.replaceAll("+", "plus")
|
|
31
37
|
.replaceAll("-", "minus")
|
|
32
38
|
.replaceAll("plus", "-")
|
|
33
39
|
.replaceAll("minus", "+");
|
|
40
|
+
variablePart[1] = calculatorCore(invertedPart);
|
|
34
41
|
}
|
|
35
42
|
// Calculate the numerical part
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
43
|
+
if (variablePart[1]) {
|
|
44
|
+
// Ensure proper sign handling when combining
|
|
45
|
+
const sign = variablePart[1].startsWith("-") ? "" : "+";
|
|
46
|
+
numericalPart = calculatorCore(`${numericalPart}${sign}${variablePart[1]}`);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
numericalPart = calculatorCore(numericalPart);
|
|
50
|
+
}
|
|
39
51
|
// Split the variable part again to separate coefficient and variable
|
|
40
52
|
variablePart = variablePart[0]
|
|
41
53
|
.split(/(\d+)|([A-Za-z]+)/)
|
|
@@ -52,7 +64,7 @@ export const literalExpression = (x) => {
|
|
|
52
64
|
return numericalPart.replace(/\/1/, "");
|
|
53
65
|
}
|
|
54
66
|
}
|
|
55
|
-
if (variablePart[0] !== "1") {
|
|
67
|
+
else if (variablePart[0] !== "1") {
|
|
56
68
|
numericalPart = `${numericalPart}/${variablePart[0]}`;
|
|
57
69
|
}
|
|
58
70
|
return numericalPart;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"literalExpression.js","sourceRoot":"","sources":["../../../src/Math/calculator/literalExpression.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACjC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAS,EAAU,EAAE;IACrD,qDAAqD;IACrD,IAAI,aAAa,GAAG,EAAE,CAAC;IACvB,IAAI,YAAY,GAAa,EAAE,CAAC;IAEhC,iEAAiE;IACjE,KAAK,MAAM,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"literalExpression.js","sourceRoot":"","sources":["../../../src/Math/calculator/literalExpression.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculate the Pearson correlation coefficient between two arrays
|
|
3
|
+
* @param x - First array of numbers
|
|
4
|
+
* @param y - Second array of numbers
|
|
5
|
+
* @returns Correlation coefficient (-1 to 1)
|
|
6
|
+
* @example
|
|
7
|
+
* correlationCoefficient([1, 2, 3, 4, 5], [2, 4, 6, 8, 10]); // 1 (perfect positive correlation)
|
|
8
|
+
* correlationCoefficient([1, 2, 3, 4, 5], [5, 4, 3, 2, 1]); // -1 (perfect negative correlation)
|
|
9
|
+
* correlationCoefficient([1, 2, 3, 4, 5], [1, 1, 1, 1, 1]); // 0 (no correlation)
|
|
10
|
+
*/
|
|
11
|
+
export declare const correlationCoefficient: (x: number[], y: number[]) => number;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { average } from "./average";
|
|
2
|
+
/**
|
|
3
|
+
* Calculate the Pearson correlation coefficient between two arrays
|
|
4
|
+
* @param x - First array of numbers
|
|
5
|
+
* @param y - Second array of numbers
|
|
6
|
+
* @returns Correlation coefficient (-1 to 1)
|
|
7
|
+
* @example
|
|
8
|
+
* correlationCoefficient([1, 2, 3, 4, 5], [2, 4, 6, 8, 10]); // 1 (perfect positive correlation)
|
|
9
|
+
* correlationCoefficient([1, 2, 3, 4, 5], [5, 4, 3, 2, 1]); // -1 (perfect negative correlation)
|
|
10
|
+
* correlationCoefficient([1, 2, 3, 4, 5], [1, 1, 1, 1, 1]); // 0 (no correlation)
|
|
11
|
+
*/
|
|
12
|
+
export const correlationCoefficient = (x, y) => {
|
|
13
|
+
if (x.length !== y.length) {
|
|
14
|
+
throw new Error("Arrays must have the same length");
|
|
15
|
+
}
|
|
16
|
+
if (x.length === 0) {
|
|
17
|
+
return Number.NaN;
|
|
18
|
+
}
|
|
19
|
+
if (x.length === 1) {
|
|
20
|
+
return Number.NaN;
|
|
21
|
+
}
|
|
22
|
+
const meanX = average(x);
|
|
23
|
+
const meanY = average(y);
|
|
24
|
+
let numerator = 0;
|
|
25
|
+
let sumSquaredX = 0;
|
|
26
|
+
let sumSquaredY = 0;
|
|
27
|
+
for (const [index, element] of x.entries()) {
|
|
28
|
+
const deltaX = element - meanX;
|
|
29
|
+
const deltaY = y[index] - meanY;
|
|
30
|
+
numerator += deltaX * deltaY;
|
|
31
|
+
sumSquaredX += deltaX * deltaX;
|
|
32
|
+
sumSquaredY += deltaY * deltaY;
|
|
33
|
+
}
|
|
34
|
+
const denominator = Math.sqrt(sumSquaredX * sumSquaredY);
|
|
35
|
+
if (denominator === 0) {
|
|
36
|
+
return Number.NaN;
|
|
37
|
+
}
|
|
38
|
+
return numerator / denominator;
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=correlationCoefficient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"correlationCoefficient.js","sourceRoot":"","sources":["../../src/Math/correlationCoefficient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAW,EAAE,CAAW,EAAU,EAAE;IACzE,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnB,OAAO,MAAM,CAAC,GAAG,CAAC;IACpB,CAAC;IAED,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnB,OAAO,MAAM,CAAC,GAAG,CAAC;IACpB,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAEzB,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;QAC/B,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;QAEhC,SAAS,IAAI,MAAM,GAAG,MAAM,CAAC;QAC7B,WAAW,IAAI,MAAM,GAAG,MAAM,CAAC;QAC/B,WAAW,IAAI,MAAM,GAAG,MAAM,CAAC;IACjC,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,CAAC;IAEzD,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC,GAAG,CAAC;IACpB,CAAC;IAED,OAAO,SAAS,GAAG,WAAW,CAAC;AACjC,CAAC,CAAC"}
|
package/module/Math/division.js
CHANGED
|
@@ -10,7 +10,7 @@ import { getDecimalLength } from "./getDecimalLength";
|
|
|
10
10
|
*/
|
|
11
11
|
export const division = (x, y, isFloor = true) => {
|
|
12
12
|
if (y === 0) {
|
|
13
|
-
// biome-ignore lint/suspicious/noExplicitAny:
|
|
13
|
+
// biome-ignore lint/suspicious/noExplicitAny: ignore
|
|
14
14
|
return isFloor ? Number.NaN : [Number.NaN, Number.NaN];
|
|
15
15
|
}
|
|
16
16
|
const sign = Math.sign(x) * Math.sign(y);
|
|
@@ -28,13 +28,13 @@ export const division = (x, y, isFloor = true) => {
|
|
|
28
28
|
const divisionResult = (xInt / yInt) * scalingFactor;
|
|
29
29
|
if (isFloor) {
|
|
30
30
|
// Apply sign to result
|
|
31
|
-
// biome-ignore lint/suspicious/noExplicitAny:
|
|
31
|
+
// biome-ignore lint/suspicious/noExplicitAny: ignore
|
|
32
32
|
return (sign * divisionResult);
|
|
33
33
|
}
|
|
34
34
|
// When isFloor is false, calculate quotient and remainder
|
|
35
35
|
const intQuotient = Math.floor(divisionResult);
|
|
36
36
|
const remainder = xInt % yInt;
|
|
37
|
-
// biome-ignore lint/suspicious/noExplicitAny:
|
|
37
|
+
// biome-ignore lint/suspicious/noExplicitAny: ignore
|
|
38
38
|
return [sign * intQuotient, remainder];
|
|
39
39
|
};
|
|
40
40
|
//# sourceMappingURL=division.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"division.js","sourceRoot":"","sources":["../../src/Math/division.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,CAAS,EACT,CAAS,EACT,UAAa,IAAS,EACc,EAAE;IACtC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACZ,
|
|
1
|
+
{"version":3,"file":"division.js","sourceRoot":"","sources":["../../src/Math/division.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,CAAS,EACT,CAAS,EACT,UAAa,IAAS,EACc,EAAE;IACtC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACZ,qDAAqD;QACrD,OAAO,OAAO,CAAC,CAAC,CAAE,MAAM,CAAC,GAAW,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAS,CAAC;IAC3E,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAEzB,uCAAuC;IACvC,MAAM,cAAc,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,cAAc,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAE9C,wBAAwB;IACxB,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAEzC,kEAAkE;IAClE,MAAM,aAAa,GAAG,EAAE,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,CAAC;IAE9D,uBAAuB;IACvB,MAAM,cAAc,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,aAAa,CAAC;IAErD,IAAI,OAAO,EAAE,CAAC;QACZ,uBAAuB;QACvB,qDAAqD;QACrD,OAAO,CAAC,IAAI,GAAG,cAAc,CAAQ,CAAC;IACxC,CAAC;IACD,0DAA0D;IAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC;IAC9B,qDAAqD;IACrD,OAAO,CAAC,IAAI,GAAG,WAAW,EAAE,SAAS,CAAQ,CAAC;AAChD,CAAC,CAAC"}
|
package/module/Math/gcd.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isDouble } from "../Validate/isDouble";
|
|
1
2
|
/**
|
|
2
3
|
* Greatest Common Divisor (GCD)
|
|
3
4
|
* @param {number} x First number
|
|
@@ -7,9 +8,30 @@
|
|
|
7
8
|
* @example gcd(12, 18); // 6
|
|
8
9
|
*/
|
|
9
10
|
export const gcd = (x, y, ...z) => {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
// Handle decimal numbers by scaling them to integers
|
|
12
|
+
const allNumbers = [x, y, ...z];
|
|
13
|
+
// If any number is decimal, find common decimal places and scale
|
|
14
|
+
const hasDecimals = allNumbers.some((number_) => isDouble(number_, false));
|
|
15
|
+
if (hasDecimals) {
|
|
16
|
+
// Find maximum decimal places
|
|
17
|
+
const getDecimalPlaces = (number_) => {
|
|
18
|
+
const string_ = number_.toString();
|
|
19
|
+
return string_.includes(".") ? string_.split(".")[1].length : 0;
|
|
20
|
+
};
|
|
21
|
+
const maxDecimalPlaces = Math.max(...allNumbers.map((number_) => getDecimalPlaces(number_)));
|
|
22
|
+
const multiplier = 10 ** maxDecimalPlaces;
|
|
23
|
+
// Scale all numbers to integers
|
|
24
|
+
const scaledNumbers = allNumbers.map((number_) => Math.round(number_ * multiplier));
|
|
25
|
+
const result = gcdInteger(scaledNumbers[0], scaledNumbers[1], ...scaledNumbers.slice(2));
|
|
26
|
+
// Scale back to original decimal range
|
|
27
|
+
return result / multiplier;
|
|
28
|
+
}
|
|
29
|
+
return gcdInteger(x, y, ...z);
|
|
30
|
+
};
|
|
31
|
+
const gcdInteger = (x, y, ...z) => {
|
|
32
|
+
let copyX = Math.abs(Math.round(x));
|
|
33
|
+
let copyY = Math.abs(Math.round(y));
|
|
34
|
+
const copyZ = z.map((element) => Math.abs(Math.round(element)));
|
|
13
35
|
if (copyX === 0 || copyY === 0) {
|
|
14
36
|
return 0;
|
|
15
37
|
}
|
|
@@ -23,7 +45,7 @@ export const gcd = (x, y, ...z) => {
|
|
|
23
45
|
}
|
|
24
46
|
if (copyZ.length > 0) {
|
|
25
47
|
for (const element of copyZ) {
|
|
26
|
-
copyX =
|
|
48
|
+
copyX = gcdInteger(copyX, element);
|
|
27
49
|
}
|
|
28
50
|
}
|
|
29
51
|
return copyX;
|
package/module/Math/gcd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gcd.js","sourceRoot":"","sources":["../../src/Math/gcd.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,GAAG,CAAW,EAAE,EAAE;IAC1D,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"gcd.js","sourceRoot":"","sources":["../../src/Math/gcd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,GAAG,CAAW,EAAE,EAAE;IAC1D,qDAAqD;IACrD,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAEhC,iEAAiE;IACjE,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAE3E,IAAI,WAAW,EAAE,CAAC;QAChB,8BAA8B;QAC9B,MAAM,gBAAgB,GAAG,CAAC,OAAe,EAAE,EAAE;YAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;YACnC,OAAO,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,CAAC,CAAC;QAEF,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAC/B,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAC1D,CAAC;QACF,MAAM,UAAU,GAAG,EAAE,IAAI,gBAAgB,CAAC;QAE1C,gCAAgC;QAChC,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAC/C,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,CACjC,CAAC;QACF,MAAM,MAAM,GAAG,UAAU,CACvB,aAAa,CAAC,CAAC,CAAC,EAChB,aAAa,CAAC,CAAC,CAAC,EAChB,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAC1B,CAAC;QAEF,uCAAuC;QACvC,OAAO,MAAM,GAAG,UAAU,CAAC;IAC7B,CAAC;IAED,OAAO,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,GAAG,CAAW,EAAE,EAAE;IAC1D,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAEhE,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAElE,yBAAyB;IACzB,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;IACtB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACf,KAAK,GAAG,KAAK,CAAC;QACd,KAAK,GAAG,CAAC,CAAC;QACV,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;YAC5B,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
|
package/module/Math/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export * from "./addition";
|
|
|
2
2
|
export * from "./average";
|
|
3
3
|
export * from "./bitwise";
|
|
4
4
|
export * from "./calculator";
|
|
5
|
+
export * from "./correlationCoefficient";
|
|
5
6
|
export * from "./degToRad";
|
|
6
7
|
export * from "./deviationValue";
|
|
7
8
|
export * from "./division";
|
|
@@ -17,11 +18,13 @@ export * from "./mathSeparator";
|
|
|
17
18
|
export * from "./max";
|
|
18
19
|
export * from "./median";
|
|
19
20
|
export * from "./min";
|
|
21
|
+
export * from "./mode";
|
|
20
22
|
export * from "./multiples";
|
|
21
23
|
export * from "./multiplication";
|
|
22
24
|
export * from "./nCr";
|
|
23
25
|
export * from "./nHr";
|
|
24
26
|
export * from "./nPr";
|
|
27
|
+
export * from "./percentile";
|
|
25
28
|
export * from "./primeFactorization";
|
|
26
29
|
export * from "./quotient";
|
|
27
30
|
export * from "./radToDeg";
|
package/module/Math/index.js
CHANGED
|
@@ -2,6 +2,7 @@ export * from "./addition";
|
|
|
2
2
|
export * from "./average";
|
|
3
3
|
export * from "./bitwise";
|
|
4
4
|
export * from "./calculator";
|
|
5
|
+
export * from "./correlationCoefficient";
|
|
5
6
|
export * from "./degToRad";
|
|
6
7
|
export * from "./deviationValue";
|
|
7
8
|
export * from "./division";
|
|
@@ -17,11 +18,13 @@ export * from "./mathSeparator";
|
|
|
17
18
|
export * from "./max";
|
|
18
19
|
export * from "./median";
|
|
19
20
|
export * from "./min";
|
|
21
|
+
export * from "./mode";
|
|
20
22
|
export * from "./multiples";
|
|
21
23
|
export * from "./multiplication";
|
|
22
24
|
export * from "./nCr";
|
|
23
25
|
export * from "./nHr";
|
|
24
26
|
export * from "./nPr";
|
|
27
|
+
export * from "./percentile";
|
|
25
28
|
export * from "./primeFactorization";
|
|
26
29
|
export * from "./quotient";
|
|
27
30
|
export * from "./radToDeg";
|
package/module/Math/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Math/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,OAAO,CAAC;AACtB,cAAc,oBAAoB,CAAC;AACnC,cAAc,OAAO,CAAC;AACtB,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,OAAO,CAAC;AACtB,cAAc,OAAO,CAAC;AACtB,cAAc,OAAO,CAAC;AACtB,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Math/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,OAAO,CAAC;AACtB,cAAc,oBAAoB,CAAC;AACnC,cAAc,OAAO,CAAC;AACtB,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,OAAO,CAAC;AACtB,cAAc,OAAO,CAAC;AACtB,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Finds the most frequently occurring value(s) in an array
|
|
3
|
+
* @param array - Array of numbers to find mode for
|
|
4
|
+
* @returns Array of mode values (can be multiple values if there are ties)
|
|
5
|
+
* @example
|
|
6
|
+
* mode([1, 2, 2, 3, 3, 3]); // [3]
|
|
7
|
+
* mode([1, 2, 2, 3, 3]); // [2, 3]
|
|
8
|
+
* mode([1, 2, 3]); // [1, 2, 3]
|
|
9
|
+
*/
|
|
10
|
+
export declare const mode: (array: number[]) => number[];
|