@gobrand/tiempo 2.2.3 → 2.3.0

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.
Files changed (240) hide show
  1. package/README.md +208 -12
  2. package/dist/addDays.d.ts +37 -0
  3. package/dist/addDays.d.ts.map +1 -0
  4. package/dist/addDays.js +8 -0
  5. package/dist/addDays.js.map +1 -0
  6. package/dist/addDays.test.d.ts +2 -0
  7. package/dist/addDays.test.d.ts.map +1 -0
  8. package/dist/addHours.d.ts +37 -0
  9. package/dist/addHours.d.ts.map +1 -0
  10. package/dist/addHours.js +8 -0
  11. package/dist/addHours.js.map +1 -0
  12. package/dist/addHours.test.d.ts +2 -0
  13. package/dist/addHours.test.d.ts.map +1 -0
  14. package/dist/addMicroseconds.d.ts +36 -0
  15. package/dist/addMicroseconds.d.ts.map +1 -0
  16. package/dist/addMicroseconds.js +8 -0
  17. package/dist/addMicroseconds.js.map +1 -0
  18. package/dist/addMicroseconds.test.d.ts +2 -0
  19. package/dist/addMicroseconds.test.d.ts.map +1 -0
  20. package/dist/addMilliseconds.d.ts +36 -0
  21. package/dist/addMilliseconds.d.ts.map +1 -0
  22. package/dist/addMilliseconds.js +8 -0
  23. package/dist/addMilliseconds.js.map +1 -0
  24. package/dist/addMilliseconds.test.d.ts +2 -0
  25. package/dist/addMilliseconds.test.d.ts.map +1 -0
  26. package/dist/addMinutes.d.ts +36 -0
  27. package/dist/addMinutes.d.ts.map +1 -0
  28. package/dist/addMinutes.js +8 -0
  29. package/dist/addMinutes.js.map +1 -0
  30. package/dist/addMinutes.test.d.ts +2 -0
  31. package/dist/addMinutes.test.d.ts.map +1 -0
  32. package/dist/addMonths.d.ts +37 -0
  33. package/dist/addMonths.d.ts.map +1 -0
  34. package/dist/addMonths.js +8 -0
  35. package/dist/addMonths.js.map +1 -0
  36. package/dist/addMonths.test.d.ts +2 -0
  37. package/dist/addMonths.test.d.ts.map +1 -0
  38. package/dist/addNanoseconds.d.ts +36 -0
  39. package/dist/addNanoseconds.d.ts.map +1 -0
  40. package/dist/addNanoseconds.js +8 -0
  41. package/dist/addNanoseconds.js.map +1 -0
  42. package/dist/addNanoseconds.test.d.ts +2 -0
  43. package/dist/addNanoseconds.test.d.ts.map +1 -0
  44. package/dist/addSeconds.d.ts +36 -0
  45. package/dist/addSeconds.d.ts.map +1 -0
  46. package/dist/addSeconds.js +8 -0
  47. package/dist/addSeconds.js.map +1 -0
  48. package/dist/addSeconds.test.d.ts +2 -0
  49. package/dist/addSeconds.test.d.ts.map +1 -0
  50. package/dist/addWeeks.d.ts +37 -0
  51. package/dist/addWeeks.d.ts.map +1 -0
  52. package/dist/addWeeks.js +8 -0
  53. package/dist/addWeeks.js.map +1 -0
  54. package/dist/addWeeks.test.d.ts +2 -0
  55. package/dist/addWeeks.test.d.ts.map +1 -0
  56. package/dist/addYears.d.ts +37 -0
  57. package/dist/addYears.d.ts.map +1 -0
  58. package/dist/addYears.js +8 -0
  59. package/dist/addYears.js.map +1 -0
  60. package/dist/addYears.test.d.ts +2 -0
  61. package/dist/addYears.test.d.ts.map +1 -0
  62. package/dist/chunk-2XHAHSB6.js +14 -0
  63. package/dist/chunk-2XHAHSB6.js.map +1 -0
  64. package/dist/chunk-4NJMCCUM.js +14 -0
  65. package/dist/chunk-4NJMCCUM.js.map +1 -0
  66. package/dist/chunk-52NEOY34.js +13 -0
  67. package/dist/chunk-52NEOY34.js.map +1 -0
  68. package/dist/chunk-7ATM7AXL.js +14 -0
  69. package/dist/chunk-7ATM7AXL.js.map +1 -0
  70. package/dist/chunk-A5VVBYNT.js +14 -0
  71. package/dist/chunk-A5VVBYNT.js.map +1 -0
  72. package/dist/chunk-ADQTZVMH.js +15 -0
  73. package/dist/chunk-ADQTZVMH.js.map +1 -0
  74. package/dist/chunk-AHMKY474.js +13 -0
  75. package/dist/chunk-AHMKY474.js.map +1 -0
  76. package/dist/chunk-BH2YB4MV.js +13 -0
  77. package/dist/chunk-BH2YB4MV.js.map +1 -0
  78. package/dist/chunk-BQBLSXK2.js +13 -0
  79. package/dist/chunk-BQBLSXK2.js.map +1 -0
  80. package/dist/chunk-CY746ZUQ.js +15 -0
  81. package/dist/chunk-CY746ZUQ.js.map +1 -0
  82. package/dist/chunk-DT2EWLHU.js +14 -0
  83. package/dist/chunk-DT2EWLHU.js.map +1 -0
  84. package/dist/chunk-EEQ3REET.js +15 -0
  85. package/dist/chunk-EEQ3REET.js.map +1 -0
  86. package/dist/chunk-EYO2ZJLH.js +14 -0
  87. package/dist/chunk-EYO2ZJLH.js.map +1 -0
  88. package/dist/chunk-HDBH7RTY.js +13 -0
  89. package/dist/chunk-HDBH7RTY.js.map +1 -0
  90. package/dist/chunk-ISHZRFVN.js +15 -0
  91. package/dist/chunk-ISHZRFVN.js.map +1 -0
  92. package/dist/chunk-J6G2I2TU.js +13 -0
  93. package/dist/chunk-J6G2I2TU.js.map +1 -0
  94. package/dist/chunk-JOD4ATPE.js +15 -0
  95. package/dist/chunk-JOD4ATPE.js.map +1 -0
  96. package/dist/chunk-L4SVABDH.js +14 -0
  97. package/dist/chunk-L4SVABDH.js.map +1 -0
  98. package/dist/chunk-LDO6PRNJ.js +15 -0
  99. package/dist/chunk-LDO6PRNJ.js.map +1 -0
  100. package/dist/chunk-NRD5HRZV.js +14 -0
  101. package/dist/chunk-NRD5HRZV.js.map +1 -0
  102. package/dist/chunk-PPB62JYV.js +15 -0
  103. package/dist/chunk-PPB62JYV.js.map +1 -0
  104. package/dist/chunk-Q2F3HEXB.js +14 -0
  105. package/dist/chunk-Q2F3HEXB.js.map +1 -0
  106. package/dist/chunk-S63QUP4W.js +15 -0
  107. package/dist/chunk-S63QUP4W.js.map +1 -0
  108. package/dist/chunk-U4RNUZXO.js +13 -0
  109. package/dist/chunk-U4RNUZXO.js.map +1 -0
  110. package/dist/chunk-V27NUBXQ.js +14 -0
  111. package/dist/chunk-V27NUBXQ.js.map +1 -0
  112. package/dist/chunk-VLZ3HQQA.js +15 -0
  113. package/dist/chunk-VLZ3HQQA.js.map +1 -0
  114. package/dist/chunk-WVHAYLBW.js +13 -0
  115. package/dist/chunk-WVHAYLBW.js.map +1 -0
  116. package/dist/{chunk-NL5LWPJI.js → chunk-XEDXPI5G.js} +4 -4
  117. package/dist/chunk-XW5MLXX5.js +13 -0
  118. package/dist/chunk-XW5MLXX5.js.map +1 -0
  119. package/dist/chunk-YKBP3G7L.js +13 -0
  120. package/dist/chunk-YKBP3G7L.js.map +1 -0
  121. package/dist/index.d.ts +29 -0
  122. package/dist/index.d.ts.map +1 -1
  123. package/dist/index.js +135 -19
  124. package/dist/intlFormatDistance.js +2 -2
  125. package/dist/isSameHour.d.ts +58 -0
  126. package/dist/isSameHour.d.ts.map +1 -0
  127. package/dist/isSameHour.js +8 -0
  128. package/dist/isSameHour.js.map +1 -0
  129. package/dist/isSameHour.test.d.ts +2 -0
  130. package/dist/isSameHour.test.d.ts.map +1 -0
  131. package/dist/isSameMicrosecond.d.ts +59 -0
  132. package/dist/isSameMicrosecond.d.ts.map +1 -0
  133. package/dist/isSameMicrosecond.js +8 -0
  134. package/dist/isSameMicrosecond.js.map +1 -0
  135. package/dist/isSameMicrosecond.test.d.ts +2 -0
  136. package/dist/isSameMicrosecond.test.d.ts.map +1 -0
  137. package/dist/isSameMillisecond.d.ts +59 -0
  138. package/dist/isSameMillisecond.d.ts.map +1 -0
  139. package/dist/isSameMillisecond.js +8 -0
  140. package/dist/isSameMillisecond.js.map +1 -0
  141. package/dist/isSameMillisecond.test.d.ts +2 -0
  142. package/dist/isSameMillisecond.test.d.ts.map +1 -0
  143. package/dist/isSameMinute.d.ts +58 -0
  144. package/dist/isSameMinute.d.ts.map +1 -0
  145. package/dist/isSameMinute.js +8 -0
  146. package/dist/isSameMinute.js.map +1 -0
  147. package/dist/isSameMinute.test.d.ts +2 -0
  148. package/dist/isSameMinute.test.d.ts.map +1 -0
  149. package/dist/isSameMonth.d.ts +58 -0
  150. package/dist/isSameMonth.d.ts.map +1 -0
  151. package/dist/isSameMonth.js +8 -0
  152. package/dist/isSameMonth.js.map +1 -0
  153. package/dist/isSameMonth.test.d.ts +2 -0
  154. package/dist/isSameMonth.test.d.ts.map +1 -0
  155. package/dist/isSameNanosecond.d.ts +59 -0
  156. package/dist/isSameNanosecond.d.ts.map +1 -0
  157. package/dist/isSameNanosecond.js +8 -0
  158. package/dist/isSameNanosecond.js.map +1 -0
  159. package/dist/isSameNanosecond.test.d.ts +2 -0
  160. package/dist/isSameNanosecond.test.d.ts.map +1 -0
  161. package/dist/isSameSecond.d.ts +59 -0
  162. package/dist/isSameSecond.d.ts.map +1 -0
  163. package/dist/isSameSecond.js +8 -0
  164. package/dist/isSameSecond.js.map +1 -0
  165. package/dist/isSameSecond.test.d.ts +2 -0
  166. package/dist/isSameSecond.test.d.ts.map +1 -0
  167. package/dist/isSameWeek.d.ts +72 -0
  168. package/dist/isSameWeek.d.ts.map +1 -0
  169. package/dist/isSameWeek.js +8 -0
  170. package/dist/isSameWeek.js.map +1 -0
  171. package/dist/isSameWeek.test.d.ts +2 -0
  172. package/dist/isSameWeek.test.d.ts.map +1 -0
  173. package/dist/isSameYear.d.ts +58 -0
  174. package/dist/isSameYear.d.ts.map +1 -0
  175. package/dist/isSameYear.js +8 -0
  176. package/dist/isSameYear.js.map +1 -0
  177. package/dist/isSameYear.test.d.ts +2 -0
  178. package/dist/isSameYear.test.d.ts.map +1 -0
  179. package/dist/subDays.d.ts +20 -0
  180. package/dist/subDays.d.ts.map +1 -0
  181. package/dist/subDays.js +9 -0
  182. package/dist/subDays.js.map +1 -0
  183. package/dist/subDays.test.d.ts +2 -0
  184. package/dist/subDays.test.d.ts.map +1 -0
  185. package/dist/subHours.d.ts +20 -0
  186. package/dist/subHours.d.ts.map +1 -0
  187. package/dist/subHours.js +9 -0
  188. package/dist/subHours.js.map +1 -0
  189. package/dist/subHours.test.d.ts +2 -0
  190. package/dist/subHours.test.d.ts.map +1 -0
  191. package/dist/subMicroseconds.d.ts +19 -0
  192. package/dist/subMicroseconds.d.ts.map +1 -0
  193. package/dist/subMicroseconds.js +9 -0
  194. package/dist/subMicroseconds.js.map +1 -0
  195. package/dist/subMicroseconds.test.d.ts +2 -0
  196. package/dist/subMicroseconds.test.d.ts.map +1 -0
  197. package/dist/subMilliseconds.d.ts +19 -0
  198. package/dist/subMilliseconds.d.ts.map +1 -0
  199. package/dist/subMilliseconds.js +9 -0
  200. package/dist/subMilliseconds.js.map +1 -0
  201. package/dist/subMilliseconds.test.d.ts +2 -0
  202. package/dist/subMilliseconds.test.d.ts.map +1 -0
  203. package/dist/subMinutes.d.ts +19 -0
  204. package/dist/subMinutes.d.ts.map +1 -0
  205. package/dist/subMinutes.js +9 -0
  206. package/dist/subMinutes.js.map +1 -0
  207. package/dist/subMinutes.test.d.ts +2 -0
  208. package/dist/subMinutes.test.d.ts.map +1 -0
  209. package/dist/subMonths.d.ts +20 -0
  210. package/dist/subMonths.d.ts.map +1 -0
  211. package/dist/subMonths.js +9 -0
  212. package/dist/subMonths.js.map +1 -0
  213. package/dist/subMonths.test.d.ts +2 -0
  214. package/dist/subMonths.test.d.ts.map +1 -0
  215. package/dist/subNanoseconds.d.ts +19 -0
  216. package/dist/subNanoseconds.d.ts.map +1 -0
  217. package/dist/subNanoseconds.js +9 -0
  218. package/dist/subNanoseconds.js.map +1 -0
  219. package/dist/subNanoseconds.test.d.ts +2 -0
  220. package/dist/subNanoseconds.test.d.ts.map +1 -0
  221. package/dist/subSeconds.d.ts +19 -0
  222. package/dist/subSeconds.d.ts.map +1 -0
  223. package/dist/subSeconds.js +9 -0
  224. package/dist/subSeconds.js.map +1 -0
  225. package/dist/subSeconds.test.d.ts +2 -0
  226. package/dist/subSeconds.test.d.ts.map +1 -0
  227. package/dist/subWeeks.d.ts +20 -0
  228. package/dist/subWeeks.d.ts.map +1 -0
  229. package/dist/subWeeks.js +9 -0
  230. package/dist/subWeeks.js.map +1 -0
  231. package/dist/subWeeks.test.d.ts +2 -0
  232. package/dist/subWeeks.test.d.ts.map +1 -0
  233. package/dist/subYears.d.ts +20 -0
  234. package/dist/subYears.d.ts.map +1 -0
  235. package/dist/subYears.js +9 -0
  236. package/dist/subYears.js.map +1 -0
  237. package/dist/subYears.test.d.ts +2 -0
  238. package/dist/subYears.test.d.ts.map +1 -0
  239. package/package.json +1 -1
  240. /package/dist/{chunk-NL5LWPJI.js.map → chunk-XEDXPI5G.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/isSameWeek.ts"],"sourcesContent":["import type{ Temporal } from '@js-temporal/polyfill';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\n\n/**\n * Returns true if both datetimes fall in the same ISO 8601 week.\n * Uses ISO week numbering where weeks start on Monday and the first week\n * of the year is the week containing January 4th.\n *\n * Compares the yearOfWeek and weekOfYear fields directly.\n *\n * Instant inputs are converted to UTC. For ZonedDateTime inputs, their\n * timezone is preserved. Convert to a common timezone before calling if\n * you need to compare from a specific perspective.\n *\n * @param date1 - First datetime (Instant or ZonedDateTime)\n * @param date2 - Second datetime (Instant or ZonedDateTime)\n * @returns true if both dates are in the same ISO week, false otherwise\n *\n * @example\n * ```ts\n * // Same timezone, same week (both in week 4 of 2025)\n * const monday = Temporal.ZonedDateTime.from('2025-01-20T08:00:00Z[UTC]'); // Monday, Week 4\n * const sunday = Temporal.ZonedDateTime.from('2025-01-26T23:59:59Z[UTC]'); // Sunday, Week 4\n *\n * isSameWeek(monday, sunday); // true\n * ```\n *\n * @example\n * ```ts\n * // Same timezone, different weeks\n * const week3 = Temporal.ZonedDateTime.from('2025-01-19T23:59:59Z[UTC]'); // Sunday, Week 3\n * const week4 = Temporal.ZonedDateTime.from('2025-01-20T00:00:00Z[UTC]'); // Monday, Week 4\n *\n * isSameWeek(week3, week4); // false\n * ```\n *\n * @example\n * ```ts\n * // Different timezones - compares their local calendar weeks\n * const ny = Temporal.ZonedDateTime.from('2025-01-26T23:00:00-05:00[America/New_York]');\n * const tokyo = Temporal.ZonedDateTime.from('2025-01-27T13:00:00+09:00[Asia/Tokyo]');\n *\n * // Same instant, different local weeks from each person's perspective\n * isSameWeek(ny, tokyo); // false (Week 4 Sun in NY, Week 5 Mon in Tokyo)\n *\n * // Convert to UTC to compare in UTC timezone\n * isSameWeek(ny.withTimeZone('UTC'), tokyo.withTimeZone('UTC')); // true (both Week 5 in UTC)\n *\n * // Convert to NY timezone to compare from NY perspective\n * isSameWeek(ny, tokyo.withTimeZone('America/New_York')); // true (both Week 4 in NY)\n * ```\n *\n * @example\n * ```ts\n * // Instant inputs are converted to UTC\n * const instant1 = Temporal.Instant.from('2025-01-20T00:00:00Z'); // Monday, Week 4\n * const instant2 = Temporal.Instant.from('2025-01-26T23:59:59Z'); // Sunday, Week 4\n *\n * isSameWeek(instant1, instant2); // true (both Week 4 2025 in UTC)\n * ```\n *\n * @example\n * ```ts\n * // ISO week years can differ from calendar years\n * // December 29, 2024 is in Week 52 of 2024\n * const dec29 = Temporal.ZonedDateTime.from('2024-12-29T12:00:00Z[UTC]');\n * // January 5, 2025 is in Week 1 of 2025\n * const jan5 = Temporal.ZonedDateTime.from('2025-01-05T12:00:00Z[UTC]');\n *\n * isSameWeek(dec29, jan5); // false (different ISO weeks)\n * ```\n */\nexport function isSameWeek(\n date1: Temporal.Instant | Temporal.ZonedDateTime,\n date2: Temporal.Instant | Temporal.ZonedDateTime\n): boolean {\n const zoned1 = normalizeTemporalInput(date1);\n const zoned2 = normalizeTemporalInput(date2);\n\n return (\n zoned1.yearOfWeek === zoned2.yearOfWeek &&\n zoned1.weekOfYear === zoned2.weekOfYear\n );\n}\n"],"mappings":";;;;;AAwEO,SAAS,WACd,OACA,OACS;AACT,QAAM,SAAS,uBAAuB,KAAK;AAC3C,QAAM,SAAS,uBAAuB,KAAK;AAE3C,SACE,OAAO,eAAe,OAAO,cAC7B,OAAO,eAAe,OAAO;AAEjC;","names":[]}
@@ -0,0 +1,14 @@
1
+ import {
2
+ normalizeTemporalInput
3
+ } from "./chunk-MJSZNWCV.js";
4
+
5
+ // src/addDays.ts
6
+ function addDays(input, days) {
7
+ const zonedDateTime = normalizeTemporalInput(input);
8
+ return zonedDateTime.add({ days });
9
+ }
10
+
11
+ export {
12
+ addDays
13
+ };
14
+ //# sourceMappingURL=chunk-L4SVABDH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/addDays.ts"],"sourcesContent":["import type { Temporal } from '@js-temporal/polyfill';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\n\n/**\n * Adds the specified number of days to a datetime.\n *\n * Properly handles DST transitions and calendar edge cases through Temporal API.\n * Instant inputs are converted to UTC. For ZonedDateTime inputs, their timezone is preserved.\n *\n * @param input - A Temporal.Instant (UTC) or Temporal.ZonedDateTime\n * @param days - Number of days to add (can be negative to subtract)\n * @returns ZonedDateTime with days added, in the same timezone as input\n *\n * @example\n * ```ts\n * // From Instant (always UTC)\n * const instant = Temporal.Instant.from('2025-01-20T12:00:00Z');\n * const result = addDays(instant, 5);\n * // 2025-01-25T12:00:00Z[UTC] (5 days later)\n * ```\n *\n * @example\n * ```ts\n * // From ZonedDateTime (preserves timezone)\n * const zoned = Temporal.ZonedDateTime.from('2025-01-20T15:30:00-05:00[America/New_York]');\n * const result = addDays(zoned, 10);\n * // 2025-01-30T15:30:00-05:00[America/New_York]\n * ```\n *\n * @example\n * ```ts\n * // Negative values subtract days\n * const instant = Temporal.Instant.from('2025-01-20T12:00:00Z');\n * const result = addDays(instant, -7);\n * // 2025-01-13T12:00:00Z[UTC] (7 days earlier)\n * ```\n */\nexport function addDays(\n input: Temporal.Instant | Temporal.ZonedDateTime,\n days: number\n): Temporal.ZonedDateTime {\n const zonedDateTime = normalizeTemporalInput(input);\n return zonedDateTime.add({ days });\n}\n"],"mappings":";;;;;AAqCO,SAAS,QACd,OACA,MACwB;AACxB,QAAM,gBAAgB,uBAAuB,KAAK;AAClD,SAAO,cAAc,IAAI,EAAE,KAAK,CAAC;AACnC;","names":[]}
@@ -0,0 +1,15 @@
1
+ import {
2
+ normalizeTemporalInput
3
+ } from "./chunk-MJSZNWCV.js";
4
+
5
+ // src/isSameMinute.ts
6
+ function isSameMinute(date1, date2) {
7
+ const zoned1 = normalizeTemporalInput(date1);
8
+ const zoned2 = normalizeTemporalInput(date2);
9
+ return zoned1.year === zoned2.year && zoned1.month === zoned2.month && zoned1.day === zoned2.day && zoned1.hour === zoned2.hour && zoned1.minute === zoned2.minute;
10
+ }
11
+
12
+ export {
13
+ isSameMinute
14
+ };
15
+ //# sourceMappingURL=chunk-LDO6PRNJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/isSameMinute.ts"],"sourcesContent":["import type{ Temporal } from '@js-temporal/polyfill';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\n\n/**\n * Returns true if both datetimes fall in the same minute.\n * Compares the year, month, day, hour, and minute fields directly.\n *\n * Instant inputs are converted to UTC. For ZonedDateTime inputs, their\n * timezone is preserved. Convert to a common timezone before calling if\n * you need to compare from a specific perspective.\n *\n * @param date1 - First datetime (Instant or ZonedDateTime)\n * @param date2 - Second datetime (Instant or ZonedDateTime)\n * @returns true if both dates are in the same minute, false otherwise\n *\n * @example\n * ```ts\n * // Same timezone, same minute\n * const start = Temporal.ZonedDateTime.from('2025-01-20T14:30:00Z[UTC]');\n * const end = Temporal.ZonedDateTime.from('2025-01-20T14:30:59.999Z[UTC]');\n *\n * isSameMinute(start, end); // true\n * ```\n *\n * @example\n * ```ts\n * // Same timezone, different minutes\n * const min30 = Temporal.ZonedDateTime.from('2025-01-20T14:30:59Z[UTC]');\n * const min31 = Temporal.ZonedDateTime.from('2025-01-20T14:31:00Z[UTC]');\n *\n * isSameMinute(min30, min31); // false\n * ```\n *\n * @example\n * ```ts\n * // Different timezones - compares their local minutes\n * const ny = Temporal.ZonedDateTime.from('2025-01-20T14:30:45-05:00[America/New_York]');\n * const tokyo = Temporal.ZonedDateTime.from('2025-01-21T04:30:45+09:00[Asia/Tokyo]');\n *\n * // Same instant, different local minutes from each person's perspective\n * isSameMinute(ny, tokyo); // false (14:30:xx in NY, 04:30:xx in Tokyo)\n *\n * // Convert to UTC to compare in UTC timezone\n * isSameMinute(ny.withTimeZone('UTC'), tokyo.withTimeZone('UTC')); // true (both 19:30:xx in UTC)\n *\n * // Convert to NY timezone to compare from NY perspective\n * isSameMinute(ny, tokyo.withTimeZone('America/New_York')); // true (both 14:30:xx in NY)\n * ```\n *\n * @example\n * ```ts\n * // Instant inputs are converted to UTC\n * const instant1 = Temporal.Instant.from('2025-01-20T14:30:15Z');\n * const instant2 = Temporal.Instant.from('2025-01-20T14:30:45Z');\n *\n * isSameMinute(instant1, instant2); // true (both 14:30:xx in UTC)\n * ```\n */\nexport function isSameMinute(\n date1: Temporal.Instant | Temporal.ZonedDateTime,\n date2: Temporal.Instant | Temporal.ZonedDateTime\n): boolean {\n const zoned1 = normalizeTemporalInput(date1);\n const zoned2 = normalizeTemporalInput(date2);\n\n return (\n zoned1.year === zoned2.year &&\n zoned1.month === zoned2.month &&\n zoned1.day === zoned2.day &&\n zoned1.hour === zoned2.hour &&\n zoned1.minute === zoned2.minute\n );\n}\n"],"mappings":";;;;;AA0DO,SAAS,aACd,OACA,OACS;AACT,QAAM,SAAS,uBAAuB,KAAK;AAC3C,QAAM,SAAS,uBAAuB,KAAK;AAE3C,SACE,OAAO,SAAS,OAAO,QACvB,OAAO,UAAU,OAAO,SACxB,OAAO,QAAQ,OAAO,OACtB,OAAO,SAAS,OAAO,QACvB,OAAO,WAAW,OAAO;AAE7B;","names":[]}
@@ -0,0 +1,14 @@
1
+ import {
2
+ normalizeTemporalInput
3
+ } from "./chunk-MJSZNWCV.js";
4
+
5
+ // src/addSeconds.ts
6
+ function addSeconds(input, seconds) {
7
+ const zonedDateTime = normalizeTemporalInput(input);
8
+ return zonedDateTime.add({ seconds });
9
+ }
10
+
11
+ export {
12
+ addSeconds
13
+ };
14
+ //# sourceMappingURL=chunk-NRD5HRZV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/addSeconds.ts"],"sourcesContent":["import type { Temporal } from '@js-temporal/polyfill';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\n\n/**\n * Adds the specified number of seconds to a datetime.\n *\n * Instant inputs are converted to UTC. For ZonedDateTime inputs, their timezone is preserved.\n *\n * @param input - A Temporal.Instant (UTC) or Temporal.ZonedDateTime\n * @param seconds - Number of seconds to add (can be negative to subtract)\n * @returns ZonedDateTime with seconds added, in the same timezone as input\n *\n * @example\n * ```ts\n * // From Instant (always UTC)\n * const instant = Temporal.Instant.from('2025-01-20T12:00:00Z');\n * const result = addSeconds(instant, 45);\n * // 2025-01-20T12:00:45Z[UTC] (45 seconds later)\n * ```\n *\n * @example\n * ```ts\n * // From ZonedDateTime (preserves timezone)\n * const zoned = Temporal.ZonedDateTime.from('2025-01-20T15:30:00-05:00[America/New_York]');\n * const result = addSeconds(zoned, 3600);\n * // 2025-01-20T16:30:00-05:00[America/New_York]\n * ```\n *\n * @example\n * ```ts\n * // Negative values subtract seconds\n * const instant = Temporal.Instant.from('2025-01-20T12:00:00Z');\n * const result = addSeconds(instant, -30);\n * // 2025-01-20T11:59:30Z[UTC] (30 seconds earlier)\n * ```\n */\nexport function addSeconds(\n input: Temporal.Instant | Temporal.ZonedDateTime,\n seconds: number\n): Temporal.ZonedDateTime {\n const zonedDateTime = normalizeTemporalInput(input);\n return zonedDateTime.add({ seconds });\n}\n"],"mappings":";;;;;AAoCO,SAAS,WACd,OACA,SACwB;AACxB,QAAM,gBAAgB,uBAAuB,KAAK;AAClD,SAAO,cAAc,IAAI,EAAE,QAAQ,CAAC;AACtC;","names":[]}
@@ -0,0 +1,15 @@
1
+ import {
2
+ normalizeTemporalInput
3
+ } from "./chunk-MJSZNWCV.js";
4
+
5
+ // src/isSameMicrosecond.ts
6
+ function isSameMicrosecond(date1, date2) {
7
+ const zoned1 = normalizeTemporalInput(date1);
8
+ const zoned2 = normalizeTemporalInput(date2);
9
+ return zoned1.year === zoned2.year && zoned1.month === zoned2.month && zoned1.day === zoned2.day && zoned1.hour === zoned2.hour && zoned1.minute === zoned2.minute && zoned1.second === zoned2.second && zoned1.millisecond === zoned2.millisecond && zoned1.microsecond === zoned2.microsecond;
10
+ }
11
+
12
+ export {
13
+ isSameMicrosecond
14
+ };
15
+ //# sourceMappingURL=chunk-PPB62JYV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/isSameMicrosecond.ts"],"sourcesContent":["import type { Temporal } from '@js-temporal/polyfill';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\n\n/**\n * Returns true if both datetimes fall in the same microsecond.\n * Compares the year, month, day, hour, minute, second, millisecond, and microsecond fields directly.\n * Ignores sub-microsecond precision (nanoseconds).\n *\n * Instant inputs are converted to UTC. For ZonedDateTime inputs, their\n * timezone is preserved. Convert to a common timezone before calling if\n * you need to compare from a specific perspective.\n *\n * @param date1 - First datetime (Instant or ZonedDateTime)\n * @param date2 - Second datetime (Instant or ZonedDateTime)\n * @returns true if both dates are in the same microsecond, false otherwise\n *\n * @example\n * ```ts\n * // Same timezone, same microsecond\n * const time1 = Temporal.ZonedDateTime.from('2025-01-20T14:30:45.123456Z[UTC]');\n * const time2 = Temporal.ZonedDateTime.from('2025-01-20T14:30:45.123456999Z[UTC]');\n *\n * isSameMicrosecond(time1, time2); // true\n * ```\n *\n * @example\n * ```ts\n * // Same timezone, different microseconds\n * const us456 = Temporal.ZonedDateTime.from('2025-01-20T14:30:45.123456Z[UTC]');\n * const us457 = Temporal.ZonedDateTime.from('2025-01-20T14:30:45.123457Z[UTC]');\n *\n * isSameMicrosecond(us456, us457); // false\n * ```\n *\n * @example\n * ```ts\n * // Different timezones - compares their local microseconds\n * const ny = Temporal.ZonedDateTime.from('2025-01-20T14:30:45.123456-05:00[America/New_York]');\n * const tokyo = Temporal.ZonedDateTime.from('2025-01-21T04:30:45.987654+09:00[Asia/Tokyo]');\n *\n * // Same instant, different local microseconds from each person's perspective\n * isSameMicrosecond(ny, tokyo); // false (14:30:45.123456 in NY, 04:30:45.987654 in Tokyo)\n *\n * // Convert to UTC to compare in UTC timezone\n * isSameMicrosecond(ny.withTimeZone('UTC'), tokyo.withTimeZone('UTC')); // true (both 19:30:45.123456 in UTC)\n *\n * // Convert to NY timezone to compare from NY perspective\n * isSameMicrosecond(ny, tokyo.withTimeZone('America/New_York')); // true (both 14:30:45.123456 in NY)\n * ```\n *\n * @example\n * ```ts\n * // Instant inputs are converted to UTC\n * const instant1 = Temporal.Instant.from('2025-01-20T14:30:45.123456789Z');\n * const instant2 = Temporal.Instant.from('2025-01-20T14:30:45.123456999Z');\n *\n * isSameMicrosecond(instant1, instant2); // true (both 14:30:45.123456 in UTC)\n * ```\n */\nexport function isSameMicrosecond(\n date1: Temporal.Instant | Temporal.ZonedDateTime,\n date2: Temporal.Instant | Temporal.ZonedDateTime\n): boolean {\n const zoned1 = normalizeTemporalInput(date1);\n const zoned2 = normalizeTemporalInput(date2);\n\n return (\n zoned1.year === zoned2.year &&\n zoned1.month === zoned2.month &&\n zoned1.day === zoned2.day &&\n zoned1.hour === zoned2.hour &&\n zoned1.minute === zoned2.minute &&\n zoned1.second === zoned2.second &&\n zoned1.millisecond === zoned2.millisecond &&\n zoned1.microsecond === zoned2.microsecond\n );\n}\n"],"mappings":";;;;;AA2DO,SAAS,kBACd,OACA,OACS;AACT,QAAM,SAAS,uBAAuB,KAAK;AAC3C,QAAM,SAAS,uBAAuB,KAAK;AAE3C,SACE,OAAO,SAAS,OAAO,QACvB,OAAO,UAAU,OAAO,SACxB,OAAO,QAAQ,OAAO,OACtB,OAAO,SAAS,OAAO,QACvB,OAAO,WAAW,OAAO,UACzB,OAAO,WAAW,OAAO,UACzB,OAAO,gBAAgB,OAAO,eAC9B,OAAO,gBAAgB,OAAO;AAElC;","names":[]}
@@ -0,0 +1,14 @@
1
+ import {
2
+ normalizeTemporalInput
3
+ } from "./chunk-MJSZNWCV.js";
4
+
5
+ // src/addYears.ts
6
+ function addYears(input, years) {
7
+ const zonedDateTime = normalizeTemporalInput(input);
8
+ return zonedDateTime.add({ years });
9
+ }
10
+
11
+ export {
12
+ addYears
13
+ };
14
+ //# sourceMappingURL=chunk-Q2F3HEXB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/addYears.ts"],"sourcesContent":["import type { Temporal } from '@js-temporal/polyfill';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\n\n/**\n * Adds the specified number of years to a datetime.\n *\n * Properly handles leap years and calendar edge cases through Temporal API.\n * Instant inputs are converted to UTC. For ZonedDateTime inputs, their timezone is preserved.\n *\n * @param input - A Temporal.Instant (UTC) or Temporal.ZonedDateTime\n * @param years - Number of years to add (can be negative to subtract)\n * @returns ZonedDateTime with years added, in the same timezone as input\n *\n * @example\n * ```ts\n * // From Instant (always UTC)\n * const instant = Temporal.Instant.from('2025-01-20T12:00:00Z');\n * const result = addYears(instant, 2);\n * // 2027-01-20T12:00:00Z[UTC] (2 years later)\n * ```\n *\n * @example\n * ```ts\n * // From ZonedDateTime (preserves timezone)\n * const zoned = Temporal.ZonedDateTime.from('2025-01-20T15:30:00-05:00[America/New_York]');\n * const result = addYears(zoned, 1);\n * // 2026-01-20T15:30:00-05:00[America/New_York]\n * ```\n *\n * @example\n * ```ts\n * // Leap year handling\n * const instant = Temporal.Instant.from('2024-02-29T12:00:00Z');\n * const result = addYears(instant, 1);\n * // 2025-02-28T12:00:00Z[UTC] (Feb 29 → Feb 28)\n * ```\n */\nexport function addYears(\n input: Temporal.Instant | Temporal.ZonedDateTime,\n years: number\n): Temporal.ZonedDateTime {\n const zonedDateTime = normalizeTemporalInput(input);\n return zonedDateTime.add({ years });\n}\n"],"mappings":";;;;;AAqCO,SAAS,SACd,OACA,OACwB;AACxB,QAAM,gBAAgB,uBAAuB,KAAK;AAClD,SAAO,cAAc,IAAI,EAAE,MAAM,CAAC;AACpC;","names":[]}
@@ -0,0 +1,15 @@
1
+ import {
2
+ normalizeTemporalInput
3
+ } from "./chunk-MJSZNWCV.js";
4
+
5
+ // src/isSameNanosecond.ts
6
+ function isSameNanosecond(date1, date2) {
7
+ const zoned1 = normalizeTemporalInput(date1);
8
+ const zoned2 = normalizeTemporalInput(date2);
9
+ return zoned1.year === zoned2.year && zoned1.month === zoned2.month && zoned1.day === zoned2.day && zoned1.hour === zoned2.hour && zoned1.minute === zoned2.minute && zoned1.second === zoned2.second && zoned1.millisecond === zoned2.millisecond && zoned1.microsecond === zoned2.microsecond && zoned1.nanosecond === zoned2.nanosecond;
10
+ }
11
+
12
+ export {
13
+ isSameNanosecond
14
+ };
15
+ //# sourceMappingURL=chunk-S63QUP4W.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/isSameNanosecond.ts"],"sourcesContent":["import type{ Temporal } from '@js-temporal/polyfill';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\n\n/**\n * Returns true if both datetimes represent the exact same nanosecond.\n * Compares all time fields: year, month, day, hour, minute, second, millisecond, microsecond, and nanosecond.\n * This is the most precise comparison possible, representing exact instant equality in their respective timezones.\n *\n * Instant inputs are converted to UTC. For ZonedDateTime inputs, their\n * timezone is preserved. Convert to a common timezone before calling if\n * you need to compare from a specific perspective.\n *\n * @param date1 - First datetime (Instant or ZonedDateTime)\n * @param date2 - Second datetime (Instant or ZonedDateTime)\n * @returns true if both dates are in the exact same nanosecond, false otherwise\n *\n * @example\n * ```ts\n * // Same timezone, exact same nanosecond\n * const time1 = Temporal.ZonedDateTime.from('2025-01-20T14:30:45.123456789Z[UTC]');\n * const time2 = Temporal.ZonedDateTime.from('2025-01-20T14:30:45.123456789Z[UTC]');\n *\n * isSameNanosecond(time1, time2); // true\n * ```\n *\n * @example\n * ```ts\n * // Same timezone, different nanoseconds\n * const ns789 = Temporal.ZonedDateTime.from('2025-01-20T14:30:45.123456789Z[UTC]');\n * const ns790 = Temporal.ZonedDateTime.from('2025-01-20T14:30:45.123456790Z[UTC]');\n *\n * isSameNanosecond(ns789, ns790); // false\n * ```\n *\n * @example\n * ```ts\n * // Different timezones - compares their local nanoseconds\n * const ny = Temporal.ZonedDateTime.from('2025-01-20T14:30:45.123456789-05:00[America/New_York]');\n * const tokyo = Temporal.ZonedDateTime.from('2025-01-21T04:30:45.987654321+09:00[Asia/Tokyo]');\n *\n * // Same instant, different local nanoseconds from each person's perspective\n * isSameNanosecond(ny, tokyo); // false (14:30:45.123456789 in NY, 04:30:45.987654321 in Tokyo)\n *\n * // Convert to UTC to compare in UTC timezone\n * isSameNanosecond(ny.withTimeZone('UTC'), tokyo.withTimeZone('UTC')); // true (both 19:30:45.123456789 in UTC)\n *\n * // Convert to NY timezone to compare from NY perspective\n * isSameNanosecond(ny, tokyo.withTimeZone('America/New_York')); // true (both 14:30:45.123456789 in NY)\n * ```\n *\n * @example\n * ```ts\n * // Instant inputs are converted to UTC\n * const instant1 = Temporal.Instant.from('2025-01-20T14:30:45.123456789Z');\n * const instant2 = Temporal.Instant.from('2025-01-20T14:30:45.123456789Z');\n *\n * isSameNanosecond(instant1, instant2); // true\n * ```\n */\nexport function isSameNanosecond(\n date1: Temporal.Instant | Temporal.ZonedDateTime,\n date2: Temporal.Instant | Temporal.ZonedDateTime\n): boolean {\n const zoned1 = normalizeTemporalInput(date1);\n const zoned2 = normalizeTemporalInput(date2);\n\n return (\n zoned1.year === zoned2.year &&\n zoned1.month === zoned2.month &&\n zoned1.day === zoned2.day &&\n zoned1.hour === zoned2.hour &&\n zoned1.minute === zoned2.minute &&\n zoned1.second === zoned2.second &&\n zoned1.millisecond === zoned2.millisecond &&\n zoned1.microsecond === zoned2.microsecond &&\n zoned1.nanosecond === zoned2.nanosecond\n );\n}\n"],"mappings":";;;;;AA2DO,SAAS,iBACd,OACA,OACS;AACT,QAAM,SAAS,uBAAuB,KAAK;AAC3C,QAAM,SAAS,uBAAuB,KAAK;AAE3C,SACE,OAAO,SAAS,OAAO,QACvB,OAAO,UAAU,OAAO,SACxB,OAAO,QAAQ,OAAO,OACtB,OAAO,SAAS,OAAO,QACvB,OAAO,WAAW,OAAO,UACzB,OAAO,WAAW,OAAO,UACzB,OAAO,gBAAgB,OAAO,eAC9B,OAAO,gBAAgB,OAAO,eAC9B,OAAO,eAAe,OAAO;AAEjC;","names":[]}
@@ -0,0 +1,13 @@
1
+ import {
2
+ addWeeks
3
+ } from "./chunk-DT2EWLHU.js";
4
+
5
+ // src/subWeeks.ts
6
+ function subWeeks(input, weeks) {
7
+ return addWeeks(input, -weeks);
8
+ }
9
+
10
+ export {
11
+ subWeeks
12
+ };
13
+ //# sourceMappingURL=chunk-U4RNUZXO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/subWeeks.ts"],"sourcesContent":["import type { Temporal } from '@js-temporal/polyfill';\nimport { addWeeks } from './addWeeks';\n\n/**\n * Subtracts the specified number of weeks from a datetime.\n *\n * This is a convenience wrapper around addWeeks with negated value.\n * Properly handles DST transitions and calendar edge cases through Temporal API.\n *\n * @param input - A Temporal.Instant (UTC) or Temporal.ZonedDateTime\n * @param weeks - Number of weeks to subtract\n * @returns ZonedDateTime with weeks subtracted, in the same timezone as input\n *\n * @example\n * ```ts\n * const instant = Temporal.Instant.from('2025-02-03T12:00:00Z');\n * const result = subWeeks(instant, 2);\n * // 2025-01-20T12:00:00Z[UTC] (2 weeks earlier)\n * ```\n */\nexport function subWeeks(\n input: Temporal.Instant | Temporal.ZonedDateTime,\n weeks: number\n): Temporal.ZonedDateTime {\n return addWeeks(input, -weeks);\n}\n"],"mappings":";;;;;AAoBO,SAAS,SACd,OACA,OACwB;AACxB,SAAO,SAAS,OAAO,CAAC,KAAK;AAC/B;","names":[]}
@@ -0,0 +1,14 @@
1
+ import {
2
+ normalizeTemporalInput
3
+ } from "./chunk-MJSZNWCV.js";
4
+
5
+ // src/addMicroseconds.ts
6
+ function addMicroseconds(input, microseconds) {
7
+ const zonedDateTime = normalizeTemporalInput(input);
8
+ return zonedDateTime.add({ microseconds });
9
+ }
10
+
11
+ export {
12
+ addMicroseconds
13
+ };
14
+ //# sourceMappingURL=chunk-V27NUBXQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/addMicroseconds.ts"],"sourcesContent":["import type { Temporal } from '@js-temporal/polyfill';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\n\n/**\n * Adds the specified number of microseconds to a datetime.\n *\n * Instant inputs are converted to UTC. For ZonedDateTime inputs, their timezone is preserved.\n *\n * @param input - A Temporal.Instant (UTC) or Temporal.ZonedDateTime\n * @param microseconds - Number of microseconds to add (can be negative to subtract)\n * @returns ZonedDateTime with microseconds added, in the same timezone as input\n *\n * @example\n * ```ts\n * // From Instant (always UTC)\n * const instant = Temporal.Instant.from('2025-01-20T12:00:00Z');\n * const result = addMicroseconds(instant, 500);\n * // 2025-01-20T12:00:00.000500Z[UTC] (500 microseconds later)\n * ```\n *\n * @example\n * ```ts\n * // From ZonedDateTime (preserves timezone)\n * const zoned = Temporal.ZonedDateTime.from('2025-01-20T15:30:00-05:00[America/New_York]');\n * const result = addMicroseconds(zoned, 1000);\n * // 2025-01-20T15:30:00.001-05:00[America/New_York]\n * ```\n *\n * @example\n * ```ts\n * // Negative values subtract microseconds\n * const instant = Temporal.Instant.from('2025-01-20T12:00:00.001Z');\n * const result = addMicroseconds(instant, -500);\n * // 2025-01-20T12:00:00.000500Z[UTC] (500 microseconds earlier)\n * ```\n */\nexport function addMicroseconds(\n input: Temporal.Instant | Temporal.ZonedDateTime,\n microseconds: number\n): Temporal.ZonedDateTime {\n const zonedDateTime = normalizeTemporalInput(input);\n return zonedDateTime.add({ microseconds });\n}\n"],"mappings":";;;;;AAoCO,SAAS,gBACd,OACA,cACwB;AACxB,QAAM,gBAAgB,uBAAuB,KAAK;AAClD,SAAO,cAAc,IAAI,EAAE,aAAa,CAAC;AAC3C;","names":[]}
@@ -0,0 +1,15 @@
1
+ import {
2
+ normalizeTemporalInput
3
+ } from "./chunk-MJSZNWCV.js";
4
+
5
+ // src/isSameYear.ts
6
+ function isSameYear(date1, date2) {
7
+ const zoned1 = normalizeTemporalInput(date1);
8
+ const zoned2 = normalizeTemporalInput(date2);
9
+ return zoned1.year === zoned2.year;
10
+ }
11
+
12
+ export {
13
+ isSameYear
14
+ };
15
+ //# sourceMappingURL=chunk-VLZ3HQQA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/isSameYear.ts"],"sourcesContent":["import type{ Temporal } from '@js-temporal/polyfill';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\n\n/**\n * Returns true if both datetimes fall in the same calendar year.\n * Compares the year field directly.\n *\n * Instant inputs are converted to UTC. For ZonedDateTime inputs, their\n * timezone is preserved. Convert to a common timezone before calling if\n * you need to compare from a specific perspective.\n *\n * @param date1 - First datetime (Instant or ZonedDateTime)\n * @param date2 - Second datetime (Instant or ZonedDateTime)\n * @returns true if both dates are in the same calendar year, false otherwise\n *\n * @example\n * ```ts\n * // Same timezone, same year\n * const jan = Temporal.ZonedDateTime.from('2025-01-20T08:00:00Z[UTC]');\n * const dec = Temporal.ZonedDateTime.from('2025-12-31T23:59:59Z[UTC]');\n *\n * isSameYear(jan, dec); // true\n * ```\n *\n * @example\n * ```ts\n * // Same timezone, different years\n * const endOf2024 = Temporal.ZonedDateTime.from('2024-12-31T23:59:59Z[UTC]');\n * const startOf2025 = Temporal.ZonedDateTime.from('2025-01-01T00:00:00Z[UTC]');\n *\n * isSameYear(endOf2024, startOf2025); // false\n * ```\n *\n * @example\n * ```ts\n * // Different timezones - compares their local calendar years\n * const ny = Temporal.ZonedDateTime.from('2024-12-31T23:00:00-05:00[America/New_York]');\n * const tokyo = Temporal.ZonedDateTime.from('2025-01-01T13:00:00+09:00[Asia/Tokyo]');\n *\n * // Same instant, different calendar years from each person's perspective\n * isSameYear(ny, tokyo); // false (2024 in NY, 2025 in Tokyo)\n *\n * // Convert to UTC to compare in UTC timezone\n * isSameYear(ny.withTimeZone('UTC'), tokyo.withTimeZone('UTC')); // true (both 2025 in UTC)\n *\n * // Convert to NY timezone to compare from NY perspective\n * isSameYear(ny, tokyo.withTimeZone('America/New_York')); // true (both 2024 in NY)\n * ```\n *\n * @example\n * ```ts\n * // Instant inputs are converted to UTC\n * const instant1 = Temporal.Instant.from('2025-01-01T00:00:00Z');\n * const instant2 = Temporal.Instant.from('2025-12-31T23:59:59Z');\n *\n * isSameYear(instant1, instant2); // true (both 2025 in UTC)\n * ```\n */\nexport function isSameYear(\n date1: Temporal.Instant | Temporal.ZonedDateTime,\n date2: Temporal.Instant | Temporal.ZonedDateTime\n): boolean {\n const zoned1 = normalizeTemporalInput(date1);\n const zoned2 = normalizeTemporalInput(date2);\n\n return zoned1.year === zoned2.year;\n}\n"],"mappings":";;;;;AA0DO,SAAS,WACd,OACA,OACS;AACT,QAAM,SAAS,uBAAuB,KAAK;AAC3C,QAAM,SAAS,uBAAuB,KAAK;AAE3C,SAAO,OAAO,SAAS,OAAO;AAChC;","names":[]}
@@ -0,0 +1,13 @@
1
+ import {
2
+ addNanoseconds
3
+ } from "./chunk-EYO2ZJLH.js";
4
+
5
+ // src/subNanoseconds.ts
6
+ function subNanoseconds(input, nanoseconds) {
7
+ return addNanoseconds(input, -nanoseconds);
8
+ }
9
+
10
+ export {
11
+ subNanoseconds
12
+ };
13
+ //# sourceMappingURL=chunk-WVHAYLBW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/subNanoseconds.ts"],"sourcesContent":["import type { Temporal } from '@js-temporal/polyfill';\nimport { addNanoseconds } from './addNanoseconds';\n\n/**\n * Subtracts the specified number of nanoseconds from a datetime.\n *\n * This is a convenience wrapper around addNanoseconds with negated value.\n *\n * @param input - A Temporal.Instant (UTC) or Temporal.ZonedDateTime\n * @param nanoseconds - Number of nanoseconds to subtract\n * @returns ZonedDateTime with nanoseconds subtracted, in the same timezone as input\n *\n * @example\n * ```ts\n * const instant = Temporal.Instant.from('2025-01-20T12:00:00.000001Z');\n * const result = subNanoseconds(instant, 500);\n * // 2025-01-20T12:00:00.000000500Z[UTC] (500 nanoseconds earlier)\n * ```\n */\nexport function subNanoseconds(\n input: Temporal.Instant | Temporal.ZonedDateTime,\n nanoseconds: number\n): Temporal.ZonedDateTime {\n return addNanoseconds(input, -nanoseconds);\n}\n"],"mappings":";;;;;AAmBO,SAAS,eACd,OACA,aACwB;AACxB,SAAO,eAAe,OAAO,CAAC,WAAW;AAC3C;","names":[]}
@@ -1,3 +1,6 @@
1
+ import {
2
+ differenceInSeconds
3
+ } from "./chunk-ZHRMURYP.js";
1
4
  import {
2
5
  differenceInWeeks
3
6
  } from "./chunk-PVAOUYXF.js";
@@ -16,9 +19,6 @@ import {
16
19
  import {
17
20
  differenceInMonths
18
21
  } from "./chunk-BIAPE4MR.js";
19
- import {
20
- differenceInSeconds
21
- } from "./chunk-ZHRMURYP.js";
22
22
  import {
23
23
  normalizeTemporalInput
24
24
  } from "./chunk-MJSZNWCV.js";
@@ -91,4 +91,4 @@ function intlFormatDistance(laterDate, earlierDate, options) {
91
91
  export {
92
92
  intlFormatDistance
93
93
  };
94
- //# sourceMappingURL=chunk-NL5LWPJI.js.map
94
+ //# sourceMappingURL=chunk-XEDXPI5G.js.map
@@ -0,0 +1,13 @@
1
+ import {
2
+ addHours
3
+ } from "./chunk-4NJMCCUM.js";
4
+
5
+ // src/subHours.ts
6
+ function subHours(input, hours) {
7
+ return addHours(input, -hours);
8
+ }
9
+
10
+ export {
11
+ subHours
12
+ };
13
+ //# sourceMappingURL=chunk-XW5MLXX5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/subHours.ts"],"sourcesContent":["import type { Temporal } from '@js-temporal/polyfill';\nimport { addHours } from './addHours';\n\n/**\n * Subtracts the specified number of hours from a datetime.\n *\n * This is a convenience wrapper around addHours with negated value.\n * Properly handles DST transitions through Temporal API.\n *\n * @param input - A Temporal.Instant (UTC) or Temporal.ZonedDateTime\n * @param hours - Number of hours to subtract\n * @returns ZonedDateTime with hours subtracted, in the same timezone as input\n *\n * @example\n * ```ts\n * const instant = Temporal.Instant.from('2025-01-20T15:00:00Z');\n * const result = subHours(instant, 3);\n * // 2025-01-20T12:00:00Z[UTC] (3 hours earlier)\n * ```\n */\nexport function subHours(\n input: Temporal.Instant | Temporal.ZonedDateTime,\n hours: number\n): Temporal.ZonedDateTime {\n return addHours(input, -hours);\n}\n"],"mappings":";;;;;AAoBO,SAAS,SACd,OACA,OACwB;AACxB,SAAO,SAAS,OAAO,CAAC,KAAK;AAC/B;","names":[]}
@@ -0,0 +1,13 @@
1
+ import {
2
+ addDays
3
+ } from "./chunk-L4SVABDH.js";
4
+
5
+ // src/subDays.ts
6
+ function subDays(input, days) {
7
+ return addDays(input, -days);
8
+ }
9
+
10
+ export {
11
+ subDays
12
+ };
13
+ //# sourceMappingURL=chunk-YKBP3G7L.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/subDays.ts"],"sourcesContent":["import type { Temporal } from '@js-temporal/polyfill';\nimport { addDays } from './addDays';\n\n/**\n * Subtracts the specified number of days from a datetime.\n *\n * This is a convenience wrapper around addDays with negated value.\n * Properly handles DST transitions and calendar edge cases through Temporal API.\n *\n * @param input - A Temporal.Instant (UTC) or Temporal.ZonedDateTime\n * @param days - Number of days to subtract\n * @returns ZonedDateTime with days subtracted, in the same timezone as input\n *\n * @example\n * ```ts\n * const instant = Temporal.Instant.from('2025-01-25T12:00:00Z');\n * const result = subDays(instant, 5);\n * // 2025-01-20T12:00:00Z[UTC] (5 days earlier)\n * ```\n */\nexport function subDays(\n input: Temporal.Instant | Temporal.ZonedDateTime,\n days: number\n): Temporal.ZonedDateTime {\n return addDays(input, -days);\n}\n"],"mappings":";;;;;AAoBO,SAAS,QACd,OACA,MACwB;AACxB,SAAO,QAAQ,OAAO,CAAC,IAAI;AAC7B;","names":[]}
package/dist/index.d.ts CHANGED
@@ -8,6 +8,26 @@ export { startOfDay } from './startOfDay';
8
8
  export { endOfDay } from './endOfDay';
9
9
  export { startOfWeek } from './startOfWeek';
10
10
  export { endOfWeek } from './endOfWeek';
11
+ export { addWeeks } from './addWeeks';
12
+ export { addYears } from './addYears';
13
+ export { addMonths } from './addMonths';
14
+ export { addDays } from './addDays';
15
+ export { addHours } from './addHours';
16
+ export { addMinutes } from './addMinutes';
17
+ export { addSeconds } from './addSeconds';
18
+ export { addMilliseconds } from './addMilliseconds';
19
+ export { addMicroseconds } from './addMicroseconds';
20
+ export { addNanoseconds } from './addNanoseconds';
21
+ export { subYears } from './subYears';
22
+ export { subMonths } from './subMonths';
23
+ export { subWeeks } from './subWeeks';
24
+ export { subDays } from './subDays';
25
+ export { subHours } from './subHours';
26
+ export { subMinutes } from './subMinutes';
27
+ export { subSeconds } from './subSeconds';
28
+ export { subMilliseconds } from './subMilliseconds';
29
+ export { subMicroseconds } from './subMicroseconds';
30
+ export { subNanoseconds } from './subNanoseconds';
11
31
  export { startOfMonth } from './startOfMonth';
12
32
  export { endOfMonth } from './endOfMonth';
13
33
  export { startOfYear } from './startOfYear';
@@ -17,6 +37,15 @@ export { isAfter } from './isAfter';
17
37
  export { isFuture } from './isFuture';
18
38
  export { isPast } from './isPast';
19
39
  export { isSameDay } from './isSameDay';
40
+ export { isSameYear } from './isSameYear';
41
+ export { isSameMonth } from './isSameMonth';
42
+ export { isSameWeek } from './isSameWeek';
43
+ export { isSameHour } from './isSameHour';
44
+ export { isSameMinute } from './isSameMinute';
45
+ export { isSameSecond } from './isSameSecond';
46
+ export { isSameMillisecond } from './isSameMillisecond';
47
+ export { isSameMicrosecond } from './isSameMicrosecond';
48
+ export { isSameNanosecond } from './isSameNanosecond';
20
49
  export { differenceInNanoseconds } from './differenceInNanoseconds';
21
50
  export { differenceInMicroseconds } from './differenceInMicroseconds';
22
51
  export { differenceInMilliseconds } from './differenceInMilliseconds';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EACL,kBAAkB,EAClB,KAAK,yBAAyB,GAC/B,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EACL,kBAAkB,EAClB,KAAK,yBAAyB,GAC/B,MAAM,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -1,3 +1,48 @@
1
+ import {
2
+ toUtc
3
+ } from "./chunk-GPAFAHKJ.js";
4
+ import {
5
+ toUtcString
6
+ } from "./chunk-DMKGJY4N.js";
7
+ import {
8
+ toZonedTime
9
+ } from "./chunk-KD5GEHUA.js";
10
+ import {
11
+ today
12
+ } from "./chunk-67QHALIG.js";
13
+ import {
14
+ subMicroseconds
15
+ } from "./chunk-BQBLSXK2.js";
16
+ import {
17
+ subMilliseconds
18
+ } from "./chunk-HDBH7RTY.js";
19
+ import {
20
+ subMinutes
21
+ } from "./chunk-J6G2I2TU.js";
22
+ import {
23
+ subMonths
24
+ } from "./chunk-52NEOY34.js";
25
+ import {
26
+ subNanoseconds
27
+ } from "./chunk-WVHAYLBW.js";
28
+ import {
29
+ subSeconds
30
+ } from "./chunk-BH2YB4MV.js";
31
+ import {
32
+ subWeeks
33
+ } from "./chunk-U4RNUZXO.js";
34
+ import {
35
+ subYears
36
+ } from "./chunk-AHMKY474.js";
37
+ import {
38
+ isSameYear
39
+ } from "./chunk-VLZ3HQQA.js";
40
+ import {
41
+ now
42
+ } from "./chunk-3YGPHHB6.js";
43
+ import {
44
+ startOfDay
45
+ } from "./chunk-TW5EV3DH.js";
1
46
  import {
2
47
  startOfMonth
3
48
  } from "./chunk-TU2UNOOW.js";
@@ -8,20 +53,41 @@ import {
8
53
  startOfYear
9
54
  } from "./chunk-YR2UCUIT.js";
10
55
  import {
11
- toUtc
12
- } from "./chunk-GPAFAHKJ.js";
56
+ subDays
57
+ } from "./chunk-YKBP3G7L.js";
13
58
  import {
14
- toUtcString
15
- } from "./chunk-DMKGJY4N.js";
59
+ subHours
60
+ } from "./chunk-XW5MLXX5.js";
16
61
  import {
17
- toZonedTime
18
- } from "./chunk-KD5GEHUA.js";
62
+ isSameHour
63
+ } from "./chunk-EEQ3REET.js";
19
64
  import {
20
- today
21
- } from "./chunk-67QHALIG.js";
65
+ isSameMicrosecond
66
+ } from "./chunk-PPB62JYV.js";
67
+ import {
68
+ isSameMillisecond
69
+ } from "./chunk-ISHZRFVN.js";
70
+ import {
71
+ isSameMinute
72
+ } from "./chunk-LDO6PRNJ.js";
73
+ import {
74
+ isSameMonth
75
+ } from "./chunk-ADQTZVMH.js";
76
+ import {
77
+ isSameNanosecond
78
+ } from "./chunk-S63QUP4W.js";
79
+ import {
80
+ isSameSecond
81
+ } from "./chunk-CY746ZUQ.js";
82
+ import {
83
+ isSameWeek
84
+ } from "./chunk-JOD4ATPE.js";
85
+ import {
86
+ format
87
+ } from "./chunk-2G5RJGPR.js";
22
88
  import {
23
89
  intlFormatDistance
24
- } from "./chunk-NL5LWPJI.js";
90
+ } from "./chunk-XEDXPI5G.js";
25
91
  import {
26
92
  isAfter
27
93
  } from "./chunk-BBNNR2QH.js";
