@northguild/gmt 1.17.0 → 1.18.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 (638) hide show
  1. package/README.md +462 -22
  2. package/dist/calendar/calculate/bucketRange.d.ts +3 -3
  3. package/dist/calendar/calculate/bucketRange.js +6 -6
  4. package/dist/calendar/calculate/floorToZone.d.ts +5 -3
  5. package/dist/calendar/calculate/floorToZone.js +6 -5
  6. package/dist/calendar/calculate/getFiscalPeriod.d.ts +21 -8
  7. package/dist/calendar/calculate/getFiscalPeriod.js +9 -8
  8. package/dist/calendar/calculate/getIsoWeekDate.d.ts +10 -5
  9. package/dist/calendar/calculate/getIsoWeekDate.js +1 -5
  10. package/dist/calendar/calculate/getOrdinalDate.d.ts +10 -3
  11. package/dist/calendar/calculate/getOrdinalDate.js +2 -3
  12. package/dist/calendar/calculate/getQuarter.d.ts +21 -9
  13. package/dist/calendar/calculate/getQuarter.js +8 -12
  14. package/dist/calendar/hours/addOperatingTime.d.ts +53 -0
  15. package/dist/calendar/hours/addOperatingTime.js +59 -0
  16. package/dist/calendar/hours/index.d.ts +7 -0
  17. package/dist/calendar/hours/index.js +7 -0
  18. package/dist/calendar/hours/isOpenAt.d.ts +39 -0
  19. package/dist/calendar/hours/isOpenAt.js +44 -0
  20. package/dist/calendar/hours/nextCloseAt.d.ts +49 -0
  21. package/dist/calendar/hours/nextCloseAt.js +51 -0
  22. package/dist/calendar/hours/nextOpenAt.d.ts +45 -0
  23. package/dist/calendar/hours/nextOpenAt.js +47 -0
  24. package/dist/calendar/hours/operatingIntervals.d.ts +43 -0
  25. package/dist/calendar/hours/operatingIntervals.js +52 -0
  26. package/dist/calendar/hours/operatingTimeBetween.d.ts +40 -0
  27. package/dist/calendar/hours/operatingTimeBetween.js +49 -0
  28. package/dist/calendar/hours/recurringWindows.d.ts +61 -0
  29. package/dist/calendar/hours/recurringWindows.js +80 -0
  30. package/dist/calendar/index.d.ts +1 -0
  31. package/dist/calendar/index.js +1 -0
  32. package/dist/duration/calculate/durationAs.d.ts +13 -8
  33. package/dist/duration/calculate/durationAs.js +4 -8
  34. package/dist/duration/compare/compareDurations.d.ts +12 -6
  35. package/dist/duration/compare/compareDurations.js +3 -6
  36. package/dist/duration/format/formatDuration.d.ts +16 -4
  37. package/dist/duration/format/formatDuration.js +4 -5
  38. package/dist/duration/normalize/normalizeDuration.d.ts +39 -14
  39. package/dist/duration/normalize/normalizeDuration.js +6 -15
  40. package/dist/duration/parse/parseDuration.d.ts +21 -3
  41. package/dist/duration/parse/parseDuration.js +1 -3
  42. package/dist/instant/convert/classifyLocal.d.ts +1 -1
  43. package/dist/instant/convert/classifyLocal.js +1 -1
  44. package/dist/instant/convert/fromOffsetInstant.d.ts +3 -1
  45. package/dist/instant/convert/fromOffsetInstant.js +3 -1
  46. package/dist/instant/convert/resolveLocal.d.ts +12 -7
  47. package/dist/instant/convert/resolveLocal.js +6 -10
  48. package/dist/instant/convert/toOffsetInstant.d.ts +22 -9
  49. package/dist/instant/convert/toOffsetInstant.js +10 -3
  50. package/dist/intermodal/calculate/billingTimeline.d.ts +31 -11
  51. package/dist/intermodal/calculate/billingTimeline.js +2 -2
  52. package/dist/intermodal/calculate/chargeableDays.d.ts +13 -11
  53. package/dist/intermodal/calculate/chargeableDays.js +4 -9
  54. package/dist/intermodal/calculate/demurrageClock.d.ts +16 -7
  55. package/dist/intermodal/calculate/demurrageClock.js +7 -7
  56. package/dist/intermodal/calculate/freeTimeExpiry.d.ts +5 -4
  57. package/dist/intermodal/calculate/freeTimeExpiry.js +6 -6
  58. package/dist/internal/businessCalendar.d.ts +5 -0
  59. package/dist/internal/businessCalendar.js +5 -1
  60. package/dist/internal/cycleFieldValue.d.ts +6 -4
  61. package/dist/internal/cycleFieldValue.js +6 -4
  62. package/dist/internal/daylightTime.d.ts +33 -0
  63. package/dist/internal/daylightTime.js +164 -0
  64. package/dist/internal/durationUntilString.js +4 -3
  65. package/dist/internal/englishCalendarNames.js +1 -2
  66. package/dist/internal/epochNanoseconds.d.ts +2 -0
  67. package/dist/internal/epochNanoseconds.js +2 -0
  68. package/dist/internal/exactDuration.d.ts +37 -0
  69. package/dist/internal/exactDuration.js +64 -0
  70. package/dist/internal/exactMoment.d.ts +72 -0
  71. package/dist/internal/exactMoment.js +114 -0
  72. package/dist/internal/fiscalCalendar.d.ts +4 -3
  73. package/dist/internal/fiscalCalendar.js +4 -3
  74. package/dist/internal/formatCalendarDays.d.ts +2 -2
  75. package/dist/internal/formatRelativeDuration.d.ts +21 -1
  76. package/dist/internal/formatRelativeDuration.js +47 -7
  77. package/dist/internal/index.d.ts +9 -4
  78. package/dist/internal/index.js +9 -4
  79. package/dist/internal/instantFormatOptions.js +2 -1
  80. package/dist/internal/instantNanoseconds.d.ts +75 -9
  81. package/dist/internal/instantNanoseconds.js +192 -11
  82. package/dist/internal/joinDateTimeConnector.d.ts +1 -1
  83. package/dist/internal/monthGridWeekRow.d.ts +2 -1
  84. package/dist/internal/monthGridWeekRow.js +2 -1
  85. package/dist/internal/normalizeTimeZone.d.ts +2 -2
  86. package/dist/internal/normalizeTimeZone.js +2 -2
  87. package/dist/internal/operatingSchedule.d.ts +129 -0
  88. package/dist/internal/operatingSchedule.js +668 -0
  89. package/dist/internal/optionOrDefault.d.ts +18 -0
  90. package/dist/internal/optionOrDefault.js +20 -0
  91. package/dist/internal/patternToken.d.ts +2 -2
  92. package/dist/internal/patternToken.js +28 -13
  93. package/dist/internal/plainDateUntil.js +10 -6
  94. package/dist/internal/punctuality.d.ts +38 -0
  95. package/dist/internal/punctuality.js +59 -0
  96. package/dist/internal/readDateTimeFormatOptions.d.ts +30 -0
  97. package/dist/internal/readDateTimeFormatOptions.js +93 -0
  98. package/dist/internal/resolveDurationRelativeTo.d.ts +4 -0
  99. package/dist/internal/resolveDurationRelativeTo.js +11 -1
  100. package/dist/internal/resolveRelativeRounding.d.ts +17 -6
  101. package/dist/internal/resolveRelativeRounding.js +27 -7
  102. package/dist/internal/resolveRelativeUnit.d.ts +30 -0
  103. package/dist/internal/resolveRelativeUnit.js +40 -0
  104. package/dist/internal/splitStep.d.ts +24 -1
  105. package/dist/internal/splitStep.js +34 -2
  106. package/dist/internal/startOrEndOfZoned.js +2 -3
  107. package/dist/internal/temporalCompat/capabilities.d.ts +26 -0
  108. package/dist/internal/temporalCompat/capabilities.js +35 -3
  109. package/dist/internal/temporalCompat/fieldSearch.js +1 -1
  110. package/dist/internal/temporalCompat/index.d.ts +1 -1
  111. package/dist/internal/temporalCompat/index.js +1 -1
  112. package/dist/internal/temporalCompat/repros.d.ts +1 -1
  113. package/dist/internal/temporalCompat/repros.js +157 -0
  114. package/dist/internal/timestampEvents.d.ts +32 -0
  115. package/dist/internal/timestampEvents.js +76 -0
  116. package/dist/internal/utcZonedDateTime.d.ts +5 -2
  117. package/dist/internal/utcZonedDateTime.js +8 -5
  118. package/dist/internal/zonedBucket.js +8 -6
  119. package/dist/internal/zonedLocalDates.js +1 -1
  120. package/dist/internal/zonedTransitionSearch.d.ts +27 -0
  121. package/dist/internal/zonedTransitionSearch.js +218 -0
  122. package/dist/internal/zonedWallClock.d.ts +21 -7
  123. package/dist/internal/zonedWallClock.js +87 -18
  124. package/dist/internal/zonedWallClockOperations.d.ts +26 -13
  125. package/dist/internal/zonedWallClockOperations.js +87 -34
  126. package/dist/interval/validate/isValidInterval.d.ts +6 -3
  127. package/dist/interval/validate/isValidInterval.js +6 -3
  128. package/dist/plain/calculate/addDate.d.ts +11 -8
  129. package/dist/plain/calculate/addDate.js +5 -8
  130. package/dist/plain/calculate/addDateTime.d.ts +7 -4
  131. package/dist/plain/calculate/addDateTime.js +1 -4
  132. package/dist/plain/calculate/cycleDate.d.ts +16 -7
  133. package/dist/plain/calculate/cycleDate.js +3 -7
  134. package/dist/plain/calculate/cycleDateTime.d.ts +14 -4
  135. package/dist/plain/calculate/cycleDateTime.js +1 -4
  136. package/dist/plain/calculate/cycleTime.d.ts +10 -5
  137. package/dist/plain/calculate/cycleTime.js +3 -5
  138. package/dist/plain/calculate/diffDate.d.ts +1 -1
  139. package/dist/plain/calculate/diffDate.js +1 -1
  140. package/dist/plain/calculate/diffDateAsDuration.d.ts +1 -1
  141. package/dist/plain/calculate/diffDateAsDuration.js +1 -1
  142. package/dist/plain/calculate/diffDateTime.d.ts +1 -1
  143. package/dist/plain/calculate/diffDateTime.js +1 -1
  144. package/dist/plain/calculate/diffDateTimeAsDuration.d.ts +1 -1
  145. package/dist/plain/calculate/diffDateTimeAsDuration.js +1 -1
  146. package/dist/plain/calculate/diffTime.d.ts +1 -1
  147. package/dist/plain/calculate/diffTime.js +1 -1
  148. package/dist/plain/calculate/endOfDate.d.ts +8 -3
  149. package/dist/plain/calculate/endOfDate.js +1 -3
  150. package/dist/plain/calculate/endOfDateTime.d.ts +15 -5
  151. package/dist/plain/calculate/endOfDateTime.js +1 -5
  152. package/dist/plain/calculate/endOfTime.d.ts +8 -2
  153. package/dist/plain/calculate/endOfTime.js +1 -2
  154. package/dist/plain/calculate/getLocaleWeekYear.d.ts +16 -9
  155. package/dist/plain/calculate/getLocaleWeekYear.js +9 -9
  156. package/dist/plain/calculate/getWeekOfMonth.d.ts +7 -4
  157. package/dist/plain/calculate/getWeekOfMonth.js +7 -4
  158. package/dist/plain/calculate/getWeeksInLocaleWeekYear.d.ts +13 -6
  159. package/dist/plain/calculate/getWeeksInLocaleWeekYear.js +6 -6
  160. package/dist/plain/calculate/getWeeksInMonth.d.ts +5 -2
  161. package/dist/plain/calculate/getWeeksInMonth.js +5 -2
  162. package/dist/plain/calculate/nextWeekday.d.ts +7 -3
  163. package/dist/plain/calculate/nextWeekday.js +1 -3
  164. package/dist/plain/calculate/previousWeekday.d.ts +7 -3
  165. package/dist/plain/calculate/previousWeekday.js +1 -3
  166. package/dist/plain/calculate/roundDate.d.ts +20 -7
  167. package/dist/plain/calculate/roundDate.js +3 -10
  168. package/dist/plain/calculate/roundDateTime.d.ts +22 -8
  169. package/dist/plain/calculate/roundDateTime.js +3 -11
  170. package/dist/plain/calculate/roundTime.d.ts +20 -4
  171. package/dist/plain/calculate/roundTime.js +3 -7
  172. package/dist/plain/calculate/setDate.d.ts +7 -5
  173. package/dist/plain/calculate/setDate.js +1 -5
  174. package/dist/plain/calculate/setDateTime.d.ts +8 -5
  175. package/dist/plain/calculate/setDateTime.js +1 -5
  176. package/dist/plain/calculate/setTime.d.ts +10 -6
  177. package/dist/plain/calculate/setTime.js +4 -6
  178. package/dist/plain/calculate/startOfDate.d.ts +8 -2
  179. package/dist/plain/calculate/startOfDate.js +1 -2
  180. package/dist/plain/calculate/startOfDateTime.d.ts +15 -2
  181. package/dist/plain/calculate/startOfDateTime.js +1 -2
  182. package/dist/plain/calculate/startOfTime.d.ts +8 -1
  183. package/dist/plain/calculate/startOfTime.js +1 -1
  184. package/dist/plain/calculate/subtractDate.d.ts +7 -4
  185. package/dist/plain/calculate/subtractDate.js +1 -4
  186. package/dist/plain/calculate/subtractDateTime.d.ts +7 -4
  187. package/dist/plain/calculate/subtractDateTime.js +1 -4
  188. package/dist/plain/compare/areDateTimesEqualBy.d.ts +13 -5
  189. package/dist/plain/compare/areDateTimesEqualBy.js +6 -5
  190. package/dist/plain/compare/areDatesEqualBy.d.ts +15 -6
  191. package/dist/plain/compare/areDatesEqualBy.js +8 -6
  192. package/dist/plain/compare/isBetweenDate.d.ts +13 -2
  193. package/dist/plain/compare/isBetweenDate.js +4 -4
  194. package/dist/plain/compare/isBetweenDateTime.d.ts +13 -2
  195. package/dist/plain/compare/isBetweenDateTime.js +4 -4
  196. package/dist/plain/compare/isBetweenTime.d.ts +13 -2
  197. package/dist/plain/compare/isBetweenTime.js +4 -4
  198. package/dist/plain/compare/isRelativeDay.d.ts +1 -1
  199. package/dist/plain/compare/isRelativeDay.js +1 -1
  200. package/dist/plain/compare/isThisUnit.d.ts +1 -1
  201. package/dist/plain/compare/isThisUnit.js +1 -1
  202. package/dist/plain/format/formatCalendar.d.ts +21 -14
  203. package/dist/plain/format/formatCalendar.js +21 -16
  204. package/dist/plain/format/formatDate.js +5 -3
  205. package/dist/plain/format/formatDateRange.js +4 -2
  206. package/dist/plain/format/formatDateTime.js +4 -2
  207. package/dist/plain/format/formatDateTimeRange.js +4 -2
  208. package/dist/plain/format/formatDateTimeToParts.d.ts +15 -4
  209. package/dist/plain/format/formatDateTimeToParts.js +10 -6
  210. package/dist/plain/format/formatDateToParts.d.ts +13 -2
  211. package/dist/plain/format/formatDateToParts.js +8 -4
  212. package/dist/plain/format/formatRelativeDate.d.ts +16 -3
  213. package/dist/plain/format/formatRelativeDate.js +26 -15
  214. package/dist/plain/format/formatRelativeDateTime.d.ts +16 -3
  215. package/dist/plain/format/formatRelativeDateTime.js +8 -5
  216. package/dist/plain/format/formatRelativeTime.d.ts +16 -3
  217. package/dist/plain/format/formatRelativeTime.js +21 -13
  218. package/dist/plain/format/formatTime.js +4 -2
  219. package/dist/plain/interval/intervalDifferenceDate.d.ts +9 -0
  220. package/dist/plain/interval/intervalDifferenceDateTime.d.ts +9 -0
  221. package/dist/plain/interval/intervalDifferenceTime.d.ts +9 -0
  222. package/dist/plain/interval/intervalDivideEquallyDate.d.ts +19 -4
  223. package/dist/plain/interval/intervalDivideEquallyDate.js +3 -4
  224. package/dist/plain/interval/intervalDivideEquallyDateTime.d.ts +19 -4
  225. package/dist/plain/interval/intervalDivideEquallyDateTime.js +3 -4
  226. package/dist/plain/interval/intervalDivideEquallyTime.d.ts +19 -4
  227. package/dist/plain/interval/intervalDivideEquallyTime.js +3 -4
  228. package/dist/plain/interval/intervalFromDurationDate.d.ts +16 -3
  229. package/dist/plain/interval/intervalFromDurationDate.js +1 -3
  230. package/dist/plain/interval/intervalFromDurationDateTime.d.ts +16 -3
  231. package/dist/plain/interval/intervalFromDurationDateTime.js +1 -3
  232. package/dist/plain/interval/intervalFromDurationTime.d.ts +9 -0
  233. package/dist/plain/interval/intervalIntersectionDate.d.ts +9 -0
  234. package/dist/plain/interval/intervalIntersectionDateTime.d.ts +9 -0
  235. package/dist/plain/interval/intervalIntersectionTime.d.ts +9 -0
  236. package/dist/plain/interval/intervalSplitAtDate.d.ts +11 -0
  237. package/dist/plain/interval/intervalSplitAtDate.js +2 -0
  238. package/dist/plain/interval/intervalSplitAtDateTime.d.ts +11 -0
  239. package/dist/plain/interval/intervalSplitAtDateTime.js +2 -0
  240. package/dist/plain/interval/intervalSplitAtTime.d.ts +11 -0
  241. package/dist/plain/interval/intervalSplitAtTime.js +2 -0
  242. package/dist/plain/interval/intervalUnionDate.d.ts +9 -0
  243. package/dist/plain/interval/intervalUnionDateTime.d.ts +9 -0
  244. package/dist/plain/interval/intervalUnionTime.d.ts +9 -0
  245. package/dist/plain/interval/intervalXorAllDate.d.ts +9 -0
  246. package/dist/plain/interval/intervalXorAllDateTime.d.ts +9 -0
  247. package/dist/plain/interval/intervalXorAllTime.d.ts +9 -0
  248. package/dist/plain/interval/intervalXorDate.d.ts +9 -0
  249. package/dist/plain/interval/intervalXorDateTime.d.ts +9 -0
  250. package/dist/plain/interval/intervalXorTime.d.ts +9 -0
  251. package/dist/plain/interval/mergeIntervalsDate.d.ts +9 -0
  252. package/dist/plain/interval/mergeIntervalsDateTime.d.ts +9 -0
  253. package/dist/plain/interval/mergeIntervalsTime.d.ts +9 -0
  254. package/dist/plain/interval/splitIntervalByUnitDate.d.ts +23 -7
  255. package/dist/plain/interval/splitIntervalByUnitDate.js +7 -7
  256. package/dist/plain/interval/splitIntervalByUnitDateTime.d.ts +22 -6
  257. package/dist/plain/interval/splitIntervalByUnitDateTime.js +6 -6
  258. package/dist/plain/interval/splitIntervalByUnitTime.d.ts +17 -4
  259. package/dist/plain/interval/splitIntervalByUnitTime.js +1 -4
  260. package/dist/plain/map/mapDatesInRange.d.ts +8 -4
  261. package/dist/plain/map/mapDatesInRange.js +1 -4
  262. package/dist/plain/parse/parseDateTimeWithPattern.d.ts +10 -7
  263. package/dist/plain/parse/parseDateTimeWithPattern.js +10 -7
  264. package/dist/plain/parse/parseDateWithPattern.d.ts +10 -7
  265. package/dist/plain/parse/parseDateWithPattern.js +10 -7
  266. package/dist/plain/parse/parseTimeWithPattern.d.ts +10 -7
  267. package/dist/plain/parse/parseTimeWithPattern.js +10 -7
  268. package/dist/plain/parse/parseUnitFromDate.d.ts +11 -3
  269. package/dist/plain/parse/parseUnitFromDate.js +3 -3
  270. package/dist/plain/parse/parseUnitFromDateTime.d.ts +11 -3
  271. package/dist/plain/parse/parseUnitFromDateTime.js +3 -3
  272. package/dist/plain/parse/parseWeekFromDate.d.ts +10 -6
  273. package/dist/plain/parse/parseWeekFromDate.js +2 -6
  274. package/dist/plain/parse/parseWeekFromDateTime.d.ts +10 -6
  275. package/dist/plain/parse/parseWeekFromDateTime.js +2 -6
  276. package/dist/plain/validate/isValidDateRange.d.ts +19 -4
  277. package/dist/plain/validate/isValidDateRange.js +1 -4
  278. package/dist/plain/validate/isValidDateTimeRange.d.ts +20 -5
  279. package/dist/plain/validate/isValidDateTimeRange.js +2 -5
  280. package/dist/plain/validate/isValidTimeRange.d.ts +20 -5
  281. package/dist/plain/validate/isValidTimeRange.js +2 -5
  282. package/dist/precision/convert/fromExcelSerial.d.ts +10 -4
  283. package/dist/precision/convert/fromExcelSerial.js +4 -5
  284. package/dist/precision/convert/fromNanoseconds.d.ts +1 -1
  285. package/dist/precision/convert/fromNanoseconds.js +1 -1
  286. package/dist/precision/convert/toExcelSerial.d.ts +9 -3
  287. package/dist/precision/convert/toExcelSerial.js +3 -4
  288. package/dist/precision/convert/toNanoseconds.d.ts +11 -6
  289. package/dist/precision/convert/toNanoseconds.js +11 -6
  290. package/dist/precision/validate/isValidInstant.d.ts +12 -3
  291. package/dist/precision/validate/isValidInstant.js +12 -3
  292. package/dist/span/calculate/spanMs.d.ts +10 -4
  293. package/dist/span/calculate/spanMs.js +10 -4
  294. package/dist/span/calculate/spanNs.d.ts +10 -4
  295. package/dist/span/calculate/spanNs.js +10 -4
  296. package/dist/span/validate/isValidSpan.d.ts +8 -3
  297. package/dist/span/validate/isValidSpan.js +8 -3
  298. package/dist/transport/calculate/bestAvailable.d.ts +47 -0
  299. package/dist/transport/calculate/bestAvailable.js +76 -0
  300. package/dist/transport/calculate/crossingTime.d.ts +58 -0
  301. package/dist/transport/calculate/crossingTime.js +76 -0
  302. package/dist/transport/calculate/cutoffAt.d.ts +90 -0
  303. package/dist/transport/calculate/cutoffAt.js +209 -0
  304. package/dist/transport/calculate/cutoffSchedule.d.ts +70 -0
  305. package/dist/transport/calculate/cutoffSchedule.js +71 -0
  306. package/dist/transport/calculate/dwellTime.d.ts +16 -7
  307. package/dist/transport/calculate/dwellTime.js +12 -8
  308. package/dist/transport/calculate/estimateDrift.d.ts +65 -0
  309. package/dist/transport/calculate/estimateDrift.js +75 -0
  310. package/dist/transport/calculate/index.d.ts +8 -0
  311. package/dist/transport/calculate/index.js +8 -0
  312. package/dist/transport/calculate/nextDeparture.d.ts +78 -0
  313. package/dist/transport/calculate/nextDeparture.js +131 -0
  314. package/dist/transport/calculate/punctualityRate.d.ts +42 -0
  315. package/dist/transport/calculate/punctualityRate.js +59 -0
  316. package/dist/transport/calculate/scheduleDelivery.d.ts +150 -0
  317. package/dist/transport/calculate/scheduleDelivery.js +300 -0
  318. package/dist/transport/calculate/transitTime.d.ts +21 -3
  319. package/dist/transport/calculate/transitTime.js +29 -46
  320. package/dist/transport/compare/classifyPunctuality.d.ts +46 -0
  321. package/dist/transport/compare/classifyPunctuality.js +64 -0
  322. package/dist/transport/compare/index.d.ts +4 -0
  323. package/dist/transport/compare/index.js +4 -0
  324. package/dist/transport/compare/isPastCutoff.d.ts +33 -0
  325. package/dist/transport/compare/isPastCutoff.js +48 -0
  326. package/dist/transport/compare/scheduleDeviation.d.ts +37 -0
  327. package/dist/transport/compare/scheduleDeviation.js +53 -0
  328. package/dist/transport/compare/timeToCutoff.d.ts +31 -0
  329. package/dist/transport/compare/timeToCutoff.js +47 -0
  330. package/dist/transport/convert/etaAtZone.d.ts +7 -0
  331. package/dist/transport/convert/etaAtZone.js +9 -4
  332. package/dist/transport/index.d.ts +1 -0
  333. package/dist/transport/index.js +1 -0
  334. package/dist/types/business-calendar.d.ts +19 -14
  335. package/dist/types/calendar-options.d.ts +15 -3
  336. package/dist/types/date-cycle-field.d.ts +5 -0
  337. package/dist/types/date-duration-unit.d.ts +4 -0
  338. package/dist/types/date-time-cycle-field.d.ts +4 -0
  339. package/dist/types/date-time-duration-units.d.ts +4 -0
  340. package/dist/types/date-time-unit.d.ts +4 -0
  341. package/dist/types/date-unit.d.ts +4 -0
  342. package/dist/types/disambiguation.d.ts +8 -0
  343. package/dist/types/duration-relative-to.d.ts +8 -0
  344. package/dist/types/duration-string-options.d.ts +28 -0
  345. package/dist/types/fiscal-calendar.d.ts +1 -1
  346. package/dist/types/fractional-digit.d.ts +5 -0
  347. package/dist/types/free-time-options.d.ts +21 -11
  348. package/dist/types/index.d.ts +2 -1
  349. package/dist/types/index.js +2 -1
  350. package/dist/types/interval.d.ts +8 -1
  351. package/dist/types/offset.d.ts +9 -0
  352. package/dist/types/operating-schedule.d.ts +71 -0
  353. package/dist/types/overflow.d.ts +6 -0
  354. package/dist/types/relative-rounding-method.d.ts +6 -0
  355. package/dist/types/relative-time-options.d.ts +33 -5
  356. package/dist/types/rounding-options.d.ts +27 -0
  357. package/dist/types/time-cycle-field.d.ts +4 -0
  358. package/dist/types/time-duration-unit.d.ts +4 -0
  359. package/dist/types/time-unit.d.ts +4 -0
  360. package/dist/types/transport-timestamps.d.ts +54 -0
  361. package/dist/types/transport-timestamps.js +0 -0
  362. package/dist/unix/calculate/addUnix.d.ts +19 -5
  363. package/dist/unix/calculate/addUnix.js +1 -5
  364. package/dist/unix/calculate/diffUnix.d.ts +13 -3
  365. package/dist/unix/calculate/diffUnix.js +1 -3
  366. package/dist/unix/calculate/diffUnixAsDuration.d.ts +13 -3
  367. package/dist/unix/calculate/diffUnixAsDuration.js +1 -3
  368. package/dist/unix/calculate/endOfQuarterForUnix.d.ts +13 -3
  369. package/dist/unix/calculate/endOfQuarterForUnix.js +1 -3
  370. package/dist/unix/calculate/endOfUnix.d.ts +20 -4
  371. package/dist/unix/calculate/endOfUnix.js +1 -4
  372. package/dist/unix/calculate/isBetweenUnix.d.ts +26 -4
  373. package/dist/unix/calculate/isBetweenUnix.js +4 -6
  374. package/dist/unix/calculate/roundUnix.d.ts +31 -3
  375. package/dist/unix/calculate/roundUnix.js +3 -6
  376. package/dist/unix/calculate/setUnix.d.ts +35 -9
  377. package/dist/unix/calculate/setUnix.js +4 -13
  378. package/dist/unix/calculate/startOfQuarterForUnix.d.ts +13 -3
  379. package/dist/unix/calculate/startOfQuarterForUnix.js +1 -3
  380. package/dist/unix/calculate/startOfUnix.d.ts +20 -4
  381. package/dist/unix/calculate/startOfUnix.js +1 -4
  382. package/dist/unix/calculate/subtractUnix.d.ts +19 -5
  383. package/dist/unix/calculate/subtractUnix.js +1 -5
  384. package/dist/unix/compare/areUnixEqual.d.ts +7 -1
  385. package/dist/unix/compare/areUnixEqual.js +1 -1
  386. package/dist/unix/compare/areUnixEqualBy.d.ts +24 -7
  387. package/dist/unix/compare/areUnixEqualBy.js +13 -9
  388. package/dist/unix/compare/isAfterUnix.d.ts +7 -1
  389. package/dist/unix/compare/isAfterUnix.js +1 -1
  390. package/dist/unix/compare/isBeforeUnix.d.ts +7 -1
  391. package/dist/unix/compare/isBeforeUnix.js +1 -1
  392. package/dist/unix/convert/convertUnixToPlainDate.d.ts +14 -4
  393. package/dist/unix/convert/convertUnixToPlainDate.js +2 -4
  394. package/dist/unix/convert/convertUnixToPlainDateTime.d.ts +14 -4
  395. package/dist/unix/convert/convertUnixToPlainDateTime.js +2 -4
  396. package/dist/unix/convert/convertUnixToPlainTime.d.ts +14 -4
  397. package/dist/unix/convert/convertUnixToPlainTime.js +2 -4
  398. package/dist/unix/convert/convertUnixToUtc.d.ts +9 -4
  399. package/dist/unix/convert/convertUnixToUtc.js +3 -4
  400. package/dist/unix/convert/convertUnixToZoned.d.ts +10 -5
  401. package/dist/unix/convert/convertUnixToZoned.js +4 -5
  402. package/dist/unix/format/formatCalendarUnix.d.ts +27 -19
  403. package/dist/unix/format/formatCalendarUnix.js +4 -5
  404. package/dist/unix/format/formatRelativeUnix.d.ts +54 -5
  405. package/dist/unix/format/formatRelativeUnix.js +3 -5
  406. package/dist/unix/format/formatUnix.d.ts +24 -6
  407. package/dist/unix/format/formatUnix.js +8 -7
  408. package/dist/unix/get/getUnixNow.d.ts +8 -3
  409. package/dist/unix/get/getUnixNow.js +1 -3
  410. package/dist/unix/interval/intervalCountUnix.d.ts +14 -5
  411. package/dist/unix/interval/intervalCountUnix.js +2 -5
  412. package/dist/unix/interval/intervalDifferenceUnix.d.ts +6 -0
  413. package/dist/unix/interval/intervalDivideEquallyUnix.d.ts +18 -4
  414. package/dist/unix/interval/intervalDivideEquallyUnix.js +5 -4
  415. package/dist/unix/interval/intervalFromDurationUnix.d.ts +33 -5
  416. package/dist/unix/interval/intervalFromDurationUnix.js +6 -5
  417. package/dist/unix/interval/intervalIntersectionUnix.d.ts +6 -0
  418. package/dist/unix/interval/intervalLengthUnix.d.ts +16 -6
  419. package/dist/unix/interval/intervalLengthUnix.js +4 -6
  420. package/dist/unix/interval/intervalOverlappingDaysUnix.d.ts +13 -3
  421. package/dist/unix/interval/intervalOverlappingDaysUnix.js +1 -3
  422. package/dist/unix/interval/intervalSplitAtUnix.d.ts +8 -0
  423. package/dist/unix/interval/intervalSplitAtUnix.js +2 -0
  424. package/dist/unix/interval/intervalUnionUnix.d.ts +6 -0
  425. package/dist/unix/interval/intervalXorAllUnix.d.ts +6 -0
  426. package/dist/unix/interval/intervalXorUnix.d.ts +6 -0
  427. package/dist/unix/interval/mergeIntervalsUnix.d.ts +6 -0
  428. package/dist/unix/interval/splitIntervalByUnitUnix.d.ts +42 -11
  429. package/dist/unix/interval/splitIntervalByUnitUnix.js +21 -16
  430. package/dist/unix/parse/parseDateFromUnix.d.ts +13 -2
  431. package/dist/unix/parse/parseDateFromUnix.js +1 -2
  432. package/dist/unix/parse/parseDayFromUnix.d.ts +14 -2
  433. package/dist/unix/parse/parseDayFromUnix.js +2 -2
  434. package/dist/unix/parse/parseDayOfWeekFromUnix.d.ts +13 -1
  435. package/dist/unix/parse/parseDayOfWeekFromUnix.js +1 -1
  436. package/dist/unix/parse/parseHourFromUnix.d.ts +14 -2
  437. package/dist/unix/parse/parseHourFromUnix.js +2 -2
  438. package/dist/unix/parse/parseMicrosecondFromUnix.d.ts +14 -2
  439. package/dist/unix/parse/parseMicrosecondFromUnix.js +2 -2
  440. package/dist/unix/parse/parseMillisecondFromUnix.d.ts +14 -2
  441. package/dist/unix/parse/parseMillisecondFromUnix.js +2 -2
  442. package/dist/unix/parse/parseMinuteFromUnix.d.ts +14 -2
  443. package/dist/unix/parse/parseMinuteFromUnix.js +2 -2
  444. package/dist/unix/parse/parseMonthFromUnix.d.ts +14 -2
  445. package/dist/unix/parse/parseMonthFromUnix.js +2 -2
  446. package/dist/unix/parse/parseNanosecondFromUnix.d.ts +14 -2
  447. package/dist/unix/parse/parseNanosecondFromUnix.js +2 -2
  448. package/dist/unix/parse/parseSecondFromUnix.d.ts +14 -2
  449. package/dist/unix/parse/parseSecondFromUnix.js +2 -2
  450. package/dist/unix/parse/parseTimeFromUnix.d.ts +13 -2
  451. package/dist/unix/parse/parseTimeFromUnix.js +1 -2
  452. package/dist/unix/parse/parseUnitFromUnix.d.ts +22 -3
  453. package/dist/unix/parse/parseUnitFromUnix.js +2 -3
  454. package/dist/unix/parse/parseWeekFromUnix.d.ts +23 -7
  455. package/dist/unix/parse/parseWeekFromUnix.js +3 -7
  456. package/dist/unix/parse/parseYearFromUnix.d.ts +14 -2
  457. package/dist/unix/parse/parseYearFromUnix.js +2 -2
  458. package/dist/unix/validate/isValidUnixRange.d.ts +20 -4
  459. package/dist/unix/validate/isValidUnixRange.js +1 -4
  460. package/dist/utc/calculate/addUtc.d.ts +7 -4
  461. package/dist/utc/calculate/addUtc.js +1 -4
  462. package/dist/utc/calculate/diffUtc.d.ts +1 -1
  463. package/dist/utc/calculate/diffUtc.js +1 -1
  464. package/dist/utc/calculate/diffUtcAsDuration.d.ts +1 -1
  465. package/dist/utc/calculate/diffUtcAsDuration.js +1 -1
  466. package/dist/utc/calculate/endOfUtc.d.ts +16 -3
  467. package/dist/utc/calculate/endOfUtc.js +2 -3
  468. package/dist/utc/calculate/isBetweenUtc.d.ts +13 -2
  469. package/dist/utc/calculate/isBetweenUtc.js +4 -4
  470. package/dist/utc/calculate/roundUtc.d.ts +26 -9
  471. package/dist/utc/calculate/roundUtc.js +3 -12
  472. package/dist/utc/calculate/setUtc.d.ts +7 -4
  473. package/dist/utc/calculate/setUtc.js +1 -4
  474. package/dist/utc/calculate/startOfUtc.d.ts +15 -2
  475. package/dist/utc/calculate/startOfUtc.js +1 -2
  476. package/dist/utc/calculate/subtractUtc.d.ts +7 -4
  477. package/dist/utc/calculate/subtractUtc.js +1 -4
  478. package/dist/utc/compare/areUtcEqualBy.d.ts +9 -3
  479. package/dist/utc/compare/areUtcEqualBy.js +2 -3
  480. package/dist/utc/convert/convertUtcToPlainDate.d.ts +8 -3
  481. package/dist/utc/convert/convertUtcToPlainDate.js +5 -6
  482. package/dist/utc/convert/convertUtcToPlainDateTime.d.ts +8 -3
  483. package/dist/utc/convert/convertUtcToPlainDateTime.js +5 -6
  484. package/dist/utc/convert/convertUtcToPlainTime.d.ts +8 -3
  485. package/dist/utc/convert/convertUtcToPlainTime.js +5 -6
  486. package/dist/utc/convert/convertUtcToUnix.d.ts +9 -4
  487. package/dist/utc/convert/convertUtcToUnix.js +3 -4
  488. package/dist/utc/convert/convertUtcToZoned.d.ts +1 -1
  489. package/dist/utc/convert/convertUtcToZoned.js +1 -1
  490. package/dist/utc/format/formatCalendarUtc.d.ts +19 -8
  491. package/dist/utc/format/formatCalendarUtc.js +8 -6
  492. package/dist/utc/format/formatHttp.d.ts +1 -1
  493. package/dist/utc/format/formatHttp.js +1 -1
  494. package/dist/utc/format/formatRelativeUtc.d.ts +30 -10
  495. package/dist/utc/format/formatRelativeUtc.js +9 -11
  496. package/dist/utc/format/formatUtc.d.ts +17 -15
  497. package/dist/utc/format/formatUtc.js +8 -8
  498. package/dist/utc/interval/intervalDifferenceUtc.d.ts +6 -0
  499. package/dist/utc/interval/intervalDivideEquallyUtc.d.ts +18 -4
  500. package/dist/utc/interval/intervalDivideEquallyUtc.js +5 -4
  501. package/dist/utc/interval/intervalFromDurationUtc.d.ts +13 -3
  502. package/dist/utc/interval/intervalFromDurationUtc.js +1 -3
  503. package/dist/utc/interval/intervalIntersectionUtc.d.ts +6 -0
  504. package/dist/utc/interval/intervalSplitAtUtc.d.ts +8 -0
  505. package/dist/utc/interval/intervalSplitAtUtc.js +2 -0
  506. package/dist/utc/interval/intervalUnionUtc.d.ts +6 -0
  507. package/dist/utc/interval/intervalXorAllUtc.d.ts +6 -0
  508. package/dist/utc/interval/intervalXorUtc.d.ts +6 -0
  509. package/dist/utc/interval/mergeIntervalsUtc.d.ts +6 -0
  510. package/dist/utc/interval/splitIntervalByUnitUtc.d.ts +19 -6
  511. package/dist/utc/interval/splitIntervalByUnitUtc.js +6 -6
  512. package/dist/utc/parse/parseDateFromUtc.d.ts +7 -3
  513. package/dist/utc/parse/parseDateFromUtc.js +1 -3
  514. package/dist/utc/parse/parseDayFromUtc.d.ts +7 -3
  515. package/dist/utc/parse/parseDayFromUtc.js +1 -3
  516. package/dist/utc/parse/parseDayOfWeekFromUtc.d.ts +7 -3
  517. package/dist/utc/parse/parseDayOfWeekFromUtc.js +4 -6
  518. package/dist/utc/parse/parseHourFromUtc.d.ts +7 -3
  519. package/dist/utc/parse/parseHourFromUtc.js +1 -3
  520. package/dist/utc/parse/parseHttp.d.ts +1 -1
  521. package/dist/utc/parse/parseHttp.js +1 -1
  522. package/dist/utc/parse/parseMicrosecondFromUtc.d.ts +7 -3
  523. package/dist/utc/parse/parseMicrosecondFromUtc.js +1 -3
  524. package/dist/utc/parse/parseMillisecondFromUtc.d.ts +7 -3
  525. package/dist/utc/parse/parseMillisecondFromUtc.js +1 -3
  526. package/dist/utc/parse/parseMinuteFromUtc.d.ts +7 -3
  527. package/dist/utc/parse/parseMinuteFromUtc.js +1 -3
  528. package/dist/utc/parse/parseMonthFromUtc.d.ts +7 -3
  529. package/dist/utc/parse/parseMonthFromUtc.js +1 -3
  530. package/dist/utc/parse/parseNanosecondFromUtc.d.ts +7 -3
  531. package/dist/utc/parse/parseNanosecondFromUtc.js +1 -3
  532. package/dist/utc/parse/parseSecondFromUtc.d.ts +7 -3
  533. package/dist/utc/parse/parseSecondFromUtc.js +1 -3
  534. package/dist/utc/parse/parseTimeFromUtc.d.ts +8 -3
  535. package/dist/utc/parse/parseTimeFromUtc.js +5 -6
  536. package/dist/utc/parse/parseUnitFromUtc.d.ts +17 -5
  537. package/dist/utc/parse/parseUnitFromUtc.js +6 -8
  538. package/dist/utc/parse/parseWeekFromUtc.d.ts +18 -10
  539. package/dist/utc/parse/parseWeekFromUtc.js +7 -13
  540. package/dist/utc/parse/parseYearFromUtc.d.ts +7 -3
  541. package/dist/utc/parse/parseYearFromUtc.js +1 -3
  542. package/dist/utc/validate/isValidUtcRange.d.ts +16 -5
  543. package/dist/utc/validate/isValidUtcRange.js +2 -5
  544. package/dist/zoned/calculate/addZoned.d.ts +20 -10
  545. package/dist/zoned/calculate/addZoned.js +6 -13
  546. package/dist/zoned/calculate/cycleZoned.d.ts +33 -8
  547. package/dist/zoned/calculate/cycleZoned.js +1 -8
  548. package/dist/zoned/calculate/diffZoned.d.ts +1 -1
  549. package/dist/zoned/calculate/diffZoned.js +1 -1
  550. package/dist/zoned/calculate/diffZonedAsDuration.d.ts +1 -1
  551. package/dist/zoned/calculate/diffZonedAsDuration.js +1 -1
  552. package/dist/zoned/calculate/endOfQuarterForZoned.d.ts +9 -2
  553. package/dist/zoned/calculate/endOfQuarterForZoned.js +4 -5
  554. package/dist/zoned/calculate/endOfZoned.d.ts +16 -3
  555. package/dist/zoned/calculate/endOfZoned.js +2 -3
  556. package/dist/zoned/calculate/getLocaleZonedEndOfWeek.d.ts +10 -3
  557. package/dist/zoned/calculate/getLocaleZonedEndOfWeek.js +5 -6
  558. package/dist/zoned/calculate/getLocaleZonedStartOfWeek.d.ts +7 -1
  559. package/dist/zoned/calculate/getLocaleZonedStartOfWeek.js +3 -4
  560. package/dist/zoned/calculate/roundZoned.d.ts +21 -4
  561. package/dist/zoned/calculate/roundZoned.js +3 -7
  562. package/dist/zoned/calculate/setZoned.d.ts +25 -8
  563. package/dist/zoned/calculate/setZoned.js +4 -12
  564. package/dist/zoned/calculate/startOfQuarterForZoned.d.ts +7 -2
  565. package/dist/zoned/calculate/startOfQuarterForZoned.js +3 -5
  566. package/dist/zoned/calculate/startOfZoned.d.ts +15 -3
  567. package/dist/zoned/calculate/startOfZoned.js +1 -3
  568. package/dist/zoned/calculate/subtractZoned.d.ts +20 -10
  569. package/dist/zoned/calculate/subtractZoned.js +6 -13
  570. package/dist/zoned/compare/areZonedEqualBy.d.ts +14 -5
  571. package/dist/zoned/compare/areZonedEqualBy.js +7 -5
  572. package/dist/zoned/compare/isBetweenZoned.d.ts +13 -1
  573. package/dist/zoned/compare/isBetweenZoned.js +4 -3
  574. package/dist/zoned/compare/isInDaylightSaving.d.ts +38 -11
  575. package/dist/zoned/compare/isInDaylightSaving.js +40 -44
  576. package/dist/zoned/convert/convertPlainDateTimeToZoned.d.ts +18 -5
  577. package/dist/zoned/convert/convertPlainDateTimeToZoned.js +6 -11
  578. package/dist/zoned/convert/convertZonedToUnix.d.ts +9 -4
  579. package/dist/zoned/convert/convertZonedToUnix.js +2 -4
  580. package/dist/zoned/convert/convertZonedToZoned.d.ts +1 -1
  581. package/dist/zoned/convert/convertZonedToZoned.js +1 -1
  582. package/dist/zoned/format/formatCalendarZoned.d.ts +18 -12
  583. package/dist/zoned/format/formatCalendarZoned.js +13 -9
  584. package/dist/zoned/format/formatRelativeZoned.d.ts +41 -12
  585. package/dist/zoned/format/formatRelativeZoned.js +7 -4
  586. package/dist/zoned/format/formatRfc2822.d.ts +2 -2
  587. package/dist/zoned/format/formatRfc2822.js +2 -2
  588. package/dist/zoned/format/formatRfc3339.d.ts +2 -3
  589. package/dist/zoned/format/formatRfc3339.js +2 -3
  590. package/dist/zoned/format/formatTimeZoneName.d.ts +12 -3
  591. package/dist/zoned/format/formatTimeZoneName.js +5 -4
  592. package/dist/zoned/format/formatZonedDateTime.js +2 -1
  593. package/dist/zoned/format/formatZonedRange.js +2 -1
  594. package/dist/zoned/format/formatZonedToParts.d.ts +15 -4
  595. package/dist/zoned/format/formatZonedToParts.js +8 -5
  596. package/dist/zoned/get/getDstTransitions.d.ts +9 -10
  597. package/dist/zoned/get/getDstTransitions.js +12 -3
  598. package/dist/zoned/get/getTimeZoneOffset.d.ts +4 -1
  599. package/dist/zoned/get/getTimeZoneOffset.js +6 -3
  600. package/dist/zoned/get/getZonedNow.d.ts +13 -1
  601. package/dist/zoned/get/getZonedNow.js +12 -3
  602. package/dist/zoned/interval/intervalDifferenceZoned.d.ts +9 -0
  603. package/dist/zoned/interval/intervalDivideEquallyZoned.d.ts +22 -4
  604. package/dist/zoned/interval/intervalDivideEquallyZoned.js +6 -4
  605. package/dist/zoned/interval/intervalFromDurationZoned.d.ts +29 -10
  606. package/dist/zoned/interval/intervalFromDurationZoned.js +6 -13
  607. package/dist/zoned/interval/intervalIntersectionZoned.d.ts +9 -0
  608. package/dist/zoned/interval/intervalSplitAtZoned.d.ts +11 -0
  609. package/dist/zoned/interval/intervalSplitAtZoned.js +2 -0
  610. package/dist/zoned/interval/intervalUnionZoned.d.ts +9 -0
  611. package/dist/zoned/interval/intervalXorAllZoned.d.ts +9 -0
  612. package/dist/zoned/interval/intervalXorZoned.d.ts +9 -0
  613. package/dist/zoned/interval/mergeIntervalsZoned.d.ts +9 -0
  614. package/dist/zoned/interval/splitIntervalByUnitZoned.d.ts +27 -6
  615. package/dist/zoned/interval/splitIntervalByUnitZoned.js +11 -6
  616. package/dist/zoned/map/mapZonedDatesInRange.d.ts +9 -4
  617. package/dist/zoned/map/mapZonedDatesInRange.js +2 -4
  618. package/dist/zoned/parse/parseRfc2822.d.ts +1 -1
  619. package/dist/zoned/parse/parseRfc2822.js +1 -1
  620. package/dist/zoned/parse/parseUnitFromZoned.d.ts +9 -3
  621. package/dist/zoned/parse/parseUnitFromZoned.js +1 -3
  622. package/dist/zoned/parse/parseWeekFromZoned.d.ts +10 -3
  623. package/dist/zoned/parse/parseWeekFromZoned.js +2 -3
  624. package/dist/zoned/validate/hasDaylightSaving.d.ts +42 -11
  625. package/dist/zoned/validate/hasDaylightSaving.js +47 -31
  626. package/dist/zoned/validate/isValidZonedDateTime.d.ts +13 -0
  627. package/dist/zoned/validate/isValidZonedDateTime.js +14 -1
  628. package/dist/zoned/validate/isValidZonedRange.d.ts +15 -4
  629. package/dist/zoned/validate/isValidZonedRange.js +1 -4
  630. package/package.json +18 -5
  631. package/skills/gmt-arithmetic/SKILL.md +1 -1
  632. package/skills/gmt-basics/SKILL.md +10 -1
  633. package/skills/gmt-integration/SKILL.md +10 -5
  634. package/skills/gmt-timezone/SKILL.md +150 -21
  635. package/dist/internal/resolveReadingTimeZone.d.ts +0 -11
  636. package/dist/internal/resolveReadingTimeZone.js +0 -18
  637. package/dist/types/duration-unit.d.ts +0 -5
  638. /package/dist/types/{duration-unit.js → operating-schedule.js} +0 -0
