@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
@@ -4,12 +4,19 @@ description: >
4
4
  Core date/time basics — get current values, parse components, read ISO week,
5
5
  ordinal, quarter and fiscal-period identifiers, format for display, format
6
6
  relative time, compare dates, and validate strings/timezones/intervals. Reads
7
- the installed package README.md and source JSDoc for API details; this skill
8
- is a routing pointer, not an API dump.
7
+ the docs site (llms.txt and each page's .md twin) and the installed package's
8
+ JSDoc for API details; this skill is a routing pointer, not an API dump.
9
9
  sources:
10
- - 'northguild/gmt:README.md'
10
+ - 'northguild/gmt:apps/dox/src/content/docs/guides/core-date-operations/get-current.mdx'
11
+ - 'northguild/gmt:apps/dox/src/content/docs/guides/core-date-operations/parsing.mdx'
12
+ - 'northguild/gmt:apps/dox/src/content/docs/guides/core-date-operations/formatting.mdx'
13
+ - 'northguild/gmt:apps/dox/src/content/docs/guides/core-date-operations/relative-time.mdx'
14
+ - 'northguild/gmt:apps/dox/src/content/docs/guides/core-date-operations/comparisons.mdx'
15
+ - 'northguild/gmt:apps/dox/src/content/docs/guides/core-date-operations/validation.mdx'
16
+ - 'northguild/gmt:apps/dox/src/content/docs/guides/zoned-date-operations/calendar-boundaries.mdx'
11
17
  - 'northguild/gmt:packages/gmt/src/plain/get/index.ts'
12
18
  - 'northguild/gmt:packages/gmt/src/plain/parse/index.ts'
19
+ - 'northguild/gmt:packages/gmt/src/types/two-digit-year.ts'
13
20
  - 'northguild/gmt:packages/gmt/src/plain/format/index.ts'
14
21
  - 'northguild/gmt:packages/gmt/src/plain/locale/index.ts'
15
22
  - 'northguild/gmt:packages/gmt/src/plain/compare/index.ts'
@@ -17,6 +24,9 @@ sources:
17
24
  - 'northguild/gmt:packages/gmt/src/zoned/get/index.ts'
18
25
  - 'northguild/gmt:packages/gmt/src/zoned/format/index.ts'
19
26
  - 'northguild/gmt:packages/gmt/src/zoned/validate/index.ts'
27
+ - 'northguild/gmt:packages/gmt/src/zoned/parse/index.ts'
28
+ - 'northguild/gmt:packages/gmt/src/utc/parse/index.ts'
29
+ - 'northguild/gmt:packages/gmt/src/utc/validate/index.ts'
20
30
  - 'northguild/gmt:packages/gmt/src/unix/get/index.ts'
21
31
  - 'northguild/gmt:packages/gmt/src/utc/get/index.ts'
22
32
  - 'northguild/gmt:packages/gmt/src/calendar/calculate/index.ts'
@@ -24,7 +34,7 @@ sources:
24
34
  metadata:
25
35
  type: core
26
36
  library: '@northguild/gmt'
27
- library_version: '1.18.0'
37
+ library_version: '1.19.0'
28
38
  ---
29
39
 
30
40
  # GMT Basics
@@ -52,26 +62,36 @@ input before you act on it.
52
62
  `false` for booleans, `[]` for arrays. Always check before using. This holds
53
63
  for a `null` or wrong-typed argument too (`addDate(x, null)` is `""`), so a
54
64
  `try`/`catch` around a GMT call is dead code.
55
- 3. **Read the README.** This skill is a routing pointer. For full API
56
- signatures, locale matrices, and code examples, read the installed package's
57
- `README.md` and the source JSDoc of the function you intend to call.
65
+ 3. **Read the docs site.** This skill is a routing pointer. For full API
66
+ signatures, locale matrices, and code examples, read these:
67
+ - `https://gmt-dox.northguild.workers.dev/llms.txt` is the map of every docs page.
68
+ - Each page has a `.md` twin that holds its text, for example
69
+ `https://gmt-dox.northguild.workers.dev/guides/core-date-operations/parsing.md`.
70
+ - The JSDoc of the function you intend to call ships in the installed
71
+ package: `node_modules/@northguild/gmt/dist/**/*.d.ts`.
58
72
 
59
73
  ## Key functions
60
74
 
61
75
  - **Current values**: `getNow`, `getToday`, `getUtcNow`, `getUnixNow`,
62
76
  `getSystemTimeZone`, `getTimeZones`
63
77
  - **Parsing**: `parseYearFromDate`, `parseMonthFromDate`,
64
- `parseDateTimeWithPattern`, `parseRfc3339`, `parseHttp`, `parseSql`
78
+ `parseDateTimeWithPattern`, `parseRfc3339`, `parseRfc2822`,
79
+ `parseHttpDate`, `parseSqlDateTime`
65
80
  - **Calendar identifiers**: `getIsoWeekDate`, `getOrdinalDate`, `getQuarter`,
66
81
  `getFiscalPeriod`
67
82
  - **Formatting**: `formatDate`, `formatTime`, `formatDateTime`,
68
- `formatRelativeDate`, `formatCalendar`, `formatRfc3339`
83
+ `formatRelativeDate`, `formatCalendar`, `formatRfc3339`, `formatRfc2822`,
84
+ `formatHttpDate`, `formatSqlDateTime`
69
85
  - **Locale names**: `getLocaleMonthNames`, `getLocaleWeekdayNames`,
70
86
  `getLocaleMeridiems`, `getLocaleEraNames`
71
87
  - **Comparison**: `isAfterDate`, `isBeforeDate`, `areDatesEqual`,
72
88
  `areDatesEqualBy`, `isWeekend`, `isBusinessDay`, `nextWeekday`
73
89
  - **Validation**: `isValidDate`, `isValidTime`, `isValidTimeZone`,
74
90
  `isValidZonedDateTime`, `isValidDateInterval`, `isValidFiscalPattern`
91
+ - **Interchange-format validation**: `isValidRfc3339DateTime`,
92
+ `isValidRfc2822DateTime`, `isValidHttpDate`, `isValidSqlDateTime`
93
+ - **UTC timestamp validation**: `isValidUtcTimestamp` (a UTC instant written
94
+ `YYYY-MM-DDTHH:MM:SS[.f]Z` and nothing else; it has no parser)
75
95
 
76
96
  ## Common pitfalls
77
97
 
@@ -82,21 +102,41 @@ input before you act on it.
82
102
  second to hour, the others second to year. Any other unit returns `""`.
83
103
  `roundingMethod` is `"floor"`, `"ceil"` or `"round"`: any other value returns `""`.
84
104
  - In a `parse*WithPattern` pattern, `''` is one literal quote, inside or outside
85
- quoted text (UTS #35): `"MMM d, ''yy"` reads `"Mar 15, '24"`. It is not an empty
86
- separator. Write adjacent fields with nothing between them, as in `"yyyyMMdd"`.
105
+ quoted text (UTS #35), and not an empty separator: `"''yyyy-MM-dd''"` reads
106
+ `"'2024-01-15'"`. Write adjacent fields with nothing between them, as in `"yyyyMMdd"`.
107
+ - A `yy` token in a `parse*WithPattern` pattern needs the caller's hundred-year window:
108
+ `{ yearWindow: 2000 }` reads `"03/15/24"` against `"MM/dd/yy"` as `"2024-03-15"`, and
109
+ `"rolling"` is the hundred years around the current UTC year. A `yy` pattern with no
110
+ `yearWindow` returns `""`; a pattern with no `yy` never reads the option.
87
111
  - `getZonedNow` reads `smallestUnit` only, and writes milliseconds when it is
88
112
  omitted or `undefined`. The string always carries the offset and the zone.
89
- - `parseDateWithPattern`, `parseRfc2822` and `parseHttp` return `""` on
113
+ - `parseDateWithPattern`, `parseRfc2822` and `parseHttpDate` return `""` on
90
114
  shape-valid-but-unreal dates such as 31 February (regex only proves shape;
91
115
  Temporal validates the real value). Parsers reject; only arithmetic clamps.
92
116
  - `parseRfc2822` reads everything RFC 5322 says a receiver must: comments,
93
117
  folding whitespace, any case, two-digit years and zone names such as `EST`
94
- (an unknown name reads as `+00:00`). `parseHttp` reads all three HTTP-date
118
+ (an unknown name reads as `+00:00`). `parseHttpDate` reads all three HTTP-date
95
119
  forms, including `rfc850-date` and `asctime-date`. Both return `""` when the
96
120
  day name contradicts the date (`"Sat, 15 Mar 2024 …"`), so do not synthesise
97
121
  a day name; omit it. The `rfc2822DateTime` and `httpDate` regexes stay strict
98
122
  and match only what GMT writes, so do not use them to pre-filter parser input.
99
- - `formatRfc2822`, `formatHttp` and `formatRfc3339` return `""` for a year their
123
+ - To check an interchange string, call its validator, not its regex.
124
+ `isValidRfc3339DateTime`, `isValidRfc2822DateTime`, `isValidHttpDate` and
125
+ `isValidSqlDateTime` are each true exactly when the parser returns a value.
126
+ A regex proves shape only: `rfc3339DateTime.test("2023-02-29T10:00:00Z")`
127
+ is `true` and `isValidRfc3339DateTime` returns `false` for it.
128
+ - `isValidUtcTimestamp` matches no parser: it is a narrower `isValidUtc`. It is true
129
+ only for a real UTC instant written `YYYY-MM-DDTHH:MM:SS[.f]Z`: a four-digit year
130
+ `0000` to `9999`, upper-case `T` and `Z`, seconds, an optional dot fraction of one to
131
+ nine digits, and nothing after the `Z`. Use it for a string headed for storage or for
132
+ a reader that is not Temporal. `isValidUtc` also accepts a time without seconds, a
133
+ comma before the fraction, an expanded `±YYYYYY` year and RFC 9557 annotations
134
+ (`"2026-10-06T12:00:00Z[Europe/Paris]"`); all four are `false` here. A numeric offset,
135
+ `+00:00` included, is `false` too: `isValidRfc3339DateTime` checks the whole RFC 3339
136
+ grammar, with the same two GMT limits (no second `60`, at most nine fraction digits).
137
+ The check is on the spelling and the instant. A reader's own range and precision
138
+ still apply.
139
+ - `formatRfc2822`, `formatHttpDate` and `formatRfc3339` return `""` for a year their
100
140
  grammar cannot hold (before 0000, or after 9999 for RFC 3339 and HTTP).
101
141
  `formatRfc3339` writes a sub-minute historical offset as the same instant at
102
142
  `+00:00`. Use Temporal's `toString()` when you need any year.
@@ -132,5 +172,7 @@ input before you act on it.
132
172
 
133
173
  ## References
134
174
 
135
- - [README — API Surface and Quick Start](README.md)
175
+ - [Docs map for agents (llms.txt)](https://gmt-dox.northguild.workers.dev/llms.txt)
176
+ - [API reference](https://gmt-dox.northguild.workers.dev/reference/)
177
+ - [Core date operations guides index](https://gmt-dox.northguild.workers.dev/guides/core-date-operations/)
136
178
  - [Core date operations guides](/guides/core-date-operations/get-current/)
@@ -4,11 +4,16 @@ description: >
4
4
  Application integration patterns — stable cache keys, router/query params,
5
5
  table-sort keys, nanosecond timestamps across JSON and storage boundaries,
6
6
  foreign epoch bridges (NTP, FILETIME, .NET ticks, Excel, PostgreSQL), and lint
7
- package selection (ESLint, Biome, Oxlint). Reads the installed package
8
- README.md and lint-package READMEs for API details; this skill is a routing
9
- pointer, not an API dump.
7
+ package selection (ESLint, Biome, Oxlint). Reads the docs site (llms.txt and
8
+ each page's .md twin) and the installed package's JSDoc for API details, and
9
+ the lint-package READMEs for lint setup; this skill is a routing pointer, not
10
+ an API dump.
10
11
  sources:
11
- - 'northguild/gmt:README.md'
12
+ - 'northguild/gmt:apps/dox/src/content/docs/install.mdx'
13
+ - 'northguild/gmt:apps/dox/src/content/docs/guides/integration/app-integration.mdx'
14
+ - 'northguild/gmt:apps/dox/src/content/docs/guides/integration/linting.mdx'
15
+ - 'northguild/gmt:apps/dox/src/content/docs/guides/core-date-operations/nanosecond-precision.mdx'
16
+ - 'northguild/gmt:apps/dox/src/content/docs/guides/conversion/foreign-epoch-bridges.mdx'
12
17
  - 'northguild/gmt:packages/gmt/src/zoned/validate/index.ts'
13
18
  - 'northguild/gmt:packages/gmt/src/precision/convert/index.ts'
14
19
  - 'northguild/gmt:packages/gmt/src/precision/format/index.ts'
@@ -17,7 +22,7 @@ sources:
17
22
  metadata:
18
23
  type: composition
19
24
  library: '@northguild/gmt'
20
- library_version: '1.18.0'
25
+ library_version: '1.19.0'
21
26
  ---
22
27
 
23
28
  # GMT Integration
@@ -84,9 +89,15 @@ which lint package to install for Date-ban enforcement.
84
89
  names the instant the zone gives.
85
90
  6. **Lint packages are toolchain-specific, not mutually exclusive.** Recommend
86
91
  only the one matching the project's existing linter; do not force all three.
87
- 7. **Read the READMEs.** This skill is a routing pointer. For full integration
88
- guidance, read the installed package's `README.md` and the matching
89
- `@northguild/gmt-eslint` / `gmt-oxlint` / `gmt-biome` README.
92
+ 7. **Read the docs site and the lint README.** This skill is a routing pointer.
93
+ For full integration guidance, read these:
94
+ - `https://gmt-dox.northguild.workers.dev/llms.txt` is the map of every docs page.
95
+ - Each page has a `.md` twin that holds its text, for example
96
+ `https://gmt-dox.northguild.workers.dev/guides/integration/app-integration.md`.
97
+ - The JSDoc ships in the installed package:
98
+ `node_modules/@northguild/gmt/dist/**/*.d.ts`.
99
+ - For lint setup, read the matching `@northguild/gmt-eslint` / `gmt-oxlint` /
100
+ `gmt-biome` README.
90
101
 
91
102
  ## Lint package selection
92
103
 
@@ -119,6 +130,10 @@ the pattern.
119
130
 
120
131
  ## References
121
132
 
122
- - [README — Install and Design Philosophy](README.md)
133
+ - [Docs map for agents (llms.txt)](https://gmt-dox.northguild.workers.dev/llms.txt)
134
+ - [Install](https://gmt-dox.northguild.workers.dev/install/)
135
+ - [App integration guide](https://gmt-dox.northguild.workers.dev/guides/integration/app-integration/)
136
+ - [Nanosecond precision guide](https://gmt-dox.northguild.workers.dev/guides/core-date-operations/nanosecond-precision/)
137
+ - [Foreign epoch bridges guide](https://gmt-dox.northguild.workers.dev/guides/conversion/foreign-epoch-bridges/)
123
138
  - [Lint Package Selection guide](/guides/integration/linting/)
124
139
  - [Core Rules](/core-rules/)
@@ -1,22 +1,25 @@
1
1
  ---
2
2
  name: gmt-timezone
3
3
  description: >
4
- Timezone-aware operations — zoned now, formatting zoned values/ranges,
5
- plain↔zoned↔UTC↔Unix conversion, DST disambiguation on construction and
6
- arithmetic, the instant-plus-offset pair, classifyLocal/resolveLocal, real
7
- unit boundaries (startOfZoned/endOfZoned/startOfUnix/endOfUnix), hours in a
8
- local day, floorToZone/bucketRange, calendar-annotated zoned strings, range
9
- limits, transport legs (transitTime, etaAtZone, dwellTime, crossingTime,
10
- scheduleDelivery), cut-offs (cutoffAt, cutoffSchedule, isPastCutoff,
11
- timeToCutoff), planned versus actual (scheduleDeviation, classifyPunctuality,
12
- punctualityRate, bestAvailable and estimateDrift over PLN/EST/REQ/ACT,
13
- nextDeparture), intermodal free time (freeTimeExpiry, chargeableDays,
14
- demurrageClock), billingTimeline, and operating hours (OperatingSchedule,
15
- recurringWindows, operatingIntervals, isOpenAt, nextOpenAt, nextCloseAt,
16
- operatingTimeBetween, addOperatingTime), and daylight time
17
- (isInDaylightSaving, hasDaylightSaving). Points to the README and JSDoc.
4
+ Timezone-aware operations — zoned now, zoned formatting, plain↔zoned↔UTC↔Unix
5
+ conversion, DST disambiguation, toOffsetInstant, classifyLocal/resolveLocal,
6
+ real boundaries (startOfZoned/endOfZoned/startOfUnix/endOfUnix), hours in a
7
+ local day, floorToZone/bucketRange, calendar-annotated strings, transport legs
8
+ (transitTime, etaAtZone, dwellTime, crossingTime, scheduleDelivery), cut-offs
9
+ (cutoffAt, cutoffSchedule, isPastCutoff, timeToCutoff), punctuality
10
+ (scheduleDeviation, classifyPunctuality, punctualityRate, bestAvailable,
11
+ estimateDrift over PLN/EST/REQ/ACT, nextDeparture), free time (freeTimeExpiry,
12
+ chargeableDays, demurrageClock), billingTimeline, bolTimestamp, multimodalETA,
13
+ EDI timestamps (parseEdifactDateTime, parseX12DateAndTime, x12TimeCodeOffset,
14
+ parseEpcisEvent, classify*/format*/isValid*), operating hours
15
+ (OperatingSchedule, recurringWindows, operatingIntervals, isOpenAt,
16
+ nextOpenAt, nextCloseAt, operatingTimeBetween, addOperatingTime), and daylight
17
+ time (isInDaylightSaving, hasDaylightSaving).
18
18
  sources:
19
- - 'northguild/gmt:README.md'
19
+ - 'northguild/gmt:apps/dox/src/content/docs/guides/zoned-date-operations/*.mdx'
20
+ - 'northguild/gmt:apps/dox/src/content/docs/guides/concepts/dst-disambiguation.md'
21
+ - 'northguild/gmt:apps/dox/src/content/docs/guides/core-date-operations/operating-hours.mdx'
22
+ - 'northguild/gmt:apps/dox/src/content/docs/guides/industries/*.mdx'
20
23
  - 'northguild/gmt:packages/gmt/src/zoned/get/index.ts'
21
24
  - 'northguild/gmt:packages/gmt/src/zoned/format/index.ts'
22
25
  - 'northguild/gmt:packages/gmt/src/zoned/compare/index.ts'
@@ -31,6 +34,7 @@ sources:
31
34
  - 'northguild/gmt:packages/gmt/src/utc/get/index.ts'
32
35
  - 'northguild/gmt:packages/gmt/src/utc/convert/index.ts'
33
36
  - 'northguild/gmt:packages/gmt/src/instant/convert/index.ts'
37
+ - 'northguild/gmt:packages/gmt/src/instant/validate/index.ts'
34
38
  - 'northguild/gmt:packages/gmt/src/calendar/calculate/index.ts'
35
39
  - 'northguild/gmt:packages/gmt/src/calendar/validate/index.ts'
36
40
  - 'northguild/gmt:packages/gmt/src/calendar/hours/index.ts'
@@ -40,10 +44,16 @@ sources:
40
44
  - 'northguild/gmt:packages/gmt/src/transport/compare/index.ts'
41
45
  - 'northguild/gmt:packages/gmt/src/transport/convert/index.ts'
42
46
  - 'northguild/gmt:packages/gmt/src/intermodal/calculate/index.ts'
47
+ - 'northguild/gmt:packages/gmt/src/intermodal/format/index.ts'
48
+ - 'northguild/gmt:packages/gmt/src/intermodal/parse/index.ts'
49
+ - 'northguild/gmt:packages/gmt/src/intermodal/validate/index.ts'
50
+ - 'northguild/gmt:packages/gmt/src/types/edi.ts'
51
+ - 'northguild/gmt:packages/gmt/src/types/epcis.ts'
52
+ - 'northguild/gmt:packages/gmt/src/types/two-digit-year.ts'
43
53
  metadata:
44
54
  type: core
45
55
  library: '@northguild/gmt'
46
- library_version: '1.18.0'
56
+ library_version: '1.19.0'
47
57
  ---
48
58
 
49
59
  # GMT Timezone
@@ -69,6 +79,9 @@ converting between time zones, or doing arithmetic that must respect DST.
69
79
  - The user is working out when a container's free time ends, how many days of
70
80
  demurrage or detention are chargeable and for which dates, or which events a
71
81
  charge's clock runs between.
82
+ - The user is reading or writing a UN/EDIFACT `DTM` value, an X12 date, time,
83
+ time code or date time period, or a GS1 EPCIS event time, and must know
84
+ whether its offset was stated.
72
85
  - The user is asking whether a gate, desk, office or venue is open at an
73
86
  instant, when it next opens or closes, how many working hours passed between
74
87
  two instants, or when an SLA measured in open hours falls due — or is
@@ -115,11 +128,11 @@ converting between time zones, or doing arithmetic that must respect DST.
115
128
  on a spring-forward one. `resolveLocal(local, zone, { disambiguation })` then
116
129
  returns the instant, exact to the nanosecond, or `""` under `"reject"`. Reach
117
130
  for `convertPlainDateTimeToZoned` instead when you want the zoned string.
118
- 6. **An offset is not a zone.** `-05:00` does not identify `America/New_York`.
119
- `toOffsetInstant` splits a timestamp into `{ instant, offset, timeZone? }` —
120
- the shape EPCIS 2.0, EDIFACT DTM and DICOM all exchange, because the instant
121
- orders events and the offset renders them where they happened, and neither
122
- derives from the other. Keep the zone for what is still to be scheduled.
131
+ 6. **An offset is not a zone, but a stored one is a rule for local time.**
132
+ `toOffsetInstant` gives `{ instant, offset, timeZone? }`, the pair EPCIS 2.0,
133
+ EDIFACT DTM and DICOM exchange. Its `±HH:MM[:SS]` offset is a valid `timeZone`
134
+ for `resolveLocal` and every function whose result has no zone in it. One
135
+ that returns a zoned string or formats with `Intl` takes none with seconds.
123
136
  7. **Bucket in the zone, not in UTC.** `floorToZone(instant, unit, zone)` and
124
137
  `bucketRange(start, end, unit, zone)` floor on the zone's own calendar
125
138
  boundaries. Flooring a UTC instant to a UTC day and calling it a local day is
@@ -291,7 +304,83 @@ converting between time zones, or doing arithmetic that must respect DST.
291
304
  `convertUtcToPlainDate(instant, { timeZone })`. A request before its
292
305
  invoice, or an agreed date before the request, returns `null`. GMT
293
306
  computes dates, not liability.
294
- 20. **Operating hours are local windows resolved in the schedule's zone.** An
307
+ 20. **A B/L date is a local date; a multimodal ETA keeps transit and dwell
308
+ apart.** `bolTimestamp(value, event, { timeZone })` returns the
309
+ `YYYY-MM-DD` date on the local clock in `timeZone` at the instant `value`:
310
+ DCSA Bill of Lading 3.0 types `issueDate`, `receivedForShipmentDate` and
311
+ `shippedOnBoardDate` as dates with no time or offset. `event` is
312
+ `"issue" | "received" | "shippedOnBoard"`, one per DCSA date field; all
313
+ three render the same way and anything else is `""`. `timeZone` is
314
+ required (no UTC default): the place of issue for `issue`, the loading
315
+ terminal for `received` and `shippedOnBoard`. 21:00 in New York
316
+ is 01:00Z the next day, so the UTC date is wrong. Only the instant is read;
317
+ a zoneless value is `""`. `multimodalETA(legs, { startTimeZone? })` takes
318
+ `scheduleDelivery`'s `Leg[]` and returns `{ eta, totalLegs, totalTransit,
319
+ totalDwell }`: transit is the legs' durations added up, dwell the time
320
+ actually spent at handoffs (a wait for a scheduled departure included; the
321
+ last leg's `dwellAfter` excluded), both with hours as the largest unit, and
322
+ they sum to the elapsed time. Every `scheduleDelivery` rule applies, so a
323
+ missed connection is `null`. An empty array is `{ eta: "", totalLegs: 0,
324
+ totalTransit: "PT0S", totalDwell: "PT0S" }`. Dwell is never estimated.
325
+ 21. **An EDI timestamp is read by the function for its kind of value, and
326
+ nothing the code does not state is guessed.** Each kind has a `parse…`,
327
+ `format…` and `isValid…` function named for it (`parseEdifactDate`,
328
+ `formatEdifactDate`, `isValidEdifactDate`), and `format` is typed to that
329
+ kind's codes. UN/EDIFACT `DTM` (value 2380 against format code 2379):
330
+ `EdifactDate` (`102`), `EdifactTime` (`401`, `402`), `EdifactDateTime`
331
+ (`203`, `204`), `EdifactOffsetDateTime` (`205`, `208`, `303`, `304`),
332
+ `EdifactDatePeriod` (`718`), `EdifactDateTimePeriod` (`719`). X12 (element
333
+ 1251 against qualifier 1250, in `DTP` and `DTM-05`/`06`): `X12Date` (`D8`,
334
+ `DB`), `X12Time` (`TM`, `TS`), `X12DateTime` (`DT`, `RTS`), `X12DateRange`
335
+ (`RD8`, `RD`), `X12DateTimeRange` (`RDT`, `DTS`). `parseX12Time(value)`
336
+ with no `format` reads element 337, tenths and hundredths included
337
+ (`"14300012"` is `"14:30:00.12"`), and `formatX12TimeElement(value, form)`
338
+ writes it in the mask named: `HHMM`, `HHMMSS`, `HHMMSSD` or `HHMMSSDD`
339
+ (`"14:30:00"` under `HHMMSSDD` is `"14300000"`). A parser returns one value:
340
+ `"2024-06-15"`, `"14:30:00"`, `"2024-06-15T14:30:00"`,
341
+ `"2024-06-15T14:30:00+02:00"` (the string `toOffsetInstant` reads), or
342
+ `{ start, end }` for a period or range. The sentinel is `""`, or `null`
343
+ for a period, a range, a zone or a classifier. A period formatter takes
344
+ `(start, end, format)`. No EDI function takes options. X12 freight is
345
+ three calls: `parseX12DateAndTime("20240615", "1430")` is
346
+ `"2024-06-15T14:30:00"` (elements 373 and 337 of `AT7`, `G62` or `DTM`,
347
+ both required), `x12TimeCodeOffset("20")` is `"-05:00"`, and
348
+ `resolveLocal(local, offset)` is `"2024-06-15T19:30:00Z"`. For a code
349
+ held as a plain string, `classifyEdifactDtmFormat`,
350
+ `classifyX12DateTimePeriodFormat` and `classifyX12TimeCode` return
351
+ `{ kind, format }` or `{ kind, timeCode }`, or `null` for a code no
352
+ function reads; testing `kind` narrows the code with no cast.
353
+ `parseEpcisEvent({ eventTime, eventTimeZoneOffset })` returns
354
+ `{ instant, offset, local }`; both fields are required and need not
355
+ agree. Five no-guess rules. (a) An offsetless value never becomes UTC:
356
+ `203`, `204`, `DT`, `RTS` and `parseX12DateAndTime` return a local
357
+ date-time; pass it and an IANA zone to `resolveLocal`. (b) A named X12
358
+ time code is a zone name, not an offset: `x12TimeCodeZone("ES")` is
359
+ `{ zone: "Eastern", daylight: false }` and `ET` has `daylight: null`,
360
+ while `x12TimeCodeOffset` reads `01`–`29`, `UT` and `GM`, and `13`–`24`
361
+ count down (`13` is `-12:00`). Each returns its sentinel for the other's
362
+ codes. (c) The `ZZZ` of `303` and `304` is an offset only: `+02`, `UTC`
363
+ and `GMT` are read, and letters such as `CET` return `""`. (d) A
364
+ two-digit year is not read by any EDI function: `101`, `201`, `202`,
365
+ `206`, `207`, `301`, `302`, `713`, `717`, `D6`, `TT`, `TR`, `RD6` and
366
+ `TU`. Read one with `parseDateWithPattern` or `parseDateTimeWithPattern`,
367
+ a `yy` pattern and `{ yearWindow }`: a start year such as `2000` (a fixed
368
+ window, for stored data) or `"rolling"` (50 years before the current UTC
369
+ year to 49 after). Without `yearWindow` a `yy` pattern returns `""`. (e)
370
+ `209`, `404`, `406`, `TC`, `EH`, `DDT`, `DTD`, `RTM` and `UN` are not
371
+ read: none states one date, time or date-time. A UN/EDIFACT period has no
372
+ hyphen (`2024061520240620` under `718`) and an X12 range has one
373
+ (`20240615-20240620` under `RD8`); a reversed one returns the sentinel.
374
+ Pass a UN/EDIFACT parser the unescaped value (`+02`, not `?+02`). A
375
+ formatter cuts seconds and fractions to its mask and never rounds.
376
+ It writes `ZZZ` as `±HH`, and `+05:30` under `303` or `304` returns `""`:
377
+ use `205` or `208`. Each value validator is true exactly when its parser
378
+ returns a value (`isValidX12DateAndTime(date, time)` for the freight
379
+ pair), and `isValidEdifactDtmFormat`, `isValidX12DateTimePeriodFormat`
380
+ and `isValidX12TimeCode` check a code alone. `isValidEpcisEvent` is
381
+ `isValidEpcisEventTime` and `isValidEpcisTimeZoneOffset` together: the
382
+ `epcisEventTime` regex matches `2024-02-30`, the validator does not.
383
+ 22. **Operating hours are local windows resolved in the schedule's zone.** An
295
384
  `OperatingSchedule` is `{ timeZone, weekly, holidays?, overrides? }`:
296
385
  `weekly` maps ISO weekdays `1`–`7` to half-open `LocalWindow`s
297
386
  (`{ from: "09:00", to: "17:00" }`); a `to` at or before `from` wraps past
@@ -307,7 +396,7 @@ converting between time zones, or doing arithmetic that must respect DST.
307
396
  `addOperatingTime(start, "PT8H", schedule)` is the SLA deadline. Searches
308
397
  stop at `within` (default `"P1Y"`) and return `""` past it; `P1D` is not
309
398
  open time and returns `""`.
310
- 21. **A zoned string names one instant in every reader.** Temporal writes a
399
+ 23. **A zoned string names one instant in every reader.** Temporal writes a
311
400
  zone's offset rounded to the minute, so a zone with a sub-minute offset
312
401
  (`Africa/Monrovia` stood at −00:44:30 until 1972) is written `-00:45`.
313
402
  Every function that reads a moment (`toNanoseconds`, `spanNs`, `Interval`
@@ -329,7 +418,7 @@ converting between time zones, or doing arithmetic that must respect DST.
329
418
  (`1952-10-15T23:59:59-11:20[Pacific/Niue]`); write the offset with seconds
330
419
  to name the second. A zoned read refuses a local date of −271821-04-19,
331
420
  which an instant reader accepts; pass that instant in `Z` form.
332
- 22. **Daylight time is read from the zone's clock changes.**
421
+ 24. **Daylight time is read from the zone's clock changes.**
333
422
  `isInDaylightSaving(zoned)` and `hasDaylightSaving(timeZone, { at })`
334
423
  apply one rule, GMT's own definition and not the tz database's daylight
335
424
  flag (no JavaScript API exposes it): daylight time runs from a forward
@@ -348,9 +437,10 @@ converting between time zones, or doing arithmetic that must respect DST.
348
437
  read the runtime's time zone data, so an answer can change when that data
349
438
  does. The JSDoc of `isInDaylightSaving` lists what the rule reads as
350
439
  standard time.
351
- 23. **Read the README.** This skill is a routing pointer. For the full DST
352
- disambiguation walkthrough, code examples, and locale ICU notes, read the
353
- installed package's `README.md` and the source JSDoc.
440
+ 25. **Read the docs site.** This skill is a routing pointer. The map of the
441
+ docs is `https://gmt-dox.northguild.workers.dev/llms.txt`, and each page
442
+ has a `.md` twin that holds its text. The JSDoc ships in the installed
443
+ package: `node_modules/@northguild/gmt/dist/**/*.d.ts`.
354
444
 
355
445
  ## Key functions
356
446
 
@@ -370,7 +460,8 @@ converting between time zones, or doing arithmetic that must respect DST.
370
460
  `endOfUnix`, `mapZonedHoursInDay`, `getHoursInZonedDay`
371
461
  - **Offset/DST reads**: `getZonedOffset`, `getZonedOffsetAs`,
372
462
  `getTimeZoneOffset`, `parseTimeZoneFromZoned`
373
- - **Offset-preserving instants**: `toOffsetInstant`, `fromOffsetInstant`
463
+ - **Offset-preserving instants**: `toOffsetInstant`, `fromOffsetInstant`,
464
+ `isValidUtcOffset` (the pair's `±HH:MM[:SS]` offset; not `Z`, not `+0530`)
374
465
  - **Local-time resolution**: `classifyLocal`, `resolveLocal`
375
466
  - **Zone-aware buckets**: `floorToZone`, `bucketRange`,
376
467
  `isValidZoneBucketUnit`
@@ -384,10 +475,24 @@ converting between time zones, or doing arithmetic that must respect DST.
384
475
  - **Free time and demurrage**: `freeTimeExpiry`, `chargeableDays`,
385
476
  `demurrageClock`
386
477
  - **Billing deadlines**: `billingTimeline`
478
+ - **Bill of lading dates and multimodal ETA**: `bolTimestamp`, `multimodalETA`
479
+ - **EDI and event timestamps**: `parseEdifactDate`, `parseEdifactTime`,
480
+ `parseEdifactDateTime`, `parseEdifactOffsetDateTime`,
481
+ `parseEdifactDatePeriod`, `parseEdifactDateTimePeriod`, `parseX12Date`,
482
+ `parseX12Time`, `parseX12DateTime`, `parseX12DateRange`,
483
+ `parseX12DateTimeRange`, `parseX12DateAndTime`, `x12TimeCodeOffset`,
484
+ `x12TimeCodeZone`, `classifyEdifactDtmFormat`,
485
+ `classifyX12DateTimePeriodFormat`, `classifyX12TimeCode`,
486
+ `parseEpcisEvent`; a `format…` and an `isValid…` for each `parseEdifact…`
487
+ kind, for `X12Date`, `X12Time`, `X12DateTime`, `X12DateRange` and
488
+ `X12DateTimeRange`, and for `EpcisEvent`; `formatX12TimeElement`,
489
+ `isValidX12DateAndTime`, `isValidEpcisEventTime`,
490
+ `isValidEpcisTimeZoneOffset`, `isValidEdifactDtmFormat`,
491
+ `isValidX12DateTimePeriodFormat`, `isValidX12TimeCode`
387
492
  - **Operating hours**: `recurringWindows`, `operatingIntervals`, `isOpenAt`,
388
493
  `nextOpenAt`, `nextCloseAt`, `operatingTimeBetween`, `addOperatingTime`
389
494
 
390
495
  ## References
391
496
 
392
- - [README — Timezone and Calendar examples](README.md)
497
+ - [Zoned operations guide](https://gmt-dox.northguild.workers.dev/guides/zoned-date-operations/zoned-operations/)
393
498
  - [DST Disambiguation guide](https://gmt-dox.northguild.workers.dev/guides/concepts/dst-disambiguation/)
@@ -1,22 +0,0 @@
1
- import type { Temporal } from "@js-temporal/polyfill";
2
- /**
3
- * Read a Unix epoch argument as a `Temporal.ZonedDateTime` under the shared `unix/` options, or
4
- * null when anything is invalid.
5
- *
6
- * - `value` follows the one epoch grammar (`parseUnixEpochValue`).
7
- * - `epochUnit` accepts singular or plural names and defaults to `"milliseconds"`.
8
- * - `timeZone` defaults to `"UTC"`; `"local"` is the system zone; an unknown zone is invalid
9
- * (see `normalizeTimeZone`).
10
- *
11
- * @param value Unix epoch number or digit string
12
- * @param options optional `{ epochUnit, timeZone }`
13
- * @returns the zoned date-time, or null
14
- *
15
- * @example unixZonedDateTime(0)?.toString() // "1970-01-01T00:00:00+00:00[UTC]"
16
- * @example unixZonedDateTime("86400", { epochUnit: "second", timeZone: "Asia/Tokyo" })?.hour // 9
17
- * @example unixZonedDateTime(0, { timeZone: "Asia/Tokio" }) // null
18
- */
19
- export declare function unixZonedDateTime(value: unknown, options?: {
20
- epochUnit?: unknown;
21
- timeZone?: unknown;
22
- }): Temporal.ZonedDateTime | null;
@@ -1,32 +0,0 @@
1
- import { normalizeTimeZone } from "./normalizeTimeZone.js";
2
- import { resolveUnixEpochUnit, unixEpochToInstant } from "./unixEpochValue.js";
3
- /**
4
- * Read a Unix epoch argument as a `Temporal.ZonedDateTime` under the shared `unix/` options, or
5
- * null when anything is invalid.
6
- *
7
- * - `value` follows the one epoch grammar (`parseUnixEpochValue`).
8
- * - `epochUnit` accepts singular or plural names and defaults to `"milliseconds"`.
9
- * - `timeZone` defaults to `"UTC"`; `"local"` is the system zone; an unknown zone is invalid
10
- * (see `normalizeTimeZone`).
11
- *
12
- * @param value Unix epoch number or digit string
13
- * @param options optional `{ epochUnit, timeZone }`
14
- * @returns the zoned date-time, or null
15
- *
16
- * @example unixZonedDateTime(0)?.toString() // "1970-01-01T00:00:00+00:00[UTC]"
17
- * @example unixZonedDateTime("86400", { epochUnit: "second", timeZone: "Asia/Tokyo" })?.hour // 9
18
- * @example unixZonedDateTime(0, { timeZone: "Asia/Tokio" }) // null
19
- */
20
- export function unixZonedDateTime(value, options) {
21
- const epochUnit = resolveUnixEpochUnit(options?.epochUnit);
22
- const timeZone = normalizeTimeZone(options?.timeZone);
23
- if (epochUnit === null || !timeZone) {
24
- return null;
25
- }
26
- try {
27
- return (unixEpochToInstant(value, epochUnit)?.toZonedDateTimeISO(timeZone) ?? null);
28
- }
29
- catch {
30
- return null;
31
- }
32
- }
@@ -1,19 +0,0 @@
1
- import { Temporal } from "@js-temporal/polyfill";
2
- /**
3
- * Read a UTC ISO string as a zoned date-time for the `parse*FromUtc` accessors: the instant it
4
- * names, on the wall clock of `options.timeZone`. The utc twin of `unixZonedDateTime`.
5
- *
6
- * - `timeZone` defaults to `"UTC"`; `"local"` is the system zone; an unknown zone is invalid
7
- * (see `normalizeTimeZone`).
8
- *
9
- * @param value UTC ISO 8601 datetime string
10
- * @param options optional `{ timeZone }`
11
- * @returns the zoned date-time, or null when the value or the zone is invalid
12
- * @example utcZonedDateTime("2024-03-15T14:30:00Z", { timeZone: "Asia/Tokyo" })?.toString() // "2024-03-15T23:30:00+09:00[Asia/Tokyo]"
13
- * @example utcZonedDateTime("2024-03-15T14:30:00Z", { timeZone: "local" })?.timeZoneId // the system zone, e.g. "America/New_York"
14
- * @example utcZonedDateTime("2024-03-15T14:30:00Z", { timeZone: "Invalid/Zone" }) // null
15
- * @example utcZonedDateTime("2024-03-15T14:30:00") // null (no Z)
16
- */
17
- export declare function utcZonedDateTime(value: string, options?: {
18
- timeZone?: string;
19
- }): Temporal.ZonedDateTime | null;
@@ -1,31 +0,0 @@
1
- import { Temporal } from "@js-temporal/polyfill";
2
- import { isValidUtc } from "../utc/validate/isValidUtc.js";
3
- import { normalizeTimeZone } from "./normalizeTimeZone.js";
4
- /**
5
- * Read a UTC ISO string as a zoned date-time for the `parse*FromUtc` accessors: the instant it
6
- * names, on the wall clock of `options.timeZone`. The utc twin of `unixZonedDateTime`.
7
- *
8
- * - `timeZone` defaults to `"UTC"`; `"local"` is the system zone; an unknown zone is invalid
9
- * (see `normalizeTimeZone`).
10
- *
11
- * @param value UTC ISO 8601 datetime string
12
- * @param options optional `{ timeZone }`
13
- * @returns the zoned date-time, or null when the value or the zone is invalid
14
- * @example utcZonedDateTime("2024-03-15T14:30:00Z", { timeZone: "Asia/Tokyo" })?.toString() // "2024-03-15T23:30:00+09:00[Asia/Tokyo]"
15
- * @example utcZonedDateTime("2024-03-15T14:30:00Z", { timeZone: "local" })?.timeZoneId // the system zone, e.g. "America/New_York"
16
- * @example utcZonedDateTime("2024-03-15T14:30:00Z", { timeZone: "Invalid/Zone" }) // null
17
- * @example utcZonedDateTime("2024-03-15T14:30:00") // null (no Z)
18
- */
19
- export function utcZonedDateTime(value, options) {
20
- if (!isValidUtc(value))
21
- return null;
22
- const timeZone = normalizeTimeZone(options?.timeZone);
23
- if (timeZone === "")
24
- return null;
25
- try {
26
- return Temporal.Instant.from(value).toZonedDateTimeISO(timeZone);
27
- }
28
- catch {
29
- return null;
30
- }
31
- }