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