@@ -8,13 +8,13 @@ import { Temporal } from "@js-temporal/polyfill";
8
8
  * - Returns zero-padded string for most units.
9
9
  * - `unit` accepts the singular or plural name of a Temporal unit (`"hour"` or `"hours"`), as Temporal
10
10
  * does; `"dayOfWeek"` has no plural.
11
- * - `weekStartsOn: "sunday"` numbers weeks by UTS #35 (week 1 holds 1 January, so late-December
12
- * days can be week 1); any value other than `"monday"` or `"sunday"` returns "".
11
+ * - `optionsArg` must be an object or omitted: `null` or any other primitive returns "", as
12
+ * Temporal's GetOptionsObject rejects it.
13
13
  * - Returns "" for invalid input.
14
14
  *
15
15
  * @param value ISO PlainDateTime string
16
16
  * @param unit unit to extract from the datetime
17
- * @param optionsArg optional: weekStartsOn ("monday" | "sunday") for week calculations; a non-object value (such as `null`) is invalid
17
+ * @param optionsArg How weeks are numbered
18
18
  * @returns string representation of the requested unit or "" on invalid input
19
19
  *
20
20
  * @example parseUnitFromDateTime("2024-03-15T14:30:45.123", "year") // "2024"
@@ -26,5 +26,13 @@ import { Temporal } from "@js-temporal/polyfill";
26
26
  * @example parseUnitFromDateTime("2024-01-01T00:00:00", "week", { weekStartsOn: "sunday" }) // "1"
