umt 2.5.0 → 2.6.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 +11 -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/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/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/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/index.d.ts +5 -0
- package/module/String/index.js +5 -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/stringSimilarity.d.ts +8 -0
- package/module/String/stringSimilarity.js +23 -0
- package/module/String/stringSimilarity.js.map +1 -0
- package/module/Validate/core/index.js +0 -1
- package/module/Validate/core/index.js.map +1 -1
- 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/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/division.js +3 -3
- package/module/es5/Math/gcd.js +43 -5
- 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/index.d.ts +5 -0
- package/module/es5/String/index.js +55 -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/stringSimilarity.d.ts +8 -0
- package/module/es5/String/stringSimilarity.js +30 -0
- package/module/es5/Validate/core/index.js +0 -1
- 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/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/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 +31 -32
- 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
|
@@ -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":"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"}
|
|
@@ -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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"}
|
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":"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"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { average } from "./average";
|
|
2
|
+
import { multiplication } from "../Math/multiplication";
|
|
3
|
+
import { subtract } from "../Math/subtract";
|
|
2
4
|
/**
|
|
3
5
|
* Calculates the standard deviation of a set of values
|
|
4
6
|
* @param {number[]} values Array of numeric values
|
|
@@ -14,8 +16,8 @@ export const standardDeviation = (values) => {
|
|
|
14
16
|
const avg = average(values);
|
|
15
17
|
// Calculate the squared differences from the mean
|
|
16
18
|
const squareDiffs = values.map((value) => {
|
|
17
|
-
const diff = value
|
|
18
|
-
return diff
|
|
19
|
+
const diff = subtract(value, avg);
|
|
20
|
+
return multiplication(diff, diff);
|
|
19
21
|
});
|
|
20
22
|
// Calculate the mean of the squared differences
|
|
21
23
|
const avgSquareDiff = average(squareDiffs);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standardDeviation.js","sourceRoot":"","sources":["../../src/Math/standardDeviation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAgB,EAAU,EAAE;IAC5D,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE5B,kDAAkD;IAClD,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACvC,MAAM,IAAI,GAAG,KAAK,
|
|
1
|
+
{"version":3,"file":"standardDeviation.js","sourceRoot":"","sources":["../../src/Math/standardDeviation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAgB,EAAU,EAAE;IAC5D,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE5B,kDAAkD;IAClD,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACvC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAClC,OAAO,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,gDAAgD;IAChD,MAAM,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAE3C,yDAAyD;IACzD,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAClC,CAAC,CAAC"}
|
package/module/Object/has.js
CHANGED
|
@@ -11,8 +11,7 @@ export const has = (object, path) => {
|
|
|
11
11
|
const localPath = typeof path === "string" ? path.split(".") : path;
|
|
12
12
|
let current = { ...object };
|
|
13
13
|
for (const key of localPath) {
|
|
14
|
-
if (current == null ||
|
|
15
|
-
!Object.prototype.hasOwnProperty.call(current, key)) {
|
|
14
|
+
if (current == null || !Object.hasOwn(current, key)) {
|
|
16
15
|
return false;
|
|
17
16
|
}
|
|
18
17
|
current = current[key];
|
package/module/Object/has.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"has.js","sourceRoot":"","sources":["../../src/Object/has.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CACjB,MAAS,EACT,IAAuB,EACd,EAAE;IACX,MAAM,SAAS,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpE,IAAI,OAAO,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAC5B,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,
|
|
1
|
+
{"version":3,"file":"has.js","sourceRoot":"","sources":["../../src/Object/has.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CACjB,MAAS,EACT,IAAuB,EACd,EAAE;IACX,MAAM,SAAS,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpE,IAAI,OAAO,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAC5B,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,IAAI,OAAO,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;YACpD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,GAAG,CAAM,CAAC;IAC9B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
|
package/module/Object/index.d.ts
CHANGED
package/module/Object/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Object/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Object/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Checks if an object is empty (has no own properties)
|
|
3
|
+
* @param object - The object to check
|
|
4
|
+
* @returns true if the object is empty, false otherwise
|
|
5
|
+
*/
|
|
6
|
+
export const isEmpty = (object) => {
|
|
7
|
+
// Check enumerable string keys
|
|
8
|
+
for (const key in object) {
|
|
9
|
+
if (Object.hasOwn(object, key)) {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
// Check symbol properties
|
|
14
|
+
const symbolKeys = Object.getOwnPropertySymbols(object);
|
|
15
|
+
if (symbolKeys.length > 0) {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
return true;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=isEmpty.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isEmpty.js","sourceRoot":"","sources":["../../src/Object/isEmpty.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,MAA+B,EAAW,EAAE;IAClE,+BAA+B;IAC/B,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,MAAM,UAAU,GAAG,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACxD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { UnionToIntersection } from "../types/logic/unionToIntersection";
|
|
2
|
+
/**
|
|
3
|
+
* Merges multiple objects into a single object (shallow merge)
|
|
4
|
+
* @param target - The target object to merge into
|
|
5
|
+
* @param sources - The source objects to merge from
|
|
6
|
+
* @returns The merged object
|
|
7
|
+
*/
|
|
8
|
+
export declare const merge: <T extends Record<string, unknown>, U extends Record<string, unknown>[]>(target: T, ...sources: U) => T & UnionToIntersection<U[number]>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Merges multiple objects into a single object (shallow merge)
|
|
3
|
+
* @param target - The target object to merge into
|
|
4
|
+
* @param sources - The source objects to merge from
|
|
5
|
+
* @returns The merged object
|
|
6
|
+
*/
|
|
7
|
+
export const merge = (target, ...sources) => {
|
|
8
|
+
return Object.assign({}, target, ...sources);
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=merge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/Object/merge.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAInB,MAAS,EACT,GAAG,OAAU,EACuB,EAAE;IACtC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC;AAC/C,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { UnionToIntersection } from "../types/logic/unionToIntersection";
|
|
2
|
+
/**
|
|
3
|
+
* Deeply merges multiple objects into a single object
|
|
4
|
+
* @param target - The target object to merge into
|
|
5
|
+
* @param sources - The source objects to merge from
|
|
6
|
+
* @returns The deeply merged object
|
|
7
|
+
*/
|
|
8
|
+
export declare const mergeDeep: <T extends Record<string, unknown>, U extends Record<string, unknown>[]>(target: T, ...sources: U) => T & UnionToIntersection<U[number]>;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Checks if a value is a plain object
|
|
3
|
+
*/
|
|
4
|
+
const isPlainObject = (value) => {
|
|
5
|
+
return (value !== null &&
|
|
6
|
+
typeof value === "object" &&
|
|
7
|
+
value.constructor === Object &&
|
|
8
|
+
Object.prototype.toString.call(value) === "[object Object]");
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Deeply merges multiple objects into a single object
|
|
12
|
+
* @param target - The target object to merge into
|
|
13
|
+
* @param sources - The source objects to merge from
|
|
14
|
+
* @returns The deeply merged object
|
|
15
|
+
*/
|
|
16
|
+
export const mergeDeep = (target, ...sources) => {
|
|
17
|
+
if (sources.length === 0) {
|
|
18
|
+
return target;
|
|
19
|
+
}
|
|
20
|
+
const source = sources.shift();
|
|
21
|
+
if (isPlainObject(target) && isPlainObject(source)) {
|
|
22
|
+
const result = { ...target };
|
|
23
|
+
for (const key in source) {
|
|
24
|
+
if (Object.hasOwn(source, key)) {
|
|
25
|
+
const sourceValue = source[key];
|
|
26
|
+
const targetValue = result[key];
|
|
27
|
+
result[key] =
|
|
28
|
+
isPlainObject(targetValue) && isPlainObject(sourceValue)
|
|
29
|
+
? mergeDeep(targetValue, sourceValue)
|
|
30
|
+
: sourceValue;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return mergeDeep(result, ...sources);
|
|
34
|
+
}
|
|
35
|
+
return mergeDeep(source, ...sources);
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=mergeDeep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mergeDeep.js","sourceRoot":"","sources":["../../src/Object/mergeDeep.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,aAAa,GAAG,CAAC,KAAc,EAAoC,EAAE;IACzE,OAAO,CACL,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,CAAC,WAAW,KAAK,MAAM;QAC5B,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,iBAAiB,CAC5D,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAIvB,MAAS,EACT,GAAG,OAAU,EACuB,EAAE;IACtC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,MAA4C,CAAC;IACtD,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAE/B,IAAI,aAAa,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;QAE7B,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;gBAC/B,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChC,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBAE/B,MAAkC,CAAC,GAAG,CAAC;oBACtC,aAAa,CAAC,WAAW,CAAC,IAAI,aAAa,CAAC,WAAW,CAAC;wBACtD,CAAC,CAAC,SAAS,CACP,WAAsC,EACtC,WAAsC,CACvC;wBACH,CAAC,CAAC,WAAW,CAAC;YACpB,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC,MAAM,EAAE,GAAG,OAAO,CAAuC,CAAC;IAC7E,CAAC;IAED,OAAO,SAAS,CAAC,MAAW,EAAE,GAAG,OAAO,CACR,CAAC;AACnC,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates an object without the specified keys
|
|
3
|
+
* @param object - The source object
|
|
4
|
+
* @param keys - The keys to omit
|
|
5
|
+
* @returns A new object without the specified keys
|
|
6
|
+
*/
|
|
7
|
+
export declare const omit: <T extends object, K extends keyof T>(object: T, ...keys: K[]) => Omit<T, K>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates an object without the specified keys
|
|
3
|
+
* @param object - The source object
|
|
4
|
+
* @param keys - The keys to omit
|
|
5
|
+
* @returns A new object without the specified keys
|
|
6
|
+
*/
|
|
7
|
+
export const omit = (object, ...keys) => {
|
|
8
|
+
const result = { ...object };
|
|
9
|
+
for (const key of keys) {
|
|
10
|
+
delete result[key];
|
|
11
|
+
}
|
|
12
|
+
return result;
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=omit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"omit.js","sourceRoot":"","sources":["../../src/Object/omit.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,MAAS,EACT,GAAG,IAAS,EACA,EAAE;IACd,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAE7B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
|
|
@@ -7,7 +7,7 @@ import type { PickDeepKey } from "../types/object/pickDeepKey";
|
|
|
7
7
|
* @template K - Type of property keys to select. Must be a subset of PickDeepKey<T>.
|
|
8
8
|
* @param {T} object - The source object to extract properties from.
|
|
9
9
|
* @param {...K[]} keys - Property keys to extract. Can use dot notation for nested properties.
|
|
10
|
-
* @returns {PickDeep<T>} A new object containing only the specified properties.
|
|
10
|
+
* @returns {PickDeep<T, K>} A new object containing only the specified properties.
|
|
11
11
|
*
|
|
12
12
|
* @example
|
|
13
13
|
* ```typescript
|
|
@@ -16,4 +16,4 @@ import type { PickDeepKey } from "../types/object/pickDeepKey";
|
|
|
16
16
|
* // picked will be { a: { b: { c: 1 } }, f: 4 }
|
|
17
17
|
* ```
|
|
18
18
|
*/
|
|
19
|
-
export declare const pickDeep: <T extends object, K extends PickDeepKey<T
|
|
19
|
+
export declare const pickDeep: <T extends object, const K extends readonly PickDeepKey<T>[]>(object: T, ...keys: K) => PickDeep<T, K>;
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @template K - Type of property keys to select. Must be a subset of PickDeepKey<T>.
|
|
6
6
|
* @param {T} object - The source object to extract properties from.
|
|
7
7
|
* @param {...K[]} keys - Property keys to extract. Can use dot notation for nested properties.
|
|
8
|
-
* @returns {PickDeep<T>} A new object containing only the specified properties.
|
|
8
|
+
* @returns {PickDeep<T, K>} A new object containing only the specified properties.
|
|
9
9
|
*
|
|
10
10
|
* @example
|
|
11
11
|
* ```typescript
|
|
@@ -15,13 +15,13 @@
|
|
|
15
15
|
* ```
|
|
16
16
|
*/
|
|
17
17
|
export const pickDeep = (object, ...keys) => {
|
|
18
|
-
// biome-ignore lint/suspicious/noExplicitAny:
|
|
18
|
+
// biome-ignore lint/suspicious/noExplicitAny: ignore
|
|
19
19
|
const result = {};
|
|
20
20
|
for (const key of keys) {
|
|
21
21
|
const parts = key.split(".");
|
|
22
|
-
// biome-ignore lint/suspicious/noExplicitAny:
|
|
22
|
+
// biome-ignore lint/suspicious/noExplicitAny: ignore
|
|
23
23
|
let current = { ...object };
|
|
24
|
-
// biome-ignore lint/suspicious/noExplicitAny:
|
|
24
|
+
// biome-ignore lint/suspicious/noExplicitAny: ignore
|
|
25
25
|
let target = result;
|
|
26
26
|
for (const [index, part] of parts.entries()) {
|
|
27
27
|
if (current && typeof current === "object" && part in current) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pickDeep.js","sourceRoot":"","sources":["../../src/Object/pickDeep.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,
|
|
1
|
+
{"version":3,"file":"pickDeep.js","sourceRoot":"","sources":["../../src/Object/pickDeep.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAItB,MAAS,EACT,GAAG,IAAO,EACM,EAAE;IAClB,qDAAqD;IACrD,MAAM,MAAM,GAAQ,EAAE,CAAC;IAEvB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAI,GAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzC,qDAAqD;QACrD,IAAI,OAAO,GAAQ,EAAE,GAAG,MAAM,EAAE,CAAC;QACjC,qDAAqD;QACrD,IAAI,MAAM,GAAQ,MAAM,CAAC;QAEzB,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAC5C,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,IAAI,IAAI,OAAO,EAAE,CAAC;gBAC9D,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC/B,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC/B,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBAClC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;oBACxB,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
|
|
@@ -4,20 +4,20 @@ function dayOfWeekSimple(properties, timeDifference = 9) {
|
|
|
4
4
|
if (properties.includes(":")) {
|
|
5
5
|
const [year, mon, day] = properties
|
|
6
6
|
.split(":")
|
|
7
|
-
// biome-ignore lint/suspicious/noExplicitAny:
|
|
7
|
+
// biome-ignore lint/suspicious/noExplicitAny: ignore
|
|
8
8
|
.map(Number);
|
|
9
9
|
return dayOfWeek({ year, mon, day }, timeDifference);
|
|
10
10
|
}
|
|
11
11
|
if (properties.includes("/")) {
|
|
12
12
|
const [year, mon, day] = properties
|
|
13
13
|
.split("/")
|
|
14
|
-
// biome-ignore lint/suspicious/noExplicitAny:
|
|
14
|
+
// biome-ignore lint/suspicious/noExplicitAny: ignore
|
|
15
15
|
.map(Number);
|
|
16
16
|
return dayOfWeek({ year, mon, day }, timeDifference);
|
|
17
17
|
}
|
|
18
18
|
const [year, mon, day] = properties
|
|
19
19
|
.split("-")
|
|
20
|
-
// biome-ignore lint/suspicious/noExplicitAny:
|
|
20
|
+
// biome-ignore lint/suspicious/noExplicitAny: ignore
|
|
21
21
|
.map(Number);
|
|
22
22
|
return dayOfWeek({ year, mon, day }, timeDifference);
|
|
23
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dayOfWeekSimple.js","sourceRoot":"","sources":["../../../src/Simple/Date/dayOfWeekSimple.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AA8B7C,SAAS,eAAe,CAOtB,UAyBQ,EACR,iBAA+B,CAAC;IAEhC,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACnC,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,UAAU;iBAChC,KAAK,CAAC,GAAG,CAAC;gBACX,
|
|
1
|
+
{"version":3,"file":"dayOfWeekSimple.js","sourceRoot":"","sources":["../../../src/Simple/Date/dayOfWeekSimple.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AA8B7C,SAAS,eAAe,CAOtB,UAyBQ,EACR,iBAA+B,CAAC;IAEhC,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACnC,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,UAAU;iBAChC,KAAK,CAAC,GAAG,CAAC;gBACX,qDAAqD;iBACpD,GAAG,CAAC,MAAM,CAAQ,CAAC;YACtB,OAAO,SAAS,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,UAAU;iBAChC,KAAK,CAAC,GAAG,CAAC;gBACX,qDAAqD;iBACpD,GAAG,CAAC,MAAM,CAAQ,CAAC;YACtB,OAAO,SAAS,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;QACvD,CAAC;QACD,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,UAAU;aAChC,KAAK,CAAC,GAAG,CAAC;YACX,qDAAqD;aACpD,GAAG,CAAC,MAAM,CAAQ,CAAC;QACtB,OAAO,SAAS,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,UAAU,YAAY,IAAI,EAAE,CAAC;QAC/B,OAAO,SAAS,CACd;YACE,IAAI,EAAE,UAAU,CAAC,WAAW,EAAE;YAC9B,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,CAER;YACvB,GAAG,EAAE,UAAU,CAAC,OAAO,EAEtB;SACF,EACD,cAAc,CACf,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CACd,UAIC,EACD,cAAc,CACf,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts a string to camelCase
|
|
3
|
+
* @param str - The string to convert
|
|
4
|
+
* @returns The camelCase string
|
|
5
|
+
*/
|
|
6
|
+
export const camelCase = (string_) => {
|
|
7
|
+
return string_
|
|
8
|
+
.replaceAll(/[^a-zA-Z0-9]+(.)/g, (_, char) => char.toUpperCase())
|
|
9
|
+
.replaceAll(/[^a-zA-Z0-9]+$/g, "")
|
|
10
|
+
.replace(/^[A-Z]/, (char) => char.toLowerCase());
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=camelCase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"camelCase.js","sourceRoot":"","sources":["../../src/String/camelCase.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAe,EAAU,EAAE;IACnD,OAAO,OAAO;SACX,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;SAChE,UAAU,CAAC,iBAAiB,EAAE,EAAE,CAAC;SACjC,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACrD,CAAC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTML entities map for escaping
|
|
3
|
+
*/
|
|
4
|
+
const htmlEscapeMap = {
|
|
5
|
+
"&": "&",
|
|
6
|
+
"<": "<",
|
|
7
|
+
">": ">",
|
|
8
|
+
'"': """,
|
|
9
|
+
"'": "'",
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Escapes HTML special characters in a string
|
|
13
|
+
* @param str - The string to escape
|
|
14
|
+
* @returns The escaped string
|
|
15
|
+
*/
|
|
16
|
+
export const escapeHtml = (string_) => {
|
|
17
|
+
return string_.replaceAll(/[&<>"']/g, (match) => htmlEscapeMap[match]);
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=escapeHtml.js.map
|