@venizia/ignis-helpers 0.2.0-39 → 0.2.0-40

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 (280) hide show
  1. package/dist/cjs/core.d.ts +1 -0
  2. package/dist/cjs/core.d.ts.map +1 -1
  3. package/dist/cjs/core.js +1 -0
  4. package/dist/cjs/core.js.map +1 -1
  5. package/dist/cjs/modules/base.d.ts.map +1 -1
  6. package/dist/cjs/modules/base.js +8 -5
  7. package/dist/cjs/modules/base.js.map +1 -1
  8. package/dist/cjs/modules/index.d.ts +1 -0
  9. package/dist/cjs/modules/index.d.ts.map +1 -1
  10. package/dist/cjs/modules/index.js +1 -0
  11. package/dist/cjs/modules/index.js.map +1 -1
  12. package/dist/cjs/modules/logger/base/base.d.ts.map +1 -1
  13. package/dist/cjs/modules/logger/base/base.js +3 -0
  14. package/dist/cjs/modules/logger/base/base.js.map +1 -1
  15. package/dist/cjs/modules/logger/hf/logger.d.ts.map +1 -1
  16. package/dist/cjs/modules/logger/hf/logger.js +3 -0
  17. package/dist/cjs/modules/logger/hf/logger.js.map +1 -1
  18. package/dist/cjs/modules/logger/slot.d.ts +3 -7
  19. package/dist/cjs/modules/logger/slot.d.ts.map +1 -1
  20. package/dist/cjs/modules/logger/slot.js +82 -26
  21. package/dist/cjs/modules/logger/slot.js.map +1 -1
  22. package/dist/cjs/modules/network/tcp-socket/base-tcp-server.helper.d.ts +2 -3
  23. package/dist/cjs/modules/network/tcp-socket/base-tcp-server.helper.d.ts.map +1 -1
  24. package/dist/cjs/modules/network/tcp-socket/base-tcp-server.helper.js +3 -4
  25. package/dist/cjs/modules/network/tcp-socket/base-tcp-server.helper.js.map +1 -1
  26. package/dist/cjs/modules/queue/bullmq/helper.d.ts +6 -1
  27. package/dist/cjs/modules/queue/bullmq/helper.d.ts.map +1 -1
  28. package/dist/cjs/modules/queue/bullmq/helper.js +11 -4
  29. package/dist/cjs/modules/queue/bullmq/helper.js.map +1 -1
  30. package/dist/cjs/modules/queue/kafka/consumer.js +2 -2
  31. package/dist/cjs/modules/queue/kafka/consumer.js.map +1 -1
  32. package/dist/cjs/modules/redis/cluster/cluster.helper.d.ts.map +1 -1
  33. package/dist/cjs/modules/redis/cluster/cluster.helper.js +1 -1
  34. package/dist/cjs/modules/redis/cluster/cluster.helper.js.map +1 -1
  35. package/dist/cjs/modules/redis/common/types.d.ts +11 -3
  36. package/dist/cjs/modules/redis/common/types.d.ts.map +1 -1
  37. package/dist/cjs/modules/redis/sentinel/sentinel.helper.d.ts.map +1 -1
  38. package/dist/cjs/modules/redis/sentinel/sentinel.helper.js +1 -1
  39. package/dist/cjs/modules/redis/sentinel/sentinel.helper.js.map +1 -1
  40. package/dist/cjs/modules/redis/single/single.helper.d.ts.map +1 -1
  41. package/dist/cjs/modules/redis/single/single.helper.js +1 -1
  42. package/dist/cjs/modules/redis/single/single.helper.js.map +1 -1
  43. package/dist/cjs/modules/socket/socket-io/client/helper.d.ts +2 -1
  44. package/dist/cjs/modules/socket/socket-io/client/helper.d.ts.map +1 -1
  45. package/dist/cjs/modules/socket/socket-io/client/helper.js +7 -2
  46. package/dist/cjs/modules/socket/socket-io/client/helper.js.map +1 -1
  47. package/dist/cjs/modules/socket/socket-io/common/types/client.d.ts +2 -0
  48. package/dist/cjs/modules/socket/socket-io/common/types/client.d.ts.map +1 -1
  49. package/dist/cjs/modules/temporal/adapters/dayjs.d.ts +21 -0
  50. package/dist/cjs/modules/temporal/adapters/dayjs.d.ts.map +1 -0
  51. package/dist/cjs/modules/temporal/adapters/dayjs.js +48 -0
  52. package/dist/cjs/modules/temporal/adapters/dayjs.js.map +1 -0
  53. package/dist/cjs/modules/temporal/adapters/guards.d.ts +4 -0
  54. package/dist/cjs/modules/temporal/adapters/guards.d.ts.map +1 -0
  55. package/dist/cjs/modules/temporal/adapters/guards.js +14 -0
  56. package/dist/cjs/modules/temporal/adapters/guards.js.map +1 -0
  57. package/dist/cjs/modules/temporal/adapters/index.d.ts +4 -0
  58. package/dist/cjs/modules/temporal/adapters/index.d.ts.map +1 -0
  59. package/dist/cjs/modules/temporal/adapters/index.js +20 -0
  60. package/dist/cjs/modules/temporal/adapters/index.js.map +1 -0
  61. package/dist/cjs/modules/temporal/adapters/luxon.d.ts +13 -0
  62. package/dist/cjs/modules/temporal/adapters/luxon.d.ts.map +1 -0
  63. package/dist/cjs/modules/temporal/adapters/luxon.js +26 -0
  64. package/dist/cjs/modules/temporal/adapters/luxon.js.map +1 -0
  65. package/dist/cjs/modules/temporal/adapters/native.d.ts +16 -0
  66. package/dist/cjs/modules/temporal/adapters/native.d.ts.map +1 -0
  67. package/dist/cjs/modules/temporal/adapters/native.js +38 -0
  68. package/dist/cjs/modules/temporal/adapters/native.js.map +1 -0
  69. package/dist/cjs/modules/temporal/calendar.d.ts +52 -0
  70. package/dist/cjs/modules/temporal/calendar.d.ts.map +1 -0
  71. package/dist/cjs/modules/temporal/calendar.js +151 -0
  72. package/dist/cjs/modules/temporal/calendar.js.map +1 -0
  73. package/dist/cjs/modules/temporal/common/constants.d.ts +20 -0
  74. package/dist/cjs/modules/temporal/common/constants.d.ts.map +1 -0
  75. package/dist/cjs/modules/temporal/common/constants.js +33 -0
  76. package/dist/cjs/modules/temporal/common/constants.js.map +1 -0
  77. package/dist/cjs/modules/temporal/common/index.d.ts +3 -0
  78. package/dist/cjs/modules/temporal/common/index.d.ts.map +1 -0
  79. package/dist/cjs/modules/temporal/common/index.js +19 -0
  80. package/dist/cjs/modules/temporal/common/index.js.map +1 -0
  81. package/dist/cjs/modules/temporal/common/types.d.ts +69 -0
  82. package/dist/cjs/modules/temporal/common/types.d.ts.map +1 -0
  83. package/dist/cjs/modules/temporal/common/types.js +3 -0
  84. package/dist/cjs/modules/temporal/common/types.js.map +1 -0
  85. package/dist/cjs/modules/temporal/helper.d.ts +120 -0
  86. package/dist/cjs/modules/temporal/helper.d.ts.map +1 -0
  87. package/dist/cjs/modules/temporal/helper.js +326 -0
  88. package/dist/cjs/modules/temporal/helper.js.map +1 -0
  89. package/dist/cjs/modules/temporal/index.d.ts +4 -0
  90. package/dist/cjs/modules/temporal/index.d.ts.map +1 -0
  91. package/dist/cjs/modules/temporal/index.js +20 -0
  92. package/dist/cjs/modules/temporal/index.js.map +1 -0
  93. package/dist/cjs/modules/temporal/pattern.d.ts +24 -0
  94. package/dist/cjs/modules/temporal/pattern.d.ts.map +1 -0
  95. package/dist/cjs/modules/temporal/pattern.js +133 -0
  96. package/dist/cjs/modules/temporal/pattern.js.map +1 -0
  97. package/dist/cjs/modules/temporal/tokens.d.ts +65 -0
  98. package/dist/cjs/modules/temporal/tokens.d.ts.map +1 -0
  99. package/dist/cjs/modules/temporal/tokens.js +113 -0
  100. package/dist/cjs/modules/temporal/tokens.js.map +1 -0
  101. package/dist/cjs/modules/uid/uuid/common/constants.d.ts +5 -0
  102. package/dist/cjs/modules/uid/uuid/common/constants.d.ts.map +1 -1
  103. package/dist/cjs/modules/uid/uuid/common/constants.js +6 -1
  104. package/dist/cjs/modules/uid/uuid/common/constants.js.map +1 -1
  105. package/dist/cjs/modules/uid/uuid/helper.d.ts +7 -3
  106. package/dist/cjs/modules/uid/uuid/helper.d.ts.map +1 -1
  107. package/dist/cjs/modules/uid/uuid/helper.js +3 -10
  108. package/dist/cjs/modules/uid/uuid/helper.js.map +1 -1
  109. package/dist/cjs/modules/uid/uuid/v4.d.ts +5 -1
  110. package/dist/cjs/modules/uid/uuid/v4.d.ts.map +1 -1
  111. package/dist/cjs/modules/uid/uuid/v4.js +9 -4
  112. package/dist/cjs/modules/uid/uuid/v4.js.map +1 -1
  113. package/dist/cjs/modules/uid/uuid/v5.d.ts.map +1 -1
  114. package/dist/cjs/modules/uid/uuid/v5.js +18 -12
  115. package/dist/cjs/modules/uid/uuid/v5.js.map +1 -1
  116. package/dist/cjs/modules/uid/uuid/v7.d.ts +8 -2
  117. package/dist/cjs/modules/uid/uuid/v7.d.ts.map +1 -1
  118. package/dist/cjs/modules/uid/uuid/v7.js +14 -10
  119. package/dist/cjs/modules/uid/uuid/v7.js.map +1 -1
  120. package/dist/cjs/temporal.d.ts +2 -0
  121. package/dist/cjs/temporal.d.ts.map +1 -0
  122. package/dist/cjs/temporal.js +19 -0
  123. package/dist/cjs/temporal.js.map +1 -0
  124. package/dist/cjs/utilities/hr-time.utility.d.ts +6 -0
  125. package/dist/cjs/utilities/hr-time.utility.d.ts.map +1 -0
  126. package/dist/cjs/utilities/hr-time.utility.js +14 -0
  127. package/dist/cjs/utilities/hr-time.utility.js.map +1 -0
  128. package/dist/cjs/utilities/index.d.ts +2 -1
  129. package/dist/cjs/utilities/index.d.ts.map +1 -1
  130. package/dist/cjs/utilities/index.js +2 -1
  131. package/dist/cjs/utilities/index.js.map +1 -1
  132. package/dist/cjs/utilities/sleep.utility.d.ts +0 -1
  133. package/dist/cjs/utilities/sleep.utility.d.ts.map +1 -1
  134. package/dist/cjs/utilities/sleep.utility.js +0 -1
  135. package/dist/cjs/utilities/sleep.utility.js.map +1 -1
  136. package/dist/esm/core.d.ts +1 -0
  137. package/dist/esm/core.d.ts.map +1 -1
  138. package/dist/esm/core.js +1 -0
  139. package/dist/esm/core.js.map +1 -1
  140. package/dist/esm/modules/base.d.ts.map +1 -1
  141. package/dist/esm/modules/base.js +9 -6
  142. package/dist/esm/modules/base.js.map +1 -1
  143. package/dist/esm/modules/index.d.ts +1 -0
  144. package/dist/esm/modules/index.d.ts.map +1 -1
  145. package/dist/esm/modules/index.js +1 -0
  146. package/dist/esm/modules/index.js.map +1 -1
  147. package/dist/esm/modules/logger/base/base.d.ts.map +1 -1
  148. package/dist/esm/modules/logger/base/base.js +3 -0
  149. package/dist/esm/modules/logger/base/base.js.map +1 -1
  150. package/dist/esm/modules/logger/hf/logger.d.ts.map +1 -1
  151. package/dist/esm/modules/logger/hf/logger.js +4 -1
  152. package/dist/esm/modules/logger/hf/logger.js.map +1 -1
  153. package/dist/esm/modules/logger/slot.d.ts +3 -7
  154. package/dist/esm/modules/logger/slot.d.ts.map +1 -1
  155. package/dist/esm/modules/logger/slot.js +80 -23
  156. package/dist/esm/modules/logger/slot.js.map +1 -1
  157. package/dist/esm/modules/network/tcp-socket/base-tcp-server.helper.d.ts +2 -3
  158. package/dist/esm/modules/network/tcp-socket/base-tcp-server.helper.d.ts.map +1 -1
  159. package/dist/esm/modules/network/tcp-socket/base-tcp-server.helper.js +3 -4
  160. package/dist/esm/modules/network/tcp-socket/base-tcp-server.helper.js.map +1 -1
  161. package/dist/esm/modules/queue/bullmq/helper.d.ts +6 -1
  162. package/dist/esm/modules/queue/bullmq/helper.d.ts.map +1 -1
  163. package/dist/esm/modules/queue/bullmq/helper.js +11 -4
  164. package/dist/esm/modules/queue/bullmq/helper.js.map +1 -1
  165. package/dist/esm/modules/queue/kafka/consumer.js +1 -1
  166. package/dist/esm/modules/queue/kafka/consumer.js.map +1 -1
  167. package/dist/esm/modules/redis/cluster/cluster.helper.d.ts.map +1 -1
  168. package/dist/esm/modules/redis/cluster/cluster.helper.js +1 -1
  169. package/dist/esm/modules/redis/cluster/cluster.helper.js.map +1 -1
  170. package/dist/esm/modules/redis/common/types.d.ts +11 -3
  171. package/dist/esm/modules/redis/common/types.d.ts.map +1 -1
  172. package/dist/esm/modules/redis/sentinel/sentinel.helper.d.ts.map +1 -1
  173. package/dist/esm/modules/redis/sentinel/sentinel.helper.js +1 -1
  174. package/dist/esm/modules/redis/sentinel/sentinel.helper.js.map +1 -1
  175. package/dist/esm/modules/redis/single/single.helper.d.ts.map +1 -1
  176. package/dist/esm/modules/redis/single/single.helper.js +1 -1
  177. package/dist/esm/modules/redis/single/single.helper.js.map +1 -1
  178. package/dist/esm/modules/socket/socket-io/client/helper.d.ts +2 -1
  179. package/dist/esm/modules/socket/socket-io/client/helper.d.ts.map +1 -1
  180. package/dist/esm/modules/socket/socket-io/client/helper.js +6 -1
  181. package/dist/esm/modules/socket/socket-io/client/helper.js.map +1 -1
  182. package/dist/esm/modules/socket/socket-io/common/types/client.d.ts +2 -0
  183. package/dist/esm/modules/socket/socket-io/common/types/client.d.ts.map +1 -1
  184. package/dist/esm/modules/temporal/adapters/dayjs.d.ts +21 -0
  185. package/dist/esm/modules/temporal/adapters/dayjs.d.ts.map +1 -0
  186. package/dist/esm/modules/temporal/adapters/dayjs.js +44 -0
  187. package/dist/esm/modules/temporal/adapters/dayjs.js.map +1 -0
  188. package/dist/esm/modules/temporal/adapters/guards.d.ts +4 -0
  189. package/dist/esm/modules/temporal/adapters/guards.d.ts.map +1 -0
  190. package/dist/esm/modules/temporal/adapters/guards.js +10 -0
  191. package/dist/esm/modules/temporal/adapters/guards.js.map +1 -0
  192. package/dist/esm/modules/temporal/adapters/index.d.ts +4 -0
  193. package/dist/esm/modules/temporal/adapters/index.d.ts.map +1 -0
  194. package/dist/esm/modules/temporal/adapters/index.js +4 -0
  195. package/dist/esm/modules/temporal/adapters/index.js.map +1 -0
  196. package/dist/esm/modules/temporal/adapters/luxon.d.ts +13 -0
  197. package/dist/esm/modules/temporal/adapters/luxon.d.ts.map +1 -0
  198. package/dist/esm/modules/temporal/adapters/luxon.js +22 -0
  199. package/dist/esm/modules/temporal/adapters/luxon.js.map +1 -0
  200. package/dist/esm/modules/temporal/adapters/native.d.ts +16 -0
  201. package/dist/esm/modules/temporal/adapters/native.d.ts.map +1 -0
  202. package/dist/esm/modules/temporal/adapters/native.js +34 -0
  203. package/dist/esm/modules/temporal/adapters/native.js.map +1 -0
  204. package/dist/esm/modules/temporal/calendar.d.ts +52 -0
  205. package/dist/esm/modules/temporal/calendar.d.ts.map +1 -0
  206. package/dist/esm/modules/temporal/calendar.js +138 -0
  207. package/dist/esm/modules/temporal/calendar.js.map +1 -0
  208. package/dist/esm/modules/temporal/common/constants.d.ts +20 -0
  209. package/dist/esm/modules/temporal/common/constants.d.ts.map +1 -0
  210. package/dist/esm/modules/temporal/common/constants.js +29 -0
  211. package/dist/esm/modules/temporal/common/constants.js.map +1 -0
  212. package/dist/esm/modules/temporal/common/index.d.ts +3 -0
  213. package/dist/esm/modules/temporal/common/index.d.ts.map +1 -0
  214. package/dist/esm/modules/temporal/common/index.js +3 -0
  215. package/dist/esm/modules/temporal/common/index.js.map +1 -0
  216. package/dist/esm/modules/temporal/common/types.d.ts +69 -0
  217. package/dist/esm/modules/temporal/common/types.d.ts.map +1 -0
  218. package/dist/esm/modules/temporal/common/types.js +2 -0
  219. package/dist/esm/modules/temporal/common/types.js.map +1 -0
  220. package/dist/esm/modules/temporal/helper.d.ts +120 -0
  221. package/dist/esm/modules/temporal/helper.d.ts.map +1 -0
  222. package/dist/esm/modules/temporal/helper.js +322 -0
  223. package/dist/esm/modules/temporal/helper.js.map +1 -0
  224. package/dist/esm/modules/temporal/index.d.ts +4 -0
  225. package/dist/esm/modules/temporal/index.d.ts.map +1 -0
  226. package/dist/esm/modules/temporal/index.js +4 -0
  227. package/dist/esm/modules/temporal/index.js.map +1 -0
  228. package/dist/esm/modules/temporal/pattern.d.ts +24 -0
  229. package/dist/esm/modules/temporal/pattern.d.ts.map +1 -0
  230. package/dist/esm/modules/temporal/pattern.js +129 -0
  231. package/dist/esm/modules/temporal/pattern.js.map +1 -0
  232. package/dist/esm/modules/temporal/tokens.d.ts +65 -0
  233. package/dist/esm/modules/temporal/tokens.d.ts.map +1 -0
  234. package/dist/esm/modules/temporal/tokens.js +102 -0
  235. package/dist/esm/modules/temporal/tokens.js.map +1 -0
  236. package/dist/esm/modules/uid/uuid/common/constants.d.ts +5 -0
  237. package/dist/esm/modules/uid/uuid/common/constants.d.ts.map +1 -1
  238. package/dist/esm/modules/uid/uuid/common/constants.js +5 -0
  239. package/dist/esm/modules/uid/uuid/common/constants.js.map +1 -1
  240. package/dist/esm/modules/uid/uuid/helper.d.ts +7 -3
  241. package/dist/esm/modules/uid/uuid/helper.d.ts.map +1 -1
  242. package/dist/esm/modules/uid/uuid/helper.js +3 -10
  243. package/dist/esm/modules/uid/uuid/helper.js.map +1 -1
  244. package/dist/esm/modules/uid/uuid/v4.d.ts +5 -1
  245. package/dist/esm/modules/uid/uuid/v4.d.ts.map +1 -1
  246. package/dist/esm/modules/uid/uuid/v4.js +9 -4
  247. package/dist/esm/modules/uid/uuid/v4.js.map +1 -1
  248. package/dist/esm/modules/uid/uuid/v5.d.ts.map +1 -1
  249. package/dist/esm/modules/uid/uuid/v5.js +19 -13
  250. package/dist/esm/modules/uid/uuid/v5.js.map +1 -1
  251. package/dist/esm/modules/uid/uuid/v7.d.ts +8 -2
  252. package/dist/esm/modules/uid/uuid/v7.d.ts.map +1 -1
  253. package/dist/esm/modules/uid/uuid/v7.js +13 -10
  254. package/dist/esm/modules/uid/uuid/v7.js.map +1 -1
  255. package/dist/esm/package.json +6 -0
  256. package/dist/esm/temporal.d.ts +2 -0
  257. package/dist/esm/temporal.d.ts.map +1 -0
  258. package/dist/esm/temporal.js +3 -0
  259. package/dist/esm/temporal.js.map +1 -0
  260. package/dist/esm/utilities/hr-time.utility.d.ts +6 -0
  261. package/dist/esm/utilities/hr-time.utility.d.ts.map +1 -0
  262. package/dist/esm/utilities/hr-time.utility.js +10 -0
  263. package/dist/esm/utilities/hr-time.utility.js.map +1 -0
  264. package/dist/esm/utilities/index.d.ts +2 -1
  265. package/dist/esm/utilities/index.d.ts.map +1 -1
  266. package/dist/esm/utilities/index.js +2 -1
  267. package/dist/esm/utilities/index.js.map +1 -1
  268. package/dist/esm/utilities/sleep.utility.d.ts +0 -1
  269. package/dist/esm/utilities/sleep.utility.d.ts.map +1 -1
  270. package/dist/esm/utilities/sleep.utility.js +0 -1
  271. package/dist/esm/utilities/sleep.utility.js.map +1 -1
  272. package/package.json +13 -5
  273. package/dist/cjs/utilities/date.utility.d.ts +0 -19
  274. package/dist/cjs/utilities/date.utility.d.ts.map +0 -1
  275. package/dist/cjs/utilities/date.utility.js +0 -57
  276. package/dist/cjs/utilities/date.utility.js.map +0 -1
  277. package/dist/esm/utilities/date.utility.d.ts +0 -19
  278. package/dist/esm/utilities/date.utility.d.ts.map +0 -1
  279. package/dist/esm/utilities/date.utility.js +0 -46
  280. package/dist/esm/utilities/date.utility.js.map +0 -1
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NativeTemporalAdapter = void 0;
4
+ const http_1 = require("../../../common/constants/http");
5
+ const error_1 = require("../../error");
6
+ const guards_1 = require("./guards");
7
+ const NANOSECONDS_PER_MILLISECOND = 1_000_000;
8
+ /**
9
+ * Time zones through the TC39 `Temporal` API: the runtime's global (Bun has it, as do current
10
+ * browsers), or a polyfill's namespace passed as `temporal`.
11
+ */
12
+ class NativeTemporalAdapter {
13
+ constructor(opts) {
14
+ const temporal = opts?.temporal ?? Reflect.get(globalThis, 'Temporal');
15
+ if (!(0, guards_1.isTemporalNamespace)(temporal)) {
16
+ throw (0, error_1.getError)({
17
+ statusCode: http_1.HTTP.ResultCodes.RS_5.InternalServerError,
18
+ message: '[NativeTemporalAdapter] Temporal is not available on this runtime | Pass a polyfill as `temporal`, or use DayjsTemporalAdapter / LuxonTemporalAdapter',
19
+ });
20
+ }
21
+ this.temporal = temporal;
22
+ }
23
+ getOffsetMilliseconds(opts) {
24
+ const { value, timeZone } = opts;
25
+ try {
26
+ const zoned = this.temporal.Instant.fromEpochMilliseconds(value.getTime()).toZonedDateTimeISO(timeZone);
27
+ return zoned.offsetNanoseconds / NANOSECONDS_PER_MILLISECOND;
28
+ }
29
+ catch (error) {
30
+ throw (0, error_1.getError)({
31
+ statusCode: http_1.HTTP.ResultCodes.RS_4.BadRequest,
32
+ message: `[NativeTemporalAdapter] no offset for ${timeZone} at ${value.getTime()} | ${error instanceof Error ? error.message : String(error)}`,
33
+ });
34
+ }
35
+ }
36
+ }
37
+ exports.NativeTemporalAdapter = NativeTemporalAdapter;
38
+ //# sourceMappingURL=native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native.js","sourceRoot":"","sources":["../../../../../src/modules/temporal/adapters/native.ts"],"names":[],"mappings":";;;AAAA,kDAA+C;AAC/C,2CAA2C;AAE3C,qCAA+C;AAE/C,MAAM,2BAA2B,GAAG,SAAS,CAAC;AAE9C;;;GAGG;AACH,MAAa,qBAAqB;IAGhC,YAAY,IAAwC;QAClD,MAAM,QAAQ,GAAY,IAAI,EAAE,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAEhF,IAAI,CAAC,IAAA,4BAAmB,EAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,MAAM,IAAA,gBAAQ,EAAC;gBACb,UAAU,EAAE,WAAI,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB;gBACrD,OAAO,EACL,uJAAuJ;aAC1J,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,qBAAqB,CAAC,IAAuC;QAC3D,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAEjC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,kBAAkB,CAC3F,QAAQ,CACT,CAAC;YACF,OAAO,KAAK,CAAC,iBAAiB,GAAG,2BAA2B,CAAC;QAC/D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAA,gBAAQ,EAAC;gBACb,UAAU,EAAE,WAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU;gBAC5C,OAAO,EAAE,yCAAyC,QAAQ,OAAO,KAAK,CAAC,OAAO,EAAE,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;aAC/I,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF;AAhCD,sDAgCC"}
@@ -0,0 +1,52 @@
1
+ import type { TTemporalUnit } from './common/constants';
2
+ import type { ITemporalParts, IZonedTemporalParts } from './common/types';
3
+ /** The years a four-digit `YYYY` spells - the range every method reads and writes. */
4
+ export declare const MIN_TEMPORAL_YEAR = 1;
5
+ export declare const MAX_TEMPORAL_YEAR = 9999;
6
+ export declare const isSupportedYear: (year: number) => boolean;
7
+ export declare const daysInMonth: (opts: {
8
+ year: number;
9
+ month: number;
10
+ }) => number;
11
+ /** `parts` moved by whole days on the calendar, wall time untouched. */
12
+ export declare const shiftDays: (opts: {
13
+ parts: ITemporalParts;
14
+ days: number;
15
+ }) => ITemporalParts;
16
+ /** `parts` moved by whole months, the day clamped to the target month: Jan 31 + 1 month is Feb 28. */
17
+ export declare const shiftMonths: (opts: {
18
+ parts: ITemporalParts;
19
+ months: number;
20
+ }) => ITemporalParts;
21
+ /** Whether the fields name a day and a time the calendar has - Feb 30, 24:00 and year 0 do not. */
22
+ export declare const isRealDateTime: (opts: {
23
+ parts: ITemporalParts;
24
+ }) => boolean;
25
+ /** Epoch milliseconds of wall-clock fields read at a fixed offset. */
26
+ export declare const epochAtOffset: (opts: {
27
+ parts: ITemporalParts;
28
+ offsetMilliseconds: number;
29
+ }) => number;
30
+ /** The wall clock an instant shows at a fixed offset - pure arithmetic, never the host's zone. */
31
+ export declare const wallClockAt: (opts: {
32
+ epoch: number;
33
+ offsetMilliseconds: number;
34
+ }) => IZonedTemporalParts;
35
+ /** Units that measure elapsed time rather than the calendar - 24 hours is not always a day. */
36
+ export declare const EXACT_UNIT_MILLISECONDS: Partial<Record<TTemporalUnit, number>>;
37
+ /** The wall-clock fields alone, without the weekday and the offset. */
38
+ export declare const wallClockOf: (opts: {
39
+ parts: ITemporalParts;
40
+ }) => ITemporalParts;
41
+ /** The wall-clock start of the unit holding `parts`. Weeks start on Monday. */
42
+ export declare const truncateTo: (opts: {
43
+ parts: IZonedTemporalParts;
44
+ unit: TTemporalUnit;
45
+ }) => ITemporalParts;
46
+ /** `parts` moved by whole units on the wall clock - no time zone involved. */
47
+ export declare const shiftWallClock: (opts: {
48
+ parts: ITemporalParts;
49
+ amount: number;
50
+ unit: TTemporalUnit;
51
+ }) => ITemporalParts;
52
+ //# sourceMappingURL=calendar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../../../src/modules/temporal/calendar.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE1E,sFAAsF;AACtF,eAAO,MAAM,iBAAiB,IAAI,CAAC;AACnC,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAWtC,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,KAAG,OACS,CAAC;AAEzD,eAAO,MAAM,WAAW,GAAI,MAAM;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,KAAG,MACW,CAAC;AAEhF,wEAAwE;AACxE,eAAO,MAAM,SAAS,GAAI,MAAM;IAAE,KAAK,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,KAAG,cAUzE,CAAC;AAEF,sGAAsG;AACtG,eAAO,MAAM,WAAW,GAAI,MAAM;IAAE,KAAK,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,KAAG,cAO7E,CAAC;AAEF,mGAAmG;AACnG,eAAO,MAAM,cAAc,GAAI,MAAM;IAAE,KAAK,EAAE,cAAc,CAAA;CAAE,KAAG,OAkBhE,CAAC;AAEF,sEAAsE;AACtE,eAAO,MAAM,aAAa,GAAI,MAAM;IAClC,KAAK,EAAE,cAAc,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;CAC5B,KAAG,MAKH,CAAC;AAEF,kGAAkG;AAClG,eAAO,MAAM,WAAW,GAAI,MAAM;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB,EAAE,MAAM,CAAC;CAC5B,KAAG,mBAgBH,CAAC;AAEF,+FAA+F;AAC/F,eAAO,MAAM,uBAAuB,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAK1E,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,WAAW,GAAI,MAAM;IAAE,KAAK,EAAE,cAAc,CAAA;CAAE,KAAG,cAG7D,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,UAAU,GAAI,MAAM;IAC/B,KAAK,EAAE,mBAAmB,CAAC;IAC3B,IAAI,EAAE,aAAa,CAAC;CACrB,KAAG,cA4BH,CAAC;AAEF,8EAA8E;AAC9E,eAAO,MAAM,cAAc,GAAI,MAAM;IACnC,KAAK,EAAE,cAAc,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,aAAa,CAAC;CACrB,KAAG,cAsBH,CAAC"}
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.shiftWallClock = exports.truncateTo = exports.wallClockOf = exports.EXACT_UNIT_MILLISECONDS = exports.wallClockAt = exports.epochAtOffset = exports.isRealDateTime = exports.shiftMonths = exports.shiftDays = exports.daysInMonth = exports.isSupportedYear = exports.MAX_TEMPORAL_YEAR = exports.MIN_TEMPORAL_YEAR = void 0;
4
+ const constants_1 = require("./common/constants");
5
+ /** The years a four-digit `YYYY` spells - the range every method reads and writes. */
6
+ exports.MIN_TEMPORAL_YEAR = 1;
7
+ exports.MAX_TEMPORAL_YEAR = 9999;
8
+ const MILLISECONDS_PER_MINUTE = 60_000;
9
+ /** A UTC scratch date for calendar math - `Date.UTC` maps years 0-99 onto 1900-1999, `setUTCFullYear` does not. */
10
+ const calendarDate = (opts) => {
11
+ const date = new Date(0);
12
+ date.setUTCFullYear(opts.year, opts.month - 1, opts.day);
13
+ return date;
14
+ };
15
+ const isSupportedYear = (year) => year >= exports.MIN_TEMPORAL_YEAR && year <= exports.MAX_TEMPORAL_YEAR;
16
+ exports.isSupportedYear = isSupportedYear;
17
+ const daysInMonth = (opts) => calendarDate({ year: opts.year, month: opts.month + 1, day: 0 }).getUTCDate();
18
+ exports.daysInMonth = daysInMonth;
19
+ /** `parts` moved by whole days on the calendar, wall time untouched. */
20
+ const shiftDays = (opts) => {
21
+ const { parts, days } = opts;
22
+ const date = calendarDate({ year: parts.year, month: parts.month, day: parts.day + days });
23
+ return {
24
+ ...parts,
25
+ year: date.getUTCFullYear(),
26
+ month: date.getUTCMonth() + 1,
27
+ day: date.getUTCDate(),
28
+ };
29
+ };
30
+ exports.shiftDays = shiftDays;
31
+ /** `parts` moved by whole months, the day clamped to the target month: Jan 31 + 1 month is Feb 28. */
32
+ const shiftMonths = (opts) => {
33
+ const { parts, months } = opts;
34
+ const total = parts.year * 12 + (parts.month - 1) + months;
35
+ const year = Math.floor(total / 12);
36
+ const month = total - year * 12 + 1;
37
+ return { ...parts, year, month, day: Math.min(parts.day, (0, exports.daysInMonth)({ year, month })) };
38
+ };
39
+ exports.shiftMonths = shiftMonths;
40
+ /** Whether the fields name a day and a time the calendar has - Feb 30, 24:00 and year 0 do not. */
41
+ const isRealDateTime = (opts) => {
42
+ const { year, month, day, hour, minute, second, millisecond } = opts.parts;
43
+ return ((0, exports.isSupportedYear)(year) &&
44
+ month >= 1 &&
45
+ month <= 12 &&
46
+ day >= 1 &&
47
+ day <= (0, exports.daysInMonth)({ year, month }) &&
48
+ hour >= 0 &&
49
+ hour <= 23 &&
50
+ minute >= 0 &&
51
+ minute <= 59 &&
52
+ second >= 0 &&
53
+ second <= 59 &&
54
+ millisecond >= 0 &&
55
+ millisecond <= 999);
56
+ };
57
+ exports.isRealDateTime = isRealDateTime;
58
+ /** Epoch milliseconds of wall-clock fields read at a fixed offset. */
59
+ const epochAtOffset = (opts) => {
60
+ const { parts, offsetMilliseconds } = opts;
61
+ const date = calendarDate({ year: parts.year, month: parts.month, day: parts.day });
62
+ date.setUTCHours(parts.hour, parts.minute, parts.second, parts.millisecond);
63
+ return date.getTime() - offsetMilliseconds;
64
+ };
65
+ exports.epochAtOffset = epochAtOffset;
66
+ /** The wall clock an instant shows at a fixed offset - pure arithmetic, never the host's zone. */
67
+ const wallClockAt = (opts) => {
68
+ const { epoch, offsetMilliseconds } = opts;
69
+ const date = new Date(epoch + offsetMilliseconds);
70
+ return {
71
+ year: date.getUTCFullYear(),
72
+ month: date.getUTCMonth() + 1,
73
+ day: date.getUTCDate(),
74
+ hour: date.getUTCHours(),
75
+ minute: date.getUTCMinutes(),
76
+ second: date.getUTCSeconds(),
77
+ millisecond: date.getUTCMilliseconds(),
78
+ // `getUTCDay` counts Sunday as 0; ISO counts Monday as 1 and Sunday as 7.
79
+ dayOfWeek: ((date.getUTCDay() + 6) % 7) + 1,
80
+ offsetMinutes: offsetMilliseconds / MILLISECONDS_PER_MINUTE,
81
+ };
82
+ };
83
+ exports.wallClockAt = wallClockAt;
84
+ /** Units that measure elapsed time rather than the calendar - 24 hours is not always a day. */
85
+ exports.EXACT_UNIT_MILLISECONDS = {
86
+ [constants_1.TemporalUnits.MILLISECOND]: 1,
87
+ [constants_1.TemporalUnits.SECOND]: 1_000,
88
+ [constants_1.TemporalUnits.MINUTE]: 60_000,
89
+ [constants_1.TemporalUnits.HOUR]: 3_600_000,
90
+ };
91
+ /** The wall-clock fields alone, without the weekday and the offset. */
92
+ const wallClockOf = (opts) => {
93
+ const { year, month, day, hour, minute, second, millisecond } = opts.parts;
94
+ return { year, month, day, hour, minute, second, millisecond };
95
+ };
96
+ exports.wallClockOf = wallClockOf;
97
+ /** The wall-clock start of the unit holding `parts`. Weeks start on Monday. */
98
+ const truncateTo = (opts) => {
99
+ const { parts, unit } = opts;
100
+ const wall = (0, exports.wallClockOf)({ parts });
101
+ switch (unit) {
102
+ case constants_1.TemporalUnits.SECOND: {
103
+ return { ...wall, millisecond: 0 };
104
+ }
105
+ case constants_1.TemporalUnits.MINUTE: {
106
+ return { ...wall, second: 0, millisecond: 0 };
107
+ }
108
+ case constants_1.TemporalUnits.HOUR: {
109
+ return { ...wall, minute: 0, second: 0, millisecond: 0 };
110
+ }
111
+ case constants_1.TemporalUnits.DAY: {
112
+ return { ...wall, hour: 0, minute: 0, second: 0, millisecond: 0 };
113
+ }
114
+ case constants_1.TemporalUnits.WEEK: {
115
+ const midnight = { ...wall, hour: 0, minute: 0, second: 0, millisecond: 0 };
116
+ return (0, exports.shiftDays)({ parts: midnight, days: 1 - parts.dayOfWeek });
117
+ }
118
+ case constants_1.TemporalUnits.MONTH: {
119
+ return { ...wall, day: 1, hour: 0, minute: 0, second: 0, millisecond: 0 };
120
+ }
121
+ default: {
122
+ return { ...wall, month: 1, day: 1, hour: 0, minute: 0, second: 0, millisecond: 0 };
123
+ }
124
+ }
125
+ };
126
+ exports.truncateTo = truncateTo;
127
+ /** `parts` moved by whole units on the wall clock - no time zone involved. */
128
+ const shiftWallClock = (opts) => {
129
+ const { parts, amount, unit } = opts;
130
+ const exact = exports.EXACT_UNIT_MILLISECONDS[unit];
131
+ if (exact !== undefined) {
132
+ const epoch = (0, exports.epochAtOffset)({ parts, offsetMilliseconds: 0 }) + amount * exact;
133
+ return (0, exports.wallClockOf)({ parts: (0, exports.wallClockAt)({ epoch, offsetMilliseconds: 0 }) });
134
+ }
135
+ switch (unit) {
136
+ case constants_1.TemporalUnits.DAY: {
137
+ return (0, exports.shiftDays)({ parts, days: amount });
138
+ }
139
+ case constants_1.TemporalUnits.WEEK: {
140
+ return (0, exports.shiftDays)({ parts, days: amount * 7 });
141
+ }
142
+ case constants_1.TemporalUnits.MONTH: {
143
+ return (0, exports.shiftMonths)({ parts, months: amount });
144
+ }
145
+ default: {
146
+ return (0, exports.shiftMonths)({ parts, months: amount * 12 });
147
+ }
148
+ }
149
+ };
150
+ exports.shiftWallClock = shiftWallClock;
151
+ //# sourceMappingURL=calendar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../../../src/modules/temporal/calendar.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { TConstValue } from '../../../common/types';
2
+ /** Units `add`, `subtract`, `startOf` and `endOf` accept. Weeks are ISO weeks - they start on Monday. */
3
+ export declare class TemporalUnits {
4
+ static readonly MILLISECOND = "millisecond";
5
+ static readonly SECOND = "second";
6
+ static readonly MINUTE = "minute";
7
+ static readonly HOUR = "hour";
8
+ static readonly DAY = "day";
9
+ static readonly WEEK = "week";
10
+ static readonly MONTH = "month";
11
+ static readonly YEAR = "year";
12
+ static readonly SCHEME_SET: Set<string>;
13
+ static isValid(input: string): input is TTemporalUnit;
14
+ }
15
+ export type TTemporalUnit = TConstValue<typeof TemporalUnits>;
16
+ /** A helper built without a `timeZone` computes in UTC - never in the host's zone, which differs per machine. */
17
+ export declare const DEFAULT_TEMPORAL_TIME_ZONE = "UTC";
18
+ /** `format` with no pattern writes ISO 8601 with the zone's offset: `2026-09-19T12:00:00.000+07:00`. */
19
+ export declare const DEFAULT_TEMPORAL_PATTERN = "YYYY-MM-DDTHH:mm:ss.SSSZ";
20
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/modules/temporal/common/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,yGAAyG;AACzG,qBAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,WAAW,iBAAiB;IAC5C,MAAM,CAAC,QAAQ,CAAC,MAAM,YAAY;IAClC,MAAM,CAAC,QAAQ,CAAC,MAAM,YAAY;IAClC,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAC9B,MAAM,CAAC,QAAQ,CAAC,GAAG,SAAS;IAC5B,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAC9B,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW;IAChC,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAE9B,MAAM,CAAC,QAAQ,CAAC,UAAU,cASvB;IAEH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,aAAa;CAGtD;AAED,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,aAAa,CAAC,CAAC;AAE9D,iHAAiH;AACjH,eAAO,MAAM,0BAA0B,QAAQ,CAAC;AAEhD,wGAAwG;AACxG,eAAO,MAAM,wBAAwB,6BAA6B,CAAC"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_TEMPORAL_PATTERN = exports.DEFAULT_TEMPORAL_TIME_ZONE = exports.TemporalUnits = void 0;
4
+ /** Units `add`, `subtract`, `startOf` and `endOf` accept. Weeks are ISO weeks - they start on Monday. */
5
+ class TemporalUnits {
6
+ static { this.MILLISECOND = 'millisecond'; }
7
+ static { this.SECOND = 'second'; }
8
+ static { this.MINUTE = 'minute'; }
9
+ static { this.HOUR = 'hour'; }
10
+ static { this.DAY = 'day'; }
11
+ static { this.WEEK = 'week'; }
12
+ static { this.MONTH = 'month'; }
13
+ static { this.YEAR = 'year'; }
14
+ static { this.SCHEME_SET = new Set([
15
+ this.MILLISECOND,
16
+ this.SECOND,
17
+ this.MINUTE,
18
+ this.HOUR,
19
+ this.DAY,
20
+ this.WEEK,
21
+ this.MONTH,
22
+ this.YEAR,
23
+ ]); }
24
+ static isValid(input) {
25
+ return this.SCHEME_SET.has(input);
26
+ }
27
+ }
28
+ exports.TemporalUnits = TemporalUnits;
29
+ /** A helper built without a `timeZone` computes in UTC - never in the host's zone, which differs per machine. */
30
+ exports.DEFAULT_TEMPORAL_TIME_ZONE = 'UTC';
31
+ /** `format` with no pattern writes ISO 8601 with the zone's offset: `2026-09-19T12:00:00.000+07:00`. */
32
+ exports.DEFAULT_TEMPORAL_PATTERN = 'YYYY-MM-DDTHH:mm:ss.SSSZ';
33
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../src/modules/temporal/common/constants.ts"],"names":[],"mappings":";;;AAEA,yGAAyG;AACzG,MAAa,aAAa;aACR,gBAAW,GAAG,aAAa,CAAC;aAC5B,WAAM,GAAG,QAAQ,CAAC;aAClB,WAAM,GAAG,QAAQ,CAAC;aAClB,SAAI,GAAG,MAAM,CAAC;aACd,QAAG,GAAG,KAAK,CAAC;aACZ,SAAI,GAAG,MAAM,CAAC;aACd,UAAK,GAAG,OAAO,CAAC;aAChB,SAAI,GAAG,MAAM,CAAC;aAEd,eAAU,GAAG,IAAI,GAAG,CAAC;QACnC,IAAI,CAAC,WAAW;QAChB,IAAI,CAAC,MAAM;QACX,IAAI,CAAC,MAAM;QACX,IAAI,CAAC,IAAI;QACT,IAAI,CAAC,GAAG;QACR,IAAI,CAAC,IAAI;QACT,IAAI,CAAC,KAAK;QACV,IAAI,CAAC,IAAI;KACV,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;;AAvBH,sCAwBC;AAID,iHAAiH;AACpG,QAAA,0BAA0B,GAAG,KAAK,CAAC;AAEhD,wGAAwG;AAC3F,QAAA,wBAAwB,GAAG,0BAA0B,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './constants';
2
+ export * from './types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/modules/temporal/common/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./constants"), exports);
18
+ __exportStar(require("./types"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/modules/temporal/common/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,0CAAwB"}
@@ -0,0 +1,69 @@
1
+ /** What a date-taking method accepts: a `Date`, epoch milliseconds, or an ISO 8601 string. */
2
+ export type TTemporalInput = Date | number | string;
3
+ /** Wall-clock fields. `month` is 1-12, `day` 1-31 - never zero-based. */
4
+ export interface ITemporalParts {
5
+ year: number;
6
+ month: number;
7
+ day: number;
8
+ hour: number;
9
+ minute: number;
10
+ second: number;
11
+ millisecond: number;
12
+ }
13
+ /** The wall clock an instant shows in one time zone. `dayOfWeek` is ISO: 1 Monday - 7 Sunday. */
14
+ export interface IZonedTemporalParts extends ITemporalParts {
15
+ dayOfWeek: number;
16
+ /** Minutes east of UTC: `420` for `+07:00`. Historic local mean time carries seconds, as a fraction. */
17
+ offsetMinutes: number;
18
+ }
19
+ /**
20
+ * The one question a date library answers: which UTC offset a time zone observes at an instant.
21
+ * Everything else - the wall clock, a time a daylight-saving jump skips or repeats, adding a month,
22
+ * the start of a week, a pattern - `TemporalHelper` works out once from these answers, so every
23
+ * adapter shares one behaviour.
24
+ */
25
+ export interface ITemporalAdapter {
26
+ /** Milliseconds east of UTC that `timeZone` observes at `value`: `25_200_000` for `+07:00`. */
27
+ getOffsetMilliseconds(opts: {
28
+ value: Date;
29
+ timeZone: string;
30
+ }): number;
31
+ }
32
+ /** The part of a `Temporal.ZonedDateTime` this adapter reads. */
33
+ export interface ITemporalZonedDateTime {
34
+ readonly offsetNanoseconds: number;
35
+ }
36
+ /**
37
+ * The part of the `Temporal` namespace this adapter drives - structural, so neither this package
38
+ * nor its consumers need Temporal's type definitions, and a polyfill's namespace fits as well.
39
+ */
40
+ export interface ITemporalNamespace {
41
+ Instant: {
42
+ fromEpochMilliseconds(epochMilliseconds: number): {
43
+ toZonedDateTimeISO(timeZone: string): ITemporalZonedDateTime;
44
+ };
45
+ };
46
+ }
47
+ /** The part of a `Dayjs` object this adapter reads. */
48
+ export interface IDayjsInstance {
49
+ utcOffset(): number;
50
+ tz(timeZone: string): IDayjsInstance;
51
+ }
52
+ /** The part of the `dayjs` factory this adapter drives - with the `utc` and `timezone` plugins extended. */
53
+ export interface IDayjsFactory {
54
+ (value?: Date | number): IDayjsInstance;
55
+ tz: (value: string, timeZone: string) => IDayjsInstance;
56
+ }
57
+ /** The part of a Luxon `DateTime` this adapter reads. */
58
+ export interface ILuxonDateTime {
59
+ readonly isValid: boolean;
60
+ readonly invalidReason: string | null;
61
+ readonly offset: number;
62
+ }
63
+ /** The part of Luxon's `DateTime` class this adapter drives. */
64
+ export interface ILuxonDateTimeFactory {
65
+ fromMillis(milliseconds: number, options: {
66
+ zone: string;
67
+ }): ILuxonDateTime;
68
+ }
69
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/modules/temporal/common/types.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAEpD,yEAAyE;AACzE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,iGAAiG;AACjG,MAAM,WAAW,mBAAoB,SAAQ,cAAc;IACzD,SAAS,EAAE,MAAM,CAAC;IAClB,wGAAwG;IACxG,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+FAA+F;IAC/F,qBAAqB,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC;CACxE;AAID,iEAAiE;AACjE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE;QACP,qBAAqB,CAAC,iBAAiB,EAAE,MAAM,GAAG;YAChD,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,sBAAsB,CAAC;SAC9D,CAAC;KACH,CAAC;CACH;AAED,uDAAuD;AACvD,MAAM,WAAW,cAAc;IAC7B,SAAS,IAAI,MAAM,CAAC;IACpB,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAAC;CACtC;AAED,4GAA4G;AAC5G,MAAM,WAAW,aAAa;IAC5B,CAAC,KAAK,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,cAAc,CAAC;IACxC,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,cAAc,CAAC;CACzD;AAED,yDAAyD;AACzD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,gEAAgE;AAChE,MAAM,WAAW,qBAAqB;IACpC,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,cAAc,CAAC;CAC7E"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/modules/temporal/common/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,120 @@
1
+ import { BaseHelper } from '../base';
2
+ import type { TTemporalUnit } from './common/constants';
3
+ import type { ITemporalAdapter, IZonedTemporalParts, TTemporalInput } from './common/types';
4
+ /**
5
+ * Dates in one time zone, through whichever library you choose: pass an adapter - the runtime's
6
+ * `Temporal` (the default), your own dayjs, your own Luxon. The adapter only reports a zone's UTC
7
+ * offset at an instant; the wall clock, daylight-saving gaps and repeats, and the calendar math all
8
+ * live here, so every adapter shares one behaviour.
9
+ *
10
+ * Values go in as a `Date`, epoch milliseconds or an ISO 8601 string, and come out as a `Date`, so
11
+ * swapping the adapter never touches a call site. The zone is yours to set: without one this helper
12
+ * computes in UTC, never in the host's zone. Years run from 1 to 9999.
13
+ */
14
+ export declare class TemporalHelper extends BaseHelper {
15
+ /** Validated once per process: `Intl` answers the same for a zone name every time. */
16
+ private static readonly knownTimeZones;
17
+ private readonly adapter;
18
+ private readonly timeZone;
19
+ constructor(opts?: {
20
+ adapter?: ITemporalAdapter;
21
+ timeZone?: string;
22
+ scope?: string;
23
+ });
24
+ private static ensureTimeZone;
25
+ private static ensureUnit;
26
+ /** Every result passes here: an overflowing `add` is refused, never an Invalid Date. */
27
+ private static ensureInstant;
28
+ private static ensureYear;
29
+ private resolveTimeZone;
30
+ /** The adapter's one answer, rounded: an offset is whole milliseconds, a library's float may not be. */
31
+ private offsetAt;
32
+ private zonedParts;
33
+ /**
34
+ * Every instant whose wall clock reads `parts` in the zone, earliest first: one as a rule, two
35
+ * when the clock goes back, none when it jumps forward. `forward` is where a skipped time lands -
36
+ * read with the offset from before the jump, so it moves past the gap.
37
+ */
38
+ private instantsOf;
39
+ /** The instant wall-clock `parts` name: a skipped time moves forward, a repeated one takes the earlier. */
40
+ private earliestOf;
41
+ /**
42
+ * `[start, end)` of the unit holding `epoch`. A day or longer starts at its first instant. An hour
43
+ * or less repeats when the clock goes back, so it starts at the latest start not after `epoch`,
44
+ * and ends where the wall clock next shows either the following unit or this one's start again.
45
+ */
46
+ private unitBounds;
47
+ getTimeZone(): string;
48
+ now(): Date;
49
+ /** The instant a value names. An ISO string without an offset is read as wall clock in the zone. */
50
+ toDate(opts: {
51
+ value: TTemporalInput;
52
+ timeZone?: string;
53
+ }): Date;
54
+ /** The wall clock the value shows in the zone, with its ISO weekday and UTC offset. */
55
+ parts(opts: {
56
+ value: TTemporalInput;
57
+ timeZone?: string;
58
+ }): IZonedTemporalParts;
59
+ /**
60
+ * Reads a string. With a `pattern` (`YYYY YY MM M DD D HH H mm m ss s SSS Z ZZ`, text in
61
+ * `[brackets]`), the value must match it exactly; without one it must be ISO 8601. An offset in
62
+ * the value wins; otherwise the fields are wall clock in the zone.
63
+ */
64
+ parse(opts: {
65
+ value: string;
66
+ pattern?: string;
67
+ timeZone?: string;
68
+ }): Date;
69
+ private readIso;
70
+ /** Writes the value in the zone. Without a `pattern`: ISO 8601 with the zone's offset. */
71
+ format(opts: {
72
+ value: TTemporalInput;
73
+ pattern?: string;
74
+ timeZone?: string;
75
+ }): string;
76
+ /**
77
+ * Moves the value by whole units. Hours and smaller are elapsed time; days and larger move the
78
+ * calendar in the zone, so a day across a daylight-saving jump keeps the wall time, and a month
79
+ * past a shorter month clamps to its last day.
80
+ */
81
+ add(opts: {
82
+ value: TTemporalInput;
83
+ amount: number;
84
+ unit: TTemporalUnit;
85
+ timeZone?: string;
86
+ }): Date;
87
+ subtract(opts: {
88
+ value: TTemporalInput;
89
+ amount: number;
90
+ unit: TTemporalUnit;
91
+ timeZone?: string;
92
+ }): Date;
93
+ /** The first instant of the unit containing the value, in the zone. Weeks start on Monday. */
94
+ startOf(opts: {
95
+ value: TTemporalInput;
96
+ unit: TTemporalUnit;
97
+ timeZone?: string;
98
+ }): Date;
99
+ /** The last millisecond of the unit containing the value, in the zone. */
100
+ endOf(opts: {
101
+ value: TTemporalInput;
102
+ unit: TTemporalUnit;
103
+ timeZone?: string;
104
+ }): Date;
105
+ /** Monday to Friday, read on the wall clock of the zone. */
106
+ isWeekday(opts: {
107
+ value: TTemporalInput;
108
+ timeZone?: string;
109
+ }): boolean;
110
+ nextWeekday(opts: {
111
+ value: TTemporalInput;
112
+ timeZone?: string;
113
+ }): Date;
114
+ previousWeekday(opts: {
115
+ value: TTemporalInput;
116
+ timeZone?: string;
117
+ }): Date;
118
+ private stepToWeekday;
119
+ }
120
+ //# sourceMappingURL=helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../../../../src/modules/temporal/helper.ts"],"names":[],"mappings":"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"}