chronal 0.0.23 → 0.0.25

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.
@@ -1 +1 @@
1
- {"version":3,"file":"format-date.d.ts","sourceRoot":"","sources":["../../src/lib/format-date.ts"],"names":[],"mappings":"AAKA,KAAK,aAAa,GAAG;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAqIF;;;;;;;;;;;;;GAaG;AAEH,wBAAgB,UAAU,CACxB,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,aAAkB,GAC1B,MAAM,CAaR"}
1
+ {"version":3,"file":"format-date.d.ts","sourceRoot":"","sources":["../../src/lib/format-date.ts"],"names":[],"mappings":"AAKA,KAAK,aAAa,GAAG;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAwIF;;;;;;;;;;;;;GAaG;AAEH,wBAAgB,UAAU,CACxB,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,aAAkB,GAC1B,MAAM,CAaR"}
@@ -85,7 +85,7 @@ function getPartsWithTZ(date, locale, tz) {
85
85
  year: 0,
86
86
  month: 0,
87
87
  day: 0,
88
- dayOfWeek: date.getDay(),
88
+ dayOfWeek: 0,
89
89
  hour: 0,
90
90
  minute: 0,
91
91
  second: 0,
@@ -113,6 +113,8 @@ function getPartsWithTZ(date, locale, tz) {
113
113
  break;
114
114
  }
115
115
  }
116
+ // Derive dayOfWeek from the TZ-adjusted date components, not OS local time
117
+ p.dayOfWeek = new Date(Date.UTC(p.year, p.month - 1, p.day)).getUTCDay();
116
118
  return p;
117
119
  }
118
120
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"is-tomorrow.d.ts","sourceRoot":"","sources":["../../src/lib/is-tomorrow.ts"],"names":[],"mappings":"AAGA,KAAK,iBAAiB,GAAG;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CA2C/E"}
1
+ {"version":3,"file":"is-tomorrow.d.ts","sourceRoot":"","sources":["../../src/lib/is-tomorrow.ts"],"names":[],"mappings":"AAGA,KAAK,iBAAiB,GAAG;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAyC/E"}
@@ -29,13 +29,12 @@ export function isTomorrow(date, options = {}) {
29
29
  }
30
30
  // Timezone-aware comparison
31
31
  const formatter = getDTF("en-US", timezone);
32
- const nowParts = formatter.formatToParts(now);
33
32
  const getPartValue = (parts, type) => parts.find((p) => p.type === type)?.value || "0";
34
- const nowYear = parseInt(getPartValue(nowParts, "year"), 10);
35
- const nowMonth = parseInt(getPartValue(nowParts, "month"), 10);
36
- const nowDay = parseInt(getPartValue(nowParts, "day"), 10);
37
- // Calculate tomorrow in the target timezone
38
- const tomorrowDate = new Date(Date.UTC(nowYear, nowMonth - 1, nowDay + 1));
33
+ // +24h from now always lands in tomorrow for any fixed-offset timezone.
34
+ // Date.UTC(localYear, localMonth-1, localDay+1) was wrong: it creates UTC
35
+ // midnight from local date parts, which represents the previous evening in
36
+ // timezones behind UTC (e.g. UTC-3 São Paulo).
37
+ const tomorrowDate = new Date(now.getTime() + 24 * 60 * 60 * 1000);
39
38
  const tomorrowParts = formatter.formatToParts(tomorrowDate);
40
39
  const tomorrowYear = getPartValue(tomorrowParts, "year");
41
40
  const tomorrowMonth = getPartValue(tomorrowParts, "month");
@@ -1 +1 @@
1
- {"version":3,"file":"is-yesterday.d.ts","sourceRoot":"","sources":["../../src/lib/is-yesterday.ts"],"names":[],"mappings":"AAGA,KAAK,kBAAkB,GAAG;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CA2CjF"}
1
+ {"version":3,"file":"is-yesterday.d.ts","sourceRoot":"","sources":["../../src/lib/is-yesterday.ts"],"names":[],"mappings":"AAGA,KAAK,kBAAkB,GAAG;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAyCjF"}
@@ -29,13 +29,12 @@ export function isYesterday(date, options = {}) {
29
29
  }
30
30
  // Timezone-aware comparison
31
31
  const formatter = getDTF("en-US", timezone);
32
- const nowParts = formatter.formatToParts(now);
33
32
  const getPartValue = (parts, type) => parts.find((p) => p.type === type)?.value || "0";
34
- const nowYear = parseInt(getPartValue(nowParts, "year"), 10);
35
- const nowMonth = parseInt(getPartValue(nowParts, "month"), 10);
36
- const nowDay = parseInt(getPartValue(nowParts, "day"), 10);
37
- // Calculate yesterday in the target timezone
38
- const yesterdayDate = new Date(Date.UTC(nowYear, nowMonth - 1, nowDay - 1));
33
+ // -24h from now always lands in yesterday for any fixed-offset timezone.
34
+ // Date.UTC(localYear, localMonth-1, localDay-1) was wrong: it creates UTC
35
+ // midnight from local date parts, which represents the previous evening in
36
+ // timezones behind UTC (e.g. UTC-3 São Paulo).
37
+ const yesterdayDate = new Date(now.getTime() - 24 * 60 * 60 * 1000);
39
38
  const yesterdayParts = formatter.formatToParts(yesterdayDate);
40
39
  const yesterdayYear = getPartValue(yesterdayParts, "year");
41
40
  const yesterdayMonth = getPartValue(yesterdayParts, "month");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chronal",
3
- "version": "0.0.23",
3
+ "version": "0.0.25",
4
4
  "description": "A tiny and fast date utility library for modern JavaScript runtimes.",
