@northguild/gmt 1.18.0 → 1.19.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 (593) hide show
  1. package/README.md +55 -2920
  2. package/dist/calendar/calculate/bucketRange.d.ts +10 -2
  3. package/dist/calendar/calculate/bucketRange.js +18 -61
  4. package/dist/calendar/calculate/floorToZone.d.ts +10 -2
  5. package/dist/calendar/calculate/floorToZone.js +15 -7
  6. package/dist/calendar/hours/addOperatingTime.d.ts +6 -0
  7. package/dist/calendar/hours/addOperatingTime.js +7 -1
  8. package/dist/calendar/hours/isOpenAt.d.ts +6 -0
  9. package/dist/calendar/hours/isOpenAt.js +6 -0
  10. package/dist/calendar/hours/nextCloseAt.d.ts +6 -0
  11. package/dist/calendar/hours/nextCloseAt.js +7 -1
  12. package/dist/calendar/hours/nextOpenAt.d.ts +6 -0
  13. package/dist/calendar/hours/nextOpenAt.js +7 -1
  14. package/dist/calendar/hours/operatingIntervals.d.ts +5 -0
  15. package/dist/calendar/hours/operatingIntervals.js +5 -0
  16. package/dist/calendar/hours/operatingTimeBetween.d.ts +5 -0
  17. package/dist/calendar/hours/operatingTimeBetween.js +5 -0
  18. package/dist/calendar/hours/recurringWindows.d.ts +8 -1
  19. package/dist/calendar/hours/recurringWindows.js +12 -4
  20. package/dist/duration/calculate/durationFromUnits.d.ts +47 -0
  21. package/dist/duration/calculate/durationFromUnits.js +67 -0
  22. package/dist/duration/calculate/getDurationUnit.d.ts +2 -2
  23. package/dist/duration/calculate/getDurationUnit.js +2 -2
  24. package/dist/duration/calculate/index.d.ts +3 -1
  25. package/dist/duration/calculate/index.js +3 -1
  26. package/dist/duration/calculate/negateDuration.d.ts +1 -1
  27. package/dist/duration/calculate/negateDuration.js +1 -1
  28. package/dist/duration/calculate/{durationAs.d.ts → totalDuration.d.ts} +25 -19
  29. package/dist/duration/calculate/{durationAs.js → totalDuration.js} +25 -19
  30. package/dist/duration/calculate/totalUnits.d.ts +49 -0
  31. package/dist/duration/calculate/totalUnits.js +73 -0
  32. package/dist/duration/compare/compareDurations.d.ts +1 -1
  33. package/dist/duration/compare/compareDurations.js +1 -1
  34. package/dist/duty/calculate/dutyDayFor.d.ts +38 -0
  35. package/dist/duty/calculate/dutyDayFor.js +71 -0
  36. package/dist/duty/calculate/dutyTotals.d.ts +24 -0
  37. package/dist/duty/calculate/dutyTotals.js +41 -0
  38. package/dist/duty/calculate/dutyViolations.d.ts +74 -0
  39. package/dist/duty/calculate/dutyViolations.js +65 -0
  40. package/dist/duty/calculate/evaluateDutyLog.d.ts +77 -0
  41. package/dist/duty/calculate/evaluateDutyLog.js +75 -0
  42. package/dist/duty/calculate/index.d.ts +7 -0
  43. package/dist/duty/calculate/index.js +7 -0
  44. package/dist/duty/calculate/longestRun.d.ts +28 -0
  45. package/dist/duty/calculate/longestRun.js +54 -0
  46. package/dist/duty/calculate/qualifyingRestPairs.d.ts +37 -0
  47. package/dist/duty/calculate/qualifyingRestPairs.js +58 -0
  48. package/dist/duty/calculate/qualifyingRests.d.ts +27 -0
  49. package/dist/duty/calculate/qualifyingRests.js +49 -0
  50. package/dist/duty/index.d.ts +3 -0
  51. package/dist/duty/index.js +4 -0
  52. package/dist/duty/validate/index.d.ts +1 -0
  53. package/dist/duty/validate/index.js +1 -0
  54. package/dist/duty/validate/isValidDutyLog.d.ts +24 -0
  55. package/dist/duty/validate/isValidDutyLog.js +34 -0
  56. package/dist/index.d.ts +1 -0
  57. package/dist/index.js +1 -0
  58. package/dist/instant/convert/classifyLocal.d.ts +5 -1
  59. package/dist/instant/convert/classifyLocal.js +16 -6
  60. package/dist/instant/convert/fromOffsetInstant.d.ts +4 -0
  61. package/dist/instant/convert/fromOffsetInstant.js +6 -1
  62. package/dist/instant/convert/resolveLocal.d.ts +7 -2
  63. package/dist/instant/convert/resolveLocal.js +16 -8
  64. package/dist/instant/convert/toOffsetInstant.d.ts +12 -8
  65. package/dist/instant/convert/toOffsetInstant.js +19 -11
  66. package/dist/instant/index.d.ts +1 -0
  67. package/dist/instant/index.js +1 -0
  68. package/dist/instant/validate/index.d.ts +1 -0
  69. package/dist/instant/validate/index.js +1 -0
  70. package/dist/instant/validate/isValidUtcOffset.d.ts +32 -0
  71. package/dist/instant/validate/isValidUtcOffset.js +35 -0
  72. package/dist/intermodal/calculate/chargeableDays.d.ts +6 -0
  73. package/dist/intermodal/calculate/chargeableDays.js +12 -4
  74. package/dist/intermodal/calculate/freeTimeExpiry.d.ts +7 -0
  75. package/dist/intermodal/calculate/freeTimeExpiry.js +15 -4
  76. package/dist/intermodal/calculate/index.d.ts +1 -0
  77. package/dist/intermodal/calculate/index.js +1 -0
  78. package/dist/intermodal/calculate/multimodalETA.d.ts +76 -0
  79. package/dist/intermodal/calculate/multimodalETA.js +145 -0
  80. package/dist/intermodal/format/bolTimestamp.d.ts +76 -0
  81. package/dist/intermodal/format/bolTimestamp.js +78 -0
  82. package/dist/intermodal/format/formatEdifactDate.d.ts +34 -0
  83. package/dist/intermodal/format/formatEdifactDate.js +42 -0
  84. package/dist/intermodal/format/formatEdifactDatePeriod.d.ts +35 -0
  85. package/dist/intermodal/format/formatEdifactDatePeriod.js +43 -0
  86. package/dist/intermodal/format/formatEdifactDateTime.d.ts +37 -0
  87. package/dist/intermodal/format/formatEdifactDateTime.js +45 -0
  88. package/dist/intermodal/format/formatEdifactDateTimePeriod.d.ts +40 -0
  89. package/dist/intermodal/format/formatEdifactDateTimePeriod.js +48 -0
  90. package/dist/intermodal/format/formatEdifactOffsetDateTime.d.ts +62 -0
  91. package/dist/intermodal/format/formatEdifactOffsetDateTime.js +70 -0
  92. package/dist/intermodal/format/formatEdifactTime.d.ts +35 -0
  93. package/dist/intermodal/format/formatEdifactTime.js +43 -0
  94. package/dist/intermodal/format/formatEpcisEvent.d.ts +47 -0
  95. package/dist/intermodal/format/formatEpcisEvent.js +79 -0
  96. package/dist/intermodal/format/formatX12Date.d.ts +35 -0
  97. package/dist/intermodal/format/formatX12Date.js +43 -0
  98. package/dist/intermodal/format/formatX12DateRange.d.ts +37 -0
  99. package/dist/intermodal/format/formatX12DateRange.js +45 -0
  100. package/dist/intermodal/format/formatX12DateTime.d.ts +39 -0
  101. package/dist/intermodal/format/formatX12DateTime.js +47 -0
  102. package/dist/intermodal/format/formatX12DateTimeRange.d.ts +40 -0
  103. package/dist/intermodal/format/formatX12DateTimeRange.js +48 -0
  104. package/dist/intermodal/format/formatX12Time.d.ts +42 -0
  105. package/dist/intermodal/format/formatX12Time.js +50 -0
  106. package/dist/intermodal/format/formatX12TimeElement.d.ts +46 -0
  107. package/dist/intermodal/format/formatX12TimeElement.js +54 -0
  108. package/dist/intermodal/format/index.d.ts +14 -0
  109. package/dist/intermodal/format/index.js +14 -0
  110. package/dist/intermodal/index.d.ts +3 -0
  111. package/dist/intermodal/index.js +3 -0
  112. package/dist/intermodal/parse/classifyEdifactDtmFormat.d.ts +48 -0
  113. package/dist/intermodal/parse/classifyEdifactDtmFormat.js +55 -0
  114. package/dist/intermodal/parse/classifyX12DateTimePeriodFormat.d.ts +50 -0
  115. package/dist/intermodal/parse/classifyX12DateTimePeriodFormat.js +57 -0
  116. package/dist/intermodal/parse/classifyX12TimeCode.d.ts +46 -0
  117. package/dist/intermodal/parse/classifyX12TimeCode.js +57 -0
  118. package/dist/intermodal/parse/index.d.ts +18 -0
  119. package/dist/intermodal/parse/index.js +18 -0
  120. package/dist/intermodal/parse/parseEdifactDate.d.ts +37 -0
  121. package/dist/intermodal/parse/parseEdifactDate.js +45 -0
  122. package/dist/intermodal/parse/parseEdifactDatePeriod.d.ts +43 -0
  123. package/dist/intermodal/parse/parseEdifactDatePeriod.js +51 -0
  124. package/dist/intermodal/parse/parseEdifactDateTime.d.ts +43 -0
  125. package/dist/intermodal/parse/parseEdifactDateTime.js +51 -0
  126. package/dist/intermodal/parse/parseEdifactDateTimePeriod.d.ts +45 -0
  127. package/dist/intermodal/parse/parseEdifactDateTimePeriod.js +53 -0
  128. package/dist/intermodal/parse/parseEdifactOffsetDateTime.d.ts +60 -0
  129. package/dist/intermodal/parse/parseEdifactOffsetDateTime.js +68 -0
  130. package/dist/intermodal/parse/parseEdifactTime.d.ts +37 -0
  131. package/dist/intermodal/parse/parseEdifactTime.js +45 -0
  132. package/dist/intermodal/parse/parseEpcisEvent.d.ts +95 -0
  133. package/dist/intermodal/parse/parseEpcisEvent.js +102 -0
  134. package/dist/intermodal/parse/parseX12Date.d.ts +39 -0
  135. package/dist/intermodal/parse/parseX12Date.js +47 -0
  136. package/dist/intermodal/parse/parseX12DateAndTime.d.ts +52 -0
  137. package/dist/intermodal/parse/parseX12DateAndTime.js +61 -0
  138. package/dist/intermodal/parse/parseX12DateRange.d.ts +44 -0
  139. package/dist/intermodal/parse/parseX12DateRange.js +52 -0
  140. package/dist/intermodal/parse/parseX12DateTime.d.ts +45 -0
  141. package/dist/intermodal/parse/parseX12DateTime.js +53 -0
  142. package/dist/intermodal/parse/parseX12DateTimeRange.d.ts +46 -0
  143. package/dist/intermodal/parse/parseX12DateTimeRange.js +54 -0
  144. package/dist/intermodal/parse/parseX12Time.d.ts +65 -0
  145. package/dist/intermodal/parse/parseX12Time.js +77 -0
  146. package/dist/intermodal/parse/x12TimeCodeOffset.d.ts +57 -0
  147. package/dist/intermodal/parse/x12TimeCodeOffset.js +110 -0
  148. package/dist/intermodal/parse/x12TimeCodeZone.d.ts +57 -0
  149. package/dist/intermodal/parse/x12TimeCodeZone.js +105 -0
  150. package/dist/intermodal/validate/index.d.ts +18 -0
  151. package/dist/intermodal/validate/index.js +18 -0
  152. package/dist/intermodal/validate/isValidEdifactDate.d.ts +26 -0
  153. package/dist/intermodal/validate/isValidEdifactDate.js +28 -0
  154. package/dist/intermodal/validate/isValidEdifactDatePeriod.d.ts +28 -0
  155. package/dist/intermodal/validate/isValidEdifactDatePeriod.js +30 -0
  156. package/dist/intermodal/validate/isValidEdifactDateTime.d.ts +30 -0
  157. package/dist/intermodal/validate/isValidEdifactDateTime.js +32 -0
  158. package/dist/intermodal/validate/isValidEdifactDateTimePeriod.d.ts +28 -0
  159. package/dist/intermodal/validate/isValidEdifactDateTimePeriod.js +30 -0
  160. package/dist/intermodal/validate/isValidEdifactDtmFormat.d.ts +39 -0
  161. package/dist/intermodal/validate/isValidEdifactDtmFormat.js +42 -0
  162. package/dist/intermodal/validate/isValidEdifactOffsetDateTime.d.ts +36 -0
  163. package/dist/intermodal/validate/isValidEdifactOffsetDateTime.js +38 -0
  164. package/dist/intermodal/validate/isValidEdifactTime.d.ts +28 -0
  165. package/dist/intermodal/validate/isValidEdifactTime.js +30 -0
  166. package/dist/intermodal/validate/isValidEpcisEvent.d.ts +41 -0
  167. package/dist/intermodal/validate/isValidEpcisEvent.js +58 -0
  168. package/dist/intermodal/validate/isValidEpcisEventTime.d.ts +33 -0
  169. package/dist/intermodal/validate/isValidEpcisEventTime.js +48 -0
  170. package/dist/intermodal/validate/isValidEpcisTimeZoneOffset.d.ts +30 -0
  171. package/dist/intermodal/validate/isValidEpcisTimeZoneOffset.js +38 -0
  172. package/dist/intermodal/validate/isValidX12Date.d.ts +28 -0
  173. package/dist/intermodal/validate/isValidX12Date.js +30 -0
  174. package/dist/intermodal/validate/isValidX12DateAndTime.d.ts +32 -0
  175. package/dist/intermodal/validate/isValidX12DateAndTime.js +35 -0
  176. package/dist/intermodal/validate/isValidX12DateRange.d.ts +29 -0
  177. package/dist/intermodal/validate/isValidX12DateRange.js +31 -0
  178. package/dist/intermodal/validate/isValidX12DateTime.d.ts +30 -0
  179. package/dist/intermodal/validate/isValidX12DateTime.js +32 -0
  180. package/dist/intermodal/validate/isValidX12DateTimePeriodFormat.d.ts +43 -0
  181. package/dist/intermodal/validate/isValidX12DateTimePeriodFormat.js +46 -0
  182. package/dist/intermodal/validate/isValidX12DateTimeRange.d.ts +31 -0
  183. package/dist/intermodal/validate/isValidX12DateTimeRange.js +33 -0
  184. package/dist/intermodal/validate/isValidX12Time.d.ts +38 -0
  185. package/dist/intermodal/validate/isValidX12Time.js +40 -0
  186. package/dist/intermodal/validate/isValidX12TimeCode.d.ts +38 -0
  187. package/dist/intermodal/validate/isValidX12TimeCode.js +41 -0
  188. package/dist/internal/businessCalendar.js +4 -9
  189. package/dist/internal/dutyEngine.d.ts +125 -0
  190. package/dist/internal/dutyEngine.js +1746 -0
  191. package/dist/internal/dutyLog.d.ts +27 -0
  192. package/dist/internal/dutyLog.js +47 -0
  193. package/dist/internal/dutyPeriods.d.ts +135 -0
  194. package/dist/internal/dutyPeriods.js +369 -0
  195. package/dist/internal/dutyRules.d.ts +197 -0
  196. package/dist/internal/dutyRules.js +484 -0
  197. package/dist/internal/ediDateTimeFields.d.ts +97 -0
  198. package/dist/internal/ediDateTimeFields.js +288 -0
  199. package/dist/internal/ediDateTimeWriter.d.ts +92 -0
  200. package/dist/internal/ediDateTimeWriter.js +298 -0
  201. package/dist/internal/ediGrammar.d.ts +158 -0
  202. package/dist/internal/ediGrammar.js +384 -0
  203. package/dist/internal/englishCalendarNames.d.ts +3 -1
  204. package/dist/internal/englishCalendarNames.js +3 -1
  205. package/dist/internal/freeTimeLedger.d.ts +5 -0
  206. package/dist/internal/freeTimeLedger.js +11 -2
  207. package/dist/internal/index.d.ts +5 -2
  208. package/dist/internal/index.js +9 -2
  209. package/dist/internal/intervalNanoseconds.js +2 -1
  210. package/dist/internal/isObject.d.ts +13 -6
  211. package/dist/internal/isObject.js +14 -7
  212. package/dist/internal/isoYearString.d.ts +21 -0
  213. package/dist/internal/isoYearString.js +27 -0
  214. package/dist/internal/maxPieces.js +2 -1
  215. package/dist/internal/normalizeTimeZone.d.ts +4 -1
  216. package/dist/internal/normalizeTimeZone.js +4 -1
  217. package/dist/internal/operatingSchedule.d.ts +13 -4
  218. package/dist/internal/operatingSchedule.js +146 -58
  219. package/dist/internal/patternToken.d.ts +10 -3
  220. package/dist/internal/patternToken.js +31 -12
  221. package/dist/internal/readDurationUnits.d.ts +34 -0
  222. package/dist/internal/readDurationUnits.js +78 -0
  223. package/dist/internal/readSetFields.d.ts +50 -0
  224. package/dist/internal/readSetFields.js +179 -0
  225. package/dist/internal/resolveRelativeUnit.d.ts +1 -1
  226. package/dist/internal/resolveRelativeUnit.js +1 -1
  227. package/dist/internal/resolveUnixIntervalPair.d.ts +8 -2
  228. package/dist/internal/resolveUnixIntervalPair.js +11 -7
  229. package/dist/internal/startOrEndOfUnix.d.ts +2 -1
  230. package/dist/internal/startOrEndOfUnix.js +9 -6
  231. package/dist/internal/twoDigitYear.d.ts +19 -0
  232. package/dist/internal/twoDigitYear.js +22 -0
  233. package/dist/internal/unixEpochValue.js +3 -2
  234. package/dist/internal/unixWallClock.d.ts +24 -0
  235. package/dist/internal/unixWallClock.js +35 -0
  236. package/dist/internal/utcWallClock.d.ts +20 -0
  237. package/dist/internal/utcWallClock.js +32 -0
  238. package/dist/internal/yearWindowStart.d.ts +28 -0
  239. package/dist/internal/yearWindowStart.js +52 -0
  240. package/dist/internal/zoneBucketCap.d.ts +18 -0
  241. package/dist/internal/zoneBucketCap.js +64 -0
  242. package/dist/internal/zoneFrame.d.ts +180 -0
  243. package/dist/internal/zoneFrame.js +221 -0
  244. package/dist/internal/zonedNowUnitValue.d.ts +7 -4
  245. package/dist/internal/zonedNowUnitValue.js +8 -4
  246. package/dist/internal/zonedWallClockDifference.js +4 -4
  247. package/dist/internal/zonedWallClockOperations.d.ts +5 -2
  248. package/dist/internal/zonedWallClockOperations.js +7 -10
  249. package/dist/plain/calculate/addDate.js +4 -7
  250. package/dist/plain/calculate/addDateTime.js +4 -7
  251. package/dist/plain/calculate/addTime.js +4 -7
  252. package/dist/plain/calculate/endOfTime.d.ts +1 -1
  253. package/dist/plain/calculate/setDate.d.ts +20 -3
  254. package/dist/plain/calculate/setDate.js +27 -7
  255. package/dist/plain/calculate/setDateTime.d.ts +15 -3
  256. package/dist/plain/calculate/setDateTime.js +22 -7
  257. package/dist/plain/calculate/setTime.d.ts +13 -1
  258. package/dist/plain/calculate/setTime.js +21 -6
  259. package/dist/plain/calculate/startOfTime.d.ts +1 -1
  260. package/dist/plain/calculate/subtractDate.js +4 -7
  261. package/dist/plain/calculate/subtractDateTime.js +4 -7
  262. package/dist/plain/calculate/subtractTime.js +4 -7
  263. package/dist/plain/format/formatCalendar.js +2 -1
  264. package/dist/plain/format/formatRelativeDate.js +2 -1
  265. package/dist/plain/format/formatRelativeDateTime.js +2 -1
  266. package/dist/plain/format/formatRelativeTime.js +2 -1
  267. package/dist/plain/format/{formatSql.d.ts → formatSqlDateTime.d.ts} +7 -7
  268. package/dist/plain/format/{formatSql.js → formatSqlDateTime.js} +7 -7
  269. package/dist/plain/format/index.d.ts +1 -1
  270. package/dist/plain/format/index.js +1 -1
  271. package/dist/plain/get/getNowUnit.d.ts +2 -0
  272. package/dist/plain/get/getNowUnit.js +2 -0
  273. package/dist/plain/get/getYear.d.ts +2 -0
  274. package/dist/plain/get/getYear.js +4 -3
  275. package/dist/plain/interval/intervalXorAllDate.js +2 -2
  276. package/dist/plain/interval/intervalXorAllDateTime.js +2 -2
  277. package/dist/plain/interval/intervalXorAllTime.js +2 -2
  278. package/dist/plain/interval/mergeIntervalsDate.js +2 -2
  279. package/dist/plain/interval/mergeIntervalsDateTime.js +2 -2
  280. package/dist/plain/interval/mergeIntervalsTime.js +2 -2
  281. package/dist/plain/parse/index.d.ts +1 -1
  282. package/dist/plain/parse/index.js +1 -1
  283. package/dist/plain/parse/parseDateTimeWithPattern.d.ts +16 -3
  284. package/dist/plain/parse/parseDateTimeWithPattern.js +20 -5
  285. package/dist/plain/parse/parseDateWithPattern.d.ts +17 -3
  286. package/dist/plain/parse/parseDateWithPattern.js +21 -5
  287. package/dist/plain/parse/{parseSql.d.ts → parseSqlDateTime.d.ts} +8 -8
  288. package/dist/plain/parse/{parseSql.js → parseSqlDateTime.js} +8 -8
  289. package/dist/plain/parse/parseTimeWithPattern.js +1 -0
  290. package/dist/plain/parse/parseUnitFromDate.d.ts +3 -0
  291. package/dist/plain/parse/parseUnitFromDate.js +5 -1
  292. package/dist/plain/parse/parseUnitFromDateTime.d.ts +3 -0
  293. package/dist/plain/parse/parseUnitFromDateTime.js +5 -1
  294. package/dist/plain/parse/parseYearFromDate.d.ts +5 -2
  295. package/dist/plain/parse/parseYearFromDate.js +7 -3
  296. package/dist/plain/parse/parseYearFromDateTime.d.ts +4 -2
  297. package/dist/plain/parse/parseYearFromDateTime.js +6 -3
  298. package/dist/plain/validate/index.d.ts +1 -0
  299. package/dist/plain/validate/index.js +1 -0
  300. package/dist/plain/validate/isValidSqlDateTime.d.ts +33 -0
  301. package/dist/plain/validate/isValidSqlDateTime.js +36 -0
  302. package/dist/precision/convert/fromNanoseconds.d.ts +9 -3
  303. package/dist/precision/convert/fromNanoseconds.js +9 -3
  304. package/dist/regex/epcis.d.ts +60 -0
  305. package/dist/regex/epcis.js +60 -0
  306. package/dist/regex/http-date.d.ts +6 -4
  307. package/dist/regex/http-date.js +6 -4
  308. package/dist/regex/index.d.ts +1 -0
  309. package/dist/regex/index.js +1 -0
  310. package/dist/regex/rfc-2822.d.ts +2 -0
  311. package/dist/regex/rfc-2822.js +2 -0
  312. package/dist/regex/rfc-3339.d.ts +3 -1
  313. package/dist/regex/rfc-3339.js +3 -1
  314. package/dist/regex/sql-date-time.d.ts +2 -1
  315. package/dist/regex/sql-date-time.js +2 -1
  316. package/dist/regex/time-zone-like.d.ts +3 -2
  317. package/dist/regex/time-zone-like.js +3 -2
  318. package/dist/regex/utc-offset.d.ts +2 -1
  319. package/dist/regex/utc-offset.js +2 -1
  320. package/dist/transport/calculate/crossingTime.d.ts +6 -1
  321. package/dist/transport/calculate/crossingTime.js +6 -1
  322. package/dist/transport/calculate/cutoffAt.d.ts +6 -1
  323. package/dist/transport/calculate/cutoffAt.js +2 -0
  324. package/dist/transport/calculate/cutoffSchedule.d.ts +6 -1
  325. package/dist/transport/calculate/cutoffSchedule.js +2 -0
  326. package/dist/transport/calculate/dwellTime.d.ts +6 -1
  327. package/dist/transport/calculate/dwellTime.js +6 -1
  328. package/dist/transport/calculate/scheduleDelivery.d.ts +13 -5
  329. package/dist/transport/calculate/scheduleDelivery.js +6 -1
  330. package/dist/transport/convert/etaAtZone.d.ts +6 -1
  331. package/dist/transport/convert/etaAtZone.js +6 -1
  332. package/dist/types/business-calendar.d.ts +5 -4
  333. package/dist/types/duty.d.ts +777 -0
  334. package/dist/types/duty.js +0 -0
  335. package/dist/types/edi.d.ts +407 -0
  336. package/dist/types/edi.js +0 -0
  337. package/dist/types/epcis.d.ts +25 -0
  338. package/dist/types/epcis.js +0 -0
  339. package/dist/types/exact-duration-unit.d.ts +8 -0
  340. package/dist/types/exact-duration-unit.js +0 -0
  341. package/dist/types/free-time-options.d.ts +4 -3
  342. package/dist/types/index.d.ts +5 -0
  343. package/dist/types/index.js +5 -0
  344. package/dist/types/operating-schedule.d.ts +3 -2
  345. package/dist/types/two-digit-year.d.ts +23 -0
  346. package/dist/types/two-digit-year.js +0 -0
  347. package/dist/types/zone-bucket-unit.d.ts +1 -1
  348. package/dist/unix/calculate/addUnix.d.ts +11 -2
  349. package/dist/unix/calculate/addUnix.js +14 -11
  350. package/dist/unix/calculate/diffUnix.d.ts +10 -2
  351. package/dist/unix/calculate/diffUnix.js +11 -6
  352. package/dist/unix/calculate/diffUnixAsDuration.d.ts +10 -2
  353. package/dist/unix/calculate/diffUnixAsDuration.js +10 -5
  354. package/dist/unix/calculate/endOfQuarterForUnix.d.ts +10 -2
  355. package/dist/unix/calculate/endOfQuarterForUnix.js +6 -0
  356. package/dist/unix/calculate/endOfUnix.d.ts +11 -2
  357. package/dist/unix/calculate/endOfUnix.js +7 -0
  358. package/dist/unix/calculate/isBetweenUnix.d.ts +3 -2
  359. package/dist/unix/calculate/isBetweenUnix.js +3 -3
  360. package/dist/unix/calculate/roundUnix.d.ts +10 -2
  361. package/dist/unix/calculate/roundUnix.js +13 -6
  362. package/dist/unix/calculate/setUnix.d.ts +25 -5
  363. package/dist/unix/calculate/setUnix.js +33 -12
  364. package/dist/unix/calculate/startOfQuarterForUnix.d.ts +10 -2
  365. package/dist/unix/calculate/startOfQuarterForUnix.js +6 -0
  366. package/dist/unix/calculate/startOfUnix.d.ts +11 -2
  367. package/dist/unix/calculate/startOfUnix.js +7 -0
  368. package/dist/unix/calculate/subtractUnix.d.ts +10 -2
  369. package/dist/unix/calculate/subtractUnix.js +13 -11
  370. package/dist/unix/compare/areUnixEqualBy.d.ts +11 -2
  371. package/dist/unix/compare/areUnixEqualBy.js +7 -0
  372. package/dist/unix/convert/convertUnixToPlainDate.d.ts +5 -2
  373. package/dist/unix/convert/convertUnixToPlainDate.js +5 -4
  374. package/dist/unix/convert/convertUnixToPlainDateTime.d.ts +5 -2
  375. package/dist/unix/convert/convertUnixToPlainDateTime.js +5 -4
  376. package/dist/unix/convert/convertUnixToPlainTime.d.ts +5 -2
  377. package/dist/unix/convert/convertUnixToPlainTime.js +5 -4
  378. package/dist/unix/convert/convertUnixToZoned.d.ts +5 -1
  379. package/dist/unix/convert/convertUnixToZoned.js +5 -1
  380. package/dist/unix/format/formatCalendarUnix.d.ts +6 -2
  381. package/dist/unix/format/formatCalendarUnix.js +6 -1
  382. package/dist/unix/format/formatRelativeUnix.d.ts +11 -3
  383. package/dist/unix/format/formatRelativeUnix.js +13 -5
  384. package/dist/unix/format/formatUnix.d.ts +7 -2
  385. package/dist/unix/format/formatUnix.js +4 -0
  386. package/dist/unix/get/getUnixDay.d.ts +1 -3
  387. package/dist/unix/get/getUnixDay.js +5 -12
  388. package/dist/unix/get/getUnixHour.d.ts +1 -3
  389. package/dist/unix/get/getUnixHour.js +5 -12
  390. package/dist/unix/get/getUnixMicrosecond.d.ts +1 -3
  391. package/dist/unix/get/getUnixMicrosecond.js +4 -11
  392. package/dist/unix/get/getUnixMillisecond.d.ts +1 -3
  393. package/dist/unix/get/getUnixMillisecond.js +5 -12
  394. package/dist/unix/get/getUnixMinute.d.ts +1 -3
  395. package/dist/unix/get/getUnixMinute.js +5 -12
  396. package/dist/unix/get/getUnixMonth.d.ts +1 -3
  397. package/dist/unix/get/getUnixMonth.js +5 -12
  398. package/dist/unix/get/getUnixNanosecond.d.ts +1 -3
  399. package/dist/unix/get/getUnixNanosecond.js +4 -11
  400. package/dist/unix/get/getUnixNowUnit.d.ts +2 -0
  401. package/dist/unix/get/getUnixNowUnit.js +2 -0
  402. package/dist/unix/get/getUnixSecond.d.ts +1 -3
  403. package/dist/unix/get/getUnixSecond.js +5 -12
  404. package/dist/unix/get/getUnixYear.d.ts +3 -3
  405. package/dist/unix/get/getUnixYear.js +5 -12
  406. package/dist/unix/interval/intervalCountUnix.d.ts +11 -2
  407. package/dist/unix/interval/intervalCountUnix.js +7 -0
  408. package/dist/unix/interval/intervalFromDurationUnix.d.ts +10 -2
  409. package/dist/unix/interval/intervalFromDurationUnix.js +12 -7
  410. package/dist/unix/interval/intervalLengthUnix.d.ts +10 -2
  411. package/dist/unix/interval/intervalLengthUnix.js +6 -0
  412. package/dist/unix/interval/intervalOverlappingDaysUnix.d.ts +10 -2
  413. package/dist/unix/interval/intervalOverlappingDaysUnix.js +10 -5
  414. package/dist/unix/interval/splitIntervalByUnitUnix.d.ts +10 -2
  415. package/dist/unix/interval/splitIntervalByUnitUnix.js +12 -6
  416. package/dist/unix/parse/parseDateFromUnix.d.ts +4 -2
  417. package/dist/unix/parse/parseDateFromUnix.js +3 -3
  418. package/dist/unix/parse/parseDayFromUnix.d.ts +4 -2
  419. package/dist/unix/parse/parseDayOfWeekFromUnix.d.ts +4 -2
  420. package/dist/unix/parse/parseDayOfWeekFromUnix.js +2 -2
  421. package/dist/unix/parse/parseHourFromUnix.d.ts +4 -2
  422. package/dist/unix/parse/parseMicrosecondFromUnix.d.ts +4 -2
  423. package/dist/unix/parse/parseMillisecondFromUnix.d.ts +4 -2
  424. package/dist/unix/parse/parseMinuteFromUnix.d.ts +4 -2
  425. package/dist/unix/parse/parseMonthFromUnix.d.ts +4 -2
  426. package/dist/unix/parse/parseNanosecondFromUnix.d.ts +4 -2
  427. package/dist/unix/parse/parseSecondFromUnix.d.ts +4 -2
  428. package/dist/unix/parse/parseTimeFromUnix.d.ts +5 -2
  429. package/dist/unix/parse/parseTimeFromUnix.js +4 -3
  430. package/dist/unix/parse/parseUnitFromUnix.d.ts +9 -3
  431. package/dist/unix/parse/parseUnitFromUnix.js +21 -14
  432. package/dist/unix/parse/parseWeekFromUnix.d.ts +3 -2
  433. package/dist/unix/parse/parseWeekFromUnix.js +4 -4
  434. package/dist/unix/parse/parseYearFromUnix.d.ts +8 -3
  435. package/dist/unix/parse/parseYearFromUnix.js +4 -1
  436. package/dist/unix/validate/isValidUnixUnit.d.ts +1 -1
  437. package/dist/utc/calculate/addUtc.js +4 -7
  438. package/dist/utc/calculate/setUtc.d.ts +16 -3
  439. package/dist/utc/calculate/setUtc.js +22 -8
  440. package/dist/utc/calculate/subtractUtc.js +4 -7
  441. package/dist/utc/convert/convertUtcToPlainDate.d.ts +8 -2
  442. package/dist/utc/convert/convertUtcToPlainDate.js +10 -7
  443. package/dist/utc/convert/convertUtcToPlainDateTime.d.ts +9 -2
  444. package/dist/utc/convert/convertUtcToPlainDateTime.js +12 -13
  445. package/dist/utc/convert/convertUtcToPlainTime.d.ts +5 -2
  446. package/dist/utc/convert/convertUtcToPlainTime.js +7 -6
  447. package/dist/utc/convert/convertUtcToZoned.d.ts +5 -1
  448. package/dist/utc/convert/convertUtcToZoned.js +5 -1
  449. package/dist/utc/format/formatCalendarUtc.d.ts +6 -2
  450. package/dist/utc/format/formatCalendarUtc.js +6 -1
  451. package/dist/utc/format/{formatHttp.d.ts → formatHttpDate.d.ts} +7 -7
  452. package/dist/utc/format/{formatHttp.js → formatHttpDate.js} +7 -7
  453. package/dist/utc/format/formatRelativeUtc.d.ts +11 -3
  454. package/dist/utc/format/formatRelativeUtc.js +13 -5
  455. package/dist/utc/format/formatUtc.d.ts +7 -2
  456. package/dist/utc/format/formatUtc.js +4 -0
  457. package/dist/utc/format/index.d.ts +1 -1
  458. package/dist/utc/format/index.js +1 -1
  459. package/dist/utc/get/getUtcDay.d.ts +1 -3
  460. package/dist/utc/get/getUtcDay.js +5 -12
  461. package/dist/utc/get/getUtcHour.d.ts +1 -3
  462. package/dist/utc/get/getUtcHour.js +5 -12
  463. package/dist/utc/get/getUtcMicrosecond.d.ts +1 -3
  464. package/dist/utc/get/getUtcMicrosecond.js +4 -11
  465. package/dist/utc/get/getUtcMillisecond.d.ts +1 -3
  466. package/dist/utc/get/getUtcMillisecond.js +5 -12
  467. package/dist/utc/get/getUtcMinute.d.ts +1 -3
  468. package/dist/utc/get/getUtcMinute.js +5 -12
  469. package/dist/utc/get/getUtcMonth.d.ts +1 -3
  470. package/dist/utc/get/getUtcMonth.js +5 -12
  471. package/dist/utc/get/getUtcNanosecond.d.ts +1 -3
  472. package/dist/utc/get/getUtcNanosecond.js +4 -11
  473. package/dist/utc/get/getUtcNow.d.ts +1 -3
  474. package/dist/utc/get/getUtcNow.js +2 -9
  475. package/dist/utc/get/getUtcNowUnit.d.ts +2 -0
  476. package/dist/utc/get/getUtcNowUnit.js +2 -0
  477. package/dist/utc/get/getUtcSecond.d.ts +1 -3
  478. package/dist/utc/get/getUtcSecond.js +5 -12
  479. package/dist/utc/get/getUtcYear.d.ts +3 -3
  480. package/dist/utc/get/getUtcYear.js +5 -12
  481. package/dist/utc/interval/intervalXorAllUtc.js +2 -2
  482. package/dist/utc/interval/mergeIntervalsUtc.js +2 -2
  483. package/dist/utc/parse/index.d.ts +1 -1
  484. package/dist/utc/parse/index.js +1 -1
  485. package/dist/utc/parse/parseDateFromUtc.d.ts +4 -2
  486. package/dist/utc/parse/parseDateFromUtc.js +2 -2
  487. package/dist/utc/parse/parseDayFromUtc.d.ts +4 -2
  488. package/dist/utc/parse/parseDayFromUtc.js +2 -2
  489. package/dist/utc/parse/parseDayOfWeekFromUtc.d.ts +4 -2
  490. package/dist/utc/parse/parseDayOfWeekFromUtc.js +4 -4
  491. package/dist/utc/parse/parseHourFromUtc.d.ts +4 -2
  492. package/dist/utc/parse/parseHourFromUtc.js +2 -2
  493. package/dist/utc/parse/{parseHttp.d.ts → parseHttpDate.d.ts} +12 -12
  494. package/dist/utc/parse/{parseHttp.js → parseHttpDate.js} +12 -12
  495. package/dist/utc/parse/parseMicrosecondFromUtc.d.ts +4 -2
  496. package/dist/utc/parse/parseMicrosecondFromUtc.js +2 -2
  497. package/dist/utc/parse/parseMillisecondFromUtc.d.ts +4 -2
  498. package/dist/utc/parse/parseMillisecondFromUtc.js +2 -2
  499. package/dist/utc/parse/parseMinuteFromUtc.d.ts +4 -2
  500. package/dist/utc/parse/parseMinuteFromUtc.js +2 -2
  501. package/dist/utc/parse/parseMonthFromUtc.d.ts +4 -2
  502. package/dist/utc/parse/parseMonthFromUtc.js +2 -2
  503. package/dist/utc/parse/parseNanosecondFromUtc.d.ts +4 -2
  504. package/dist/utc/parse/parseNanosecondFromUtc.js +2 -2
  505. package/dist/utc/parse/parseSecondFromUtc.d.ts +4 -2
  506. package/dist/utc/parse/parseSecondFromUtc.js +2 -2
  507. package/dist/utc/parse/parseTimeFromUtc.d.ts +5 -2
  508. package/dist/utc/parse/parseTimeFromUtc.js +5 -4
  509. package/dist/utc/parse/parseUnitFromUtc.d.ts +10 -3
  510. package/dist/utc/parse/parseUnitFromUtc.js +11 -5
  511. package/dist/utc/parse/parseWeekFromUtc.d.ts +4 -2
  512. package/dist/utc/parse/parseWeekFromUtc.js +4 -4
  513. package/dist/utc/parse/parseYearFromUtc.d.ts +8 -4
  514. package/dist/utc/parse/parseYearFromUtc.js +8 -5
  515. package/dist/utc/validate/index.d.ts +2 -0
  516. package/dist/utc/validate/index.js +2 -0
  517. package/dist/utc/validate/isValidHttpDate.d.ts +35 -0
  518. package/dist/utc/validate/isValidHttpDate.js +38 -0
  519. package/dist/utc/validate/isValidUtc.d.ts +4 -0
  520. package/dist/utc/validate/isValidUtc.js +4 -0
  521. package/dist/utc/validate/isValidUtcTimestamp.d.ts +43 -0
  522. package/dist/utc/validate/isValidUtcTimestamp.js +48 -0
  523. package/dist/zoned/calculate/addZoned.js +4 -7
  524. package/dist/zoned/calculate/setZoned.d.ts +19 -5
  525. package/dist/zoned/calculate/setZoned.js +26 -9
  526. package/dist/zoned/calculate/subtractZoned.js +4 -7
  527. package/dist/zoned/convert/convertPlainDateTimeToZoned.d.ts +4 -1
  528. package/dist/zoned/convert/convertPlainDateTimeToZoned.js +4 -1
  529. package/dist/zoned/convert/convertZonedToZoned.d.ts +5 -1
  530. package/dist/zoned/convert/convertZonedToZoned.js +5 -1
  531. package/dist/zoned/format/formatCalendarZoned.js +2 -1
  532. package/dist/zoned/format/formatRelativeZoned.js +2 -1
  533. package/dist/zoned/format/formatTimeZoneName.d.ts +5 -1
  534. package/dist/zoned/format/formatTimeZoneName.js +5 -1
  535. package/dist/zoned/get/getDstTransitions.d.ts +5 -3
  536. package/dist/zoned/get/getDstTransitions.js +12 -7
  537. package/dist/zoned/get/getSystemTimeZone.d.ts +3 -1
  538. package/dist/zoned/get/getSystemTimeZone.js +5 -2
  539. package/dist/zoned/get/getTimeZoneOffset.d.ts +10 -2
  540. package/dist/zoned/get/getTimeZoneOffset.js +18 -5
  541. package/dist/zoned/get/getZonedDay.d.ts +2 -1
  542. package/dist/zoned/get/getZonedDay.js +6 -7
  543. package/dist/zoned/get/getZonedDayOfWeek.d.ts +2 -1
  544. package/dist/zoned/get/getZonedDayOfWeek.js +6 -5
  545. package/dist/zoned/get/getZonedHour.d.ts +2 -1
  546. package/dist/zoned/get/getZonedHour.js +6 -7
  547. package/dist/zoned/get/getZonedMicrosecond.d.ts +2 -1
  548. package/dist/zoned/get/getZonedMicrosecond.js +6 -5
  549. package/dist/zoned/get/getZonedMillisecond.d.ts +2 -1
  550. package/dist/zoned/get/getZonedMillisecond.js +6 -7
  551. package/dist/zoned/get/getZonedMinute.d.ts +2 -1
  552. package/dist/zoned/get/getZonedMinute.js +6 -7
  553. package/dist/zoned/get/getZonedMonth.d.ts +2 -1
  554. package/dist/zoned/get/getZonedMonth.js +6 -7
  555. package/dist/zoned/get/getZonedNanosecond.d.ts +2 -1
  556. package/dist/zoned/get/getZonedNanosecond.js +6 -5
  557. package/dist/zoned/get/getZonedNow.d.ts +5 -1
  558. package/dist/zoned/get/getZonedNow.js +5 -1
  559. package/dist/zoned/get/getZonedNowUnit.d.ts +6 -3
  560. package/dist/zoned/get/getZonedNowUnit.js +10 -7
  561. package/dist/zoned/get/getZonedSecond.d.ts +2 -1
  562. package/dist/zoned/get/getZonedSecond.js +6 -7
  563. package/dist/zoned/get/getZonedToday.d.ts +2 -1
  564. package/dist/zoned/get/getZonedToday.js +6 -5
  565. package/dist/zoned/get/getZonedWeekOfYear.d.ts +2 -1
  566. package/dist/zoned/get/getZonedWeekOfYear.js +6 -5
  567. package/dist/zoned/get/getZonedYear.d.ts +4 -1
  568. package/dist/zoned/get/getZonedYear.js +9 -7
  569. package/dist/zoned/interval/intervalXorAllZoned.js +2 -2
  570. package/dist/zoned/interval/mergeIntervalsZoned.js +2 -2
  571. package/dist/zoned/parse/parseUnitFromZoned.d.ts +4 -1
  572. package/dist/zoned/parse/parseUnitFromZoned.js +5 -1
  573. package/dist/zoned/parse/parseYearFromZoned.d.ts +4 -2
  574. package/dist/zoned/parse/parseYearFromZoned.js +6 -3
  575. package/dist/zoned/validate/hasDaylightSaving.d.ts +4 -2
  576. package/dist/zoned/validate/hasDaylightSaving.js +13 -7
  577. package/dist/zoned/validate/index.d.ts +2 -0
  578. package/dist/zoned/validate/index.js +2 -0
  579. package/dist/zoned/validate/isValidRfc2822DateTime.d.ts +32 -0
  580. package/dist/zoned/validate/isValidRfc2822DateTime.js +35 -0
  581. package/dist/zoned/validate/isValidRfc3339DateTime.d.ts +31 -0
  582. package/dist/zoned/validate/isValidRfc3339DateTime.js +34 -0
  583. package/dist/zoned/validate/isValidTimeZone.d.ts +5 -1
  584. package/dist/zoned/validate/isValidTimeZone.js +6 -2
  585. package/package.json +50 -1
  586. package/skills/gmt-arithmetic/SKILL.md +99 -12
  587. package/skills/gmt-basics/SKILL.md +57 -15
  588. package/skills/gmt-integration/SKILL.md +24 -9
  589. package/skills/gmt-timezone/SKILL.md +134 -29
  590. package/dist/internal/unixZonedDateTime.d.ts +0 -22
  591. package/dist/internal/unixZonedDateTime.js +0 -32
  592. package/dist/internal/utcZonedDateTime.d.ts +0 -19
  593. package/dist/internal/utcZonedDateTime.js +0 -31