27
27
  */
28
28
  export declare function parseUnitFromDateTime(value: string, unit: Temporal.SmallestUnit<"year" | "month" | "day" | "week" | "hour" | "minute" | "second" | "millisecond" | "microsecond" | "nanosecond"> | "dayOfWeek", optionsArg?: {
29
+ /**
30
+ * The first day of the week, which sets how the `"week"` unit is numbered. `"monday"` gives the
31
+ * ISO 8601 week number, where week 1 holds the year's first Thursday; `"sunday"` gives the UTS
32
+ * #35 week number with a Sunday first day and one minimal day, where week 1 holds 1 January.
33
+ * Any other value returns `""`, whatever the unit.
34
+ *
35
+ * @defaultValue `"monday"`
36
+ */
29
37
  weekStartsOn?: "monday" | "sunday";
30
38
  }): string;
@@ -14,13 +14,13 @@ import { isOptionsArgument } from "../../internal/isObject.js";
14
14
  * - Returns zero-padded string for most units.
15
15
  * - `unit` accepts the singular or plural name of a Temporal unit (`"hour"` or `"hours"`), as Temporal
16
16
  * does; `"dayOfWeek"` has no plural.
17
- * - `weekStartsOn: "sunday"` numbers weeks by UTS #35 (week 1 holds 1 January, so late-December
18
- * days can be week 1); any value other than `"monday"` or `"sunday"` returns "".
17
+ * - `optionsArg` must be an object or omitted: `null` or any other primitive returns "", as
18
+ * Temporal's GetOptionsObject rejects it.
19
19
  * - Returns "" for invalid input.