5
5
  "keywords": [
6
6
  "date",
@@ -1 +1 @@
1
- {"version":3,"file":"format-date.d.ts","sourceRoot":"","sources":["../../src/lib/format-date.ts"],"names":[],"mappings":"AAKA,KAAK,aAAa,GAAG;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAqIF;;;;;;;;;;;;;GAaG;AAEH,wBAAgB,UAAU,CACxB,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,aAAkB,GAC1B,MAAM,CAaR"}
1
+ {"version":3,"file":"format-date.d.ts","sourceRoot":"","sources":["../../src/lib/format-date.ts"],"names":[],"mappings":"AAKA,KAAK,aAAa,GAAG;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAwIF;;;;;;;;;;;;;GAaG;AAEH,wBAAgB,UAAU,CACxB,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,aAAkB,GAC1B,MAAM,CAaR"}
@@ -88,7 +88,7 @@ function getPartsWithTZ(date, locale, tz) {
88
88
  year: 0,
89
89
  month: 0,
90
90
  day: 0,
91
- dayOfWeek: date.getDay(),
91
+ dayOfWeek: 0,
92
92
  hour: 0,
93
93
  minute: 0,
94
94
  second: 0,
@@ -116,6 +116,8 @@ function getPartsWithTZ(date, locale, tz) {
116
116
  break;
117
117
  }
118
118
  }
119
+ // Derive dayOfWeek from the TZ-adjusted date components, not OS local time
120
+ p.dayOfWeek = new Date(Date.UTC(p.year, p.month - 1, p.day)).getUTCDay();
119
121
  return p;
120
122
  }
121
123
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"is-tomorrow.d.ts","sourceRoot":"","sources":["../../src/lib/is-tomorrow.ts"],"names":[],"mappings":"AAGA,KAAK,iBAAiB,GAAG;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CA2C/E"}
1
+ {"version":3,"file":"is-tomorrow.d.ts","sourceRoot":"","sources":["../../src/lib/is-tomorrow.ts"],"names":[],"mappings":"AAGA,KAAK,iBAAiB,GAAG;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAyC/E"}
@@ -32,13 +32,12 @@ function isTomorrow(date, options = {}) {
32
32
  }
33
33
  // Timezone-aware comparison
34
34
  const formatter = (0, dtf_js_1.getDTF)("en-US", timezone);
35
- const nowParts = formatter.formatToParts(now);
36
35
  const getPartValue = (parts, type) => parts.find((p) => p.type === type)?.value || "0";
37
- const nowYear = parseInt(getPartValue(nowParts, "year"), 10);
38
- const nowMonth = parseInt(getPartValue(nowParts, "month"), 10);
39
- const nowDay = parseInt(getPartValue(nowParts, "day"), 10);
40
- // Calculate tomorrow in the target timezone
41
- const tomorrowDate = new Date(Date.UTC(nowYear, nowMonth - 1, nowDay + 1));
36
+ // +24h from now always lands in tomorrow for any fixed-offset timezone.
37
+ // Date.UTC(localYear, localMonth-1, localDay+1) was wrong: it creates UTC
38
+ // midnight from local date parts, which represents the previous evening in
39
+ // timezones behind UTC (e.g. UTC-3 São Paulo).
40
+ const tomorrowDate = new Date(now.getTime() + 24 * 60 * 60 * 1000);
42
41
  const tomorrowParts = formatter.formatToParts(tomorrowDate);
43
42
  const tomorrowYear = getPartValue(tomorrowParts, "year");
44
43
  const tomorrowMonth = getPartValue(tomorrowParts, "month");
@@ -1 +1 @@
1
- {"version":3,"file":"is-yesterday.d.ts","sourceRoot":"","sources":["../../src/lib/is-yesterday.ts"],"names":[],"mappings":"AAGA,KAAK,kBAAkB,GAAG;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CA2CjF"}
1
+ {"version":3,"file":"is-yesterday.d.ts","sourceRoot":"","sources":["../../src/lib/is-yesterday.ts"],"names":[],"mappings":"AAGA,KAAK,kBAAkB,GAAG;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAyCjF"}
@@ -32,13 +32,12 @@ function isYesterday(date, options = {}) {
32
32
  }
33
33
  // Timezone-aware comparison
34
34
  const formatter = (0, dtf_js_1.getDTF)("en-US", timezone);
35
- const nowParts = formatter.formatToParts(now);
36
35
  const getPartValue = (parts, type) => parts.find((p) => p.type === type)?.value || "0";
37
- const nowYear = parseInt(getPartValue(nowParts, "year"), 10);
38
- const nowMonth = parseInt(getPartValue(nowParts, "month"), 10);
39
- const nowDay = parseInt(getPartValue(nowParts, "day"), 10);
40
- // Calculate yesterday in the target timezone
41
- const yesterdayDate = new Date(Date.UTC(nowYear, nowMonth - 1, nowDay - 1));
36
+ // -24h from now always lands in yesterday for any fixed-offset timezone.
37
+ // Date.UTC(localYear, localMonth-1, localDay-1) was wrong: it creates UTC
38
+ // midnight from local date parts, which represents the previous evening in
39
+ // timezones behind UTC (e.g. UTC-3 São Paulo).
40
+ const yesterdayDate = new Date(now.getTime() - 24 * 60 * 60 * 1000);
42
41
  const yesterdayParts = formatter.formatToParts(yesterdayDate);
43
42
  const yesterdayYear = getPartValue(yesterdayParts, "year");
44
43
  const yesterdayMonth = getPartValue(yesterdayParts, "month");