@@ -38,11 +104,11 @@ import {
38
104
  isSameDay
39
105
  } from "./chunk-RW3C2677.js";
40
106
  import {
41
- now
42
- } from "./chunk-3YGPHHB6.js";
107
+ differenceInNanoseconds
108
+ } from "./chunk-OABS374T.js";
43
109
  import {
44
- startOfDay
45
- } from "./chunk-TW5EV3DH.js";
110
+ differenceInSeconds
111
+ } from "./chunk-ZHRMURYP.js";
46
112
  import {
47
113
  differenceInWeeks
48
114
  } from "./chunk-PVAOUYXF.js";
@@ -63,8 +129,11 @@ import {
63
129
  } from "./chunk-XDVUGTUV.js";
64
130
  import "./chunk-AVGNRINZ.js";
65
131
  import {
66
- format
67
- } from "./chunk-2G5RJGPR.js";
132
+ addWeeks
133
+ } from "./chunk-DT2EWLHU.js";
134
+ import {
135
+ addYears
136
+ } from "./chunk-Q2F3HEXB.js";
68
137
  import {
69
138
  differenceInDays
70
139
  } from "./chunk-6IP245MS.js";
@@ -84,13 +153,41 @@ import {
84
153
  differenceInMonths
85
154
  } from "./chunk-BIAPE4MR.js";
