@ztimson/utils 0.27.3 → 0.27.4
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/dist/index.cjs +64 -36
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +64 -36
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -893,33 +893,6 @@ ${opts.message || this.desc}`;
|
|
|
893
893
|
}).join(","))
|
|
894
894
|
].join("\n");
|
|
895
895
|
}
|
|
896
|
-
function dec2Frac(num, maxDen = 1e3) {
|
|
897
|
-
let sign = Math.sign(num);
|
|
898
|
-
num = Math.abs(num);
|
|
899
|
-
if (Number.isInteger(num)) return sign * num + "";
|
|
900
|
-
let closest = { n: 0, d: 1, diff: Math.abs(num) };
|
|
901
|
-
for (let d = 1; d <= maxDen; d++) {
|
|
902
|
-
let n = Math.round(num * d);
|
|
903
|
-
let diff = Math.abs(num - n / d);
|
|
904
|
-
if (diff < closest.diff) {
|
|
905
|
-
closest = { n, d, diff };
|
|
906
|
-
if (diff < 1e-8) break;
|
|
907
|
-
}
|
|
908
|
-
}
|
|
909
|
-
let integer = Math.floor(closest.n / closest.d);
|
|
910
|
-
let numerator = closest.n - integer * closest.d;
|
|
911
|
-
return (sign < 0 ? "-" : "") + (integer ? integer + " " : "") + (numerator ? numerator + "/" + closest.d : "");
|
|
912
|
-
}
|
|
913
|
-
function fracToDec(frac) {
|
|
914
|
-
let split = frac.split(" ");
|
|
915
|
-
const whole = split.length == 2 ? Number(split[0]) : 0;
|
|
916
|
-
split = split.pop().split("/");
|
|
917
|
-
return whole + Number(split[0]) / Number(split[1]);
|
|
918
|
-
}
|
|
919
|
-
function numSuffix(n) {
|
|
920
|
-
const s = ["th", "st", "nd", "rd"], v = n % 100;
|
|
921
|
-
return `${n}${s[(v - 20) % 10] || s[v] || s[0]}`;
|
|
922
|
-
}
|
|
923
896
|
function adjustedInterval(cb, ms) {
|
|
924
897
|
let cancel = false, timeout = null;
|
|
925
898
|
const p = async () => {
|
|
@@ -957,28 +930,56 @@ ${opts.message || this.desc}`;
|
|
|
957
930
|
}
|
|
958
931
|
}
|
|
959
932
|
let zonedDate = new Date(date);
|
|
933
|
+
let get;
|
|
934
|
+
const partsMap = {};
|
|
960
935
|
if (!numericTz && tzName !== "UTC") {
|
|
961
936
|
const parts = new Intl.DateTimeFormat("en-US", {
|
|
962
937
|
timeZone: tzName,
|
|
963
938
|
year: "numeric",
|
|
964
939
|
month: "2-digit",
|
|
965
940
|
day: "2-digit",
|
|
941
|
+
weekday: "long",
|
|
966
942
|
hour: "2-digit",
|
|
967
943
|
minute: "2-digit",
|
|
968
944
|
second: "2-digit",
|
|
969
945
|
hour12: false
|
|
970
946
|
}).formatToParts(date);
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
947
|
+
parts.forEach((p) => {
|
|
948
|
+
partsMap[p.type] = p.value;
|
|
949
|
+
});
|
|
950
|
+
const monthValue = parseInt(partsMap.month) - 1;
|
|
951
|
+
const dayOfWeekValue = (/* @__PURE__ */ new Date(`${partsMap.year}-${partsMap.month}-${partsMap.day}`)).getDay();
|
|
952
|
+
const hourValue = parseInt(partsMap.hour);
|
|
953
|
+
get = (fn2) => {
|
|
954
|
+
switch (fn2) {
|
|
955
|
+
case "FullYear":
|
|
956
|
+
return parseInt(partsMap.year);
|
|
957
|
+
case "Month":
|
|
958
|
+
return monthValue;
|
|
959
|
+
case "Date":
|
|
960
|
+
return parseInt(partsMap.day);
|
|
961
|
+
case "Day":
|
|
962
|
+
return dayOfWeekValue;
|
|
963
|
+
case "Hours":
|
|
964
|
+
return hourValue;
|
|
965
|
+
case "Minutes":
|
|
966
|
+
return parseInt(partsMap.minute);
|
|
967
|
+
case "Seconds":
|
|
968
|
+
return parseInt(partsMap.second);
|
|
969
|
+
default:
|
|
970
|
+
return 0;
|
|
971
|
+
}
|
|
974
972
|
};
|
|
975
|
-
|
|
976
|
-
zonedDate = new Date(build);
|
|
977
|
-
} else if (numericTz || tzName === "UTC") {
|
|
973
|
+
} else {
|
|
978
974
|
const offset = numericTz ? tz : 0;
|
|
979
975
|
zonedDate = new Date(date.getTime() + offset * 60 * 60 * 1e3);
|
|
976
|
+
get = (fn2) => zonedDate[`getUTC${fn2}`]();
|
|
977
|
+
}
|
|
978
|
+
function numSuffix2(n) {
|
|
979
|
+
const s = ["th", "st", "nd", "rd"];
|
|
980
|
+
const v = n % 100;
|
|
981
|
+
return n + (s[(v - 20) % 10] || s[v] || s[0]);
|
|
980
982
|
}
|
|
981
|
-
const get = (fn2) => numericTz || tzName === "UTC" ? zonedDate[`getUTC${fn2}`]() : zonedDate[`get${fn2}`]();
|
|
982
983
|
function getTZOffset() {
|
|
983
984
|
var _a2, _b;
|
|
984
985
|
if (numericTz) {
|
|
@@ -1012,7 +1013,7 @@ ${opts.message || this.desc}`;
|
|
|
1012
1013
|
M: (get("Month") + 1).toString(),
|
|
1013
1014
|
DDD: dayOfYear(zonedDate).toString(),
|
|
1014
1015
|
DD: get("Date").toString().padStart(2, "0"),
|
|
1015
|
-
Do:
|
|
1016
|
+
Do: numSuffix2(get("Date")),
|
|
1016
1017
|
D: get("Date").toString(),
|
|
1017
1018
|
dddd: dayOfWeek(get("Day")),
|
|
1018
1019
|
ddd: dayOfWeek(get("Day")).slice(0, 3),
|
|
@@ -1024,7 +1025,7 @@ ${opts.message || this.desc}`;
|
|
|
1024
1025
|
m: get("Minutes").toString(),
|
|
1025
1026
|
ss: get("Seconds").toString().padStart(2, "0"),
|
|
1026
1027
|
s: get("Seconds").toString(),
|
|
1027
|
-
SSS:
|
|
1028
|
+
SSS: zonedDate[`getUTC${"Milliseconds"}`]().toString().padStart(3, "0"),
|
|
1028
1029
|
A: get("Hours") >= 12 ? "PM" : "AM",
|
|
1029
1030
|
a: get("Hours") >= 12 ? "pm" : "am",
|
|
1030
1031
|
ZZ: getTZOffset().replace(":", ""),
|
|
@@ -1788,6 +1789,33 @@ ${opts.message || this.desc}`;
|
|
|
1788
1789
|
};
|
|
1789
1790
|
__publicField(_Logger, "LOG_LEVEL", 4);
|
|
1790
1791
|
let Logger = _Logger;
|
|
1792
|
+
function dec2Frac(num, maxDen = 1e3) {
|
|
1793
|
+
let sign = Math.sign(num);
|
|
1794
|
+
num = Math.abs(num);
|
|
1795
|
+
if (Number.isInteger(num)) return sign * num + "";
|
|
1796
|
+
let closest = { n: 0, d: 1, diff: Math.abs(num) };
|
|
1797
|
+
for (let d = 1; d <= maxDen; d++) {
|
|
1798
|
+
let n = Math.round(num * d);
|
|
1799
|
+
let diff = Math.abs(num - n / d);
|
|
1800
|
+
if (diff < closest.diff) {
|
|
1801
|
+
closest = { n, d, diff };
|
|
1802
|
+
if (diff < 1e-8) break;
|
|
1803
|
+
}
|
|
1804
|
+
}
|
|
1805
|
+
let integer = Math.floor(closest.n / closest.d);
|
|
1806
|
+
let numerator = closest.n - integer * closest.d;
|
|
1807
|
+
return (sign < 0 ? "-" : "") + (integer ? integer + " " : "") + (numerator ? numerator + "/" + closest.d : "");
|
|
1808
|
+
}
|
|
1809
|
+
function fracToDec(frac) {
|
|
1810
|
+
let split = frac.split(" ");
|
|
1811
|
+
const whole = split.length == 2 ? Number(split[0]) : 0;
|
|
1812
|
+
split = split.pop().split("/");
|
|
1813
|
+
return whole + Number(split[0]) / Number(split[1]);
|
|
1814
|
+
}
|
|
1815
|
+
function numSuffix(n) {
|
|
1816
|
+
const s = ["th", "st", "nd", "rd"], v = n % 100;
|
|
1817
|
+
return `${n}${s[(v - 20) % 10] || s[v] || s[0]}`;
|
|
1818
|
+
}
|
|
1791
1819
|
function compareVersions(target, vs) {
|
|
1792
1820
|
const [tMajor, tMinor, tPatch] = target.split(".").map((v) => +v.replace(/[^0-9]/g, ""));
|
|
1793
1821
|
const [vMajor, vMinor, vPatch] = vs.split(".").map((v) => +v.replace(/[^0-9]/g, ""));
|