@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
@@ -24,8 +24,10 @@ export declare function parseDayOfWeekFromUnix(value: number | string, options?:
24
24
  */
25
25
  epochUnit?: UnixUnit;
26
26
  /**
27
- * The time zone the wall-clock fields are read in: an IANA name, a UTC offset, or `"local"` for
28
- * the system time zone. An unknown zone returns `null`.
27
+ * The time zone the wall-clock fields are read in: an IANA name, a UTC offset (a time zone
28
+ * identifier such as `+05:30`, `+0530` or `-08`, or a stored offset `±HH:MM[:SS]`, what
29
+ * `getTimeZoneOffset` returns), or `"local"` for the system time zone. An unknown zone returns
30
+ * `null`.
29
31
  *
30
32
  * @defaultValue `"UTC"`
31
33
  */
@@ -1,4 +1,4 @@
1
- import { unixZonedDateTime } from "../../internal/unixZonedDateTime.js";
1
+ import { unixWallClock } from "../../internal/unixWallClock.js";
2
2
  import { isOptionsArgument } from "../../internal/isObject.js";
3
3
  /**
4
4
  * Return the day of week (1-7) from a unix epoch value.
@@ -21,7 +21,7 @@ export function parseDayOfWeekFromUnix(value, options) {
21
21
  if (!isOptionsArgument(options)) {
22
22
  return null;
23
23
  }
24
- return unixZonedDateTime(value, options)?.dayOfWeek ?? null;
24
+ return unixWallClock(value, options)?.dayOfWeek ?? null;
25
25
  }
26
26
  catch {
27
27
  // Never throws (Core Rule 3): a hostile
@@ -23,8 +23,10 @@ export declare function parseHourFromUnix(value: number | string, options?: {
23
23
  */
24
24
  epochUnit?: UnixUnit;
25
25
  /**
26
- * The time zone the wall-clock fields are read in: an IANA name, a UTC offset, or `"local"` for
27
- * the system time zone. An unknown zone returns `""`.
26
+ * The time zone the wall-clock fields are read in: an IANA name, a UTC offset (a time zone
27
+ * identifier such as `+05:30`, `+0530` or `-08`, or a stored offset `±HH:MM[:SS]`, what
28
+ * `getTimeZoneOffset` returns), or `"local"` for the system time zone. An unknown zone returns
29
+ * `""`.
28
30
  *
29
31
  * @defaultValue `"UTC"`
30
32
  */
@@ -23,8 +23,10 @@ export declare function parseMicrosecondFromUnix(value: number | string, options
23
23
  */
24
24
  epochUnit?: UnixUnit;
25
25
  /**
26
- * The time zone the wall-clock fields are read in: an IANA name, a UTC offset, or `"local"` for
27
- * the system time zone. An unknown zone returns `""`.
26
+ * The time zone the wall-clock fields are read in: an IANA name, a UTC offset (a time zone
27
+ * identifier such as `+05:30`, `+0530` or `-08`, or a stored offset `±HH:MM[:SS]`, what
28
+ * `getTimeZoneOffset` returns), or `"local"` for the system time zone. An unknown zone returns
29
+ * `""`.
28
30
  *
29
31
  * @defaultValue `"UTC"`
30
32
  */
@@ -23,8 +23,10 @@ export declare function parseMillisecondFromUnix(value: number | string, options
23
23
  */
24
24
  epochUnit?: UnixUnit;
25
25
  /**
26
- * The time zone the wall-clock fields are read in: an IANA name, a UTC offset, or `"local"` for
27
- * the system time zone. An unknown zone returns `""`.
26
+ * The time zone the wall-clock fields are read in: an IANA name, a UTC offset (a time zone
27
+ * identifier such as `+05:30`, `+0530` or `-08`, or a stored offset `±HH:MM[:SS]`, what
28
+ * `getTimeZoneOffset` returns), or `"local"` for the system time zone. An unknown zone returns
29
+ * `""`.
28
30
  *
29
31
  * @defaultValue `"UTC"`
30
32
  */
@@ -23,8 +23,10 @@ export declare function parseMinuteFromUnix(value: number | string, options?: {
23
23
  */
24
24
  epochUnit?: UnixUnit;
25
25
  /**
26
- * The time zone the wall-clock fields are read in: an IANA name, a UTC offset, or `"local"` for
27
- * the system time zone. An unknown zone returns `""`.
26
+ * The time zone the wall-clock fields are read in: an IANA name, a UTC offset (a time zone
27
+ * identifier such as `+05:30`, `+0530` or `-08`, or a stored offset `±HH:MM[:SS]`, what
28
+ * `getTimeZoneOffset` returns), or `"local"` for the system time zone. An unknown zone returns
29
+ * `""`.
28
30
  *
29
31
  * @defaultValue `"UTC"`
30
32
  */
@@ -24,8 +24,10 @@ export declare function parseMonthFromUnix(value: number | string, options?: {
24
24
  */
25
25
  epochUnit?: UnixUnit;
26
26
  /**
27
- * The time zone the wall-clock fields are read in: an IANA name, a UTC offset, or `"local"` for
28
- * the system time zone. An unknown zone returns `""`.
27
+ * The time zone the wall-clock fields are read in: an IANA name, a UTC offset (a time zone
28
+ * identifier such as `+05:30`, `+0530` or `-08`, or a stored offset `±HH:MM[:SS]`, what
29
+ * `getTimeZoneOffset` returns), or `"local"` for the system time zone. An unknown zone returns
30
+ * `""`.
29
31
  *
30
32
  * @defaultValue `"UTC"`
31
33
  */
@@ -24,8 +24,10 @@ export declare function parseNanosecondFromUnix(value: number | string, options?
24
24
  */
25
25
  epochUnit?: UnixUnit;
26
26
  /**
27
- * The time zone the wall-clock fields are read in: an IANA name, a UTC offset, or `"local"` for
28
- * the system time zone. An unknown zone returns `""`.
27
+ * The time zone the wall-clock fields are read in: an IANA name, a UTC offset (a time zone
28
+ * identifier such as `+05:30`, `+0530` or `-08`, or a stored offset `±HH:MM[:SS]`, what
29
+ * `getTimeZoneOffset` returns), or `"local"` for the system time zone. An unknown zone returns
30
+ * `""`.
29
31
  *
30
32
  * @defaultValue `"UTC"`
31
33
  */
@@ -23,8 +23,10 @@ export declare function parseSecondFromUnix(value: number | string, options?: {
23
23
  */
24
24
  epochUnit?: UnixUnit;
25
25
  /**
26
- * The time zone the wall-clock fields are read in: an IANA name, a UTC offset, or `"local"` for
27
- * the system time zone. An unknown zone returns `""`.
26
+ * The time zone the wall-clock fields are read in: an IANA name, a UTC offset (a time zone
27
+ * identifier such as `+05:30`, `+0530` or `-08`, or a stored offset `±HH:MM[:SS]`, what
28
+ * `getTimeZoneOffset` returns), or `"local"` for the system time zone. An unknown zone returns
29
+ * `""`.
28
30
  *
29
31
  * @defaultValue `"UTC"`
30
32
  */
@@ -14,6 +14,7 @@ import type { UnixUnit } from "../validate/index.js";
14
14
  * @example parseTimeFromUnix(-86400, { epochUnit: "seconds", timeZone: "UTC" }) // "00:00:00"
15
15
  * @example parseTimeFromUnix("1700000000", { epochUnit: "second" }) // "22:13:20" (digit string, UTC by default)
16
16
  * @example parseTimeFromUnix(1.5) // "" (not an integer epoch)
17
+ * @example parseTimeFromUnix(45870000, { timeZone: "-00:44:30" }) // "12:00:00" (a stored offset with seconds)
17
18
  */
18
19
  export declare function parseTimeFromUnix(value: number | string, options?: {
19
20
  /**
@@ -24,8 +25,10 @@ export declare function parseTimeFromUnix(value: number | string, options?: {
24
25
  */
25
26
  epochUnit?: UnixUnit;
26
27
  /**
27
- * The time zone the wall-clock fields are read in: an IANA name, a UTC offset, or `"local"` for
28
- * the system time zone. An unknown zone returns `""`.
28
+ * The time zone the wall-clock fields are read in: an IANA name, a UTC offset (a time zone
29
+ * identifier such as `+05:30`, `+0530` or `-08`, or a stored offset `±HH:MM[:SS]`, what
30
+ * `getTimeZoneOffset` returns), or `"local"` for the system time zone. An unknown zone returns
31
+ * `""`.
29
32
  *
30
33
  * @defaultValue `"UTC"`
31
34
  */
@@ -1,4 +1,4 @@
1
- import { unixZonedDateTime } from "../../internal/unixZonedDateTime.js";
1
+ import { unixWallClock } from "../../internal/unixWallClock.js";
2
2
  import { isOptionsArgument } from "../../internal/isObject.js";
3
3
  /**
4
4
  * Extract the time portion from a unix epoch value.
@@ -15,14 +15,15 @@ import { isOptionsArgument } from "../../internal/isObject.js";
15
15
  * @example parseTimeFromUnix(-86400, { epochUnit: "seconds", timeZone: "UTC" }) // "00:00:00"
16
16
  * @example parseTimeFromUnix("1700000000", { epochUnit: "second" }) // "22:13:20" (digit string, UTC by default)
17
17
  * @example parseTimeFromUnix(1.5) // "" (not an integer epoch)
18
+ * @example parseTimeFromUnix(45870000, { timeZone: "-00:44:30" }) // "12:00:00" (a stored offset with seconds)
18
19
  */
19
20
  export function parseTimeFromUnix(value, options) {
20
21
  try {
21
22
  if (!isOptionsArgument(options)) {
22
23
  return "";
23
24
  }
24
- const zdt = unixZonedDateTime(value, options);
25
- return zdt === null ? "" : zdt.toPlainTime().toString();
25
+ const wallClock = unixWallClock(value, options);
26
+ return wallClock === null ? "" : wallClock.toPlainTime().toString();
26
27
  }
27
28
  catch {
28
29
  // Never throws (Core Rule 3): a hostile
@@ -8,7 +8,7 @@ import type { UnixUnit } from "../validate/index.js";
8
8
  *
9
9
  * | Member | Description |
10
10
  * | --- | --- |
11
- * | `year` | Full year, no padding (e.g. `2024`). |
11
+ * | `year` | Four digits (e.g. `2024`, `0005`); a sign and six digits outside 0000–9999 (e.g. `+010000`). |
12
12
  * | `month` | Zero-padded 2 (e.g. `03`). |
13
13
  * | `week` | Week-of-year, 1–53: ISO 8601 for `weekStartsOn: "monday"`, UTS #35 (minimal days 1) for `"sunday"`, so late-December days can be week 1. |
14
14
  * | `day` | Zero-padded 2. |
@@ -33,6 +33,8 @@ export type PlainNowUnit = "year" | "month" | "week" | "day" | "dayOfWeek" | "ho
33
33
  * - `microsecond` and `nanosecond` are the 0–999 Temporal fields, zero-padded to 3 digits.
34
34
  * - Converts to ZonedDateTime then extracts the unit.
35
35
  * - Returns "" for invalid input.
36
+ * - The `"year"` unit is written as Temporal writes a year: four digits (`"2024"`, `"0005"`), or a
37
+ * sign and six digits outside 0000–9999 (`"+010000"`, `"-000005"`).
36
38
  *
37
39
  * @param value unix epoch in milliseconds or seconds: a safe integer, or a string of optionally negative ASCII digits
38
40
  * @param unit unit to extract (e.g. "year", "month", "hour")
@@ -40,6 +42,7 @@ export type PlainNowUnit = "year" | "month" | "week" | "day" | "dayOfWeek" | "ho
40
42
  * @returns extracted unit value as string, or "" on invalid input
41
43
  *
42
44
  * @example parseUnitFromUnix(1700000000000, "year") // "2023"
45
+ * @example parseUnitFromUnix(-61996320000000, "year") // "0005" (1 June of year 5)
43
46
  * @example parseUnitFromUnix(1700000000, "hour", { epochUnit: "seconds", timeZone: "UTC" }) // "22"
44
47
  * @example parseUnitFromUnix(1704067200000, "week", { timeZone: "UTC" }) // "1"
45
48
  * @example parseUnitFromUnix(1704067200000, "week", { weekStartsOn: "sunday", timeZone: "UTC" }) // "1"
@@ -47,6 +50,7 @@ export type PlainNowUnit = "year" | "month" | "week" | "day" | "dayOfWeek" | "ho
47
50
  * @example parseUnitFromUnix("1709217045123", "hours") // "14" (digit string, plural unit, UTC by default)
48
51
  * @example parseUnitFromUnix(1709217045123, "nanosecond") // "000"
49
52
  * @example parseUnitFromUnix("", "year") // "" (a blank string is not epoch 0)
53
+ * @example parseUnitFromUnix(45870000, "minute", { timeZone: "-00:44:30" }) // "00" (a stored offset with seconds)
50
54
  */
51
55
  export declare function parseUnitFromUnix(value: number | string, unit: PlainNowUnit | Temporal.PluralUnit<Temporal.DateTimeUnit>, options?: {
52
56
  /**
@@ -57,8 +61,10 @@ export declare function parseUnitFromUnix(value: number | string, unit: PlainNow
57
61
  */
58
62
  epochUnit?: UnixUnit;
59
63
  /**
60
- * The time zone the wall-clock fields are read in: an IANA name, a UTC offset, or `"local"` for
61
- * the system time zone. An unknown zone returns `""`.
64
+ * The time zone the wall-clock fields are read in: an IANA name, a UTC offset (a time zone
65
+ * identifier such as `+05:30`, `+0530` or `-08`, or a stored offset `±HH:MM[:SS]`, what
66
+ * `getTimeZoneOffset` returns), or `"local"` for the system time zone. An unknown zone returns
67
+ * `""`.
62
68
  *
63
69
  * @defaultValue `"UTC"`
64
70
  */
@@ -1,8 +1,9 @@
1
1
  import { resolveDateTimeUnit } from "../../internal/resolveDateTimeUnit.js";
2
2
  import { resolveWeekStartsOn } from "../../internal/resolveWeekStartsOn.js";
3
- import { unixZonedDateTime } from "../../internal/unixZonedDateTime.js";
3
+ import { unixWallClock } from "../../internal/unixWallClock.js";
4
4
  import { getWeekNumber } from "../../plain/calculate/getWeekNumber.js";
5
5
  import { isOptionsArgument } from "../../internal/isObject.js";
6
+ import { isoYearString } from "../../internal/isoYearString.js";
6
7
  /**
7
8
  * Extract a unit from a unix epoch value.
8
9
  *
@@ -11,6 +12,8 @@ import { isOptionsArgument } from "../../internal/isObject.js";
11
12
  * - `microsecond` and `nanosecond` are the 0–999 Temporal fields, zero-padded to 3 digits.
12
13
  * - Converts to ZonedDateTime then extracts the unit.
13
14
  * - Returns "" for invalid input.
15
+ * - The `"year"` unit is written as Temporal writes a year: four digits (`"2024"`, `"0005"`), or a
16
+ * sign and six digits outside 0000–9999 (`"+010000"`, `"-000005"`).
14
17
  *
15
18
  * @param value unix epoch in milliseconds or seconds: a safe integer, or a string of optionally negative ASCII digits
16
19
  * @param unit unit to extract (e.g. "year", "month", "hour")
@@ -18,6 +21,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
18
21
  * @returns extracted unit value as string, or "" on invalid input
19
22
  *
20
23
  * @example parseUnitFromUnix(1700000000000, "year") // "2023"
24
+ * @example parseUnitFromUnix(-61996320000000, "year") // "0005" (1 June of year 5)
21
25
  * @example parseUnitFromUnix(1700000000, "hour", { epochUnit: "seconds", timeZone: "UTC" }) // "22"
22
26
  * @example parseUnitFromUnix(1704067200000, "week", { timeZone: "UTC" }) // "1"
23
27
  * @example parseUnitFromUnix(1704067200000, "week", { weekStartsOn: "sunday", timeZone: "UTC" }) // "1"
@@ -25,6 +29,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
25
29
  * @example parseUnitFromUnix("1709217045123", "hours") // "14" (digit string, plural unit, UTC by default)
26
30
  * @example parseUnitFromUnix(1709217045123, "nanosecond") // "000"
27
31
  * @example parseUnitFromUnix("", "year") // "" (a blank string is not epoch 0)
32
+ * @example parseUnitFromUnix(45870000, "minute", { timeZone: "-00:44:30" }) // "00" (a stored offset with seconds)
28
33
  */
29
34
  export function parseUnitFromUnix(value, unit, options) {
30
35
  try {
@@ -32,36 +37,38 @@ export function parseUnitFromUnix(value, unit, options) {
32
37
  if (!isOptionsArgument(options)) {
33
38
  return "";
34
39
  }
35
- const zdt = unixZonedDateTime(value, options);
40
+ const wallClock = unixWallClock(value, options);
36
41
  const weekStartsOn = resolveWeekStartsOn(options?.weekStartsOn);
37
- if (zdt === null || typeof unit !== "string" || weekStartsOn === null) {
42
+ if (wallClock === null ||
43
+ typeof unit !== "string" ||
44
+ weekStartsOn === null) {
38
45
  return "";
39
46
  }
40
47
  try {
41
48
  switch (resolveDateTimeUnit(unit)) {
42
49
  case "year":
43
- return zdt.year.toString();
50
+ return isoYearString(wallClock.year);
44
51
  case "month":
45
- return zdt.month.toString().padStart(2, "0");
52
+ return wallClock.month.toString().padStart(2, "0");
46
53
  case "week": {
47
- return (getWeekNumber(zdt.toPlainDate().toString(), weekStartsOn) ?? 0).toString();
54
+ return (getWeekNumber(wallClock.toPlainDate().toString(), weekStartsOn) ?? 0).toString();
48
55
  }
49
56
  case "day":
50
- return zdt.day.toString().padStart(2, "0");
57
+ return wallClock.day.toString().padStart(2, "0");
51
58
  case "dayOfWeek":
52
- return zdt.dayOfWeek.toString();
59
+ return wallClock.dayOfWeek.toString();
53
60
  case "hour":
54
- return zdt.hour.toString().padStart(2, "0");
61
+ return wallClock.hour.toString().padStart(2, "0");
55
62
  case "minute":
56
- return zdt.minute.toString().padStart(2, "0");
63
+ return wallClock.minute.toString().padStart(2, "0");
57
64
  case "second":
58
- return zdt.second.toString().padStart(2, "0");
65
+ return wallClock.second.toString().padStart(2, "0");
59
66
  case "millisecond":
60
- return zdt.millisecond.toString().padStart(3, "0");
67
+ return wallClock.millisecond.toString().padStart(3, "0");
61
68
  case "microsecond":
62
- return zdt.microsecond.toString().padStart(3, "0");
69
+ return wallClock.microsecond.toString().padStart(3, "0");
63
70
  case "nanosecond":
64
- return zdt.nanosecond.toString().padStart(3, "0");
71
+ return wallClock.nanosecond.toString().padStart(3, "0");
65
72
  default:
66
73
  return "";
67
74
  }
@@ -26,8 +26,9 @@ export declare function parseWeekFromUnix(value: number | string, options?: {
26
26
  */
27
27
  epochUnit?: UnixUnit;
28
28
  /**
29
- * The time zone the date is read in: an IANA name, a UTC offset, or `"local"` for the system
30
- * time zone. An unknown zone returns `null`.
29
+ * The time zone the date is read in: an IANA name, a UTC offset (a time zone identifier such as
30
+ * `+05:30`, `+0530` or `-08`, or a stored offset `±HH:MM[:SS]`, what `getTimeZoneOffset`
31
+ * returns), or `"local"` for the system time zone. An unknown zone returns `null`.
31
32
  *
32
33
  * @defaultValue `"UTC"`
33
34
  */
@@ -1,6 +1,6 @@
1
1
  import { getWeekNumber } from "../../plain/calculate/getWeekNumber.js";
2
2
  import { resolveWeekStartsOn } from "../../internal/resolveWeekStartsOn.js";
3
- import { unixZonedDateTime } from "../../internal/unixZonedDateTime.js";
3
+ import { unixWallClock } from "../../internal/unixWallClock.js";
4
4
  import { isOptionsArgument } from "../../internal/isObject.js";
5
5
  /**
6
6
  * Return the week number from a unix epoch value.
@@ -26,12 +26,12 @@ export function parseWeekFromUnix(value, options) {
26
26
  if (!isOptionsArgument(options)) {
27
27
  return null;
28
28
  }
29
- const zdt = unixZonedDateTime(value, options);
29
+ const wallClock = unixWallClock(value, options);
30
30
  const weekStartsOn = resolveWeekStartsOn(options?.weekStartsOn);
31
- if (zdt === null || weekStartsOn === null)
31
+ if (wallClock === null || weekStartsOn === null)
32
32
  return null;
33
33
  try {
34
- return getWeekNumber(zdt.toPlainDate().toString(), weekStartsOn);
34
+ return getWeekNumber(wallClock.toPlainDate().toString(), weekStartsOn);
35
35
  }
36
36
  catch {
37
37
  return null;
@@ -5,12 +5,15 @@ import type { UnixUnit } from "../validate/index.js";
5
5
  * - Delegates to {@link parseUnitFromUnix} with unit "year".
6
6
  * - `value` is a safe integer or a digit string.
7
7
  * - Returns "" for invalid input.
8
+ * - The year is written as Temporal writes it: four digits (`"2024"`, `"0005"`), or a sign and six
9
+ * digits outside 0000–9999 (`"+010000"`, `"-000005"`).
8
10
  *
9
11
  * @param value unix epoch in milliseconds or seconds: a safe integer, or a string of optionally negative ASCII digits
10
12
  * @param options optional: how `value` is read and the zone its wall clock is read in
11
- * @returns Year (YYYY) or "" on invalid input
13
+ * @returns the year as four digits, or a sign and six digits outside 0000–9999, or "" on invalid input
12
14
  *
13
15
  * @example parseYearFromUnix(1700000000000) // "2023"
16
+ * @example parseYearFromUnix(-61996320000000) // "0005" (1 June of year 5)
14
17
  * @example parseYearFromUnix(1704067200000, { epochUnit: "milliseconds", timeZone: "UTC" }) // "2024"
15
18
  * @example parseYearFromUnix(-86400, { epochUnit: "seconds" }) // "1969"
16
19
  * @example parseYearFromUnix("") // "" (a blank string is not epoch 0)
@@ -24,8 +27,10 @@ export declare function parseYearFromUnix(value: number | string, options?: {
24
27
  */
25
28
  epochUnit?: UnixUnit;
26
29
  /**
27
- * The time zone the wall-clock fields are read in: an IANA name, a UTC offset, or `"local"` for
28
- * the system time zone. An unknown zone returns `""`.
30
+ * The time zone the wall-clock fields are read in: an IANA name, a UTC offset (a time zone
31
+ * identifier such as `+05:30`, `+0530` or `-08`, or a stored offset `±HH:MM[:SS]`, what
32
+ * `getTimeZoneOffset` returns), or `"local"` for the system time zone. An unknown zone returns
33
+ * `""`.
29
34
  *
30
35
  * @defaultValue `"UTC"`
31
36
  */
@@ -6,12 +6,15 @@ import { isOptionsArgument } from "../../internal/isObject.js";
6
6
  * - Delegates to {@link parseUnitFromUnix} with unit "year".
7
7
  * - `value` is a safe integer or a digit string.
8
8
  * - Returns "" for invalid input.
9
+ * - The year is written as Temporal writes it: four digits (`"2024"`, `"0005"`), or a sign and six
10
+ * digits outside 0000–9999 (`"+010000"`, `"-000005"`).
9
11
  *
10
12
  * @param value unix epoch in milliseconds or seconds: a safe integer, or a string of optionally negative ASCII digits
11
13
  * @param options optional: how `value` is read and the zone its wall clock is read in
12
- * @returns Year (YYYY) or "" on invalid input
14
+ * @returns the year as four digits, or a sign and six digits outside 0000–9999, or "" on invalid input
13
15
  *
14
16
  * @example parseYearFromUnix(1700000000000) // "2023"
17
+ * @example parseYearFromUnix(-61996320000000) // "0005" (1 June of year 5)
15
18
  * @example parseYearFromUnix(1704067200000, { epochUnit: "milliseconds", timeZone: "UTC" }) // "2024"
16
19
  * @example parseYearFromUnix(-86400, { epochUnit: "seconds" }) // "1969"
17
20
  * @example parseYearFromUnix("") // "" (a blank string is not epoch 0)
@@ -15,7 +15,7 @@
15
15
  * import { isValidUnixUnit } from "@northguild/gmt/unix";
16
16
  * isValidUnixUnit("milliseconds"); // true
17
17
  */
18
- export type UnixUnit = "seconds" | "second" | "milliseconds" | "millisecond";
18
+ export type UnixUnit = "seconds" | "milliseconds" | "second" | "millisecond";
19
19
  /**
20
20
  * Return true when `unit` is a valid UnixUnit.
21
21
  *
@@ -1,6 +1,6 @@
1
1
  // fallow-ignore-file code-duplication -- sibling variant keeps its own guard, parse and try/catch, by design
2
2
  import { Temporal } from "@js-temporal/polyfill";
3
- import { isValidAmount, resolveOverflow } from "../../internal/index.js";
3
+ import { readDurationUnits, resolveOverflow } from "../../internal/index.js";
4
4
  import { isValidDateTimeDurationUnit } from "../../plain/validate/index.js";
5
5
  import { isValidUtc } from "../validate/isValidUtc.js";
6
6
  import { isOptionsArgument } from "../../internal/isObject.js";
@@ -26,17 +26,14 @@ export function addUtc(value, units, options) {
26
26
  return "";
27
27
  }
28
28
  const validUtc = isValidUtc(value);
29
- const validUnits = typeof units === "object" &&
30
- units !== null &&
31
- Object.keys(units).every(isValidDateTimeDurationUnit);
32
- const validAmounts = validUnits && Object.values(units).every(isValidAmount);
33
- if (!validUtc || !validUnits || !validAmounts) {
29
+ const amounts = readDurationUnits(units, isValidDateTimeDurationUnit);
30
+ if (!validUtc || amounts === null) {
34
31
  return "";
35
32
  }
36
33
  try {
37
34
  const instant = Temporal.Instant.from(value);
38
35
  const zoned = instant.toZonedDateTimeISO("UTC");
39
- const result = zoned.add(units, {
36
+ const result = zoned.add(amounts, {
40
37
  overflow: resolveOverflow(options?.overflow),
41
38
  });
42
39
  return result.toInstant().toString();
@@ -9,8 +9,20 @@ import type { Overflow } from "../../types/index.js";
9
9
  * `addUtc()` calls field-by-field — see `setDate`'s doc for why order-independent field
10
10
  * resolution matters.
11
11
  * - `fields` may set any of `year`, `month`, `monthCode`, `day`, `hour`, `minute`, `second`,
12
- * `millisecond`, `microsecond`, `nanosecond`, `era`, and/or `eraYear`; omitted fields keep
13
- * their current value. An empty object is a no-op.
12
+ * `millisecond`, `microsecond` and/or `nanosecond`; omitted fields keep their current value. An
13
+ * object with no field set, such as `{}` or `{ year: undefined }`, is a no-op.
14
+ * - Values are not converted: `monthCode` must be a string and every other field an integer number.
15
+ * `null`, a numeric string, a boolean or a fraction returns "", where Temporal would convert or
16
+ * truncate it. A bigint, `NaN` or an infinity returns "" too. A number too large for its
17
+ * field follows `overflow`. A month or day below 1, or a date outside Temporal's range, returns
18
+ * "".
19
+ * - An own key that is not one of these fields, such as a misspelt `yaer`, returns "". So does an
20
+ * era, an `offset`, or a `calendar` or `timeZone` property, whether own, inherited or a getter. A
21
+ * field is read with a property get, as Temporal reads it, so an inherited or getter field is
22
+ * set.
23
+ * - A Temporal date or time object returns "", as Temporal's `with` refuses one. One whose
24
+ * prototype has been replaced with `Object.prototype`, `null` or `Function.prototype` sets
25
+ * nothing instead.
14
26
  * - There are no `disambiguation` or `offset` options (removed in 1.16.0): a UTC instant's wall
15
27
  * clock is never ambiguous and its offset is always +00:00, so neither had anything to act on.
16
28
  * - Returns "" for invalid input.
@@ -24,9 +36,10 @@ import type { Overflow } from "../../types/index.js";
24
36
  * @example setUtc("2024-01-31T12:00:00Z", { month: 2 }) // "2024-02-29T12:00:00Z" (constrain clamps to the last valid day)
25
37
  * @example setUtc("2024-01-31T12:00:00Z", { month: 2 }, { overflow: "reject" }) // ""
26
38
  * @example setUtc("2024-03-10T12:00:00Z", {}) // "2024-03-10T12:00:00Z" (empty fields object is a no-op)
39
+ * @example setUtc("2024-03-10T12:00:00Z", { hour: "9" }) // "" (not converted)
27
40
  * @example setUtc("invalid", { hour: 9 }) // ""
28
41
  */
29
- export declare function setUtc(value: string, fields: Omit<Temporal.ZonedDateTimeLike, "calendar" | "timeZone" | "offset">, options?: {
42
+ export declare function setUtc(value: string, fields: Omit<Temporal.ZonedDateTimeLike, "calendar" | "timeZone" | "offset" | "era" | "eraYear">, options?: {
30
43
  /**
31
44
  * What to do when the result is not a real date. `"constrain"` clamps it to the last valid day,
32
45
  * so `month: 2` on Jan 31 is Feb 29/28 (TC39 Temporal); `"reject"` returns `""`.
@@ -1,5 +1,5 @@
1
1
  import { Temporal } from "@js-temporal/polyfill";
2
- import { resolveOverflow } from "../../internal/index.js";
2
+ import { DATE_TIME_FIELDS, readSetFields, resolveOverflow, } from "../../internal/index.js";
3
3
  import { isValidUtc } from "../validate/isValidUtc.js";
4
4
  import { isOptionsArgument } from "../../internal/isObject.js";
5
5
  /**
@@ -11,8 +11,20 @@ import { isOptionsArgument } from "../../internal/isObject.js";
11
11
  * `addUtc()` calls field-by-field — see `setDate`'s doc for why order-independent field
12
12
  * resolution matters.
13
13
  * - `fields` may set any of `year`, `month`, `monthCode`, `day`, `hour`, `minute`, `second`,
14
- * `millisecond`, `microsecond`, `nanosecond`, `era`, and/or `eraYear`; omitted fields keep
15
- * their current value. An empty object is a no-op.
14
+ * `millisecond`, `microsecond` and/or `nanosecond`; omitted fields keep their current value. An
15
+ * object with no field set, such as `{}` or `{ year: undefined }`, is a no-op.
16
+ * - Values are not converted: `monthCode` must be a string and every other field an integer number.
17
+ * `null`, a numeric string, a boolean or a fraction returns "", where Temporal would convert or
18
+ * truncate it. A bigint, `NaN` or an infinity returns "" too. A number too large for its
19
+ * field follows `overflow`. A month or day below 1, or a date outside Temporal's range, returns
20
+ * "".
21
+ * - An own key that is not one of these fields, such as a misspelt `yaer`, returns "". So does an
22
+ * era, an `offset`, or a `calendar` or `timeZone` property, whether own, inherited or a getter. A
23
+ * field is read with a property get, as Temporal reads it, so an inherited or getter field is
24
+ * set.
25
+ * - A Temporal date or time object returns "", as Temporal's `with` refuses one. One whose
26
+ * prototype has been replaced with `Object.prototype`, `null` or `Function.prototype` sets
27
+ * nothing instead.
16
28
  * - There are no `disambiguation` or `offset` options (removed in 1.16.0): a UTC instant's wall
17
29
  * clock is never ambiguous and its offset is always +00:00, so neither had anything to act on.
18
30
  * - Returns "" for invalid input.
@@ -26,6 +38,7 @@ import { isOptionsArgument } from "../../internal/isObject.js";
26
38
  * @example setUtc("2024-01-31T12:00:00Z", { month: 2 }) // "2024-02-29T12:00:00Z" (constrain clamps to the last valid day)
27
39
  * @example setUtc("2024-01-31T12:00:00Z", { month: 2 }, { overflow: "reject" }) // ""
28
40
  * @example setUtc("2024-03-10T12:00:00Z", {}) // "2024-03-10T12:00:00Z" (empty fields object is a no-op)
41
+ * @example setUtc("2024-03-10T12:00:00Z", { hour: "9" }) // "" (not converted)
29
42
  * @example setUtc("invalid", { hour: 9 }) // ""
30
43
  */
31
44
  export function setUtc(value, fields, options) {
@@ -39,11 +52,12 @@ export function setUtc(value, fields, options) {
39
52
  try {
40
53
  const instant = Temporal.Instant.from(value);
41
54
  const zoned = instant.toZonedDateTimeISO("UTC");
42
- // Temporal.ZonedDateTime.prototype.with() throws on an empty fields object ("no supported
43
- // properties found") rather than treating it as a no-op, so short-circuit here.
44
- const result = Object.keys(fields).length === 0
45
- ? zoned
46
- : zoned.with(fields, { overflow });
55
+ const set = readSetFields(fields, DATE_TIME_FIELDS);
56
+ if (set === null)
57
+ return "";
58
+ // Only the values readSetFields checked reach Temporal. An empty result sets nothing: a
59
+ // no-op here, where Temporal's with() would throw.
60
+ const result = Object.keys(set).length === 0 ? zoned : zoned.with(set, { overflow });
47
61
  return result.toInstant().toString();
48
62
  }
49
63
  catch {
@@ -1,6 +1,6 @@
1
1
  // fallow-ignore-file code-duplication -- sibling variant keeps its own guard, parse and try/catch, by design
2
2
  import { Temporal } from "@js-temporal/polyfill";
3
- import { isValidAmount, resolveOverflow } from "../../internal/index.js";
3
+ import { readDurationUnits, resolveOverflow } from "../../internal/index.js";
4
4
  import { isValidDateTimeDurationUnit } from "../../plain/validate/index.js";
5
5
  import { isValidUtc } from "../validate/index.js";
6
6
  import { isOptionsArgument } from "../../internal/isObject.js";
@@ -26,17 +26,14 @@ export function subtractUtc(value, units, options) {
26
26
  return "";
27
27
  }
28
28
  const validUtc = isValidUtc(value);
29
- const validUnits = typeof units === "object" &&
30
- units !== null &&
31
- Object.keys(units).every(isValidDateTimeDurationUnit);
32
- const validAmounts = validUnits && Object.values(units).every(isValidAmount);
33
- if (!validUtc || !validUnits || !validAmounts) {
29
+ const amounts = readDurationUnits(units, isValidDateTimeDurationUnit);
30
+ if (!validUtc || amounts === null) {
34
31
  return "";
35
32
  }
36
33
  try {
37
34
  const instant = Temporal.Instant.from(value);
38
35
  const zoned = instant.toZonedDateTimeISO("UTC");
39
- const result = zoned.subtract(units, {
36
+ const result = zoned.subtract(amounts, {
40
37
  overflow: resolveOverflow(options?.overflow),
41
38
  });
42
39
  return result.toInstant().toString();
@@ -2,6 +2,8 @@
2
2
  * Convert a UTC datetime string to a plain date string in the format "YYYY-MM-DD".
3
3
  *
4
4
  * - Converts to the `timeZone` option's zone before extracting the date.
5
+ * - A year outside 0000–9999 is written with a sign and six digits (`+010000`, `-000005`), as
6
+ * Temporal writes it, so the result is always a string `isValidDate` accepts.
5
7
  * - Returns "" for invalid input.
6
8
  *
7
9
  * @param value UTC datetime string (e.g., "2024-02-29T00:00:00Z")
@@ -11,11 +13,15 @@
11
13
  * @example convertUtcToPlainDate("2024-02-29T00:00:00Z") // "2024-02-29"
12
14
  * @example convertUtcToPlainDate("2024-02-29T00:00:00Z", { timeZone: "America/New_York" }) // "2024-02-28"
13
15
  * @example convertUtcToPlainDate("invalid") // ""
16
+ * @example convertUtcToPlainDate("+010000-01-01T00:00:00Z") // "+010000-01-01" (a year past 9999 has a sign and six digits)
17
+ * @example convertUtcToPlainDate("1970-01-01T00:30:00Z", { timeZone: "-00:44:30" }) // "1969-12-31" (a stored offset with seconds)
14
18
  */
15
19
  export declare function convertUtcToPlainDate(value: string, options?: {
16
20
  /**
17
- * The time zone the wall-clock fields are read in: an IANA name, a UTC offset, or `"local"` for
18
- * the system time zone. An unknown zone returns `""`.
21
+ * The time zone the wall-clock fields are read in: an IANA name, a UTC offset (a time zone
22
+ * identifier such as `+05:30`, `+0530` or `-08`, or a stored offset `±HH:MM[:SS]`, what
23
+ * `getTimeZoneOffset` returns), or `"local"` for the system time zone. An unknown zone returns
24
+ * `""`.
19
25
  *
20
26
  * @defaultValue `"UTC"`
21
27
  */