20
20
  *
21
21
  * @param value ISO PlainDateTime string
22
22
  * @param unit unit to extract from the datetime
23
- * @param optionsArg optional: weekStartsOn ("monday" | "sunday") for week calculations; a non-object value (such as `null`) is invalid
23
+ * @param optionsArg How weeks are numbered
24
24
  * @returns string representation of the requested unit or "" on invalid input
25
25
  *
26
26
  * @example parseUnitFromDateTime("2024-03-15T14:30:45.123", "year") // "2024"
@@ -1,15 +1,11 @@
1
1
  /**
2
2
  * Return the week number for a given ISO 8601 date string.
3
3
  *
4
- * - By default uses ISO weeks (Monday-based).
5
- * - `weekStartsOn: "sunday"` is the UTS #35 week of the week-year with a Sunday first day and
6
- * minimal days 1 (week 1 holds 1 January, so late-December days can be week 1), while `"monday"`
7
- * is the ISO 8601 week of the week-year; both are 1–53 — see `getWeekNumber`.
8
- * - `weekStartsOn` other than `"monday"` or `"sunday"` returns null.
4
+ * - The week is the week of the week-year, 1–53, under either numbering — see `getWeekNumber`.
9
5
  * - Returns null for invalid input.
10
6
  *
11
7
  * @param value ISO date string
12
- * @param optionsArg optional: weekStartsOn ("monday" | "sunday") for week calculations
8
+ * @param optionsArg How weeks are numbered
13
9
  * @returns Week number (1-53) or null on invalid input
14
10
  *
15
11
  * @example parseWeekFromDate("2024-01-01") // 1
@@ -20,5 +16,13 @@
20
16
  * @example parseWeekFromDate("2024-12-31", { weekStartsOn: "sunday" }) // 1 (its Sunday-first week holds 1 January 2025)
21
17
  */
