@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.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
- const get2 = (type) => {
968
- var _a2;
969
- return (_a2 = parts.find((p) => p.type === type)) == null ? void 0 : _a2.value;
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
- const build = `${get2("year")}-${get2("month")}-${get2("day")}T${get2("hour")}:${get2("minute")}:${get2("second")}Z`;
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: numSuffix(get("Date")),
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: get("Milliseconds").toString().padStart(3, "0"),
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, ""));