@gobrand/tiempo 2.2.3 → 2.3.1

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 (260) hide show
  1. package/README.md +297 -24
  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-KD5GEHUA.js → chunk-2MP3ESL7.js} +4 -1
  63. package/dist/chunk-2MP3ESL7.js.map +1 -0
  64. package/dist/chunk-2XHAHSB6.js +14 -0
  65. package/dist/chunk-2XHAHSB6.js.map +1 -0
  66. package/dist/chunk-4NJMCCUM.js +14 -0
  67. package/dist/chunk-4NJMCCUM.js.map +1 -0
  68. package/dist/chunk-52NEOY34.js +13 -0
  69. package/dist/chunk-52NEOY34.js.map +1 -0
  70. package/dist/chunk-7ATM7AXL.js +14 -0
  71. package/dist/chunk-7ATM7AXL.js.map +1 -0
  72. package/dist/chunk-A5VVBYNT.js +14 -0
  73. package/dist/chunk-A5VVBYNT.js.map +1 -0
  74. package/dist/chunk-ADQTZVMH.js +15 -0
  75. package/dist/chunk-ADQTZVMH.js.map +1 -0
  76. package/dist/chunk-AHMKY474.js +13 -0
  77. package/dist/chunk-AHMKY474.js.map +1 -0
  78. package/dist/chunk-BH2YB4MV.js +13 -0
  79. package/dist/chunk-BH2YB4MV.js.map +1 -0
  80. package/dist/chunk-BQBLSXK2.js +13 -0
  81. package/dist/chunk-BQBLSXK2.js.map +1 -0
  82. package/dist/{chunk-GPAFAHKJ.js → chunk-BW5SFCKS.js} +4 -1
  83. package/dist/chunk-BW5SFCKS.js.map +1 -0
  84. package/dist/chunk-CY746ZUQ.js +15 -0
  85. package/dist/chunk-CY746ZUQ.js.map +1 -0
  86. package/dist/chunk-DT2EWLHU.js +14 -0
  87. package/dist/chunk-DT2EWLHU.js.map +1 -0
  88. package/dist/chunk-EEQ3REET.js +15 -0
  89. package/dist/chunk-EEQ3REET.js.map +1 -0
  90. package/dist/chunk-EYO2ZJLH.js +14 -0
  91. package/dist/chunk-EYO2ZJLH.js.map +1 -0
  92. package/dist/chunk-HDBH7RTY.js +13 -0
  93. package/dist/chunk-HDBH7RTY.js.map +1 -0
  94. package/dist/chunk-ISHZRFVN.js +15 -0
  95. package/dist/chunk-ISHZRFVN.js.map +1 -0
  96. package/dist/chunk-J6G2I2TU.js +13 -0
  97. package/dist/chunk-J6G2I2TU.js.map +1 -0
  98. package/dist/chunk-JOD4ATPE.js +15 -0
  99. package/dist/chunk-JOD4ATPE.js.map +1 -0
  100. package/dist/chunk-L4SVABDH.js +14 -0
  101. package/dist/chunk-L4SVABDH.js.map +1 -0
  102. package/dist/chunk-LDO6PRNJ.js +15 -0
  103. package/dist/chunk-LDO6PRNJ.js.map +1 -0
  104. package/dist/chunk-NRD5HRZV.js +14 -0
  105. package/dist/chunk-NRD5HRZV.js.map +1 -0
  106. package/dist/chunk-PPB62JYV.js +15 -0
  107. package/dist/chunk-PPB62JYV.js.map +1 -0
  108. package/dist/chunk-Q2F3HEXB.js +14 -0
  109. package/dist/chunk-Q2F3HEXB.js.map +1 -0
  110. package/dist/chunk-S63QUP4W.js +15 -0
  111. package/dist/chunk-S63QUP4W.js.map +1 -0
  112. package/dist/chunk-TGKWBQ7L.js +13 -0
  113. package/dist/chunk-TGKWBQ7L.js.map +1 -0
  114. package/dist/chunk-U4RNUZXO.js +13 -0
  115. package/dist/chunk-U4RNUZXO.js.map +1 -0
  116. package/dist/chunk-V27NUBXQ.js +14 -0
  117. package/dist/chunk-V27NUBXQ.js.map +1 -0
  118. package/dist/chunk-VLZ3HQQA.js +15 -0
  119. package/dist/chunk-VLZ3HQQA.js.map +1 -0
  120. package/dist/chunk-WVHAYLBW.js +13 -0
  121. package/dist/chunk-WVHAYLBW.js.map +1 -0
  122. package/dist/{chunk-NL5LWPJI.js → chunk-XEDXPI5G.js} +4 -4
  123. package/dist/chunk-XW5MLXX5.js +13 -0
  124. package/dist/chunk-XW5MLXX5.js.map +1 -0
  125. package/dist/chunk-YKBP3G7L.js +13 -0
  126. package/dist/chunk-YKBP3G7L.js.map +1 -0
  127. package/dist/index.d.ts +30 -0
  128. package/dist/index.d.ts.map +1 -1
  129. package/dist/index.js +139 -19
  130. package/dist/intlFormatDistance.js +2 -2
  131. package/dist/isSameHour.d.ts +58 -0
  132. package/dist/isSameHour.d.ts.map +1 -0
  133. package/dist/isSameHour.js +8 -0
  134. package/dist/isSameHour.js.map +1 -0
  135. package/dist/isSameHour.test.d.ts +2 -0
  136. package/dist/isSameHour.test.d.ts.map +1 -0
  137. package/dist/isSameMicrosecond.d.ts +59 -0
  138. package/dist/isSameMicrosecond.d.ts.map +1 -0
  139. package/dist/isSameMicrosecond.js +8 -0
  140. package/dist/isSameMicrosecond.js.map +1 -0
  141. package/dist/isSameMicrosecond.test.d.ts +2 -0
  142. package/dist/isSameMicrosecond.test.d.ts.map +1 -0
  143. package/dist/isSameMillisecond.d.ts +59 -0
  144. package/dist/isSameMillisecond.d.ts.map +1 -0
  145. package/dist/isSameMillisecond.js +8 -0
  146. package/dist/isSameMillisecond.js.map +1 -0
  147. package/dist/isSameMillisecond.test.d.ts +2 -0
  148. package/dist/isSameMillisecond.test.d.ts.map +1 -0
  149. package/dist/isSameMinute.d.ts +58 -0
  150. package/dist/isSameMinute.d.ts.map +1 -0
  151. package/dist/isSameMinute.js +8 -0
  152. package/dist/isSameMinute.js.map +1 -0
  153. package/dist/isSameMinute.test.d.ts +2 -0
  154. package/dist/isSameMinute.test.d.ts.map +1 -0
  155. package/dist/isSameMonth.d.ts +58 -0
  156. package/dist/isSameMonth.d.ts.map +1 -0
  157. package/dist/isSameMonth.js +8 -0
  158. package/dist/isSameMonth.js.map +1 -0
  159. package/dist/isSameMonth.test.d.ts +2 -0
  160. package/dist/isSameMonth.test.d.ts.map +1 -0
  161. package/dist/isSameNanosecond.d.ts +59 -0
  162. package/dist/isSameNanosecond.d.ts.map +1 -0
  163. package/dist/isSameNanosecond.js +8 -0
  164. package/dist/isSameNanosecond.js.map +1 -0
  165. package/dist/isSameNanosecond.test.d.ts +2 -0
  166. package/dist/isSameNanosecond.test.d.ts.map +1 -0
  167. package/dist/isSameSecond.d.ts +59 -0
  168. package/dist/isSameSecond.d.ts.map +1 -0
  169. package/dist/isSameSecond.js +8 -0
  170. package/dist/isSameSecond.js.map +1 -0
  171. package/dist/isSameSecond.test.d.ts +2 -0
  172. package/dist/isSameSecond.test.d.ts.map +1 -0
  173. package/dist/isSameWeek.d.ts +72 -0
  174. package/dist/isSameWeek.d.ts.map +1 -0
  175. package/dist/isSameWeek.js +8 -0
  176. package/dist/isSameWeek.js.map +1 -0
  177. package/dist/isSameWeek.test.d.ts +2 -0
  178. package/dist/isSameWeek.test.d.ts.map +1 -0
  179. package/dist/isSameYear.d.ts +58 -0
  180. package/dist/isSameYear.d.ts.map +1 -0
  181. package/dist/isSameYear.js +8 -0
  182. package/dist/isSameYear.js.map +1 -0
  183. package/dist/isSameYear.test.d.ts +2 -0
  184. package/dist/isSameYear.test.d.ts.map +1 -0
  185. package/dist/subDays.d.ts +20 -0
  186. package/dist/subDays.d.ts.map +1 -0
  187. package/dist/subDays.js +9 -0
  188. package/dist/subDays.js.map +1 -0
  189. package/dist/subDays.test.d.ts +2 -0
  190. package/dist/subDays.test.d.ts.map +1 -0
  191. package/dist/subHours.d.ts +20 -0
  192. package/dist/subHours.d.ts.map +1 -0
  193. package/dist/subHours.js +9 -0
  194. package/dist/subHours.js.map +1 -0
  195. package/dist/subHours.test.d.ts +2 -0
  196. package/dist/subHours.test.d.ts.map +1 -0
  197. package/dist/subMicroseconds.d.ts +19 -0
  198. package/dist/subMicroseconds.d.ts.map +1 -0
  199. package/dist/subMicroseconds.js +9 -0
  200. package/dist/subMicroseconds.js.map +1 -0
  201. package/dist/subMicroseconds.test.d.ts +2 -0
  202. package/dist/subMicroseconds.test.d.ts.map +1 -0
  203. package/dist/subMilliseconds.d.ts +19 -0
  204. package/dist/subMilliseconds.d.ts.map +1 -0
  205. package/dist/subMilliseconds.js +9 -0
  206. package/dist/subMilliseconds.js.map +1 -0
  207. package/dist/subMilliseconds.test.d.ts +2 -0
  208. package/dist/subMilliseconds.test.d.ts.map +1 -0
  209. package/dist/subMinutes.d.ts +19 -0
  210. package/dist/subMinutes.d.ts.map +1 -0
  211. package/dist/subMinutes.js +9 -0
  212. package/dist/subMinutes.js.map +1 -0
  213. package/dist/subMinutes.test.d.ts +2 -0
  214. package/dist/subMinutes.test.d.ts.map +1 -0
  215. package/dist/subMonths.d.ts +20 -0
  216. package/dist/subMonths.d.ts.map +1 -0
  217. package/dist/subMonths.js +9 -0
  218. package/dist/subMonths.js.map +1 -0
  219. package/dist/subMonths.test.d.ts +2 -0
  220. package/dist/subMonths.test.d.ts.map +1 -0
  221. package/dist/subNanoseconds.d.ts +19 -0
  222. package/dist/subNanoseconds.d.ts.map +1 -0
  223. package/dist/subNanoseconds.js +9 -0
  224. package/dist/subNanoseconds.js.map +1 -0
  225. package/dist/subNanoseconds.test.d.ts +2 -0
  226. package/dist/subNanoseconds.test.d.ts.map +1 -0
  227. package/dist/subSeconds.d.ts +19 -0
  228. package/dist/subSeconds.d.ts.map +1 -0
  229. package/dist/subSeconds.js +9 -0
  230. package/dist/subSeconds.js.map +1 -0
  231. package/dist/subSeconds.test.d.ts +2 -0
  232. package/dist/subSeconds.test.d.ts.map +1 -0
  233. package/dist/subWeeks.d.ts +20 -0
  234. package/dist/subWeeks.d.ts.map +1 -0
  235. package/dist/subWeeks.js +9 -0
  236. package/dist/subWeeks.js.map +1 -0
  237. package/dist/subWeeks.test.d.ts +2 -0
  238. package/dist/subWeeks.test.d.ts.map +1 -0
  239. package/dist/subYears.d.ts +20 -0
  240. package/dist/subYears.d.ts.map +1 -0
  241. package/dist/subYears.js +9 -0
  242. package/dist/subYears.js.map +1 -0
  243. package/dist/subYears.test.d.ts +2 -0
  244. package/dist/subYears.test.d.ts.map +1 -0
  245. package/dist/toDate.d.ts +27 -0
  246. package/dist/toDate.d.ts.map +1 -0
  247. package/dist/toDate.js +7 -0
  248. package/dist/toDate.js.map +1 -0
  249. package/dist/toDate.test.d.ts +2 -0
  250. package/dist/toDate.test.d.ts.map +1 -0
  251. package/dist/toUtc.d.ts +9 -5
  252. package/dist/toUtc.d.ts.map +1 -1
  253. package/dist/toUtc.js +1 -1
  254. package/dist/toZonedTime.d.ts +8 -4
  255. package/dist/toZonedTime.d.ts.map +1 -1
  256. package/dist/toZonedTime.js +1 -1
  257. package/package.json +1 -1
  258. package/dist/chunk-GPAFAHKJ.js.map +0 -1
  259. package/dist/chunk-KD5GEHUA.js.map +0 -1
  260. /package/dist/{chunk-NL5LWPJI.js.map → chunk-XEDXPI5G.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/isSameSecond.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 second.\n * Compares the year, month, day, hour, minute, and second fields directly.\n * Ignores sub-second precision (milliseconds, microseconds, 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 second, false otherwise\n *\n * @example\n * ```ts\n * // Same timezone, same second\n * const time1 = Temporal.ZonedDateTime.from('2025-01-20T14:30:45.000Z[UTC]');\n * const time2 = Temporal.ZonedDateTime.from('2025-01-20T14:30:45.999Z[UTC]');\n *\n * isSameSecond(time1, time2); // true\n * ```\n *\n * @example\n * ```ts\n * // Same timezone, different seconds\n * const sec45 = Temporal.ZonedDateTime.from('2025-01-20T14:30:45Z[UTC]');\n * const sec46 = Temporal.ZonedDateTime.from('2025-01-20T14:30:46Z[UTC]');\n *\n * isSameSecond(sec45, sec46); // false\n * ```\n *\n * @example\n * ```ts\n * // Different timezones - compares their local seconds\n * const ny = Temporal.ZonedDateTime.from('2025-01-20T14:30:45.123-05:00[America/New_York]');\n * const tokyo = Temporal.ZonedDateTime.from('2025-01-21T04:30:45.987+09:00[Asia/Tokyo]');\n *\n * // Same instant, different local seconds from each person's perspective\n * isSameSecond(ny, tokyo); // false (14:30:45 in NY, 04:30:45 in Tokyo)\n *\n * // Convert to UTC to compare in UTC timezone\n * isSameSecond(ny.withTimeZone('UTC'), tokyo.withTimeZone('UTC')); // true (both 19:30:45 in UTC)\n *\n * // Convert to NY timezone to compare from NY perspective\n * isSameSecond(ny, tokyo.withTimeZone('America/New_York')); // true (both 14:30:45 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.123Z');\n * const instant2 = Temporal.Instant.from('2025-01-20T14:30:45.999Z');\n *\n * isSameSecond(instant1, instant2); // true (both 14:30:45 in UTC)\n * ```\n */\nexport function isSameSecond(\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 );\n}\n"],"mappings":";;;;;AA2DO,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,UACzB,OAAO,WAAW,OAAO;AAE7B;","names":[]}
@@ -0,0 +1,14 @@
1
+ import {
2
+ normalizeTemporalInput
3
+ } from "./chunk-MJSZNWCV.js";
4
+
5
+ // src/addWeeks.ts
6
+ function addWeeks(input, weeks) {
7
+ const zonedDateTime = normalizeTemporalInput(input);
8
+ return zonedDateTime.add({ weeks });
9
+ }
10
+
11
+ export {
12
+ addWeeks
13
+ };
14
+ //# sourceMappingURL=chunk-DT2EWLHU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/addWeeks.ts"],"sourcesContent":["import type { Temporal } from '@js-temporal/polyfill';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\n\n/**\n * Adds the specified number of weeks 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 weeks - Number of weeks to add (can be negative to subtract)\n * @returns ZonedDateTime with weeks 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 = addWeeks(instant, 2);\n * // 2025-02-03T12:00:00Z[UTC] (2 weeks 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 = addWeeks(zoned, 2);\n * // 2025-02-03T15:30:00-05:00[America/New_York]\n * ```\n *\n * @example\n * ```ts\n * // Negative values subtract weeks\n * const instant = Temporal.Instant.from('2025-01-20T12:00:00Z');\n * const result = addWeeks(instant, -1);\n * // 2025-01-13T12:00:00Z[UTC] (1 week earlier)\n * ```\n */\nexport function addWeeks(\n input: Temporal.Instant | Temporal.ZonedDateTime,\n weeks: number\n): Temporal.ZonedDateTime {\n const zonedDateTime = normalizeTemporalInput(input);\n return zonedDateTime.add({ weeks });\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/isSameHour.ts
6
+ function isSameHour(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;
10
+ }
11
+
12
+ export {
13
+ isSameHour
14
+ };
15
+ //# sourceMappingURL=chunk-EEQ3REET.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/isSameHour.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 hour.\n * Compares the year, month, day, and hour 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 hour, false otherwise\n *\n * @example\n * ```ts\n * // Same timezone, same hour\n * const start = Temporal.ZonedDateTime.from('2025-01-20T14:00:00Z[UTC]');\n * const end = Temporal.ZonedDateTime.from('2025-01-20T14:59:59.999Z[UTC]');\n *\n * isSameHour(start, end); // true\n * ```\n *\n * @example\n * ```ts\n * // Same timezone, different hours\n * const hour14 = Temporal.ZonedDateTime.from('2025-01-20T14:59:59Z[UTC]');\n * const hour15 = Temporal.ZonedDateTime.from('2025-01-20T15:00:00Z[UTC]');\n *\n * isSameHour(hour14, hour15); // false\n * ```\n *\n * @example\n * ```ts\n * // Different timezones - compares their local hours\n * const ny = Temporal.ZonedDateTime.from('2025-01-20T14:30:00-05:00[America/New_York]');\n * const tokyo = Temporal.ZonedDateTime.from('2025-01-21T04:30:00+09:00[Asia/Tokyo]');\n *\n * // Same instant, different local hours from each person's perspective\n * isSameHour(ny, tokyo); // false (14:xx in NY, 04:xx in Tokyo)\n *\n * // Convert to UTC to compare in UTC timezone\n * isSameHour(ny.withTimeZone('UTC'), tokyo.withTimeZone('UTC')); // true (both 19:xx in UTC)\n *\n * // Convert to NY timezone to compare from NY perspective\n * isSameHour(ny, tokyo.withTimeZone('America/New_York')); // true (both 14: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:15:30Z');\n * const instant2 = Temporal.Instant.from('2025-01-20T14:45:50Z');\n *\n * isSameHour(instant1, instant2); // true (both 14:xx in UTC)\n * ```\n */\nexport function isSameHour(\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 );\n}\n"],"mappings":";;;;;AA0DO,SAAS,WACd,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;AAE3B;","names":[]}
@@ -0,0 +1,14 @@
1
+ import {
2
+ normalizeTemporalInput
3
+ } from "./chunk-MJSZNWCV.js";
4
+
5
+ // src/addNanoseconds.ts
6
+ function addNanoseconds(input, nanoseconds) {
7
+ const zonedDateTime = normalizeTemporalInput(input);
8
+ return zonedDateTime.add({ nanoseconds });
9
+ }
10
+
11
+ export {
12
+ addNanoseconds
13
+ };
14
+ //# sourceMappingURL=chunk-EYO2ZJLH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/addNanoseconds.ts"],"sourcesContent":["import type { Temporal } from '@js-temporal/polyfill';\nimport { normalizeTemporalInput } from './shared/normalizeTemporalInput';\n\n/**\n * Adds the specified number of nanoseconds 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 nanoseconds - Number of nanoseconds to add (can be negative to subtract)\n * @returns ZonedDateTime with nanoseconds 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 = addNanoseconds(instant, 500);\n * // 2025-01-20T12:00:00.000000500Z[UTC] (500 nanoseconds 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 = addNanoseconds(zoned, 1000);\n * // 2025-01-20T15:30:00.000001-05:00[America/New_York]\n * ```\n *\n * @example\n * ```ts\n * // Negative values subtract nanoseconds\n * const instant = Temporal.Instant.from('2025-01-20T12:00:00.000001Z');\n * const result = addNanoseconds(instant, -500);\n * // 2025-01-20T12:00:00.000000500Z[UTC] (500 nanoseconds earlier)\n * ```\n */\nexport function addNanoseconds(\n input: Temporal.Instant | Temporal.ZonedDateTime,\n nanoseconds: number\n): Temporal.ZonedDateTime {\n const zonedDateTime = normalizeTemporalInput(input);\n return zonedDateTime.add({ nanoseconds });\n}\n"],"mappings":";;;;;AAoCO,SAAS,eACd,OACA,aACwB;AACxB,QAAM,gBAAgB,uBAAuB,KAAK;AAClD,SAAO,cAAc,IAAI,EAAE,YAAY,CAAC;AAC1C;","names":[]}
@@ -0,0 +1,13 @@
1
+ import {
2
+ addMilliseconds
3
+ } from "./chunk-A5VVBYNT.js";
4
+
5
+ // src/subMilliseconds.ts
6
+ function subMilliseconds(input, milliseconds) {
7
+ return addMilliseconds(input, -milliseconds);
8
+ }
9
+
10
+ export {
11
+ subMilliseconds
12
+ };
13
+ //# sourceMappingURL=chunk-HDBH7RTY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/subMilliseconds.ts"],"sourcesContent":["import type { Temporal } from '@js-temporal/polyfill';\nimport { addMilliseconds } from './addMilliseconds';\n\n/**\n * Subtracts the specified number of milliseconds from a datetime.\n *\n * This is a convenience wrapper around addMilliseconds with negated value.\n *\n * @param input - A Temporal.Instant (UTC) or Temporal.ZonedDateTime\n * @param milliseconds - Number of milliseconds to subtract\n * @returns ZonedDateTime with milliseconds subtracted, in the same timezone as input\n *\n * @example\n * ```ts\n * const instant = Temporal.Instant.from('2025-01-20T12:00:00.500Z');\n * const result = subMilliseconds(instant, 250);\n * // 2025-01-20T12:00:00.250Z[UTC] (250 milliseconds earlier)\n * ```\n */\nexport function subMilliseconds(\n input: Temporal.Instant | Temporal.ZonedDateTime,\n milliseconds: number\n): Temporal.ZonedDateTime {\n return addMilliseconds(input, -milliseconds);\n}\n"],"mappings":";;;;;AAmBO,SAAS,gBACd,OACA,cACwB;AACxB,SAAO,gBAAgB,OAAO,CAAC,YAAY;AAC7C;","names":[]}
@@ -0,0 +1,15 @@
1
+ import {
2
+ normalizeTemporalInput
3
+ } from "./chunk-MJSZNWCV.js";
4
+
5
+ // src/isSameMillisecond.ts
6
+ function isSameMillisecond(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;
10
+ }
11
+
12
+ export {
13
+ isSameMillisecond
14
+ };
15
+ //# sourceMappingURL=chunk-ISHZRFVN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/isSameMillisecond.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 millisecond.\n * Compares the year, month, day, hour, minute, second, and millisecond fields directly.\n * Ignores sub-millisecond precision (microseconds, 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 millisecond, false otherwise\n *\n * @example\n * ```ts\n * // Same timezone, same millisecond\n * const time1 = Temporal.ZonedDateTime.from('2025-01-20T14:30:45.123Z[UTC]');\n * const time2 = Temporal.ZonedDateTime.from('2025-01-20T14:30:45.123999Z[UTC]');\n *\n * isSameMillisecond(time1, time2); // true\n * ```\n *\n * @example\n * ```ts\n * // Same timezone, different milliseconds\n * const ms123 = Temporal.ZonedDateTime.from('2025-01-20T14:30:45.123Z[UTC]');\n * const ms124 = Temporal.ZonedDateTime.from('2025-01-20T14:30:45.124Z[UTC]');\n *\n * isSameMillisecond(ms123, ms124); // false\n * ```\n *\n * @example\n * ```ts\n * // Different timezones - compares their local milliseconds\n * const ny = Temporal.ZonedDateTime.from('2025-01-20T14:30:45.123-05:00[America/New_York]');\n * const tokyo = Temporal.ZonedDateTime.from('2025-01-21T04:30:45.987+09:00[Asia/Tokyo]');\n *\n * // Same instant, different local milliseconds from each person's perspective\n * isSameMillisecond(ny, tokyo); // false (14:30:45.123 in NY, 04:30:45.987 in Tokyo)\n *\n * // Convert to UTC to compare in UTC timezone\n * isSameMillisecond(ny.withTimeZone('UTC'), tokyo.withTimeZone('UTC')); // true (both 19:30:45.123 in UTC)\n *\n * // Convert to NY timezone to compare from NY perspective\n * isSameMillisecond(ny, tokyo.withTimeZone('America/New_York')); // true (both 14:30:45.123 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.123456Z');\n * const instant2 = Temporal.Instant.from('2025-01-20T14:30:45.123999Z');\n *\n * isSameMillisecond(instant1, instant2); // true (both 14:30:45.123 in UTC)\n * ```\n */\nexport function isSameMillisecond(\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 );\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;AAElC;","names":[]}
@@ -0,0 +1,13 @@
1
+ import {
2
+ addMinutes
3
+ } from "./chunk-2XHAHSB6.js";
4
+
5
+ // src/subMinutes.ts
6
+ function subMinutes(input, minutes) {
7
+ return addMinutes(input, -minutes);
8
+ }
9
+
10
+ export {
11
+ subMinutes
12
+ };
13
+ //# sourceMappingURL=chunk-J6G2I2TU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/subMinutes.ts"],"sourcesContent":["import type { Temporal } from '@js-temporal/polyfill';\nimport { addMinutes } from './addMinutes';\n\n/**\n * Subtracts the specified number of minutes from a datetime.\n *\n * This is a convenience wrapper around addMinutes with negated value.\n *\n * @param input - A Temporal.Instant (UTC) or Temporal.ZonedDateTime\n * @param minutes - Number of minutes to subtract\n * @returns ZonedDateTime with minutes subtracted, in the same timezone as input\n *\n * @example\n * ```ts\n * const instant = Temporal.Instant.from('2025-01-20T12:30:00Z');\n * const result = subMinutes(instant, 15);\n * // 2025-01-20T12:15:00Z[UTC] (15 minutes earlier)\n * ```\n */\nexport function subMinutes(\n input: Temporal.Instant | Temporal.ZonedDateTime,\n minutes: number\n): Temporal.ZonedDateTime {\n return addMinutes(input, -minutes);\n}\n"],"mappings":";;;;;AAmBO,SAAS,WACd,OACA,SACwB;AACxB,SAAO,WAAW,OAAO,CAAC,OAAO;AACnC;","names":[]}
@@ -0,0 +1,15 @@
1
+ import {
2
+ normalizeTemporalInput
3
+ } from "./chunk-MJSZNWCV.js";
4
+
5
+ // src/isSameWeek.ts
6
+ function isSameWeek(date1, date2) {
7
+ const zoned1 = normalizeTemporalInput(date1);
8
+ const zoned2 = normalizeTemporalInput(date2);
9
+ return zoned1.yearOfWeek === zoned2.yearOfWeek && zoned1.weekOfYear === zoned2.weekOfYear;
10
+ }
11
+
12
+ export {
13
+ isSameWeek
14
+ };
15
+ //# sourceMappingURL=chunk-JOD4ATPE.js.map
@@ -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
+ // src/toDate.ts
2
+ import { Temporal } from "@js-temporal/polyfill";
3
+ function toDate(input) {
4
+ if (input instanceof Temporal.Instant) {
5
+ return new Date(input.toString());
6
+ }
7
+ return new Date(input.toInstant().toString());
8
+ }
9
+
10
+ export {
11
+ toDate
12
+ };
13
+ //# sourceMappingURL=chunk-TGKWBQ7L.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/toDate.ts"],"sourcesContent":["import { Temporal } from '@js-temporal/polyfill';\n\n/**\n * Convert a Temporal.Instant or ZonedDateTime to a Date object.\n *\n * @param input - A Temporal.Instant or Temporal.ZonedDateTime\n * @returns A Date object representing the same moment in time\n *\n * @example\n * ```typescript\n * // From Instant\n * const instant = Temporal.Instant.from(\"2025-01-20T20:00:00Z\");\n * const date = toDate(instant);\n * // date.toISOString() === \"2025-01-20T20:00:00.000Z\"\n *\n * // From ZonedDateTime\n * const zoned = Temporal.ZonedDateTime.from(\"2025-01-20T15:00:00-05:00[America/New_York]\");\n * const date2 = toDate(zoned);\n * // date2.toISOString() === \"2025-01-20T20:00:00.000Z\"\n *\n * // Use with Drizzle ORM (for storing back to database)\n * const instant = Temporal.Instant.from(\"2025-01-20T20:00:00Z\");\n * const date = toDate(instant);\n * await db.update(posts).set({ publishedAt: date });\n * ```\n */\nexport function toDate(\n input: Temporal.Instant | Temporal.ZonedDateTime\n): Date {\n if (input instanceof Temporal.Instant) {\n return new Date(input.toString());\n }\n\n return new Date(input.toInstant().toString());\n}\n"],"mappings":";AAAA,SAAS,gBAAgB;AA0BlB,SAAS,OACd,OACM;AACN,MAAI,iBAAiB,SAAS,SAAS;AACrC,WAAO,IAAI,KAAK,MAAM,SAAS,CAAC;AAAA,EAClC;AAEA,SAAO,IAAI,KAAK,MAAM,UAAU,EAAE,SAAS,CAAC;AAC9C;","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
@@ -1,6 +1,7 @@
1
1
  export { toZonedTime } from './toZonedTime';
2
2
  export { toUtc } from './toUtc';
3
3
  export { toUtcString } from './toUtcString';
4
+ export { toDate } from './toDate';
4
5
  export { format, type FormatOptions } from './format';
5
6
  export { today } from './today';
6
7
  export { now } from './now';
@@ -8,6 +9,26 @@ export { startOfDay } from './startOfDay';
8
9
  export { endOfDay } from './endOfDay';
9
10
  export { startOfWeek } from './startOfWeek';
10
11
  export { endOfWeek } from './endOfWeek';
12
+ export { addWeeks } from './addWeeks';
13
+ export { addYears } from './addYears';
14
+ export { addMonths } from './addMonths';
15
+ export { addDays } from './addDays';
16
+ export { addHours } from './addHours';
17
+ export { addMinutes } from './addMinutes';
18
+ export { addSeconds } from './addSeconds';
19
+ export { addMilliseconds } from './addMilliseconds';
20
+ export { addMicroseconds } from './addMicroseconds';
21
+ export { addNanoseconds } from './addNanoseconds';
22
+ export { subYears } from './subYears';
23
+ export { subMonths } from './subMonths';
24
+ export { subWeeks } from './subWeeks';
25
+ export { subDays } from './subDays';
26
+ export { subHours } from './subHours';
27
+ export { subMinutes } from './subMinutes';
28
+ export { subSeconds } from './subSeconds';
29
+ export { subMilliseconds } from './subMilliseconds';
30
+ export { subMicroseconds } from './subMicroseconds';
31
+ export { subNanoseconds } from './subNanoseconds';
11
32
  export { startOfMonth } from './startOfMonth';
12
33
  export { endOfMonth } from './endOfMonth';
13
34
  export { startOfYear } from './startOfYear';
@@ -17,6 +38,15 @@ export { isAfter } from './isAfter';
17
38
  export { isFuture } from './isFuture';
18
39
  export { isPast } from './isPast';
19
40
  export { isSameDay } from './isSameDay';
41
+ export { isSameYear } from './isSameYear';
42
+ export { isSameMonth } from './isSameMonth';
43
+ export { isSameWeek } from './isSameWeek';
44
+ export { isSameHour } from './isSameHour';
45
+ export { isSameMinute } from './isSameMinute';
46
+ export { isSameSecond } from './isSameSecond';
47
+ export { isSameMillisecond } from './isSameMillisecond';
48
+ export { isSameMicrosecond } from './isSameMicrosecond';
49
+ export { isSameNanosecond } from './isSameNanosecond';
20
50
  export { differenceInNanoseconds } from './differenceInNanoseconds';
21
51
  export { differenceInMicroseconds } from './differenceInMicroseconds';
22
52
  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,MAAM,UAAU,CAAC;AAClC,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"}