@@ -1,11 +1,12 @@
1
1
  /**
2
2
  * RegExp matching the shape of a time zone identifier: Temporal's `TimeZoneIdentifier` grammar
3
- * (§14.6.2 Time Zone Identifiers), `UTCOffset[~SubMinutePrecision] | TimeZoneIANAName`.
3
+ * (§13.31, the ISO 8601 / RFC 9557 grammar),
4
+ * `TimeZoneIdentifier ::: UTCOffset[~SubMinutePrecision] | TimeZoneIANAName`.
4
5
  *
5
6
  * - An offset identifier (`UTCOffset[~SubMinutePrecision]`): an ASCII sign and a two-digit hour
6
7
  * `00`–`23`, optionally followed by two minute digits `00`–`59`, with or without `:` (`+05`,
7
8
  * `+0530`, `-08:00`). No seconds and no fraction. `Intl.DateTimeFormat` accepts the same
8
- * offsets (ECMA-402 `IsTimeZoneOffsetString`).
9
+ * offsets (ECMA-262 `IsTimeZoneOffsetString`, which ECMA-402 calls).
9
10
  * - An IANA name (`TimeZoneIANAName`): one or more `/`-separated components. Each starts with a
10
11
  * letter, `.` or `_` (`TZLeadingChar`) and continues with letters, digits, `.`, `_`, `-` or `+`
11
12
  * (`TZChar`). So single-component names match (`UTC`, `Japan`, `Zulu`, `EST5EDT`, `GMT+0`,
@@ -1,11 +1,12 @@
1
1
  /**
2
2
  * RegExp matching the shape of a time zone identifier: Temporal's `TimeZoneIdentifier` grammar
3
- * (§14.6.2 Time Zone Identifiers), `UTCOffset[~SubMinutePrecision] | TimeZoneIANAName`.
3
+ * (§13.31, the ISO 8601 / RFC 9557 grammar),
4
+ * `TimeZoneIdentifier ::: UTCOffset[~SubMinutePrecision] | TimeZoneIANAName`.
4
5
  *
5
6
  * - An offset identifier (`UTCOffset[~SubMinutePrecision]`): an ASCII sign and a two-digit hour
6
7
  * `00`–`23`, optionally followed by two minute digits `00`–`59`, with or without `:` (`+05`,
7
8
  * `+0530`, `-08:00`). No seconds and no fraction. `Intl.DateTimeFormat` accepts the same
8
- * offsets (ECMA-402 `IsTimeZoneOffsetString`).
9
+ * offsets (ECMA-262 `IsTimeZoneOffsetString`, which ECMA-402 calls).
9
10
  * - An IANA name (`TimeZoneIANAName`): one or more `/`-separated components. Each starts with a
10
11
  * letter, `.` or `_` (`TZLeadingChar`) and continues with letters, digits, `.`, `_`, `-` or `+`
11
12
  * (`TZChar`). So single-component names match (`UTC`, `Japan`, `Zulu`, `EST5EDT`, `GMT+0`,
@@ -12,7 +12,8 @@
12
12
  * - Sub-second offsets are rejected. ISO 8601 permits them and `Temporal.Instant.from` parses
13
13
  * them, but no zone, and no standard that stores this pair, has ever used one.
14
14
  * - Shape only. Whether the offset is in Temporal's representable range is a separate check —
15
- * `internal/utcOffsetString.ts` applies both.
15
+ * `internal/utcOffsetString.ts` applies both. To check a value that may not be a string, use
16
+ * `isValidUtcOffset`: for a string it gives this pattern's answer.
16
17
  *
17
18
  * @example utcOffset.test("-04:00") // true
18
19
  * @example utcOffset.test("+05:45") // true
@@ -12,7 +12,8 @@
12
12
  * - Sub-second offsets are rejected. ISO 8601 permits them and `Temporal.Instant.from` parses
13
13
  * them, but no zone, and no standard that stores this pair, has ever used one.
14
14
  * - Shape only. Whether the offset is in Temporal's representable range is a separate check —
15
- * `internal/utcOffsetString.ts` applies both.
15
+ * `internal/utcOffsetString.ts` applies both. To check a value that may not be a string, use
16
+ * `isValidUtcOffset`: for a string it gives this pattern's answer.
16
17
  *
17
18
  * @example utcOffset.test("-04:00") // true
18
19
  * @example utcOffset.test("+05:45") // true
@@ -39,10 +39,15 @@ export interface Crossing {
39
39
  * - Returns `null` when either instant is invalid, when `exit` is before `entry` (an inverted
40
40
  * crossing is a data error, not a negative transit), or when the zone is invalid. A zero-length
41
41
  * crossing is `PT0S`.
42
+ * - An offset with seconds (`-00:44:30`) returns `null`. A written zone cannot carry seconds (RFC
43
+ * 9557 §4.1), so the result could not name it. Pass the IANA name, or call
44
+ * `fromOffsetInstant({ instant, offset })` for the local time with its full offset and no
45
+ * bracket.
42
46
  *
43
47
  * @param entry ISO 8601 zoned datetime or instant string of entering the crossing
44
48
  * @param exit ISO 8601 zoned datetime or instant string of leaving it
45
- * @param targetZone IANA timeZone identifier or fixed offset the crossing is read in
49
+ * @param targetZone IANA name or a UTC offset to the minute (what `isValidTimeZone` accepts) the
50
+ * crossing is read in
46
51
  * @returns exact duration and zone-local entry and exit, or null on invalid input
47
52
  *
48
53
  * @example crossingTime("2024-06-15T08:00:00Z", "2024-06-15T17:30:00Z", "Europe/Berlin") // { duration: "PT9H30M", enter: "2024-06-15T10:00:00+02:00[Europe/Berlin]", exit: "2024-06-15T19:30:00+02:00[Europe/Berlin]" }
@@ -31,10 +31,15 @@ import { isValidTimeZone } from "../../zoned/validate/isValidTimeZone.js";
31
31
  * - Returns `null` when either instant is invalid, when `exit` is before `entry` (an inverted
32
32
  * crossing is a data error, not a negative transit), or when the zone is invalid. A zero-length
33
33
  * crossing is `PT0S`.
34
+ * - An offset with seconds (`-00:44:30`) returns `null`. A written zone cannot carry seconds (RFC
35
+ * 9557 §4.1), so the result could not name it. Pass the IANA name, or call
36
+ * `fromOffsetInstant({ instant, offset })` for the local time with its full offset and no
37
+ * bracket.
34
38
  *
35
39
  * @param entry ISO 8601 zoned datetime or instant string of entering the crossing
36
40
  * @param exit ISO 8601 zoned datetime or instant string of leaving it
37
- * @param targetZone IANA timeZone identifier or fixed offset the crossing is read in
41
+ * @param targetZone IANA name or a UTC offset to the minute (what `isValidTimeZone` accepts) the
42
+ * crossing is read in
38
43
  * @returns exact duration and zone-local entry and exit, or null on invalid input
39
44
  *
40
45
  * @example crossingTime("2024-06-15T08:00:00Z", "2024-06-15T17:30:00Z", "Europe/Berlin") // { duration: "PT9H30M", enter: "2024-06-15T10:00:00+02:00[Europe/Berlin]", exit: "2024-06-15T19:30:00+02:00[Europe/Berlin]" }
@@ -1,7 +1,10 @@
1
1
  import type { BusinessCalendar, RollConvention } from "../../types/index.js";
2
2
  /** Options for `cutoffAt`. */