86
155
  import {
87
- differenceInNanoseconds
88
- } from "./chunk-OABS374T.js";
156
+ addDays
157
+ } from "./chunk-L4SVABDH.js";
89
158
  import {
90
- differenceInSeconds
91
- } from "./chunk-ZHRMURYP.js";
159
+ addHours
160
+ } from "./chunk-4NJMCCUM.js";
161
+ import {
162
+ addMicroseconds
163
+ } from "./chunk-V27NUBXQ.js";
164
+ import {
165
+ addMilliseconds
166
+ } from "./chunk-A5VVBYNT.js";
167
+ import {
168
+ addMinutes
169
+ } from "./chunk-2XHAHSB6.js";
170
+ import {
171
+ addMonths
172
+ } from "./chunk-7ATM7AXL.js";
173
+ import {
174
+ addNanoseconds
175
+ } from "./chunk-EYO2ZJLH.js";
176
+ import {
177
+ addSeconds
178
+ } from "./chunk-NRD5HRZV.js";
92
179
  import "./chunk-MJSZNWCV.js";
93
180
  export {
181
+ addDays,
182
+ addHours,
183
+ addMicroseconds,
184
+ addMilliseconds,
185
+ addMinutes,
186
+ addMonths,
187
+ addNanoseconds,
188
+ addSeconds,
189
+ addWeeks,
190
+ addYears,
94
191
  differenceInDays,
95
192
  differenceInHours,
96
193
  differenceInMicroseconds,
@@ -112,11 +209,30 @@ export {
112
209
  isFuture,
113
210
  isPast,
114
211
  isSameDay,
212
+ isSameHour,
213
+ isSameMicrosecond,
214
+ isSameMillisecond,
215
+ isSameMinute,
216
+ isSameMonth,
217
+ isSameNanosecond,
218
+ isSameSecond,
219
+ isSameWeek,
220
+ isSameYear,
115
221
  now,
116
222
  startOfDay,
117
223
  startOfMonth,
118
224
  startOfWeek,
119
225
  startOfYear,
226
+ subDays,
227
+ subHours,
228
+ subMicroseconds,
229
+ subMilliseconds,
230
+ subMinutes,
231
+ subMonths,
232
+ subNanoseconds,
233
+ subSeconds,
234
+ subWeeks,
235
+ subYears,
120
236
  toUtc,
121
237
  toUtcString,
122
238
  toZonedTime,
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  intlFormatDistance
3
- } from "./chunk-NL5LWPJI.js";
3
+ } from "./chunk-XEDXPI5G.js";
4
+ import "./chunk-ZHRMURYP.js";
4
5
  import "./chunk-PVAOUYXF.js";
