@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
@@ -7,9 +7,12 @@
7
7
  * there, so the pieces share no value and together cover the interval exactly once (the rule
8
8
  * CORE-6's `splitIntervalAt` uses).
9
9
  * - The final sub-interval is trimmed so its `end` never exceeds the original `end`.
10
- * - Each boundary is computed from `start` (`start + k × amount`, as Temporal and Luxon's
11
- * `Interval.splitBy` do), not by stepping from the previous boundary, so month-end starts
12
- * don't drift: a monthly split from January 31 lands on February 29, March 31, April 30.
10
+ * - Each boundary is computed from `start` (`start + k × amount`), not by stepping from the
11
+ * previous boundary, so month-end starts don't drift: a monthly split from January 31 lands
12
+ * on February 29, March 31, April 30. Temporal's `add` constrains a day the month lacks to
13
+ * the month's last day, and stepping from that boundary would keep the shortened day
14
+ * (February 29, then March 29).
15
+ * - Comparison: Luxon's `Interval.splitBy` computes each boundary from the start the same way.
13
16
  * - A step that resolves to the same date as the previous boundary is skipped, so no empty
14
17
  * slice is produced. A step that goes backwards returns `[]`.
15
18
  * - Returns `[{ start, end }]` when `start === end` (zero-length interval).
@@ -22,9 +25,6 @@
22
25
  * when `CalendarEquals` is false (before 1.16.0 it stepped in ISO). Each boundary's tag is
23
26
  * re-derived from the actual stepped date, never copied — a month-by-month step can cross a
24
27
  * leap-month or era boundary mid-split.
25
- * - `options.maxPieces` (positive safe integer, default `1_000_000`) bounds the output: a split
26
- * into more slices returns `[]`, decided from the span before stepping where it can be, and
27
- * otherwise as soon as slice `maxPieces + 1` is due. An invalid `maxPieces` also returns `[]`.
28
28
  * - Compatibility: since 1.16.0 calendar strings are RFC 9557 (ISO digits, `[u-ca=<id>]`, canonical
29
29
  * calendar ids); see `isValidCalendarDate`.
30
30
  *
@@ -32,7 +32,7 @@
32
32
  * @param end ISO PlainDate string for the interval end, optionally calendar-annotated
33
33
  * @param unit duration unit string — `"years" | "months" | "weeks" | "days"` (time units are ignored by PlainDate and return [])
34
34
  * @param amount positive number of units per step
35
- * @param options optional: `maxPieces` (positive safe integer, default `1_000_000`)
35
+ * @param options The limit on the size of the result
36
36
  * @returns array of `{ start, end }` records, or [] on invalid input
37
37
  *
38
38
  * @example splitIntervalByUnitDate("2024-01-01", "2024-01-10", "day", 2) // [{ start: "2024-01-01", end: "2024-01-03" }, { start: "2024-01-03", end: "2024-01-05" }, { start: "2024-01-05", end: "2024-01-07" }, { start: "2024-01-07", end: "2024-01-09" }, { start: "2024-01-09", end: "2024-01-10" }]
@@ -45,8 +45,24 @@
45
45
  * @example splitIntervalByUnitDate("2024-01-01", "2024-01-10", "day", 2, { maxPieces: 5 }) // [{ start: "2024-01-01", end: "2024-01-03" }, { start: "2024-01-03", end: "2024-01-05" }, { start: "2024-01-05", end: "2024-01-07" }, { start: "2024-01-07", end: "2024-01-09" }, { start: "2024-01-09", end: "2024-01-10" }]
46
46
  */
47
47
  export declare function splitIntervalByUnitDate(start: string, end: string, unit: string, amount: number, options?: {
48
+ /**
49
+ * The most records the result may hold. A result that would hold more, or more than the longest
50
+ * possible array (2^32 - 1 elements), returns `[]` and none is built. A value that is not a
51
+ * positive safe integer also returns `[]`.
52
+ *
53
+ * @defaultValue `1_000_000`
54
+ */
48
55
  maxPieces?: number;
49
56
  }): Array<{
57
+ /**
58
+ * The date the interval begins on, as an ISO 8601 date (`YYYY-MM-DD`). It keeps a calendar
59
+ * annotation such as `[u-ca=hebrew]` when the inputs carry one.
60
+ */
50
61
  start: string;
62
+ /**
63
+ * The first date after the interval, in the same format as `start`. It is exclusive: the interval
64
+ * holds everything from `start` up to but not including this value. It can equal `start`, which
65
+ * makes the interval empty.
66
+ */
51
67
  end: string;
52
68
  }>;
@@ -13,9 +13,12 @@ import { minSlicesForSpan } from "../../internal/splitStep.js";
13
13
  * there, so the pieces share no value and together cover the interval exactly once (the rule
14
14
  * CORE-6's `splitIntervalAt` uses).
15
15
  * - The final sub-interval is trimmed so its `end` never exceeds the original `end`.
16
- * - Each boundary is computed from `start` (`start + k × amount`, as Temporal and Luxon's
17
- * `Interval.splitBy` do), not by stepping from the previous boundary, so month-end starts
18
- * don't drift: a monthly split from January 31 lands on February 29, March 31, April 30.
16
+ * - Each boundary is computed from `start` (`start + k × amount`), not by stepping from the
17
+ * previous boundary, so month-end starts don't drift: a monthly split from January 31 lands
18
+ * on February 29, March 31, April 30. Temporal's `add` constrains a day the month lacks to
19
+ * the month's last day, and stepping from that boundary would keep the shortened day
20
+ * (February 29, then March 29).
21
+ * - Comparison: Luxon's `Interval.splitBy` computes each boundary from the start the same way.
19
22
  * - A step that resolves to the same date as the previous boundary is skipped, so no empty
20
23
  * slice is produced. A step that goes backwards returns `[]`.
21
24
  * - Returns `[{ start, end }]` when `start === end` (zero-length interval).
@@ -28,9 +31,6 @@ import { minSlicesForSpan } from "../../internal/splitStep.js";
28
31
  * when `CalendarEquals` is false (before 1.16.0 it stepped in ISO). Each boundary's tag is
29
32
  * re-derived from the actual stepped date, never copied — a month-by-month step can cross a
30
33
  * leap-month or era boundary mid-split.
31
- * - `options.maxPieces` (positive safe integer, default `1_000_000`) bounds the output: a split
32
- * into more slices returns `[]`, decided from the span before stepping where it can be, and
33
- * otherwise as soon as slice `maxPieces + 1` is due. An invalid `maxPieces` also returns `[]`.
34
34
  * - Compatibility: since 1.16.0 calendar strings are RFC 9557 (ISO digits, `[u-ca=<id>]`, canonical
35
35
  * calendar ids); see `isValidCalendarDate`.
36
36
  *
@@ -38,7 +38,7 @@ import { minSlicesForSpan } from "../../internal/splitStep.js";
38
38
  * @param end ISO PlainDate string for the interval end, optionally calendar-annotated
39
39
  * @param unit duration unit string — `"years" | "months" | "weeks" | "days"` (time units are ignored by PlainDate and return [])
40
40
  * @param amount positive number of units per step
41
- * @param options optional: `maxPieces` (positive safe integer, default `1_000_000`)
41
+ * @param options The limit on the size of the result
42
42
  * @returns array of `{ start, end }` records, or [] on invalid input
43
43
  *
44
44
  * @example splitIntervalByUnitDate("2024-01-01", "2024-01-10", "day", 2) // [{ start: "2024-01-01", end: "2024-01-03" }, { start: "2024-01-03", end: "2024-01-05" }, { start: "2024-01-05", end: "2024-01-07" }, { start: "2024-01-07", end: "2024-01-09" }, { start: "2024-01-09", end: "2024-01-10" }]
@@ -8,8 +8,11 @@
8
8
  * CORE-6's `splitIntervalAt` uses).
9
9
  * - The final sub-interval is trimmed so its `end` never exceeds the original `end`.
10
10
  * - Calendar-unit boundaries (years, months, weeks, days) are computed from `start`
11
- * (`start + k × amount`, as Temporal and Luxon's `Interval.splitBy` do), so month-end starts
12
- * don't drift: a monthly split from January 31 lands on February 29, March 31, April 30.
11
+ * (`start + k × amount`), so month-end starts don't drift: a monthly split from January 31
12
+ * lands on February 29, March 31, April 30. Temporal's `add` constrains a day the month lacks
13
+ * to the month's last day, and stepping from that boundary would keep the shortened day
14
+ * (February 29, then March 29).
15
+ * - Comparison: Luxon's `Interval.splitBy` computes each boundary from the start the same way.
13
16
  * - Exact-unit boundaries (hours and smaller) step from the previous boundary. Exact units never
14
17
  * clamp, and stepping keeps nanosecond precision where `k × amount` would pass
15
18
  * `Number.MAX_SAFE_INTEGER`.
@@ -17,15 +20,12 @@
17
20
  * slice is produced. A step that goes backwards returns `[]`.
18
21
  * - Returns `[{ start, end }]` when `start === end` (zero-length interval).
19
22
  * - Returns `[]` on invalid input (unparseable start/end, unsupported unit, non-positive amount).
20
- * - `options.maxPieces` (positive safe integer, default `1_000_000`) bounds the output: a split
21
- * into more slices returns `[]`, decided from the span before stepping where it can be, and
22
- * otherwise as soon as slice `maxPieces + 1` is due. An invalid `maxPieces` also returns `[]`.
23
23
  *
24
24
  * @param start ISO PlainDateTime string for the interval start
25
25
  * @param end ISO PlainDateTime string for the interval end
26
26
  * @param unit duration unit string — any `DateTimeDurationUnit`
27
27
  * @param amount positive number of units per step
28
- * @param options optional: `maxPieces` (positive safe integer, default `1_000_000`)
28
+ * @param options The limit on the size of the result
29
29
  * @returns array of `{ start, end }` records, or [] on invalid input
30
30
  *
31
31
  * @example splitIntervalByUnitDateTime("2024-01-01T12:00:00", "2024-01-01T14:00:00", "hour", 1) // [{ start: "2024-01-01T12:00:00", end: "2024-01-01T13:00:00" }, { start: "2024-01-01T13:00:00", end: "2024-01-01T14:00:00" }]
@@ -37,8 +37,24 @@
37
37
  * @example splitIntervalByUnitDateTime("2024-01-01T12:00:00", "2024-01-01T14:00:00", "hour", 1, { maxPieces: 2 }) // [{ start: "2024-01-01T12:00:00", end: "2024-01-01T13:00:00" }, { start: "2024-01-01T13:00:00", end: "2024-01-01T14:00:00" }]
38
38
  */
39
39
  export declare function splitIntervalByUnitDateTime(start: string, end: string, unit: string, amount: number, options?: {
40
+ /**
41
+ * The most records the result may hold. A result that would hold more, or more than the longest
42
+ * possible array (2^32 - 1 elements), returns `[]` and none is built. A value that is not a
43
+ * positive safe integer also returns `[]`.
44
+ *
45
+ * @defaultValue `1_000_000`
46
+ */
40
47
  maxPieces?: number;
41
48
  }): Array<{
49
+ /**
50
+ * The date-time the interval begins at, as an ISO 8601 date-time string with no offset or time
51
+ * zone.
52
+ */
42
53
  start: string;
54
+ /**
55
+ * The first date-time after the interval, in the same format as `start`. It is exclusive: the
56
+ * interval holds everything from `start` up to but not including this value. It can equal
57
+ * `start`, which makes the interval empty.
58
+ */
43
59
  end: string;
44
60
  }>;
@@ -14,8 +14,11 @@ import { minSlicesForSpan } from "../../internal/splitStep.js";
14
14
  * CORE-6's `splitIntervalAt` uses).
15
15
  * - The final sub-interval is trimmed so its `end` never exceeds the original `end`.
16
16
  * - Calendar-unit boundaries (years, months, weeks, days) are computed from `start`
17
- * (`start + k × amount`, as Temporal and Luxon's `Interval.splitBy` do), so month-end starts
18
- * don't drift: a monthly split from January 31 lands on February 29, March 31, April 30.
17
+ * (`start + k × amount`), so month-end starts don't drift: a monthly split from January 31
18
+ * lands on February 29, March 31, April 30. Temporal's `add` constrains a day the month lacks
19
+ * to the month's last day, and stepping from that boundary would keep the shortened day
20
+ * (February 29, then March 29).
21
+ * - Comparison: Luxon's `Interval.splitBy` computes each boundary from the start the same way.
19
22
  * - Exact-unit boundaries (hours and smaller) step from the previous boundary. Exact units never
20
23
  * clamp, and stepping keeps nanosecond precision where `k × amount` would pass
21
24
  * `Number.MAX_SAFE_INTEGER`.
@@ -23,15 +26,12 @@ import { minSlicesForSpan } from "../../internal/splitStep.js";
23
26
  * slice is produced. A step that goes backwards returns `[]`.
24
27
  * - Returns `[{ start, end }]` when `start === end` (zero-length interval).
25
28
  * - Returns `[]` on invalid input (unparseable start/end, unsupported unit, non-positive amount).
26
- * - `options.maxPieces` (positive safe integer, default `1_000_000`) bounds the output: a split
27
- * into more slices returns `[]`, decided from the span before stepping where it can be, and
28
- * otherwise as soon as slice `maxPieces + 1` is due. An invalid `maxPieces` also returns `[]`.
29
29
  *
30
30
  * @param start ISO PlainDateTime string for the interval start
31
31
  * @param end ISO PlainDateTime string for the interval end
32
32
  * @param unit duration unit string — any `DateTimeDurationUnit`
33
33
  * @param amount positive number of units per step
34
- * @param options optional: `maxPieces` (positive safe integer, default `1_000_000`)
34
+ * @param options The limit on the size of the result
35
35
  * @returns array of `{ start, end }` records, or [] on invalid input
36
36
  *
37
37
  * @example splitIntervalByUnitDateTime("2024-01-01T12:00:00", "2024-01-01T14:00:00", "hour", 1) // [{ start: "2024-01-01T12:00:00", end: "2024-01-01T13:00:00" }, { start: "2024-01-01T13:00:00", end: "2024-01-01T14:00:00" }]
@@ -13,15 +13,12 @@
13
13
  * - Returns `[{ start, end }]` when `start === end` (zero-length interval).
14
14
  * - Returns `[]` on invalid input (unparseable start/end, unsupported unit, non-positive amount,
15
15
  * or a unit that has no effect on `PlainTime`, e.g. `"days"`).
16
- * - `options.maxPieces` (positive safe integer, default `1_000_000`) bounds the output: a split
17
- * into more slices returns `[]`, decided from the span before stepping. An invalid
18
- * `maxPieces` also returns `[]`.
19
16
  *
20
17
  * @param start ISO PlainTime string for the interval start
21
18
  * @param end ISO PlainTime string for the interval end
22
19
  * @param unit duration unit string — `"hours" | "minutes" | "seconds" | "milliseconds" | "microseconds" | "nanoseconds"` (calendar units are ignored by PlainTime and return [])
23
20
  * @param amount positive number of units per step
24
- * @param options optional: `maxPieces` (positive safe integer, default `1_000_000`)
21
+ * @param options The limit on the size of the result
25
22
  * @returns array of `{ start, end }` records, or [] on invalid input
26
23
  *
27
24
  * @example splitIntervalByUnitTime("12:00:00", "14:00:00", "hour", 1) // [{ start: "12:00:00", end: "13:00:00" }, { start: "13:00:00", end: "14:00:00" }]
@@ -34,8 +31,24 @@
34
31
  * @example splitIntervalByUnitTime("12:00:00", "14:30:00", "hour", 1, { maxPieces: 3 }) // [{ start: "12:00:00", end: "13:00:00" }, { start: "13:00:00", end: "14:00:00" }, { start: "14:00:00", end: "14:30:00" }]
35
32
  */
36
33
  export declare function splitIntervalByUnitTime(start: string, end: string, unit: string, amount: number, options?: {
34
+ /**
35
+ * The most records the result may hold. A result that would hold more, or more than the longest
36
+ * possible array (2^32 - 1 elements), returns `[]` and none is built. A value that is not a
37
+ * positive safe integer also returns `[]`.
38
+ *
39
+ * @defaultValue `1_000_000`
40
+ */
37
41
  maxPieces?: number;
38
42
  }): Array<{
43
+ /**
44
+ * The clock time the interval begins at, as an ISO 8601 time string with no date, offset or time
45
+ * zone.
46
+ */
39
47
  start: string;
48
+ /**
49
+ * The first clock time after the interval, in the same format as `start`. It is exclusive: the
50
+ * interval holds everything from `start` up to but not including this value. It can equal
51
+ * `start`, which makes the interval empty.
52
+ */
40
53
  end: string;
41
54
  }>;
@@ -19,15 +19,12 @@ import { isExactDurationUnit, minSlicesForSpan, } from "../../internal/splitStep
19
19
  * - Returns `[{ start, end }]` when `start === end` (zero-length interval).
20
20
  * - Returns `[]` on invalid input (unparseable start/end, unsupported unit, non-positive amount,
21
21
  * or a unit that has no effect on `PlainTime`, e.g. `"days"`).
22
- * - `options.maxPieces` (positive safe integer, default `1_000_000`) bounds the output: a split
23
- * into more slices returns `[]`, decided from the span before stepping. An invalid
24
- * `maxPieces` also returns `[]`.
25
22
  *
26
23
  * @param start ISO PlainTime string for the interval start
27
24
  * @param end ISO PlainTime string for the interval end
28
25
  * @param unit duration unit string — `"hours" | "minutes" | "seconds" | "milliseconds" | "microseconds" | "nanoseconds"` (calendar units are ignored by PlainTime and return [])
29
26
  * @param amount positive number of units per step
30
- * @param options optional: `maxPieces` (positive safe integer, default `1_000_000`)
27
+ * @param options The limit on the size of the result
31
28
  * @returns array of `{ start, end }` records, or [] on invalid input
32
29
  *
33
30
  * @example splitIntervalByUnitTime("12:00:00", "14:00:00", "hour", 1) // [{ start: "12:00:00", end: "13:00:00" }, { start: "13:00:00", end: "14:00:00" }]
@@ -3,9 +3,6 @@
3
3
  *
4
4
  * - Generates dates with optional step (default 1 day).
5
5
  * - Returns [] if start > end, invalid inputs, or step <= 0.
6
- * - `options.maxPieces` (positive safe integer, default `1_000_000`) bounds the output: when the
7
- * range holds more dates than that, it returns `[]` without generating any. An invalid
8
- * `maxPieces` also returns `[]`.
9
6
  * - An explicit `undefined` `stepDays` is the default step, so `(start, end, undefined, options)`
10
7
  * reaches `options`. **Compatibility:** before 1.16.0 it returned `[]`.
11
8
  * - **End-inclusive, where the `interval*` functions are half-open.** This enumerates the dates a
@@ -17,7 +14,7 @@
17
14
  * @param startDate ISO PlainDate string for the first date
18
15
  * @param endDate ISO PlainDate string for the last date (inclusive)
19
16
  * @param stepDays optional number of days to step between results
20
- * @param options optional: `maxPieces` (positive safe integer, default `1_000_000`)
17
+ * @param options The limit on the size of the result
21
18
  * @returns array of ISO PlainDate strings, or [] on invalid input
22
19
  *
23
20
  * @example mapDatesInRange("2024-03-01", "2024-03-05") // ["2024-03-01", "2024-03-02", "2024-03-03", "2024-03-04", "2024-03-05"]
@@ -32,5 +29,12 @@
32
29
  * @example mapDatesInRange("2024-03-01", "2024-03-05", 1, { maxPieces: 10 }) // ["2024-03-01", "2024-03-02", "2024-03-03", "2024-03-04", "2024-03-05"]
33
30
  */
34
31
  export declare function mapDatesInRange(startDate: string, endDate: string, stepDays?: number, options?: {
32
+ /**
33
+ * The most dates the result may hold. A result that would hold more, or more than the longest
34
+ * possible array (2^32 - 1 elements), returns `[]` and none is built. A value that is not a
35
+ * positive safe integer also returns `[]`.
36
+ *
37
+ * @defaultValue `1_000_000`
38
+ */
35
39
  maxPieces?: number;
36
40
  }): string[];
@@ -7,9 +7,6 @@ import { exceedsPieceLimit, resolveMaxPieces } from "../../internal/maxPieces.js
7
7
  *
8
8
  * - Generates dates with optional step (default 1 day).
9
9
  * - Returns [] if start > end, invalid inputs, or step <= 0.
10
- * - `options.maxPieces` (positive safe integer, default `1_000_000`) bounds the output: when the
11
- * range holds more dates than that, it returns `[]` without generating any. An invalid
12
- * `maxPieces` also returns `[]`.
13
10
  * - An explicit `undefined` `stepDays` is the default step, so `(start, end, undefined, options)`
14
11
  * reaches `options`. **Compatibility:** before 1.16.0 it returned `[]`.
15
12
  * - **End-inclusive, where the `interval*` functions are half-open.** This enumerates the dates a
@@ -21,7 +18,7 @@ import { exceedsPieceLimit, resolveMaxPieces } from "../../internal/maxPieces.js
21
18
  * @param startDate ISO PlainDate string for the first date
22
19
  * @param endDate ISO PlainDate string for the last date (inclusive)
23
20
  * @param stepDays optional number of days to step between results
24
- * @param options optional: `maxPieces` (positive safe integer, default `1_000_000`)
21
+ * @param options The limit on the size of the result
25
22
  * @returns array of ISO PlainDate strings, or [] on invalid input
26
23
  *
27
24
  * @example mapDatesInRange("2024-03-01", "2024-03-05") // ["2024-03-01", "2024-03-02", "2024-03-03", "2024-03-04", "2024-03-05"]
@@ -7,9 +7,8 @@
7
7
  * producer format — a CSV column, a legacy API field, a partially-typed
8
8
  * form value — not for generating locale-correct output. For display,
9
9
  * use `formatDateTime`/`formatDateToParts`, which order fields per
10
- * locale instead of hard-coding a field order (see roadmap Decision 1
11
- * — a token *formatter*, the inverse of this function, is deliberately
12
- * out of scope for GMT).
10
+ * locale instead of hard-coding a field order (a token *formatter*,
11
+ * the inverse of this function, is deliberately out of scope for GMT).
13
12
  * - Accepts the full combined date + time token set (unlike
14
13
  * `parseDateWithPattern`/`parseTimeWithPattern`, which each reject the
15
14
  * other's tokens).
@@ -40,10 +39,13 @@
40
39
  * | `GGGG` | era name (long) | locale | — | BCE label ⇒ final year = 1 − parsed year |
41
40
  * | `GG` | era name (short) | locale | — | same resolution |
42
41
  *
43
- * - Text in `'single quotes'` is a literal; a doubled `''` inside a
44
- * quoted segment is a literal `'`. Any other character (`/ - , space
45
- * :`, literal digits, etc.) outside a quote/letter-run is automatically
46
- * a literal — no explicit quoting required.
42
+ * - Literal text follows the Unicode UTS #35 date format pattern rules.
43
+ * Text in `'single quotes'` is a literal, letters included. Two
44
+ * adjacent quotes `''` are one literal `'`, inside or outside quoted
45
+ * text: `"yyyy''MM"` reads `"2024'03"`, and `"'o''clock'"` reads
46
+ * `"o'clock"`. A quote that never closes makes the pattern malformed
47
+ * (`""`). Any other character that is not a letter (`/ - , space :`,
48
+ * digits and so on) is a literal with no quoting.
47
49
  * - `MMMM`/`MMM`/`EEEE`/`EEE`/`a`/`GGGG`/`GG` are locale-aware. If
48
50
  * `locale` is omitted and the pattern uses any of them, GMT defaults
49
51
  * to `"en-US"` rather than returning `""` for every caller who didn't
@@ -79,6 +81,7 @@
79
81
  *
80
82
  * @example parseDateTimeWithPattern("03/15/2024 14:30:00", "MM/dd/yyyy HH:mm:ss") // "2024-03-15T14:30:00"
81
83
  * @example parseDateTimeWithPattern("15-Mar-2024 02:30 PM", "dd-MMM-yyyy hh:mm a") // "2024-03-15T14:30:00"
84
+ * @example parseDateTimeWithPattern("Mar 15, '24 at 14:30", "MMM d, ''yy 'at' HH:mm") // "2024-03-15T14:30:00" ('' is one literal quote)
82
85
  * @example parseDateTimeWithPattern("02/31/2024 14:30:00", "MM/dd/yyyy HH:mm:ss") // "" (shape-valid, not a real date)
83
86
  * @example parseDateTimeWithPattern("not a date", "MM/dd/yyyy HH:mm:ss") // ""
84
87
  * @example parseDateTimeWithPattern("19 mai 2024 10:20", "d MMMM yyyy HH:mm", ["fr-FR", "en-US"]) // "2024-05-19T10:20:00"
@@ -9,9 +9,8 @@ import { DATE_TIME_PATTERN_FIELDS, parseValueWithPattern, } from "../../internal
9
9
  * producer format — a CSV column, a legacy API field, a partially-typed
10
10
  * form value — not for generating locale-correct output. For display,
11
11
  * use `formatDateTime`/`formatDateToParts`, which order fields per
12
- * locale instead of hard-coding a field order (see roadmap Decision 1
13
- * — a token *formatter*, the inverse of this function, is deliberately
14
- * out of scope for GMT).
12
+ * locale instead of hard-coding a field order (a token *formatter*,
13
+ * the inverse of this function, is deliberately out of scope for GMT).
15
14
  * - Accepts the full combined date + time token set (unlike
16
15
  * `parseDateWithPattern`/`parseTimeWithPattern`, which each reject the
17
16
  * other's tokens).
@@ -42,10 +41,13 @@ import { DATE_TIME_PATTERN_FIELDS, parseValueWithPattern, } from "../../internal
42
41
  * | `GGGG` | era name (long) | locale | — | BCE label ⇒ final year = 1 − parsed year |
43
42
  * | `GG` | era name (short) | locale | — | same resolution |
44
43
  *
45
- * - Text in `'single quotes'` is a literal; a doubled `''` inside a
46
- * quoted segment is a literal `'`. Any other character (`/ - , space
47
- * :`, literal digits, etc.) outside a quote/letter-run is automatically
48
- * a literal — no explicit quoting required.
44
+ * - Literal text follows the Unicode UTS #35 date format pattern rules.
45
+ * Text in `'single quotes'` is a literal, letters included. Two
46
+ * adjacent quotes `''` are one literal `'`, inside or outside quoted
47
+ * text: `"yyyy''MM"` reads `"2024'03"`, and `"'o''clock'"` reads
48
+ * `"o'clock"`. A quote that never closes makes the pattern malformed
49
+ * (`""`). Any other character that is not a letter (`/ - , space :`,
50
+ * digits and so on) is a literal with no quoting.
49
51
  * - `MMMM`/`MMM`/`EEEE`/`EEE`/`a`/`GGGG`/`GG` are locale-aware. If
50
52
  * `locale` is omitted and the pattern uses any of them, GMT defaults
51
53
  * to `"en-US"` rather than returning `""` for every caller who didn't
@@ -81,6 +83,7 @@ import { DATE_TIME_PATTERN_FIELDS, parseValueWithPattern, } from "../../internal
81
83
  *
82
84
  * @example parseDateTimeWithPattern("03/15/2024 14:30:00", "MM/dd/yyyy HH:mm:ss") // "2024-03-15T14:30:00"
83
85
  * @example parseDateTimeWithPattern("15-Mar-2024 02:30 PM", "dd-MMM-yyyy hh:mm a") // "2024-03-15T14:30:00"
86
+ * @example parseDateTimeWithPattern("Mar 15, '24 at 14:30", "MMM d, ''yy 'at' HH:mm") // "2024-03-15T14:30:00" ('' is one literal quote)
84
87
  * @example parseDateTimeWithPattern("02/31/2024 14:30:00", "MM/dd/yyyy HH:mm:ss") // "" (shape-valid, not a real date)
85
88
  * @example parseDateTimeWithPattern("not a date", "MM/dd/yyyy HH:mm:ss") // ""
86
89
  * @example parseDateTimeWithPattern("19 mai 2024 10:20", "d MMMM yyyy HH:mm", ["fr-FR", "en-US"]) // "2024-05-19T10:20:00"
@@ -7,9 +7,8 @@
7
7
  * producer format — a CSV column, a legacy API field, a partially-typed
8
8
  * form value — not for generating locale-correct output. For display,
9
9
  * use `formatDate`/`formatDateToParts`, which order fields per locale
10
- * instead of hard-coding a field order (see roadmap Decision 1 — a
11
- * token *formatter*, the inverse of this function, is deliberately out
12
- * of scope for GMT).
10
+ * instead of hard-coding a field order (a token *formatter*, the
11
+ * inverse of this function, is deliberately out of scope for GMT).
13
12
  * - `pattern` accepts only date-shaped tokens. A pattern containing a
14
13
  * time-only token (`H h m s S a`) is malformed for this function and
15
14
  * returns `""` — use `parseDateTimeWithPattern` for combined input.
@@ -30,10 +29,13 @@
30
29
  * | `GGGG` | era name (long) | locale | — | BCE label ⇒ final year = 1 − parsed year |
31
30
  * | `GG` | era name (short) | locale | — | same resolution |
32
31
  *
33
- * - Text in `'single quotes'` is a literal; a doubled `''` inside a
34
- * quoted segment is a literal `'`. Any other character (`/ - , space`,
35
- * literal digits, etc.) outside a quote/letter-run is automatically a
36
- * literal — no explicit quoting required.
32
+ * - Literal text follows the Unicode UTS #35 date format pattern rules.
33
+ * Text in `'single quotes'` is a literal, letters included. Two
34
+ * adjacent quotes `''` are one literal `'`, inside or outside quoted
35
+ * text: `"yyyy''MM"` reads `"2024'03"`, and `"'o''clock'"` reads
36
+ * `"o'clock"`. A quote that never closes makes the pattern malformed
37
+ * (`""`). Any other character that is not a letter (`/ - , space`,
38
+ * digits and so on) is a literal with no quoting.
37
39
  * - `MMMM`/`MMM`/`EEEE`/`EEE`/`GGGG`/`GG` are locale-aware. If `locale`
38
40
  * is omitted and the pattern uses any of them, GMT defaults to
39
41
  * `"en-US"` rather than returning `""` for every caller who didn't
@@ -62,6 +64,7 @@
62
64
  *
63
65
  * @example parseDateWithPattern("03/15/2024", "MM/dd/yyyy") // "2024-03-15"
64
66
  * @example parseDateWithPattern("15-Mar-2024", "dd-MMM-yyyy") // "2024-03-15"
67
+ * @example parseDateWithPattern("Mar 15, '24", "MMM d, ''yy") // "2024-03-15" ('' is one literal quote)
65
68
  * @example parseDateWithPattern("02/31/2024", "MM/dd/yyyy") // "" (shape-valid, not a real date)
66
69
  * @example parseDateWithPattern("14:30", "HH:mm") // "" (time token in a date-only pattern)
67
70
  * @example parseDateWithPattern("19 mai 2024", "d MMMM yyyy", ["fr-FR", "en-US"]) // "2024-05-19"
@@ -9,9 +9,8 @@ import { DATE_PATTERN_FIELDS, parseValueWithPattern } from "../../internal/index
9
9
  * producer format — a CSV column, a legacy API field, a partially-typed
10
10
  * form value — not for generating locale-correct output. For display,
11
11
  * use `formatDate`/`formatDateToParts`, which order fields per locale
12
- * instead of hard-coding a field order (see roadmap Decision 1 — a
13
- * token *formatter*, the inverse of this function, is deliberately out
14
- * of scope for GMT).
12
+ * instead of hard-coding a field order (a token *formatter*, the
13
+ * inverse of this function, is deliberately out of scope for GMT).
15
14
  * - `pattern` accepts only date-shaped tokens. A pattern containing a
16
15
  * time-only token (`H h m s S a`) is malformed for this function and
17
16
  * returns `""` — use `parseDateTimeWithPattern` for combined input.
@@ -32,10 +31,13 @@ import { DATE_PATTERN_FIELDS, parseValueWithPattern } from "../../internal/index
32
31
  * | `GGGG` | era name (long) | locale | — | BCE label ⇒ final year = 1 − parsed year |
33
32
  * | `GG` | era name (short) | locale | — | same resolution |
34
33
  *
35
- * - Text in `'single quotes'` is a literal; a doubled `''` inside a
36
- * quoted segment is a literal `'`. Any other character (`/ - , space`,
37
- * literal digits, etc.) outside a quote/letter-run is automatically a
38
- * literal — no explicit quoting required.
34
+ * - Literal text follows the Unicode UTS #35 date format pattern rules.
35
+ * Text in `'single quotes'` is a literal, letters included. Two
36
+ * adjacent quotes `''` are one literal `'`, inside or outside quoted
37
+ * text: `"yyyy''MM"` reads `"2024'03"`, and `"'o''clock'"` reads
38
+ * `"o'clock"`. A quote that never closes makes the pattern malformed
39
+ * (`""`). Any other character that is not a letter (`/ - , space`,
40
+ * digits and so on) is a literal with no quoting.
39
41
  * - `MMMM`/`MMM`/`EEEE`/`EEE`/`GGGG`/`GG` are locale-aware. If `locale`
40
42
  * is omitted and the pattern uses any of them, GMT defaults to
41
43
  * `"en-US"` rather than returning `""` for every caller who didn't
@@ -64,6 +66,7 @@ import { DATE_PATTERN_FIELDS, parseValueWithPattern } from "../../internal/index
64
66
  *
65
67
  * @example parseDateWithPattern("03/15/2024", "MM/dd/yyyy") // "2024-03-15"
66
68
  * @example parseDateWithPattern("15-Mar-2024", "dd-MMM-yyyy") // "2024-03-15"
69
+ * @example parseDateWithPattern("Mar 15, '24", "MMM d, ''yy") // "2024-03-15" ('' is one literal quote)
67
70
  * @example parseDateWithPattern("02/31/2024", "MM/dd/yyyy") // "" (shape-valid, not a real date)
68
71
  * @example parseDateWithPattern("14:30", "HH:mm") // "" (time token in a date-only pattern)
69
72
  * @example parseDateWithPattern("19 mai 2024", "d MMMM yyyy", ["fr-FR", "en-US"]) // "2024-05-19"
@@ -6,9 +6,8 @@
6
6
  * producer format — a CSV column, a legacy API field, a partially-typed
7
7
  * form value — not for generating locale-correct output. For display,
8
8
  * use `formatTime`/`formatDateToParts`, which order fields per locale
9
- * instead of hard-coding a field order (see roadmap Decision 1 — a
10
- * token *formatter*, the inverse of this function, is deliberately out
11
- * of scope for GMT).
9
+ * instead of hard-coding a field order (a token *formatter*, the
10
+ * inverse of this function, is deliberately out of scope for GMT).
12
11
  * - `pattern` accepts only time-shaped tokens. A pattern containing a
13
12
  * date-only token (`y M d E G`) is malformed for this function and
14
13
  * returns `""` — use `parseDateTimeWithPattern` for combined input.
@@ -27,10 +26,13 @@
27
26
  * | `SSS` | millisecond | 3 digits | 000–999 | |
28
27
  * | `a` | meridiem | locale | — | `getLocaleMeridiems(locale)` → `[AM-label, PM-label]` |
29
28
  *
30
- * - Text in `'single quotes'` is a literal; a doubled `''` inside a
31
- * quoted segment is a literal `'`. Any other character (`: , space`,
32
- * literal digits, etc.) outside a quote/letter-run is automatically a
33
- * literal — no explicit quoting required.
29
+ * - Literal text follows the Unicode UTS #35 date format pattern rules.
30
+ * Text in `'single quotes'` is a literal, letters included. Two
31
+ * adjacent quotes `''` are one literal `'`, inside or outside quoted
32
+ * text: `"HH''mm"` reads `"14'30"`, and `"'o''clock'"` reads
33
+ * `"o'clock"`. A quote that never closes makes the pattern malformed
34
+ * (`""`). Any other character that is not a letter (`: , space`,
35
+ * digits and so on) is a literal with no quoting.
34
36
  * - `a` is locale-aware. If `locale` is omitted and the pattern uses
35
37
  * `a`, GMT defaults to `"en-US"` rather than returning `""` for every
36
38
  * caller who didn't have another locale in mind.
@@ -51,6 +53,7 @@
51
53
  *
52
54
  * @example parseTimeWithPattern("14:30:45", "HH:mm:ss") // "14:30:45"
53
55
  * @example parseTimeWithPattern("02:30:45 PM", "hh:mm:ss a") // "14:30:45"
56
+ * @example parseTimeWithPattern("2 o'clock PM", "h 'o''clock' a") // "14:00:00" ('' is one literal quote)
54
57
  * @example parseTimeWithPattern("25:00", "HH:mm") // "" (shape-valid, not a real time)
55
58
  * @example parseTimeWithPattern("2024-03-15", "yyyy-MM-dd") // "" (date token in a time-only pattern)
56
59
  * @example parseTimeWithPattern("午後 10:20", "a h:mm", ["ja-JP", "en-US"]) // "22:20:00"
@@ -8,9 +8,8 @@ import { parseValueWithPattern, TIME_PATTERN_FIELDS } from "../../internal/index
8
8
  * producer format — a CSV column, a legacy API field, a partially-typed
9
9
  * form value — not for generating locale-correct output. For display,
10
10
  * use `formatTime`/`formatDateToParts`, which order fields per locale
11
- * instead of hard-coding a field order (see roadmap Decision 1 — a
12
- * token *formatter*, the inverse of this function, is deliberately out
13
- * of scope for GMT).
11
+ * instead of hard-coding a field order (a token *formatter*, the
12
+ * inverse of this function, is deliberately out of scope for GMT).
14
13
  * - `pattern` accepts only time-shaped tokens. A pattern containing a
15
14
  * date-only token (`y M d E G`) is malformed for this function and
16
15
  * returns `""` — use `parseDateTimeWithPattern` for combined input.
@@ -29,10 +28,13 @@ import { parseValueWithPattern, TIME_PATTERN_FIELDS } from "../../internal/index
29
28
  * | `SSS` | millisecond | 3 digits | 000–999 | |
30
29
  * | `a` | meridiem | locale | — | `getLocaleMeridiems(locale)` → `[AM-label, PM-label]` |
31
30
  *
32
- * - Text in `'single quotes'` is a literal; a doubled `''` inside a
33
- * quoted segment is a literal `'`. Any other character (`: , space`,
34
- * literal digits, etc.) outside a quote/letter-run is automatically a
35
- * literal — no explicit quoting required.
31
+ * - Literal text follows the Unicode UTS #35 date format pattern rules.
32
+ * Text in `'single quotes'` is a literal, letters included. Two
33
+ * adjacent quotes `''` are one literal `'`, inside or outside quoted
34
+ * text: `"HH''mm"` reads `"14'30"`, and `"'o''clock'"` reads
35
+ * `"o'clock"`. A quote that never closes makes the pattern malformed
36
+ * (`""`). Any other character that is not a letter (`: , space`,
37
+ * digits and so on) is a literal with no quoting.
36
38
  * - `a` is locale-aware. If `locale` is omitted and the pattern uses
37
39
  * `a`, GMT defaults to `"en-US"` rather than returning `""` for every
38
40
  * caller who didn't have another locale in mind.
@@ -53,6 +55,7 @@ import { parseValueWithPattern, TIME_PATTERN_FIELDS } from "../../internal/index
53
55
  *
54
56
  * @example parseTimeWithPattern("14:30:45", "HH:mm:ss") // "14:30:45"
55
57
  * @example parseTimeWithPattern("02:30:45 PM", "hh:mm:ss a") // "14:30:45"
58
+ * @example parseTimeWithPattern("2 o'clock PM", "h 'o''clock' a") // "14:00:00" ('' is one literal quote)
56
59
  * @example parseTimeWithPattern("25:00", "HH:mm") // "" (shape-valid, not a real time)
57
60
  * @example parseTimeWithPattern("2024-03-15", "yyyy-MM-dd") // "" (date token in a time-only pattern)
58
61
  * @example parseTimeWithPattern("午後 10:20", "a h:mm", ["ja-JP", "en-US"]) // "22:20:00"
@@ -6,13 +6,13 @@ import { Temporal } from "@js-temporal/polyfill";
6
6
  * - Returns zero-padded string for month and day.
7
7
  * - `unit` accepts the singular or plural name of a Temporal unit (`"hour"` or `"hours"`), as Temporal
8
8
  * does; `"dayOfWeek"` has no plural.
9
- * - `weekStartsOn: "sunday"` numbers weeks by UTS #35 (week 1 holds 1 January, so late-December
10
- * days can be week 1); any value other than `"monday"` or `"sunday"` returns "".
9
+ * - `optionsArg` must be an object or omitted: `null` or any other primitive returns "", as
10
+ * Temporal's GetOptionsObject rejects it.
11
11
  * - Returns "" for invalid input.
12
12
  *
13
13
  * @param value ISO PlainDate string
14
14
  * @param unit unit to extract from the date
15
- * @param optionsArg optional: weekStartsOn ("monday" | "sunday") for week calculations; a non-object value (such as `null`) is invalid
15
+ * @param optionsArg How weeks are numbered
16
16
  * @returns string representation of the requested unit or "" on invalid input
17
17
  *
18
18
  * @example parseUnitFromDate("2024-03-15", "year") // "2024"
@@ -26,5 +26,13 @@ import { Temporal } from "@js-temporal/polyfill";
26
26
  * @example parseUnitFromDate("2024-01-01", "week", { weekStartsOn: "sunday" }) // "1"
27
27
  */
28
28
  export declare function parseUnitFromDate(value: string, unit: Temporal.SmallestUnit<"year" | "month" | "day" | "week"> | "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;
@@ -11,13 +11,13 @@ import { isOptionsArgument } from "../../internal/isObject.js";
11
11
  * - Returns zero-padded string for month and day.
12
12
  * - `unit` accepts the singular or plural name of a Temporal unit (`"hour"` or `"hours"`), as Temporal
13
13
  * does; `"dayOfWeek"` has no plural.
14
- * - `weekStartsOn: "sunday"` numbers weeks by UTS #35 (week 1 holds 1 January, so late-December
15
- * days can be week 1); any value other than `"monday"` or `"sunday"` returns "".
14
+ * - `optionsArg` must be an object or omitted: `null` or any other primitive returns "", as
15
+ * Temporal's GetOptionsObject rejects it.
16
16
  * - Returns "" for invalid input.
17
17
  *
18
18
  * @param value ISO PlainDate string
19
19
  * @param unit unit to extract from the date
20
- * @param optionsArg optional: weekStartsOn ("monday" | "sunday") for week calculations; a non-object value (such as `null`) is invalid
20
+ * @param optionsArg How weeks are numbered
21
21
  * @returns string representation of the requested unit or "" on invalid input
22
22
  *
23
23
  * @example parseUnitFromDate("2024-03-15", "year") // "2024"