3
3
  export interface CutoffOptions {
4
- /** The time zone the cut-off is read in, the terminal's clock: an IANA name or a UTC offset. */
4
+ /**
5
+ * The time zone the cut-off is read in, the terminal's clock: an IANA name or a UTC offset to the
6
+ * minute (what `isValidTimeZone` accepts).
7
+ */
5
8
  timeZone: string;
6
9
  /**
7
10
  * The local time of day the cut-off is pinned to (`"17:00"`), as `isValidTime` accepts.
@@ -69,6 +72,8 @@ export interface CutoffOptions {
69
72
  * **nonexistent** one (a skipped hour, a deleted day) returns `""` rather than being
70
73
  * shifted. An exact result that is not re-resolved stays as it is.
71
74
  * - Returns the cut-off as a zoned string in `timeZone`, or `""` on invalid input.
75
+ * - An offset with seconds (`-00:44:30`) returns `""`. A written zone cannot carry seconds (RFC
76
+ * 9557 §4.1), so the result could not name it. Pass the IANA name.
72
77
  *
73
78
  * @param anchor ISO 8601 instant or zoned datetime string of the event the deadline counts back from
74
79
  * @param offset ISO 8601 duration before the anchor
@@ -144,6 +144,8 @@ function rolledDate(date, options) {
144
144
  * **nonexistent** one (a skipped hour, a deleted day) returns `""` rather than being
145
145
  * shifted. An exact result that is not re-resolved stays as it is.
146
146
  * - Returns the cut-off as a zoned string in `timeZone`, or `""` on invalid input.
147
+ * - An offset with seconds (`-00:44:30`) returns `""`. A written zone cannot carry seconds (RFC
148
+ * 9557 §4.1), so the result could not name it. Pass the IANA name.
147
149
  *
148
150
  * @param anchor ISO 8601 instant or zoned datetime string of the event the deadline counts back from
149
151
  * @param offset ISO 8601 duration before the anchor
@@ -22,7 +22,10 @@ export interface CutoffTime {
22
22
  }
23
23
  /** Options for `cutoffSchedule`: `cutoffAt`'s, with `atLocalTime` read from each entry instead. */
24
24
  export interface CutoffScheduleOptions {
25
- /** The time zone every cut-off is read in: an IANA name or a UTC offset. */
25
+ /**
26
+ * The time zone every cut-off is read in: an IANA name or a UTC offset to the minute (what
27
+ * `isValidTimeZone` accepts).
28
+ */
26
29
  timeZone: string;
27
30
  /**
28
31
  * The working week and holidays every cut-off's local date is rolled against. Requires `roll`.
@@ -55,6 +58,8 @@ export interface CutoffScheduleOptions {
55
58
  * - Every entry must succeed: one invalid entry, or one cut-off in a skipped local hour,
56
59
  * returns `[]` rather than a stack with a deadline silently missing. An empty `cutoffs` array
57
60
  * returns `[]`.
61
+ * - An offset with seconds (`-00:44:30`) returns `[]`. A written zone cannot carry seconds (RFC
62
+ * 9557 §4.1), so the result could not name it. Pass the IANA name.
58
63
  *
59
64
  * @param anchor ISO 8601 instant or zoned datetime string of the event the deadlines count back from
60
65
  * @param cutoffs the named deadlines, each with an offset and an optional local time of day
@@ -20,6 +20,8 @@ import { cutoffAt } from "./cutoffAt.js";
20
20
  * - Every entry must succeed: one invalid entry, or one cut-off in a skipped local hour,
21
21
  * returns `[]` rather than a stack with a deadline silently missing. An empty `cutoffs` array
22
22
  * returns `[]`.
23
+ * - An offset with seconds (`-00:44:30`) returns `[]`. A written zone cannot carry seconds (RFC
24
+ * 9557 §4.1), so the result could not name it. Pass the IANA name.
23
25
  *
24
26
  * @param anchor ISO 8601 instant or zoned datetime string of the event the deadlines count back from
25
27
  * @param cutoffs the named deadlines, each with an offset and an optional local time of day
@@ -60,10 +60,15 @@ export interface Dwell {
60
60
  * more than 10,000 transitions (about 5,000 years of twice-yearly DST) returns `null`.
61
61
  * - Returns `null` when either instant is invalid, when `exit` is before `entry` (an inverted
62
62
  * dwell is a data error, not a negative stay), or when no zone can be determined.
63
+ * - An offset with seconds (`-00:44:30`) returns `null`. A written zone cannot carry seconds (RFC
64
+ * 9557 §4.1), so the result could not name it. Pass the IANA name, or call
65
+ * `fromOffsetInstant({ instant, offset })` for the local time with its full offset and no
66
+ * bracket.
63
67
  *
64
68
  * @param entry ISO 8601 zoned datetime or instant string of the gate-in, arrival or admission
65
69
  * @param exit ISO 8601 zoned datetime or instant string of the gate-out, departure or discharge
66
- * @param targetZone IANA timeZone identifier or fixed offset the days are counted in; defaults to `entry`'s bracketed zone
70
+ * @param targetZone IANA name or a UTC offset to the minute (what `isValidTimeZone` accepts) the
71
+ * days are counted in; defaults to `entry`'s bracketed zone
67
72
  * @returns exact duration, zone-local entry and exit, and the local calendar days touched, or null on invalid input
68
73
  *
69
74
  * @example dwellTime("2024-06-15T23:00:00-04:00[America/New_York]", "2024-06-16T01:00:00-04:00[America/New_York]") // { duration: "PT2H", enter: "2024-06-15T23:00:00-04:00[America/New_York]", exit: "2024-06-16T01:00:00-04:00[America/New_York]", calendarDays: 2 }
@@ -69,10 +69,15 @@ function dwellZone(entry, targetZone) {
69
69
  * more than 10,000 transitions (about 5,000 years of twice-yearly DST) returns `null`.
70
70
  * - Returns `null` when either instant is invalid, when `exit` is before `entry` (an inverted
71
71
  * dwell is a data error, not a negative stay), or when no zone can be determined.
72
+ * - An offset with seconds (`-00:44:30`) returns `null`. A written zone cannot carry seconds (RFC
73
+ * 9557 §4.1), so the result could not name it. Pass the IANA name, or call
74
+ * `fromOffsetInstant({ instant, offset })` for the local time with its full offset and no
75
+ * bracket.
72
76
  *
73
77
  * @param entry ISO 8601 zoned datetime or instant string of the gate-in, arrival or admission
74
78
  * @param exit ISO 8601 zoned datetime or instant string of the gate-out, departure or discharge
75
- * @param targetZone IANA timeZone identifier or fixed offset the days are counted in; defaults to `entry`'s bracketed zone
79
+ * @param targetZone IANA name or a UTC offset to the minute (what `isValidTimeZone` accepts) the
80
+ * days are counted in; defaults to `entry`'s bracketed zone
76
81
  * @returns exact duration, zone-local entry and exit, and the local calendar days touched, or null on invalid input
77
82
  *
78
83
  * @example dwellTime("2024-06-15T23:00:00-04:00[America/New_York]", "2024-06-16T01:00:00-04:00[America/New_York]") // { duration: "PT2H", enter: "2024-06-15T23:00:00-04:00[America/New_York]", exit: "2024-06-16T01:00:00-04:00[America/New_York]", calendarDays: 2 }
@@ -12,7 +12,10 @@ export interface Leg {
12
12
  departure?: string;
13
13
  /** The ISO 8601 duration of the leg; time units and 24-hour days only (`transitTime`'s rule). */
14
14
  duration: string;
15
- /** The time zone of the destination, the caller's fact: an IANA name or a UTC offset. */
15
+ /**
16
+ * The time zone of the destination, the caller's fact: an IANA name or a UTC offset to the minute
17
+ * (what `isValidTimeZone` accepts).
18
+ */
16
19
  timeZone: string;
17
20
  /**
18
21
  * The handling time at the handoff after this leg; the minimum connect time.
@@ -57,10 +60,11 @@ export interface LegTime {
57
60
  /** Options for `scheduleDelivery`. */
58
61
  export interface ScheduleDeliveryOptions {
59
62
  /**
60
- * The time zone a zoneless first-leg departure is read in, an IANA name or a UTC offset, for
61
- * schedules published as local wall times. An ambiguous wall time resolves to the earlier instant
62
- * and a nonexistent one to the later instant (`"compatible"`). Ignored when the first departure
63
- * is already exact; never applied to later legs.
63
+ * The time zone a zoneless first-leg departure is read in, an IANA name or a UTC offset to the
64
+ * minute (what `isValidTimeZone` accepts), for schedules published as local wall times. An
65
+ * ambiguous wall time resolves to the earlier instant and a nonexistent one to the later instant
66
+ * (`"compatible"`). Ignored when the first departure is already exact; never applied to later
67
+ * legs.
64
68
  *
65
69
  * @defaultValue None. A zoneless first-leg departure is invalid input.
66
70
  */
@@ -128,6 +132,10 @@ export interface DeliverySchedule {
128
132
  * - An empty legs array is valid vacuous input and returns `{ eta: "", legTimes: [] }`;
129
133
  * malformed input (a non-array, a non-object leg, an invalid field) returns `null`.
130
134
  * - Returns `null` on invalid input.
135
+ * - An offset with seconds (`-00:44:30`) as a leg's `timeZone` or as `startTimeZone` returns
136
+ * `null`. A written zone cannot carry seconds (RFC 9557 §4.1), so `eta` and `localArrival` could
137
+ * not name it. Pass the IANA name, or call `fromOffsetInstant({ instant, offset })` on a leg's
138
+ * `arrival` for the local time with its full offset and no bracket.
131
139
  *
132
140
  * @param legs the journey's legs, in travel order
133
141
  * @param options The zone a zoneless first-leg departure is read in
@@ -7,6 +7,7 @@ import { isValidZonedDateTime } from "../../zoned/validate/isValidZonedDateTime.
7
7
  import { etaAtZone } from "../convert/etaAtZone.js";
8
8
  import { transitTime } from "./transitTime.js";
9
9
  import { optionOrDefault } from "../../internal/optionOrDefault.js";
10
+ import { isObject } from "../../internal/isObject.js";
10
11
  /**
11
12
  * A time-zone annotation anywhere in the string (`TIME_ZONE_ANNOTATION`): a bracket without
12
13
  * `=`. A departure that names a zone must name a real one that agrees with its offset.
@@ -172,7 +173,7 @@ function chainLegs(legs, startTimeZone) {
172
173
  let cursor = null;
173
174
  let previousTimeZone;
174
175
  for (const [index, leg] of legs.entries()) {
175
- if (typeof leg !== "object" || leg === null) {
176
+ if (!isObject(leg)) {
176
177
  return null;
177
178
  }
178
179
  const tags = legTags(leg);
@@ -253,6 +254,10 @@ function chainLegs(legs, startTimeZone) {
253
254
  * - An empty legs array is valid vacuous input and returns `{ eta: "", legTimes: [] }`;
254
255
  * malformed input (a non-array, a non-object leg, an invalid field) returns `null`.
255
256
  * - Returns `null` on invalid input.
257
+ * - An offset with seconds (`-00:44:30`) as a leg's `timeZone` or as `startTimeZone` returns
258
+ * `null`. A written zone cannot carry seconds (RFC 9557 §4.1), so `eta` and `localArrival` could
259
+ * not name it. Pass the IANA name, or call `fromOffsetInstant({ instant, offset })` on a leg's
260
+ * `arrival` for the local time with its full offset and no bracket.
256
261
  *
257
262
  * @param legs the journey's legs, in travel order
258
263
  * @param options The zone a zoneless first-leg departure is read in
@@ -27,9 +27,14 @@
27
27
  * identifier, or a fixed offset such as `"+09:00"`, which renders with the offset as its zone.
28
28
  * A fixed offset is a legitimate rendering choice for a ship's log (MAR-18); it is not a place.
29
29
  * - Returns `""` when the instant or the zone is invalid.
30
+ * - An offset with seconds (`-00:44:30`) returns `""`. A written zone cannot carry seconds (RFC
31
+ * 9557 §4.1), so the result could not name it. Pass the IANA name, or call
32
+ * `fromOffsetInstant({ instant, offset })` for the local time with its full offset and no
33
+ * bracket.
30
34
  *
31
35
  * @param arrivalUtc ISO 8601 instant string of the arrival
32
- * @param targetZone IANA timeZone identifier of the place the arrival is read in
36
+ * @param targetZone IANA name or a UTC offset to the minute (what `isValidTimeZone` accepts), for
37
+ * the place the arrival is read in
33
38
  * @returns zoned ISO 8601 string of the local arrival, or "" on invalid input
34
39
  *
35
40
  * @example etaAtZone("2024-06-15T12:30:00Z", "Asia/Tokyo") // "2024-06-15T21:30:00+09:00[Asia/Tokyo]"
@@ -30,9 +30,14 @@ import { isValidTimeZone } from "../../zoned/validate/isValidTimeZone.js";
30
30
  * identifier, or a fixed offset such as `"+09:00"`, which renders with the offset as its zone.
31
31
  * A fixed offset is a legitimate rendering choice for a ship's log (MAR-18); it is not a place.
32
32
  * - Returns `""` when the instant or the zone is invalid.
33
+ * - An offset with seconds (`-00:44:30`) returns `""`. A written zone cannot carry seconds (RFC
34
+ * 9557 §4.1), so the result could not name it. Pass the IANA name, or call
35
+ * `fromOffsetInstant({ instant, offset })` for the local time with its full offset and no
36
+ * bracket.
33
37
  *
34
38
  * @param arrivalUtc ISO 8601 instant string of the arrival
35
- * @param targetZone IANA timeZone identifier of the place the arrival is read in
39
+ * @param targetZone IANA name or a UTC offset to the minute (what `isValidTimeZone` accepts), for
40
+ * the place the arrival is read in
36
41
  * @returns zoned ISO 8601 string of the local arrival, or "" on invalid input
37
42
  *
38
43
  * @example etaAtZone("2024-06-15T12:30:00Z", "Asia/Tokyo") // "2024-06-15T21:30:00+09:00[Asia/Tokyo]"
@@ -23,10 +23,11 @@ export type BusinessCalendar = {
23
23
  */
24
24
  holidays: string[];
25
25
  /**
26
- * The time zone recording which locality the calendar describes, an IANA name or a UTC offset. It
27
- * must be a valid zone, but the business-day functions never use it: they take and return local
28
- * dates, so the answer is the same whatever it says. A caller holding an instant uses it to
29
- * reduce that instant to a local date first, with `floorToZone` or `getZonedDateTimeFields`.
26
+ * The time zone recording which locality the calendar describes, an IANA name or a UTC offset to
27
+ * the minute (what `isValidTimeZone` accepts). It must be a valid zone, but the business-day
28
+ * functions never use it: they take and return local dates, so the answer is the same whatever it
29
+ * says. A caller holding an instant uses it to reduce that instant to a local date first, with
30
+ * `floorToZone` or `getZonedDateTimeFields`.
30
31
  */
31
32
  timeZone: string;
32
33
  };