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