5
6
  import "./chunk-CHW2EN2O.js";
6
7
  import "./chunk-6IP245MS.js";
7
8
  import "./chunk-PIDXROVB.js";
8
9
  import "./chunk-RJY62CDU.js";
9
10
  import "./chunk-BIAPE4MR.js";
10
- import "./chunk-ZHRMURYP.js";
11
11
  import "./chunk-MJSZNWCV.js";
12
12
  export {
13
13
  intlFormatDistance
@@ -0,0 +1,58 @@
1
+ import type { Temporal } from '@js-temporal/polyfill';
2
+ /**
3
+ * Returns true if both datetimes fall in the same hour.
4
+ * Compares the year, month, day, and hour fields directly.
5
+ *
6
+ * Instant inputs are converted to UTC. For ZonedDateTime inputs, their
7
+ * timezone is preserved. Convert to a common timezone before calling if
8
+ * you need to compare from a specific perspective.
9
+ *
10
+ * @param date1 - First datetime (Instant or ZonedDateTime)
11
+ * @param date2 - Second datetime (Instant or ZonedDateTime)
12
+ * @returns true if both dates are in the same hour, false otherwise
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * // Same timezone, same hour
17
+ * const start = Temporal.ZonedDateTime.from('2025-01-20T14:00:00Z[UTC]');
18
+ * const end = Temporal.ZonedDateTime.from('2025-01-20T14:59:59.999Z[UTC]');
19
+ *
20
+ * isSameHour(start, end); // true
21
+ * ```
22
+ *
23
+ * @example
24
+ * ```ts
25
+ * // Same timezone, different hours
26
+ * const hour14 = Temporal.ZonedDateTime.from('2025-01-20T14:59:59Z[UTC]');
27
+ * const hour15 = Temporal.ZonedDateTime.from('2025-01-20T15:00:00Z[UTC]');
28
+ *
29
+ * isSameHour(hour14, hour15); // false
30
+ * ```
31
+ *
32
+ * @example
33
+ * ```ts
34
+ * // Different timezones - compares their local hours
35
+ * const ny = Temporal.ZonedDateTime.from('2025-01-20T14:30:00-05:00[America/New_York]');
36
+ * const tokyo = Temporal.ZonedDateTime.from('2025-01-21T04:30:00+09:00[Asia/Tokyo]');
37
+ *
38
+ * // Same instant, different local hours from each person's perspective
39
+ * isSameHour(ny, tokyo); // false (14:xx in NY, 04:xx in Tokyo)
40
+ *
41
+ * // Convert to UTC to compare in UTC timezone
42
+ * isSameHour(ny.withTimeZone('UTC'), tokyo.withTimeZone('UTC')); // true (both 19:xx in UTC)
43
+ *
44
+ * // Convert to NY timezone to compare from NY perspective
45
+ * isSameHour(ny, tokyo.withTimeZone('America/New_York')); // true (both 14:xx in NY)
46
+ * ```
47
+ *
48
+ * @example
49
+ * ```ts
50
+ * // Instant inputs are converted to UTC
51
+ * const instant1 = Temporal.Instant.from('2025-01-20T14:15:30Z');
52
+ * const instant2 = Temporal.Instant.from('2025-01-20T14:45:50Z');
53
+ *
54
+ * isSameHour(instant1, instant2); // true (both 14:xx in UTC)
55
+ * ```
56
+ */
57
+ export declare function isSameHour(date1: Temporal.Instant | Temporal.ZonedDateTime, date2: Temporal.Instant | Temporal.ZonedDateTime): boolean;
58
+ //# sourceMappingURL=isSameHour.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isSameHour.d.ts","sourceRoot":"","sources":["../src/isSameHour.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,EAChD,KAAK,EAAE,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,GAC/C,OAAO,CAUT"}