22
18
  export declare function parseWeekFromDate(value: string, optionsArg?: {
19
+ /**
20
+ * The first day of the week, which sets how the week is numbered. `"monday"` gives the ISO 8601
21
+ * week number, where week 1 holds the year's first Thursday; `"sunday"` gives the UTS #35 week
22
+ * number with a Sunday first day and one minimal day, where week 1 holds 1 January. Any other
23
+ * value returns `null`.
24
+ *
25
+ * @defaultValue `"monday"`
26
+ */
23
27
  weekStartsOn?: "monday" | "sunday";
24
28
  }): number | null;
@@ -5,15 +5,11 @@ import { isOptionsArgument } from "../../internal/isObject.js";
5
5
  /**
6
6
  * Return the week number for a given ISO 8601 date string.
7
7
  *
8
- * - By default uses ISO weeks (Monday-based).
9
- * - `weekStartsOn: "sunday"` is the UTS #35 week of the week-year with a Sunday first day and
10
- * minimal days 1 (week 1 holds 1 January, so late-December days can be week 1), while `"monday"`
11
- * is the ISO 8601 week of the week-year; both are 1–53 — see `getWeekNumber`.
12
- * - `weekStartsOn` other than `"monday"` or `"sunday"` returns null.
8
+ * - The week is the week of the week-year, 1–53, under either numbering — see `getWeekNumber`.
13
9
  * - Returns null for invalid input.
14
10
  *
15
11
  * @param value ISO date string
16
- * @param optionsArg optional: weekStartsOn ("monday" | "sunday") for week calculations
12
+ * @param optionsArg How weeks are numbered
17
13
  * @returns Week number (1-53) or null on invalid input
18
14
  *
19
15
  * @example parseWeekFromDate("2024-01-01") // 1
@@ -1,15 +1,11 @@
1
1
  /**
2
2
  * Return the week number for a given ISO 8601 datetime string.
3
3
  *
4
- * - By default uses ISO weeks (Monday-based).
5
- * - `weekStartsOn: "sunday"` is the UTS #35 week of the week-year with a Sunday first day and
6
- * minimal days 1 (week 1 holds 1 January, so late-December days can be week 1), while `"monday"`
7
- * is the ISO 8601 week of the week-year; both are 1–53 — see `getWeekNumber`.
8
- * - `weekStartsOn` other than `"monday"` or `"sunday"` returns null.
4
+ * - The week is the week of the week-year, 1–53, under either numbering — see `getWeekNumber`.
9
5
  * - Returns null for invalid input.
10
6
  *
11
7
  * @param value ISO 8601 datetime string
12
- * @param optionsArg optional: weekStartsOn ("monday" | "sunday") for week calculations
8
+ * @param optionsArg How weeks are numbered
13
9
  * @returns Week number (1-53) or null on invalid input
14
10
  *
15
11
  * @example parseWeekFromDateTime("2024-01-01T12:00:00") // 1
@@ -19,5 +15,13 @@
19
15
  * @example parseWeekFromDateTime("2024-12-31T12:00:00", { weekStartsOn: "sunday" }) // 1 (its Sunday-first week holds 1 January 2025)
20
16
  */
21
17
  export declare function parseWeekFromDateTime(value: string, optionsArg?: {
18
+ /**
19
+ * The first day of the week, which sets how the week is numbered. `"monday"` gives the ISO 8601
20
+ * week number, where week 1 holds the year's first Thursday; `"sunday"` gives the UTS #35 week
21
+ * number with a Sunday first day and one minimal day, where week 1 holds 1 January. Any other
22
+ * value returns `null`.
23
+ *
24
+ * @defaultValue `"monday"`
25
+ */
22
26
  weekStartsOn?: "monday" | "sunday";
23
27
  }): number | null;
@@ -6,15 +6,11 @@ import { isOptionsArgument } from "../../internal/isObject.js";
6
6
  /**
7
7
  * Return the week number for a given ISO 8601 datetime string.
8
8
  *
9
- * - By default uses ISO weeks (Monday-based).
10
- * - `weekStartsOn: "sunday"` is the UTS #35 week of the week-year with a Sunday first day and
11
- * minimal days 1 (week 1 holds 1 January, so late-December days can be week 1), while `"monday"`
12
- * is the ISO 8601 week of the week-year; both are 1–53 — see `getWeekNumber`.
13
- * - `weekStartsOn` other than `"monday"` or `"sunday"` returns null.
9
+ * - The week is the week of the week-year, 1–53, under either numbering — see `getWeekNumber`.
14
10
  * - Returns null for invalid input.
15
11
  *
16
12
  * @param value ISO 8601 datetime string
17
- * @param optionsArg optional: weekStartsOn ("monday" | "sunday") for week calculations
13
+ * @param optionsArg How weeks are numbered
18
14
  * @returns Week number (1-53) or null on invalid input
19
15
  *
20
16
  * @example parseWeekFromDateTime("2024-01-01T12:00:00") // 1
@@ -6,9 +6,27 @@
6
6
  * const range: IsValidDateRangeProps = { value1: "2024-02-28", value2: "2024-02-29" };
7
7
  */
8
8
  export interface IsValidDateRangeProps {
9
+ /**
10
+ * The start of the range, an ISO PlainDate string.
11
+ */
9
12
  value1: string;
13
+ /**
14
+ * The end of the range, an ISO PlainDate string.
15
+ */
10
16
  value2: string;
17
+ /**
18
+ * The settings for the comparison. It must be an object or omitted; any other value, `null`
19
+ * included, returns `false`.
20
+ *
21
+ * @defaultValue None. Equal values are not a valid range.
22
+ */
11
23
  options?: {
24
+ /**
25
+ * Whether `value1` equal to `value2` is a valid range. `false` requires `value1` to be
26
+ * before `value2`.
27
+ *
28
+ * @defaultValue `false`
29
+ */
12
30
  allowEqual?: boolean;
13
31
  };
14
32
  }
@@ -18,11 +36,8 @@ export interface IsValidDateRangeProps {
18
36
  * - Validates both dates with `isValidDate`, so each endpoint's RFC 9557 annotations are read as
19
37
  * `Temporal.PlainDate.from` reads them (an elective `[foo=bar]` or `[u-ca=iso8601]` is ignored).
20
38
  * - Rejects leap seconds in either date.
21
- * - When `options.allowEqual` is true, equality is considered valid as well.
22
39
  *
23
- * @param value1 first ISO PlainDate string
24
- * @param value2 second ISO PlainDate string
25
- * @param options optional allowEqual flag
40
+ * @param props The two values to compare and how equal values are treated
26
41
  * @returns boolean indicating whether the date range is valid
27
42
  *
28
43
  * @example isValidDateRange({ value1: "2024-02-28", value2: "2024-02-29" }) // true
@@ -7,11 +7,8 @@ import { isObject, isOptionsArgument } from "../../internal/isObject.js";
7
7
  * - Validates both dates with `isValidDate`, so each endpoint's RFC 9557 annotations are read as
8
8
  * `Temporal.PlainDate.from` reads them (an elective `[foo=bar]` or `[u-ca=iso8601]` is ignored).
9
9
  * - Rejects leap seconds in either date.
10
- * - When `options.allowEqual` is true, equality is considered valid as well.
11
10
  *
12
- * @param value1 first ISO PlainDate string
13
- * @param value2 second ISO PlainDate string
14
- * @param options optional allowEqual flag
11
+ * @param props The two values to compare and how equal values are treated
15
12
  * @returns boolean indicating whether the date range is valid
16
13
  *
17
14
  * @example isValidDateRange({ value1: "2024-02-28", value2: "2024-02-29" }) // true
@@ -1,15 +1,12 @@
1
1
  /**
2
2
  * Return true if `value1` and `value2` form a valid datetime range — both parseable as
3
- * ISO PlainDateTime strings and `value1 <= value2`.
3
+ * ISO PlainDateTime strings and `value1` before `value2`.
4
4
  *
5
5
  * - Both inputs must be ISO 8601 datetime strings (e.g. `"2024-01-01T10:00:00"`), as
6
6
  * `isValidDateTime` accepts, annotations included.
7
- * - Equal `value1 === value2` is valid when `options.allowEqual` is true.
8
7
  * - Invalid input, malformed strings, or leap-second strings return `false`.
9
8
  *
10
- * @param value1 first ISO PlainDateTime string
11
- * @param value2 second ISO PlainDateTime string
12
- * @param options optional allowEqual flag
9
+ * @param props The two values to compare and how equal values are treated
13
10
  * @returns boolean indicating whether the datetime range is valid
14
11
  *
15
12
  * @example isValidDateTimeRange({ value1: "2024-01-01T10:00:00", value2: "2024-12-31T23:59:59" }) // true
@@ -17,9 +14,27 @@
17
14
  * @example isValidDateTimeRange({ value1: "2024-01-01T10:00:00", value2: "2024-01-01T10:00:00", options: { allowEqual: true } }) // true
18
15
  */
19
16
  export declare function isValidDateTimeRange(props: {
17
+ /**
18
+ * The start of the range, an ISO PlainDateTime string.
19
+ */
20
20
  value1: string;
21
+ /**
22
+ * The end of the range, an ISO PlainDateTime string.
23
+ */
21
24
  value2: string;
25
+ /**
26
+ * The settings for the comparison. It must be an object or omitted; any other value, `null`
27
+ * included, returns `false`.
28
+ *
29
+ * @defaultValue None. Equal values are not a valid range.
30
+ */
22
31
  options?: {
32
+ /**
33
+ * Whether `value1` equal to `value2` is a valid range. `false` requires `value1` to be
34
+ * before `value2`.
35
+ *
36
+ * @defaultValue `false`
37
+ */
23
38
  allowEqual?: boolean;
24
39
  };
25
40
  }): boolean;
@@ -4,16 +4,13 @@ import { isValidDateTime } from "./isValidDateTime.js";
4
4
  import { isObject, isOptionsArgument } from "../../internal/isObject.js";
5
5
  /**
6
6
  * Return true if `value1` and `value2` form a valid datetime range — both parseable as
7
- * ISO PlainDateTime strings and `value1 <= value2`.
7
+ * ISO PlainDateTime strings and `value1` before `value2`.
8
8
  *
9
9
  * - Both inputs must be ISO 8601 datetime strings (e.g. `"2024-01-01T10:00:00"`), as
10
10
  * `isValidDateTime` accepts, annotations included.
11
- * - Equal `value1 === value2` is valid when `options.allowEqual` is true.
12
11
  * - Invalid input, malformed strings, or leap-second strings return `false`.
13
12
  *
14
- * @param value1 first ISO PlainDateTime string
15
- * @param value2 second ISO PlainDateTime string
16
- * @param options optional allowEqual flag
13
+ * @param props The two values to compare and how equal values are treated
17
14
  * @returns boolean indicating whether the datetime range is valid
18
15
  *
19
16
  * @example isValidDateTimeRange({ value1: "2024-01-01T10:00:00", value2: "2024-12-31T23:59:59" }) // true
@@ -1,16 +1,13 @@
1
1
  /**
2
2
  * Return true if `value1` and `value2` form a valid time range — both parseable as
3
- * ISO PlainTime strings and `value1 <= value2`.
3
+ * ISO PlainTime strings and `value1` before `value2`.
4
4
  *
5
5
  * - Both inputs must be ISO 8601 time strings (e.g. `"14:30:00"`), as `isValidTime` accepts,
6
6
  * annotations included.
7
7
  * - Ordered by `Temporal.PlainTime.compare`, to the nanosecond.
8
- * - Equal `value1 === value2` is valid when `options.allowEqual` is true.
9
8
  * - Invalid input, malformed strings, or leap-second strings return `false`.
10
9
  *
11
- * @param value1 first ISO PlainTime string
12
- * @param value2 second ISO PlainTime string
13
- * @param options optional allowEqual flag
10
+ * @param props The two values to compare and how equal values are treated
14
11
  * @returns boolean indicating whether the time range is valid
15
12
  *
16
13
  * @example isValidTimeRange({ value1: "09:00:00", value2: "17:00:00" }) // true
@@ -18,9 +15,27 @@
18
15
  * @example isValidTimeRange({ value1: "12:00:00", value2: "12:00:00", options: { allowEqual: true } }) // true
19
16
  */
20
17
  export declare function isValidTimeRange(props: {
18
+ /**
19
+ * The start of the range, an ISO PlainTime string.
20
+ */
21
21
  value1: string;
22
+ /**
23
+ * The end of the range, an ISO PlainTime string.
24
+ */
22
25
  value2: string;
26
+ /**
27
+ * The settings for the comparison. It must be an object or omitted; any other value, `null`
28
+ * included, returns `false`.
29
+ *
30
+ * @defaultValue None. Equal values are not a valid range.
31
+ */
23
32
  options?: {
33
+ /**
34
+ * Whether `value1` equal to `value2` is a valid range. `false` requires `value1` to be
35
+ * before `value2`.
36
+ *
37
+ * @defaultValue `false`
38
+ */
24
39
  allowEqual?: boolean;
25
40
  };
26
41
  }): boolean;
@@ -4,17 +4,14 @@ import { isValidTime } from "./isValidTime.js";
4
4
  import { isObject, isOptionsArgument } from "../../internal/isObject.js";
5
5
  /**
6
6
  * Return true if `value1` and `value2` form a valid time range — both parseable as
7
- * ISO PlainTime strings and `value1 <= value2`.
7
+ * ISO PlainTime strings and `value1` before `value2`.
8
8
  *
9
9
  * - Both inputs must be ISO 8601 time strings (e.g. `"14:30:00"`), as `isValidTime` accepts,
10
10
  * annotations included.
11
11
  * - Ordered by `Temporal.PlainTime.compare`, to the nanosecond.
12
- * - Equal `value1 === value2` is valid when `options.allowEqual` is true.
13
12
  * - Invalid input, malformed strings, or leap-second strings return `false`.
14
13
  *
15
- * @param value1 first ISO PlainTime string
16
- * @param value2 second ISO PlainTime string
17
- * @param options optional allowEqual flag
14
+ * @param props The two values to compare and how equal values are treated
18
15
  * @returns boolean indicating whether the time range is valid
19
16
  *
20
17
  * @example isValidTimeRange({ value1: "09:00:00", value2: "17:00:00" }) // true
@@ -7,9 +7,7 @@ import type { ExcelDateSystem } from "./toExcelSerial.js";
7
7
  * that never existed. Lotus 1-2-3 treated 1900 as a leap year and Excel keeps the bug for
8
8
  * compatibility, so the whole serial day `[60, 61)` is a hole: 59 is 1900-02-28 and 61 is
9
9
  * 1900-03-01. Mapping 60 to either neighbour would put every earlier date one day out.
10
- * - `{ system: "1904" }` selects the legacy Mac system, whose serial 0 is 1904-01-01 and
11
- * which has no phantom day — serial 60 there is a real 1904-03-01. A 1904 serial resolves
12
- * to the same instant as the 1900 serial exactly 1462 higher.
10
+ * - In the 1904 system serial 60 is a real 1904-03-01.
13
11
  * - Accepted range is Excel's own: serial 1 (1900-01-01) to just under 2958466 (the end of
14
12
  * 9999-12-31) in the 1900 system, serial 0 to just under 2957004 in the 1904 system.
15
13
  * Serial 0 in the 1900 system is Excel's "January 0, 1900" placeholder, not a date.
@@ -19,7 +17,7 @@ import type { ExcelDateSystem } from "./toExcelSerial.js";
19
17
  * - Returns "" on invalid input.
20
18
  *
21
19
  * @param value Excel day serial (number, may carry a fractional time of day)
22
- * @param options optional: system ("1900" (default) | "1904")
20
+ * @param options Which Excel date system the serial is in
23
21
  * @returns ISO 8601 instant string (UTC), or "" on invalid input
24
22
  *
25
23
  * @example fromExcelSerial(1) // "1900-01-01T00:00:00Z" — Excel's first serial
@@ -34,5 +32,13 @@ import type { ExcelDateSystem } from "./toExcelSerial.js";
34
32
  * @example fromExcelSerial(-1) // ""
35
33
  */
36
34
  export declare function fromExcelSerial(value: number, options?: {
35
+ /**
36
+ * Which Excel date system the serial is counted in. `"1900"` counts serial 1 as 1900-01-01
37
+ * and has the phantom serial 60; `"1904"` is the legacy Mac system, whose serial 0 is
38
+ * 1904-01-01 and which has no phantom day. The same instant is exactly 1462 lower in the 1904
39
+ * system.
40
+ *
41
+ * @defaultValue `"1900"`
42
+ */
37
43
  system?: ExcelDateSystem;
38
44
  }): string;
@@ -1,6 +1,7 @@
1
1
  import { EXCEL_1900_EPOCH_NANOSECONDS, EXCEL_1900_PRE_PHANTOM_EPOCH_NANOSECONDS, EXCEL_1904_EPOCH_NANOSECONDS, EXCEL_PHANTOM_SERIAL, MAX_EXCEL_1900_SERIAL_EXCLUSIVE, MAX_EXCEL_1904_SERIAL_EXCLUSIVE, MILLISECONDS_PER_DAY, MIN_EXCEL_1900_SERIAL, MIN_EXCEL_1904_SERIAL, NANOSECONDS_PER_MILLISECOND, } from "../../internal/index.js";
2
2
  import { fromNanoseconds } from "./fromNanoseconds.js";
3
3
  import { isOptionsArgument } from "../../internal/isObject.js";
4
+ import { optionOrDefault } from "../../internal/optionOrDefault.js";
4
5
  /**
5
6
  * Convert an Excel day serial back to an ISO 8601 instant string.
6
7
  *
@@ -9,9 +10,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
9
10
  * that never existed. Lotus 1-2-3 treated 1900 as a leap year and Excel keeps the bug for
10
11
  * compatibility, so the whole serial day `[60, 61)` is a hole: 59 is 1900-02-28 and 61 is
11
12
  * 1900-03-01. Mapping 60 to either neighbour would put every earlier date one day out.
12
- * - `{ system: "1904" }` selects the legacy Mac system, whose serial 0 is 1904-01-01 and
13
- * which has no phantom day — serial 60 there is a real 1904-03-01. A 1904 serial resolves
14
- * to the same instant as the 1900 serial exactly 1462 higher.
13
+ * - In the 1904 system serial 60 is a real 1904-03-01.
15
14
  * - Accepted range is Excel's own: serial 1 (1900-01-01) to just under 2958466 (the end of
16
15
  * 9999-12-31) in the 1900 system, serial 0 to just under 2957004 in the 1904 system.
17
16
  * Serial 0 in the 1900 system is Excel's "January 0, 1900" placeholder, not a date.
@@ -21,7 +20,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
21
20
  * - Returns "" on invalid input.
22
21
  *
23
22
  * @param value Excel day serial (number, may carry a fractional time of day)
24
- * @param options optional: system ("1900" (default) | "1904")
23
+ * @param options Which Excel date system the serial is in
25
24
  * @returns ISO 8601 instant string (UTC), or "" on invalid input
26
25
  *
27
26
  * @example fromExcelSerial(1) // "1900-01-01T00:00:00Z" — Excel's first serial
@@ -40,7 +39,7 @@ export function fromExcelSerial(value, options) {
40
39
  if (!isOptionsArgument(options)) {
41
40
  return "";
42
41
  }
43
- const system = options?.system === undefined ? "1900" : options.system;
42
+ const system = optionOrDefault(options?.system, "1900");
44
43
  if (system !== "1900" && system !== "1904") {
45
44
  return "";
46
45
  }
@@ -15,7 +15,7 @@
15
15
  * - Returns "" on invalid input.
16
16
  *
17
17
  * @param nanoseconds nanoseconds since the Unix epoch (bigint)
18
- * @param timeZone optional IANA timeZone identifier; omitted or `undefined` is UTC
18
+ * @param timeZone optional IANA name or UTC offset; omitted or `undefined` is UTC
19
19
  * @returns ISO 8601 instant string (UTC), zoned ISO 8601 string when a timeZone is given, or "" on invalid input
20
20
  *
21
21
  * @example fromNanoseconds(0n) // "1970-01-01T00:00:00Z"
@@ -18,7 +18,7 @@ import { isValidTimeZone } from "../../zoned/validate/index.js";
18
18
  * - Returns "" on invalid input.
19
19
  *
20
20
  * @param nanoseconds nanoseconds since the Unix epoch (bigint)
21
- * @param timeZone optional IANA timeZone identifier; omitted or `undefined` is UTC
21
+ * @param timeZone optional IANA name or UTC offset; omitted or `undefined` is UTC
22
22
  * @returns ISO 8601 instant string (UTC), zoned ISO 8601 string when a timeZone is given, or "" on invalid input
23
23
  *
24
24
  * @example fromNanoseconds(0n) // "1970-01-01T00:00:00Z"
@@ -20,8 +20,6 @@ export type ExcelDateSystem = "1900" | "1904";
20
20
  * compatibility. No instant maps to serial 60: 1900-02-28 is 59 and 1900-03-01 is 61.
21
21
  * Silently "fixing" this would put GMT one day out from Excel for every date before March
22
22
  * 1900.
23
- * - `{ system: "1904" }` selects the legacy Mac system, whose serial 0 is 1904-01-01. The
24
- * same instant is exactly 1462 lower there than in the 1900 system.
25
23
  * - **Instants outside Excel's own serial range are invalid input**, not an out-of-range
26
24
  * number: the 1900 system runs from serial 1 (1900-01-01) to 2958465 (9999-12-31), the
27
25
  * 1904 system from serial 0 (1904-01-01) to 2957003. Serial 0 in the 1900 system is
@@ -38,7 +36,7 @@ export type ExcelDateSystem = "1900" | "1904";
38
36
  * that Excel rejects on the way in.
39
37
  *
40
38
  * @param isoString ISO 8601 instant string (e.g. "2024-03-10T12:00:00Z")
41
- * @param options optional: system ("1900" (default) | "1904")
39
+ * @param options Which Excel date system the serial is in
42
40
  * @returns Excel day serial as a number, or null on invalid input
43
41
  *
44
42
  * @example toExcelSerial("1900-01-01T00:00:00Z") // 1 — Excel's first serial
@@ -52,5 +50,13 @@ export type ExcelDateSystem = "1900" | "1904";
52
50
  * @example toExcelSerial("invalid") // null
53
51
  */
54
52
  export declare function toExcelSerial(isoString: string, options?: {
53
+ /**
54
+ * Which Excel date system the serial is counted in. `"1900"` counts serial 1 as 1900-01-01
55
+ * and has the phantom serial 60; `"1904"` is the legacy Mac system, whose serial 0 is
56
+ * 1904-01-01 and which has no phantom day. The same instant is exactly 1462 lower in the 1904
57
+ * system.
58
+ *
59
+ * @defaultValue `"1900"`
60
+ */
55
61
  system?: ExcelDateSystem;
56
62
  }): number | null;
@@ -1,5 +1,6 @@
1
1
  import { EXCEL_1900_EPOCH_NANOSECONDS, EXCEL_1900_PHANTOM_END_NANOSECONDS, EXCEL_1900_PRE_PHANTOM_EPOCH_NANOSECONDS, EXCEL_1904_EPOCH_NANOSECONDS, floorDivide, MAX_EXCEL_1900_SERIAL_EXCLUSIVE, MAX_EXCEL_1904_SERIAL_EXCLUSIVE, MIN_EXCEL_1900_SERIAL, MIN_EXCEL_1904_SERIAL, NANOSECONDS_PER_DAY, NANOSECONDS_PER_DAY_NUMBER, parseInstantNanoseconds, } from "../../internal/index.js";
2
2
  import { isOptionsArgument } from "../../internal/isObject.js";
3
+ import { optionOrDefault } from "../../internal/optionOrDefault.js";
3
4
  /**
4
5
  * Convert an ISO 8601 instant string to an Excel day serial.
5
6
  *
@@ -11,8 +12,6 @@ import { isOptionsArgument } from "../../internal/isObject.js";
11
12
  * compatibility. No instant maps to serial 60: 1900-02-28 is 59 and 1900-03-01 is 61.
12
13
  * Silently "fixing" this would put GMT one day out from Excel for every date before March
13
14
  * 1900.
14
- * - `{ system: "1904" }` selects the legacy Mac system, whose serial 0 is 1904-01-01. The
15
- * same instant is exactly 1462 lower there than in the 1900 system.
16
15
  * - **Instants outside Excel's own serial range are invalid input**, not an out-of-range
17
16
  * number: the 1900 system runs from serial 1 (1900-01-01) to 2958465 (9999-12-31), the
18
17
  * 1904 system from serial 0 (1904-01-01) to 2957003. Serial 0 in the 1900 system is
@@ -29,7 +28,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
29
28
  * that Excel rejects on the way in.
30
29
  *
31
30
  * @param isoString ISO 8601 instant string (e.g. "2024-03-10T12:00:00Z")
32
- * @param options optional: system ("1900" (default) | "1904")
31
+ * @param options Which Excel date system the serial is in
33
32
  * @returns Excel day serial as a number, or null on invalid input
34
33
  *
35
34
  * @example toExcelSerial("1900-01-01T00:00:00Z") // 1 — Excel's first serial
@@ -47,7 +46,7 @@ export function toExcelSerial(isoString, options) {
47
46
  if (!isOptionsArgument(options)) {
48
47
  return null;
49
48
  }
50
- const system = options?.system === undefined ? "1900" : options.system;
49
+ const system = optionOrDefault(options?.system, "1900");
51
50
  if (system !== "1900" && system !== "1904") {
52
51
  return null;
53
52
  }
@@ -3,11 +3,15 @@
3
3
  *
4
4
  * - Requires an offset designator (`Z`, `±HH:MM`), as `Temporal.Instant` does — date-only
5
5
  * and offset-less strings are rejected.
6
- * - Accepts a bracketed IANA time zone annotation and a `[u-ca=...]` calendar annotation, both
7
- * ignored as `Temporal.Instant.from` ignores them (an instant has no calendar).
8
- * - **A bracketed zone annotation is syntactic only.** As in `Temporal.Instant.from`, it is
9
- * ignored: the offset alone fixes the instant, and a zone that does not exist or disagrees
10
- * with the offset is not checked.
6
+ * - Accepts a bracketed IANA time zone annotation and a `[u-ca=...]` calendar annotation. The
7
+ * calendar is ignored, as `Temporal.Instant.from` ignores it (an instant has no calendar).
8
+ * - **The offset fixes the instant; a bracketed zone only resolves a rounded one.** An offset
9
+ * written to the minute that is the bracketed zone's sub-minute offset rounded
10
+ * (`-00:45[Africa/Monrovia]`, for −00:44:30) names the instant the zone gives, as
11
+ * `Temporal.ZonedDateTime.from` reads it, so a zoned string Temporal wrote is read back as
12
+ * the instant it was written for, except a wall time repeated inside a sub-minute offset
13
+ * change, which reads as its first pass (see `isValidInstant`). Otherwise the bracket is not
14
+ * checked: a zone that does not exist, or that disagrees with the offset, changes nothing.
11
15
  * - ISO 8601 extended format before any annotation: `<date>T<time>`, then
12
16
  * `Z` or `±HH:MM[:SS[.fraction]]`. Basic format, a space or lower-case `t` separator, a
13
17
  * lower-case `z` and an hour-only time or offset return `0n`, although
@@ -29,7 +33,8 @@
29
33
  * @example toNanoseconds("2024-03-10T12:00:00.123456789Z") // 1710072000123456789n
30
34
  * @example toNanoseconds("1969-12-31T23:59:59Z") // -1000000000n
31
35
  * @example toNanoseconds("2024-03-10T12:00:00-05:00[America/New_York]") // 1710090000000000000n
32
- * @example toNanoseconds("2024-03-10T12:00:00+05:00[America/New_York]") // 1710054000000000000n — the offset decides, the zone is ignored
36
+ * @example toNanoseconds("2024-03-10T12:00:00+05:00[America/New_York]") // 1710054000000000000n — the offset decides, the zone is not checked
37
+ * @example toNanoseconds("1960-01-01T00:20:00-00:45[Africa/Monrovia]") // -315615330000000000n — the zone's −00:44:30, which `-00:45` rounds
33
38
  * @example toNanoseconds("2024-03-10T12:00:00") // 0n — no offset designator
34
39
  * @example toNanoseconds("20240310T120000Z") // 0n — basic format
35
40
  * @example toNanoseconds("invalid") // 0n
@@ -4,11 +4,15 @@ import { parseInstantNanoseconds } from "../../internal/index.js";
4
4
  *
5
5
  * - Requires an offset designator (`Z`, `±HH:MM`), as `Temporal.Instant` does — date-only
6
6
  * and offset-less strings are rejected.
7
- * - Accepts a bracketed IANA time zone annotation and a `[u-ca=...]` calendar annotation, both
8
- * ignored as `Temporal.Instant.from` ignores them (an instant has no calendar).
9
- * - **A bracketed zone annotation is syntactic only.** As in `Temporal.Instant.from`, it is
10
- * ignored: the offset alone fixes the instant, and a zone that does not exist or disagrees
11
- * with the offset is not checked.
7
+ * - Accepts a bracketed IANA time zone annotation and a `[u-ca=...]` calendar annotation. The
8
+ * calendar is ignored, as `Temporal.Instant.from` ignores it (an instant has no calendar).
9
+ * - **The offset fixes the instant; a bracketed zone only resolves a rounded one.** An offset
10
+ * written to the minute that is the bracketed zone's sub-minute offset rounded
11
+ * (`-00:45[Africa/Monrovia]`, for −00:44:30) names the instant the zone gives, as
12
+ * `Temporal.ZonedDateTime.from` reads it, so a zoned string Temporal wrote is read back as
13
+ * the instant it was written for, except a wall time repeated inside a sub-minute offset
14
+ * change, which reads as its first pass (see `isValidInstant`). Otherwise the bracket is not
15
+ * checked: a zone that does not exist, or that disagrees with the offset, changes nothing.
12
16
  * - ISO 8601 extended format before any annotation: `<date>T<time>`, then
13
17
  * `Z` or `±HH:MM[:SS[.fraction]]`. Basic format, a space or lower-case `t` separator, a
14
18
  * lower-case `z` and an hour-only time or offset return `0n`, although
@@ -30,7 +34,8 @@ import { parseInstantNanoseconds } from "../../internal/index.js";
30
34
  * @example toNanoseconds("2024-03-10T12:00:00.123456789Z") // 1710072000123456789n
31
35
  * @example toNanoseconds("1969-12-31T23:59:59Z") // -1000000000n
32
36
  * @example toNanoseconds("2024-03-10T12:00:00-05:00[America/New_York]") // 1710090000000000000n
33
- * @example toNanoseconds("2024-03-10T12:00:00+05:00[America/New_York]") // 1710054000000000000n — the offset decides, the zone is ignored
37
+ * @example toNanoseconds("2024-03-10T12:00:00+05:00[America/New_York]") // 1710054000000000000n — the offset decides, the zone is not checked
38
+ * @example toNanoseconds("1960-01-01T00:20:00-00:45[Africa/Monrovia]") // -315615330000000000n — the zone's −00:44:30, which `-00:45` rounds
34
39
  * @example toNanoseconds("2024-03-10T12:00:00") // 0n — no offset designator
35
40
  * @example toNanoseconds("20240310T120000Z") // 0n — basic format
36
41
  * @example toNanoseconds("invalid") // 0n
@@ -9,9 +9,18 @@
9
9
  *
10
10
  * - Requires an offset designator (`Z`, `±HH:MM`); a bracketed IANA zone may follow, but a
11
11
  * bracket alone is not enough.
12
- * - **A bracketed zone annotation is syntactic only.** As in `Temporal.Instant.from`, it is
13
- * ignored: the offset alone fixes the instant, and a zone that does not exist or disagrees
14
- * with the offset is not checked.
12
+ * - **The offset fixes the instant; a bracketed zone only resolves a rounded one.** An offset
13
+ * written to the minute that is the bracketed zone's sub-minute offset rounded
14
+ * (`-00:45[Africa/Monrovia]`, for −00:44:30) names the instant the zone gives, as
15
+ * `Temporal.ZonedDateTime.from` reads it, so a zoned string Temporal wrote is read back as
16
+ * the instant it was written for, at the first and last instants of the range too, where the
17
+ * written offset's own reading can fall just outside it
18
+ * (`-271821-04-19T23:58:45-00:01[Europe/London]` is the first instant). One exception, which
19
+ * is Temporal's own: a wall time repeated inside a sub-minute offset change, written with a
20
+ * minute-rounded offset, reads as its first pass (for example `1952-10-15T23:59:59-11:20[Pacific/Niue]`,
21
+ * where the zone moved from −11:19:40 to −11:20:00, is the pass at −11:19:40). Otherwise the bracket is not checked: a
22
+ * zone that does not exist, or that disagrees with the offset, changes nothing. Validity never depends
23
+ * on the bracket.
15
24
  * - ISO 8601 extended format before any annotation: `<date>T<time>`, then
16
25
  * `Z` or `±HH:MM[:SS[.fraction]]`. Basic format, a space or lower-case `t` separator, a
17
26
  * lower-case `z` and an hour-only time or offset return `false`, although
@@ -10,9 +10,18 @@ import { parseInstantNanoseconds } from "../../internal/index.js";
10
10
  *
11
11
  * - Requires an offset designator (`Z`, `±HH:MM`); a bracketed IANA zone may follow, but a
12
12
  * bracket alone is not enough.
13
- * - **A bracketed zone annotation is syntactic only.** As in `Temporal.Instant.from`, it is
14
- * ignored: the offset alone fixes the instant, and a zone that does not exist or disagrees
15
- * with the offset is not checked.
13
+ * - **The offset fixes the instant; a bracketed zone only resolves a rounded one.** An offset
14
+ * written to the minute that is the bracketed zone's sub-minute offset rounded
15
+ * (`-00:45[Africa/Monrovia]`, for −00:44:30) names the instant the zone gives, as
16
+ * `Temporal.ZonedDateTime.from` reads it, so a zoned string Temporal wrote is read back as
17
+ * the instant it was written for, at the first and last instants of the range too, where the
18
+ * written offset's own reading can fall just outside it
19
+ * (`-271821-04-19T23:58:45-00:01[Europe/London]` is the first instant). One exception, which
20
+ * is Temporal's own: a wall time repeated inside a sub-minute offset change, written with a
21
+ * minute-rounded offset, reads as its first pass (for example `1952-10-15T23:59:59-11:20[Pacific/Niue]`,
22
+ * where the zone moved from −11:19:40 to −11:20:00, is the pass at −11:19:40). Otherwise the bracket is not checked: a
23
+ * zone that does not exist, or that disagrees with the offset, changes nothing. Validity never depends
24
+ * on the bracket.
16
25
  * - ISO 8601 extended format before any annotation: `<date>T<time>`, then
17
26
  * `Z` or `±HH:MM[:SS[.fraction]]`. Basic format, a space or lower-case `t` separator, a
18
27
  * lower-case `z` and an hour-only time or offset return `false`, although