effect 3.8.4 → 3.8.5

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 (595) hide show
  1. package/dist/cjs/Array.js.map +1 -1
  2. package/dist/cjs/BigDecimal.js +2 -3
  3. package/dist/cjs/BigDecimal.js.map +1 -1
  4. package/dist/cjs/BigInt.js.map +1 -1
  5. package/dist/cjs/Boolean.js.map +1 -1
  6. package/dist/cjs/Cause.js.map +1 -1
  7. package/dist/cjs/Channel.js.map +1 -1
  8. package/dist/cjs/ChildExecutorDecision.js.map +1 -1
  9. package/dist/cjs/Chunk.js.map +1 -1
  10. package/dist/cjs/Config.js.map +1 -1
  11. package/dist/cjs/ConfigError.js.map +1 -1
  12. package/dist/cjs/ConfigProvider.js.map +1 -1
  13. package/dist/cjs/ConfigProviderPathPatch.js.map +1 -1
  14. package/dist/cjs/Console.js.map +1 -1
  15. package/dist/cjs/Context.js.map +1 -1
  16. package/dist/cjs/Cron.js.map +1 -1
  17. package/dist/cjs/Data.js.map +1 -1
  18. package/dist/cjs/DateTime.js.map +1 -1
  19. package/dist/cjs/Deferred.js.map +1 -1
  20. package/dist/cjs/Differ.js.map +1 -1
  21. package/dist/cjs/Duration.js.map +1 -1
  22. package/dist/cjs/Effect.js.map +1 -1
  23. package/dist/cjs/Either.js.map +1 -1
  24. package/dist/cjs/Equivalence.js.map +1 -1
  25. package/dist/cjs/ExecutionStrategy.js.map +1 -1
  26. package/dist/cjs/Exit.js.map +1 -1
  27. package/dist/cjs/Fiber.js.map +1 -1
  28. package/dist/cjs/FiberHandle.js.map +1 -1
  29. package/dist/cjs/FiberId.js.map +1 -1
  30. package/dist/cjs/FiberMap.js.map +1 -1
  31. package/dist/cjs/FiberRef.js.map +1 -1
  32. package/dist/cjs/FiberRefs.js.map +1 -1
  33. package/dist/cjs/FiberRefsPatch.js.map +1 -1
  34. package/dist/cjs/FiberSet.js.map +1 -1
  35. package/dist/cjs/Function.js.map +1 -1
  36. package/dist/cjs/GroupBy.js.map +1 -1
  37. package/dist/cjs/Hash.js.map +1 -1
  38. package/dist/cjs/HashMap.js.map +1 -1
  39. package/dist/cjs/HashSet.js.map +1 -1
  40. package/dist/cjs/Iterable.js.map +1 -1
  41. package/dist/cjs/KeyedPool.js.map +1 -1
  42. package/dist/cjs/Layer.js.map +1 -1
  43. package/dist/cjs/List.js.map +1 -1
  44. package/dist/cjs/LogLevel.js.map +1 -1
  45. package/dist/cjs/Logger.js.map +1 -1
  46. package/dist/cjs/Mailbox.js.map +1 -1
  47. package/dist/cjs/MergeDecision.js.map +1 -1
  48. package/dist/cjs/MergeState.js.map +1 -1
  49. package/dist/cjs/MergeStrategy.js.map +1 -1
  50. package/dist/cjs/Metric.js.map +1 -1
  51. package/dist/cjs/MetricHook.js.map +1 -1
  52. package/dist/cjs/MetricKey.js.map +1 -1
  53. package/dist/cjs/MetricPolling.js.map +1 -1
  54. package/dist/cjs/MetricState.js.map +1 -1
  55. package/dist/cjs/Micro.js.map +1 -1
  56. package/dist/cjs/MutableHashMap.js.map +1 -1
  57. package/dist/cjs/MutableHashSet.js.map +1 -1
  58. package/dist/cjs/MutableList.js.map +1 -1
  59. package/dist/cjs/MutableQueue.js.map +1 -1
  60. package/dist/cjs/MutableRef.js.map +1 -1
  61. package/dist/cjs/Number.js.map +1 -1
  62. package/dist/cjs/Option.js.map +1 -1
  63. package/dist/cjs/Order.js.map +1 -1
  64. package/dist/cjs/Ordering.js.map +1 -1
  65. package/dist/cjs/Pipeable.js.map +1 -1
  66. package/dist/cjs/Pool.js.map +1 -1
  67. package/dist/cjs/Predicate.js.map +1 -1
  68. package/dist/cjs/PubSub.js.map +1 -1
  69. package/dist/cjs/Queue.js.map +1 -1
  70. package/dist/cjs/RcMap.js.map +1 -1
  71. package/dist/cjs/Readable.js.map +1 -1
  72. package/dist/cjs/Record.js.map +1 -1
  73. package/dist/cjs/RedBlackTree.js.map +1 -1
  74. package/dist/cjs/Ref.js.map +1 -1
  75. package/dist/cjs/Request.js.map +1 -1
  76. package/dist/cjs/RequestResolver.js.map +1 -1
  77. package/dist/cjs/Runtime.js.map +1 -1
  78. package/dist/cjs/RuntimeFlags.js.map +1 -1
  79. package/dist/cjs/RuntimeFlagsPatch.js.map +1 -1
  80. package/dist/cjs/STM.js.map +1 -1
  81. package/dist/cjs/Schedule.js.map +1 -1
  82. package/dist/cjs/ScheduleInterval.js.map +1 -1
  83. package/dist/cjs/ScheduleIntervals.js.map +1 -1
  84. package/dist/cjs/Scheduler.js.map +1 -1
  85. package/dist/cjs/Scope.js.map +1 -1
  86. package/dist/cjs/ScopedRef.js.map +1 -1
  87. package/dist/cjs/Sink.js.map +1 -1
  88. package/dist/cjs/SortedMap.js.map +1 -1
  89. package/dist/cjs/SortedSet.js.map +1 -1
  90. package/dist/cjs/Stream.js +17 -3
  91. package/dist/cjs/Stream.js.map +1 -1
  92. package/dist/cjs/StreamHaltStrategy.js.map +1 -1
  93. package/dist/cjs/String.js.map +1 -1
  94. package/dist/cjs/Struct.js.map +1 -1
  95. package/dist/cjs/Subscribable.js.map +1 -1
  96. package/dist/cjs/SubscriptionRef.js.map +1 -1
  97. package/dist/cjs/SynchronizedRef.js.map +1 -1
  98. package/dist/cjs/TArray.js.map +1 -1
  99. package/dist/cjs/TDeferred.js.map +1 -1
  100. package/dist/cjs/TMap.js.map +1 -1
  101. package/dist/cjs/TPriorityQueue.js.map +1 -1
  102. package/dist/cjs/TPubSub.js.map +1 -1
  103. package/dist/cjs/TQueue.js.map +1 -1
  104. package/dist/cjs/TReentrantLock.js.map +1 -1
  105. package/dist/cjs/TRef.js.map +1 -1
  106. package/dist/cjs/TSemaphore.js.map +1 -1
  107. package/dist/cjs/TSet.js.map +1 -1
  108. package/dist/cjs/Take.js.map +1 -1
  109. package/dist/cjs/TestAnnotationMap.js.map +1 -1
  110. package/dist/cjs/TestClock.js.map +1 -1
  111. package/dist/cjs/TestServices.js.map +1 -1
  112. package/dist/cjs/Trie.js.map +1 -1
  113. package/dist/cjs/Tuple.js.map +1 -1
  114. package/dist/cjs/Unify.js.map +1 -1
  115. package/dist/cjs/UpstreamPullRequest.js.map +1 -1
  116. package/dist/cjs/UpstreamPullStrategy.js.map +1 -1
  117. package/dist/cjs/Utils.js +1 -14
  118. package/dist/cjs/Utils.js.map +1 -1
  119. package/dist/cjs/internal/core.js +4 -3
  120. package/dist/cjs/internal/core.js.map +1 -1
  121. package/dist/cjs/internal/runtime.js +1 -1
  122. package/dist/cjs/internal/runtime.js.map +1 -1
  123. package/dist/cjs/internal/stream.js +12 -3
  124. package/dist/cjs/internal/stream.js.map +1 -1
  125. package/dist/cjs/internal/version.js +1 -1
  126. package/dist/dts/Array.d.ts +2684 -0
  127. package/dist/dts/Array.d.ts.map +1 -1
  128. package/dist/dts/BigDecimal.d.ts +558 -1
  129. package/dist/dts/BigDecimal.d.ts.map +1 -1
  130. package/dist/dts/BigInt.d.ts +490 -0
  131. package/dist/dts/BigInt.d.ts.map +1 -1
  132. package/dist/dts/Boolean.d.ts +228 -0
  133. package/dist/dts/Boolean.d.ts.map +1 -1
  134. package/dist/dts/Cause.d.ts +172 -0
  135. package/dist/dts/Cause.d.ts.map +1 -1
  136. package/dist/dts/Channel.d.ts +750 -0
  137. package/dist/dts/Channel.d.ts.map +1 -1
  138. package/dist/dts/ChildExecutorDecision.d.ts +12 -0
  139. package/dist/dts/ChildExecutorDecision.d.ts.map +1 -1
  140. package/dist/dts/Chunk.d.ts +791 -0
  141. package/dist/dts/Chunk.d.ts.map +1 -1
  142. package/dist/dts/Config.d.ts +174 -0
  143. package/dist/dts/Config.d.ts.map +1 -1
  144. package/dist/dts/ConfigError.d.ts +16 -0
  145. package/dist/dts/ConfigError.d.ts.map +1 -1
  146. package/dist/dts/ConfigProvider.d.ts +84 -0
  147. package/dist/dts/ConfigProvider.d.ts.map +1 -1
  148. package/dist/dts/ConfigProviderPathPatch.d.ts +32 -0
  149. package/dist/dts/ConfigProviderPathPatch.d.ts.map +1 -1
  150. package/dist/dts/Console.d.ts +24 -0
  151. package/dist/dts/Console.d.ts.map +1 -1
  152. package/dist/dts/Context.d.ts +232 -0
  153. package/dist/dts/Context.d.ts.map +1 -1
  154. package/dist/dts/Cron.d.ts +12 -0
  155. package/dist/dts/Cron.d.ts.map +1 -1
  156. package/dist/dts/Data.d.ts +165 -0
  157. package/dist/dts/Data.d.ts.map +1 -1
  158. package/dist/dts/DateTime.d.ts +878 -0
  159. package/dist/dts/DateTime.d.ts.map +1 -1
  160. package/dist/dts/Deferred.d.ts +170 -0
  161. package/dist/dts/Deferred.d.ts.map +1 -1
  162. package/dist/dts/Differ.d.ts +78 -0
  163. package/dist/dts/Differ.d.ts.map +1 -1
  164. package/dist/dts/Duration.d.ts +130 -0
  165. package/dist/dts/Duration.d.ts.map +1 -1
  166. package/dist/dts/Effect.d.ts +4117 -3
  167. package/dist/dts/Effect.d.ts.map +1 -1
  168. package/dist/dts/Either.d.ts +620 -0
  169. package/dist/dts/Either.d.ts.map +1 -1
  170. package/dist/dts/Equivalence.d.ts +24 -0
  171. package/dist/dts/Equivalence.d.ts.map +1 -1
  172. package/dist/dts/ExecutionStrategy.d.ts +14 -0
  173. package/dist/dts/ExecutionStrategy.d.ts.map +1 -1
  174. package/dist/dts/Exit.d.ts +252 -0
  175. package/dist/dts/Exit.d.ts.map +1 -1
  176. package/dist/dts/Fiber.d.ts +182 -0
  177. package/dist/dts/Fiber.d.ts.map +1 -1
  178. package/dist/dts/FiberHandle.d.ts +42 -0
  179. package/dist/dts/FiberHandle.d.ts.map +1 -1
  180. package/dist/dts/FiberId.d.ts +24 -0
  181. package/dist/dts/FiberId.d.ts.map +1 -1
  182. package/dist/dts/FiberMap.d.ts +102 -0
  183. package/dist/dts/FiberMap.d.ts.map +1 -1
  184. package/dist/dts/FiberRef.d.ts +80 -0
  185. package/dist/dts/FiberRef.d.ts.map +1 -1
  186. package/dist/dts/FiberRefs.d.ts +84 -0
  187. package/dist/dts/FiberRefs.d.ts.map +1 -1
  188. package/dist/dts/FiberRefsPatch.d.ts +30 -0
  189. package/dist/dts/FiberRefsPatch.d.ts.map +1 -1
  190. package/dist/dts/FiberSet.d.ts +38 -0
  191. package/dist/dts/FiberSet.d.ts.map +1 -1
  192. package/dist/dts/Function.d.ts +144 -28
  193. package/dist/dts/Function.d.ts.map +1 -1
  194. package/dist/dts/GroupBy.d.ts +38 -0
  195. package/dist/dts/GroupBy.d.ts.map +1 -1
  196. package/dist/dts/Hash.d.ts +8 -0
  197. package/dist/dts/Hash.d.ts.map +1 -1
  198. package/dist/dts/HashMap.d.ts +300 -0
  199. package/dist/dts/HashMap.d.ts.map +1 -1
  200. package/dist/dts/HashSet.d.ts +284 -0
  201. package/dist/dts/HashSet.d.ts.map +1 -1
  202. package/dist/dts/Iterable.d.ts +454 -0
  203. package/dist/dts/Iterable.d.ts.map +1 -1
  204. package/dist/dts/KeyedPool.d.ts +34 -0
  205. package/dist/dts/KeyedPool.d.ts.map +1 -1
  206. package/dist/dts/Layer.d.ts +414 -0
  207. package/dist/dts/Layer.d.ts.map +1 -1
  208. package/dist/dts/List.d.ts +430 -0
  209. package/dist/dts/List.d.ts.map +1 -1
  210. package/dist/dts/LogLevel.d.ts +46 -0
  211. package/dist/dts/LogLevel.d.ts.map +1 -1
  212. package/dist/dts/Logger.d.ts +194 -0
  213. package/dist/dts/Logger.d.ts.map +1 -1
  214. package/dist/dts/Mailbox.d.ts +16 -0
  215. package/dist/dts/Mailbox.d.ts.map +1 -1
  216. package/dist/dts/MergeDecision.d.ts +8 -0
  217. package/dist/dts/MergeDecision.d.ts.map +1 -1
  218. package/dist/dts/MergeState.d.ts +8 -0
  219. package/dist/dts/MergeState.d.ts.map +1 -1
  220. package/dist/dts/MergeStrategy.d.ts +12 -0
  221. package/dist/dts/MergeStrategy.d.ts.map +1 -1
  222. package/dist/dts/Metric.d.ts +410 -0
  223. package/dist/dts/Metric.d.ts.map +1 -1
  224. package/dist/dts/MetricHook.d.ts +24 -0
  225. package/dist/dts/MetricHook.d.ts.map +1 -1
  226. package/dist/dts/MetricKey.d.ts +48 -0
  227. package/dist/dts/MetricKey.d.ts.map +1 -1
  228. package/dist/dts/MetricPolling.d.ts +40 -0
  229. package/dist/dts/MetricPolling.d.ts.map +1 -1
  230. package/dist/dts/MetricState.d.ts +16 -0
  231. package/dist/dts/MetricState.d.ts.map +1 -1
  232. package/dist/dts/Micro.d.ts +1110 -0
  233. package/dist/dts/Micro.d.ts.map +1 -1
  234. package/dist/dts/MutableHashMap.d.ts +50 -0
  235. package/dist/dts/MutableHashMap.d.ts.map +1 -1
  236. package/dist/dts/MutableHashSet.d.ts +24 -0
  237. package/dist/dts/MutableHashSet.d.ts.map +1 -1
  238. package/dist/dts/MutableList.d.ts +36 -0
  239. package/dist/dts/MutableList.d.ts.map +1 -1
  240. package/dist/dts/MutableQueue.d.ts +62 -0
  241. package/dist/dts/MutableQueue.d.ts.map +1 -1
  242. package/dist/dts/MutableRef.d.ts +56 -0
  243. package/dist/dts/MutableRef.d.ts.map +1 -1
  244. package/dist/dts/Number.d.ts +474 -0
  245. package/dist/dts/Number.d.ts.map +1 -1
  246. package/dist/dts/Option.d.ts +1019 -0
  247. package/dist/dts/Option.d.ts.map +1 -1
  248. package/dist/dts/Order.d.ts +24 -0
  249. package/dist/dts/Order.d.ts.map +1 -1
  250. package/dist/dts/Ordering.d.ts +66 -0
  251. package/dist/dts/Ordering.d.ts.map +1 -1
  252. package/dist/dts/Pipeable.d.ts +21 -21
  253. package/dist/dts/Pipeable.d.ts.map +1 -1
  254. package/dist/dts/Pool.d.ts +16 -0
  255. package/dist/dts/Pool.d.ts.map +1 -1
  256. package/dist/dts/Predicate.d.ts +498 -0
  257. package/dist/dts/Predicate.d.ts.map +1 -1
  258. package/dist/dts/PubSub.d.ts +28 -0
  259. package/dist/dts/PubSub.d.ts.map +1 -1
  260. package/dist/dts/Queue.d.ts +104 -0
  261. package/dist/dts/Queue.d.ts.map +1 -1
  262. package/dist/dts/RcMap.d.ts +70 -0
  263. package/dist/dts/RcMap.d.ts.map +1 -1
  264. package/dist/dts/Readable.d.ts +16 -0
  265. package/dist/dts/Readable.d.ts.map +1 -1
  266. package/dist/dts/Record.d.ts +800 -0
  267. package/dist/dts/Record.d.ts.map +1 -1
  268. package/dist/dts/RedBlackTree.d.ts +300 -0
  269. package/dist/dts/RedBlackTree.d.ts.map +1 -1
  270. package/dist/dts/Ref.d.ts +88 -0
  271. package/dist/dts/Ref.d.ts.map +1 -1
  272. package/dist/dts/Request.d.ts +76 -0
  273. package/dist/dts/Request.d.ts.map +1 -1
  274. package/dist/dts/RequestResolver.d.ts +144 -0
  275. package/dist/dts/RequestResolver.d.ts.map +1 -1
  276. package/dist/dts/Runtime.d.ts +126 -0
  277. package/dist/dts/Runtime.d.ts.map +1 -1
  278. package/dist/dts/RuntimeFlags.d.ts +100 -0
  279. package/dist/dts/RuntimeFlags.d.ts.map +1 -1
  280. package/dist/dts/RuntimeFlagsPatch.d.ts +112 -0
  281. package/dist/dts/RuntimeFlagsPatch.d.ts.map +1 -1
  282. package/dist/dts/STM.d.ts +1090 -0
  283. package/dist/dts/STM.d.ts.map +1 -1
  284. package/dist/dts/Schedule.d.ts +704 -0
  285. package/dist/dts/Schedule.d.ts.map +1 -1
  286. package/dist/dts/ScheduleInterval.d.ts +68 -0
  287. package/dist/dts/ScheduleInterval.d.ts.map +1 -1
  288. package/dist/dts/ScheduleIntervals.d.ts +50 -0
  289. package/dist/dts/ScheduleIntervals.d.ts.map +1 -1
  290. package/dist/dts/Scope.d.ts +36 -0
  291. package/dist/dts/Scope.d.ts.map +1 -1
  292. package/dist/dts/ScopedRef.d.ts +22 -0
  293. package/dist/dts/ScopedRef.d.ts.map +1 -1
  294. package/dist/dts/Sink.d.ts +464 -0
  295. package/dist/dts/Sink.d.ts.map +1 -1
  296. package/dist/dts/SortedMap.d.ts +76 -0
  297. package/dist/dts/SortedMap.d.ts.map +1 -1
  298. package/dist/dts/SortedSet.d.ts +142 -0
  299. package/dist/dts/SortedSet.d.ts.map +1 -1
  300. package/dist/dts/Stream.d.ts +4998 -1
  301. package/dist/dts/Stream.d.ts.map +1 -1
  302. package/dist/dts/StreamHaltStrategy.d.ts +12 -0
  303. package/dist/dts/StreamHaltStrategy.d.ts.map +1 -1
  304. package/dist/dts/String.d.ts +200 -0
  305. package/dist/dts/String.d.ts.map +1 -1
  306. package/dist/dts/Struct.d.ts +84 -0
  307. package/dist/dts/Struct.d.ts.map +1 -1
  308. package/dist/dts/Subscribable.d.ts +16 -0
  309. package/dist/dts/Subscribable.d.ts.map +1 -1
  310. package/dist/dts/SubscriptionRef.d.ts +152 -0
  311. package/dist/dts/SubscriptionRef.d.ts.map +1 -1
  312. package/dist/dts/SynchronizedRef.d.ts +152 -0
  313. package/dist/dts/SynchronizedRef.d.ts.map +1 -1
  314. package/dist/dts/TArray.d.ts +426 -0
  315. package/dist/dts/TArray.d.ts.map +1 -1
  316. package/dist/dts/TDeferred.d.ts +24 -0
  317. package/dist/dts/TDeferred.d.ts.map +1 -1
  318. package/dist/dts/TMap.d.ts +366 -0
  319. package/dist/dts/TMap.d.ts.map +1 -1
  320. package/dist/dts/TPriorityQueue.d.ts +60 -0
  321. package/dist/dts/TPriorityQueue.d.ts.map +1 -1
  322. package/dist/dts/TPubSub.d.ts +28 -0
  323. package/dist/dts/TPubSub.d.ts.map +1 -1
  324. package/dist/dts/TQueue.d.ts +108 -0
  325. package/dist/dts/TQueue.d.ts.map +1 -1
  326. package/dist/dts/TReentrantLock.d.ts +36 -0
  327. package/dist/dts/TReentrantLock.d.ts.map +1 -1
  328. package/dist/dts/TRef.d.ts +88 -0
  329. package/dist/dts/TRef.d.ts.map +1 -1
  330. package/dist/dts/TSemaphore.d.ts +40 -0
  331. package/dist/dts/TSemaphore.d.ts.map +1 -1
  332. package/dist/dts/TSet.d.ts +254 -0
  333. package/dist/dts/TSet.d.ts.map +1 -1
  334. package/dist/dts/Take.d.ts +56 -0
  335. package/dist/dts/Take.d.ts.map +1 -1
  336. package/dist/dts/TestAnnotationMap.d.ts.map +1 -1
  337. package/dist/dts/TestClock.d.ts.map +1 -1
  338. package/dist/dts/TestServices.d.ts.map +1 -1
  339. package/dist/dts/Trie.d.ts +906 -0
  340. package/dist/dts/Trie.d.ts.map +1 -1
  341. package/dist/dts/Tuple.d.ts +144 -0
  342. package/dist/dts/Tuple.d.ts.map +1 -1
  343. package/dist/dts/Unify.d.ts +18 -0
  344. package/dist/dts/Unify.d.ts.map +1 -1
  345. package/dist/dts/UpstreamPullRequest.d.ts +12 -0
  346. package/dist/dts/UpstreamPullRequest.d.ts.map +1 -1
  347. package/dist/dts/UpstreamPullStrategy.d.ts +12 -0
  348. package/dist/dts/UpstreamPullStrategy.d.ts.map +1 -1
  349. package/dist/dts/Utils.d.ts.map +1 -1
  350. package/dist/dts/internal/stream.d.ts.map +1 -1
  351. package/dist/esm/Array.js.map +1 -1
  352. package/dist/esm/BigDecimal.js +2 -2
  353. package/dist/esm/BigDecimal.js.map +1 -1
  354. package/dist/esm/BigInt.js.map +1 -1
  355. package/dist/esm/Boolean.js.map +1 -1
  356. package/dist/esm/Cause.js.map +1 -1
  357. package/dist/esm/Channel.js.map +1 -1
  358. package/dist/esm/ChildExecutorDecision.js.map +1 -1
  359. package/dist/esm/Chunk.js.map +1 -1
  360. package/dist/esm/Config.js.map +1 -1
  361. package/dist/esm/ConfigError.js.map +1 -1
  362. package/dist/esm/ConfigProvider.js.map +1 -1
  363. package/dist/esm/ConfigProviderPathPatch.js.map +1 -1
  364. package/dist/esm/Console.js.map +1 -1
  365. package/dist/esm/Context.js.map +1 -1
  366. package/dist/esm/Cron.js.map +1 -1
  367. package/dist/esm/Data.js.map +1 -1
  368. package/dist/esm/DateTime.js.map +1 -1
  369. package/dist/esm/Deferred.js.map +1 -1
  370. package/dist/esm/Differ.js.map +1 -1
  371. package/dist/esm/Duration.js.map +1 -1
  372. package/dist/esm/Effect.js.map +1 -1
  373. package/dist/esm/Either.js.map +1 -1
  374. package/dist/esm/Equivalence.js.map +1 -1
  375. package/dist/esm/ExecutionStrategy.js.map +1 -1
  376. package/dist/esm/Exit.js.map +1 -1
  377. package/dist/esm/Fiber.js.map +1 -1
  378. package/dist/esm/FiberHandle.js.map +1 -1
  379. package/dist/esm/FiberId.js.map +1 -1
  380. package/dist/esm/FiberMap.js.map +1 -1
  381. package/dist/esm/FiberRef.js.map +1 -1
  382. package/dist/esm/FiberRefs.js.map +1 -1
  383. package/dist/esm/FiberRefsPatch.js.map +1 -1
  384. package/dist/esm/FiberSet.js.map +1 -1
  385. package/dist/esm/Function.js.map +1 -1
  386. package/dist/esm/GroupBy.js.map +1 -1
  387. package/dist/esm/Hash.js.map +1 -1
  388. package/dist/esm/HashMap.js.map +1 -1
  389. package/dist/esm/HashSet.js.map +1 -1
  390. package/dist/esm/Iterable.js.map +1 -1
  391. package/dist/esm/KeyedPool.js.map +1 -1
  392. package/dist/esm/Layer.js.map +1 -1
  393. package/dist/esm/List.js.map +1 -1
  394. package/dist/esm/LogLevel.js.map +1 -1
  395. package/dist/esm/Logger.js.map +1 -1
  396. package/dist/esm/Mailbox.js.map +1 -1
  397. package/dist/esm/MergeDecision.js.map +1 -1
  398. package/dist/esm/MergeState.js.map +1 -1
  399. package/dist/esm/MergeStrategy.js.map +1 -1
  400. package/dist/esm/Metric.js.map +1 -1
  401. package/dist/esm/MetricHook.js.map +1 -1
  402. package/dist/esm/MetricKey.js.map +1 -1
  403. package/dist/esm/MetricPolling.js.map +1 -1
  404. package/dist/esm/MetricState.js.map +1 -1
  405. package/dist/esm/Micro.js.map +1 -1
  406. package/dist/esm/MutableHashMap.js.map +1 -1
  407. package/dist/esm/MutableHashSet.js.map +1 -1
  408. package/dist/esm/MutableList.js.map +1 -1
  409. package/dist/esm/MutableQueue.js.map +1 -1
  410. package/dist/esm/MutableRef.js.map +1 -1
  411. package/dist/esm/Number.js.map +1 -1
  412. package/dist/esm/Option.js.map +1 -1
  413. package/dist/esm/Order.js.map +1 -1
  414. package/dist/esm/Ordering.js.map +1 -1
  415. package/dist/esm/Pipeable.js.map +1 -1
  416. package/dist/esm/Pool.js.map +1 -1
  417. package/dist/esm/Predicate.js.map +1 -1
  418. package/dist/esm/PubSub.js.map +1 -1
  419. package/dist/esm/Queue.js.map +1 -1
  420. package/dist/esm/RcMap.js.map +1 -1
  421. package/dist/esm/Readable.js.map +1 -1
  422. package/dist/esm/Record.js.map +1 -1
  423. package/dist/esm/RedBlackTree.js.map +1 -1
  424. package/dist/esm/Ref.js.map +1 -1
  425. package/dist/esm/Request.js.map +1 -1
  426. package/dist/esm/RequestResolver.js.map +1 -1
  427. package/dist/esm/Runtime.js.map +1 -1
  428. package/dist/esm/RuntimeFlags.js.map +1 -1
  429. package/dist/esm/RuntimeFlagsPatch.js.map +1 -1
  430. package/dist/esm/STM.js.map +1 -1
  431. package/dist/esm/Schedule.js.map +1 -1
  432. package/dist/esm/ScheduleInterval.js.map +1 -1
  433. package/dist/esm/ScheduleIntervals.js.map +1 -1
  434. package/dist/esm/Scheduler.js.map +1 -1
  435. package/dist/esm/Scope.js.map +1 -1
  436. package/dist/esm/ScopedRef.js.map +1 -1
  437. package/dist/esm/Sink.js.map +1 -1
  438. package/dist/esm/SortedMap.js.map +1 -1
  439. package/dist/esm/SortedSet.js.map +1 -1
  440. package/dist/esm/Stream.js +14 -0
  441. package/dist/esm/Stream.js.map +1 -1
  442. package/dist/esm/StreamHaltStrategy.js.map +1 -1
  443. package/dist/esm/String.js.map +1 -1
  444. package/dist/esm/Struct.js.map +1 -1
  445. package/dist/esm/Subscribable.js.map +1 -1
  446. package/dist/esm/SubscriptionRef.js.map +1 -1
  447. package/dist/esm/SynchronizedRef.js.map +1 -1
  448. package/dist/esm/TArray.js.map +1 -1
  449. package/dist/esm/TDeferred.js.map +1 -1
  450. package/dist/esm/TMap.js.map +1 -1
  451. package/dist/esm/TPriorityQueue.js.map +1 -1
  452. package/dist/esm/TPubSub.js.map +1 -1
  453. package/dist/esm/TQueue.js.map +1 -1
  454. package/dist/esm/TReentrantLock.js.map +1 -1
  455. package/dist/esm/TRef.js.map +1 -1
  456. package/dist/esm/TSemaphore.js.map +1 -1
  457. package/dist/esm/TSet.js.map +1 -1
  458. package/dist/esm/Take.js.map +1 -1
  459. package/dist/esm/TestAnnotationMap.js.map +1 -1
  460. package/dist/esm/TestClock.js.map +1 -1
  461. package/dist/esm/TestServices.js.map +1 -1
  462. package/dist/esm/Trie.js.map +1 -1
  463. package/dist/esm/Tuple.js.map +1 -1
  464. package/dist/esm/Unify.js.map +1 -1
  465. package/dist/esm/UpstreamPullRequest.js.map +1 -1
  466. package/dist/esm/UpstreamPullStrategy.js.map +1 -1
  467. package/dist/esm/Utils.js +1 -14
  468. package/dist/esm/Utils.js.map +1 -1
  469. package/dist/esm/internal/core.js +1 -1
  470. package/dist/esm/internal/core.js.map +1 -1
  471. package/dist/esm/internal/runtime.js +1 -1
  472. package/dist/esm/internal/runtime.js.map +1 -1
  473. package/dist/esm/internal/stream.js +9 -0
  474. package/dist/esm/internal/stream.js.map +1 -1
  475. package/dist/esm/internal/version.js +1 -1
  476. package/package.json +1 -1
  477. package/src/Array.ts +2723 -36
  478. package/src/BigDecimal.ts +585 -18
  479. package/src/BigInt.ts +516 -16
  480. package/src/Boolean.ts +241 -8
  481. package/src/Cause.ts +177 -1
  482. package/src/Channel.ts +766 -49
  483. package/src/ChildExecutorDecision.ts +12 -0
  484. package/src/Chunk.ts +818 -4
  485. package/src/Config.ts +187 -8
  486. package/src/ConfigError.ts +16 -0
  487. package/src/ConfigProvider.ts +89 -1
  488. package/src/ConfigProviderPathPatch.ts +32 -0
  489. package/src/Console.ts +37 -8
  490. package/src/Context.ts +232 -0
  491. package/src/Cron.ts +12 -0
  492. package/src/Data.ts +165 -0
  493. package/src/DateTime.ts +1006 -50
  494. package/src/Deferred.ts +170 -0
  495. package/src/Differ.ts +89 -27
  496. package/src/Duration.ts +156 -16
  497. package/src/Effect.ts +4297 -123
  498. package/src/Either.ts +650 -34
  499. package/src/Equivalence.ts +24 -0
  500. package/src/ExecutionStrategy.ts +29 -10
  501. package/src/Exit.ts +252 -0
  502. package/src/Fiber.ts +182 -0
  503. package/src/FiberHandle.ts +42 -0
  504. package/src/FiberId.ts +24 -0
  505. package/src/FiberMap.ts +144 -21
  506. package/src/FiberRef.ts +80 -0
  507. package/src/FiberRefs.ts +84 -0
  508. package/src/FiberRefsPatch.ts +35 -1
  509. package/src/FiberSet.ts +38 -0
  510. package/src/Function.ts +416 -31
  511. package/src/GroupBy.ts +38 -0
  512. package/src/Hash.ts +8 -0
  513. package/src/HashMap.ts +300 -0
  514. package/src/HashSet.ts +284 -0
  515. package/src/Iterable.ts +456 -6
  516. package/src/KeyedPool.ts +34 -0
  517. package/src/Layer.ts +426 -30
  518. package/src/List.ts +476 -3
  519. package/src/LogLevel.ts +46 -0
  520. package/src/Logger.ts +195 -4
  521. package/src/Mailbox.ts +16 -0
  522. package/src/MergeDecision.ts +8 -0
  523. package/src/MergeState.ts +8 -0
  524. package/src/MergeStrategy.ts +25 -8
  525. package/src/Metric.ts +426 -15
  526. package/src/MetricHook.ts +24 -0
  527. package/src/MetricKey.ts +62 -8
  528. package/src/MetricPolling.ts +42 -6
  529. package/src/MetricState.ts +16 -0
  530. package/src/Micro.ts +1212 -56
  531. package/src/MutableHashMap.ts +105 -1
  532. package/src/MutableHashSet.ts +24 -0
  533. package/src/MutableList.ts +36 -0
  534. package/src/MutableQueue.ts +62 -0
  535. package/src/MutableRef.ts +56 -0
  536. package/src/Number.ts +500 -16
  537. package/src/Option.ts +1042 -16
  538. package/src/Order.ts +24 -0
  539. package/src/Ordering.ts +66 -0
  540. package/src/Pipeable.ts +224 -21
  541. package/src/Pool.ts +16 -0
  542. package/src/Predicate.ts +498 -0
  543. package/src/PubSub.ts +28 -0
  544. package/src/Queue.ts +104 -0
  545. package/src/RcMap.ts +70 -0
  546. package/src/Readable.ts +18 -7
  547. package/src/Record.ts +814 -40
  548. package/src/RedBlackTree.ts +305 -1
  549. package/src/Ref.ts +88 -0
  550. package/src/Request.ts +76 -0
  551. package/src/RequestResolver.ts +145 -4
  552. package/src/Runtime.ts +134 -2
  553. package/src/RuntimeFlags.ts +100 -0
  554. package/src/RuntimeFlagsPatch.ts +112 -0
  555. package/src/STM.ts +1107 -11
  556. package/src/Schedule.ts +704 -0
  557. package/src/ScheduleInterval.ts +68 -0
  558. package/src/ScheduleIntervals.ts +50 -0
  559. package/src/Scheduler.ts +2 -0
  560. package/src/Scope.ts +36 -0
  561. package/src/ScopedRef.ts +22 -0
  562. package/src/Sink.ts +464 -0
  563. package/src/SortedMap.ts +76 -0
  564. package/src/SortedSet.ts +143 -3
  565. package/src/Stream.ts +5041 -54
  566. package/src/StreamHaltStrategy.ts +29 -12
  567. package/src/String.ts +200 -0
  568. package/src/Struct.ts +86 -7
  569. package/src/Subscribable.ts +16 -0
  570. package/src/SubscriptionRef.ts +159 -11
  571. package/src/SynchronizedRef.ts +169 -8
  572. package/src/TArray.ts +431 -1
  573. package/src/TDeferred.ts +24 -0
  574. package/src/TMap.ts +381 -12
  575. package/src/TPriorityQueue.ts +60 -0
  576. package/src/TPubSub.ts +28 -0
  577. package/src/TQueue.ts +108 -0
  578. package/src/TReentrantLock.ts +36 -0
  579. package/src/TRef.ts +88 -0
  580. package/src/TSemaphore.ts +40 -0
  581. package/src/TSet.ts +280 -12
  582. package/src/Take.ts +56 -0
  583. package/src/TestAnnotationMap.ts +45 -1
  584. package/src/TestClock.ts +6 -0
  585. package/src/TestServices.ts +66 -0
  586. package/src/Trie.ts +906 -0
  587. package/src/Tuple.ts +157 -8
  588. package/src/Unify.ts +19 -3
  589. package/src/UpstreamPullRequest.ts +12 -0
  590. package/src/UpstreamPullStrategy.ts +12 -0
  591. package/src/Utils.ts +1 -15
  592. package/src/internal/core.ts +1 -1
  593. package/src/internal/runtime.ts +1 -1
  594. package/src/internal/stream.ts +27 -0
  595. package/src/internal/version.ts +1 -1
package/src/DateTime.ts CHANGED
@@ -394,7 +394,13 @@ export const Order: order.Order<DateTime> = order.make((self, that) =>
394
394
  * @since 3.6.0
395
395
  */
396
396
  export const clamp: {
397
+ /**
398
+ * @since 3.6.0
399
+ */
397
400
  (options: { minimum: DateTime; maximum: DateTime }): (self: DateTime) => DateTime
401
+ /**
402
+ * @since 3.6.0
403
+ */
398
404
  (self: DateTime, options: { minimum: DateTime; maximum: DateTime }): DateTime
399
405
  } = order.clamp(Order)
400
406
 
@@ -611,12 +617,59 @@ export const unsafeNow: LazyArg<Utc> = () => makeUtc(Date.now())
611
617
  * })
612
618
  */
613
619
  export const setZone: {
614
- (zone: TimeZone, options?: {
615
- readonly adjustForTimeZone?: boolean | undefined
616
- }): (self: DateTime) => Zoned
617
- (self: DateTime, zone: TimeZone, options?: {
618
- readonly adjustForTimeZone?: boolean | undefined
619
- }): Zoned
620
+ // =============================================================================
621
+ // time zones
622
+ // =============================================================================
623
+
624
+ /**
625
+ * Set the time zone of a `DateTime`, returning a new `DateTime.Zoned`.
626
+ *
627
+ * @since 3.6.0
628
+ * @category time zones
629
+ * @example
630
+ * import { DateTime, Effect } from "effect"
631
+ *
632
+ * Effect.gen(function* () {
633
+ * const now = yield* DateTime.now
634
+ * const zone = DateTime.zoneUnsafeMakeNamed("Europe/London")
635
+ *
636
+ * // set the time zone
637
+ * const zoned: DateTime.Zoned = DateTime.setZone(now, zone)
638
+ * })
639
+ */
640
+ (
641
+ zone: TimeZone,
642
+ options?: {
643
+ readonly adjustForTimeZone?: boolean | undefined
644
+ }
645
+ ): (self: DateTime) => Zoned
646
+ // =============================================================================
647
+ // time zones
648
+ // =============================================================================
649
+
650
+ /**
651
+ * Set the time zone of a `DateTime`, returning a new `DateTime.Zoned`.
652
+ *
653
+ * @since 3.6.0
654
+ * @category time zones
655
+ * @example
656
+ * import { DateTime, Effect } from "effect"
657
+ *
658
+ * Effect.gen(function* () {
659
+ * const now = yield* DateTime.now
660
+ * const zone = DateTime.zoneUnsafeMakeNamed("Europe/London")
661
+ *
662
+ * // set the time zone
663
+ * const zoned: DateTime.Zoned = DateTime.setZone(now, zone)
664
+ * })
665
+ */
666
+ (
667
+ self: DateTime,
668
+ zone: TimeZone,
669
+ options?: {
670
+ readonly adjustForTimeZone?: boolean | undefined
671
+ }
672
+ ): Zoned
620
673
  } = dual(isDateTimeArgs, (self: DateTime, zone: TimeZone, options?: {
621
674
  readonly adjustForTimeZone?: boolean | undefined
622
675
  }): Zoned =>
@@ -642,12 +695,53 @@ export const setZone: {
642
695
  * })
643
696
  */
644
697
  export const setZoneOffset: {
645
- (offset: number, options?: {
646
- readonly adjustForTimeZone?: boolean | undefined
647
- }): (self: DateTime) => Zoned
648
- (self: DateTime, offset: number, options?: {
649
- readonly adjustForTimeZone?: boolean | undefined
650
- }): Zoned
698
+ /**
699
+ * Add a fixed offset time zone to a `DateTime`.
700
+ *
701
+ * The offset is in milliseconds.
702
+ *
703
+ * @since 3.6.0
704
+ * @category time zones
705
+ * @example
706
+ * import { DateTime, Effect } from "effect"
707
+ *
708
+ * Effect.gen(function* () {
709
+ * const now = yield* DateTime.now
710
+ *
711
+ * // set the offset time zone in milliseconds
712
+ * const zoned: DateTime.Zoned = DateTime.setZoneOffset(now, 3 * 60 * 60 * 1000)
713
+ * })
714
+ */
715
+ (
716
+ offset: number,
717
+ options?: {
718
+ readonly adjustForTimeZone?: boolean | undefined
719
+ }
720
+ ): (self: DateTime) => Zoned
721
+ /**
722
+ * Add a fixed offset time zone to a `DateTime`.
723
+ *
724
+ * The offset is in milliseconds.
725
+ *
726
+ * @since 3.6.0
727
+ * @category time zones
728
+ * @example
729
+ * import { DateTime, Effect } from "effect"
730
+ *
731
+ * Effect.gen(function* () {
732
+ * const now = yield* DateTime.now
733
+ *
734
+ * // set the offset time zone in milliseconds
735
+ * const zoned: DateTime.Zoned = DateTime.setZoneOffset(now, 3 * 60 * 60 * 1000)
736
+ * })
737
+ */
738
+ (
739
+ self: DateTime,
740
+ offset: number,
741
+ options?: {
742
+ readonly adjustForTimeZone?: boolean | undefined
743
+ }
744
+ ): Zoned
651
745
  } = dual(isDateTimeArgs, (self: DateTime, offset: number, options?: {
652
746
  readonly adjustForTimeZone?: boolean | undefined
653
747
  }): Zoned => setZone(self, zoneMakeOffset(offset), options))
@@ -799,12 +893,49 @@ export const zoneToString = (self: TimeZone): string => {
799
893
  * })
800
894
  */
801
895
  export const setZoneNamed: {
802
- (zoneId: string, options?: {
803
- readonly adjustForTimeZone?: boolean | undefined
804
- }): (self: DateTime) => Option.Option<Zoned>
805
- (self: DateTime, zoneId: string, options?: {
806
- readonly adjustForTimeZone?: boolean | undefined
807
- }): Option.Option<Zoned>
896
+ /**
897
+ * Set the time zone of a `DateTime` from an IANA time zone identifier. If the
898
+ * time zone is invalid, `None` will be returned.
899
+ *
900
+ * @since 3.6.0
901
+ * @category time zones
902
+ * @example
903
+ * import { DateTime, Effect } from "effect"
904
+ *
905
+ * Effect.gen(function* () {
906
+ * const now = yield* DateTime.now
907
+ * // set the time zone, returns an Option
908
+ * DateTime.setZoneNamed(now, "Europe/London")
909
+ * })
910
+ */
911
+ (
912
+ zoneId: string,
913
+ options?: {
914
+ readonly adjustForTimeZone?: boolean | undefined
915
+ }
916
+ ): (self: DateTime) => Option.Option<Zoned>
917
+ /**
918
+ * Set the time zone of a `DateTime` from an IANA time zone identifier. If the
919
+ * time zone is invalid, `None` will be returned.
920
+ *
921
+ * @since 3.6.0
922
+ * @category time zones
923
+ * @example
924
+ * import { DateTime, Effect } from "effect"
925
+ *
926
+ * Effect.gen(function* () {
927
+ * const now = yield* DateTime.now
928
+ * // set the time zone, returns an Option
929
+ * DateTime.setZoneNamed(now, "Europe/London")
930
+ * })
931
+ */
932
+ (
933
+ self: DateTime,
934
+ zoneId: string,
935
+ options?: {
936
+ readonly adjustForTimeZone?: boolean | undefined
937
+ }
938
+ ): Option.Option<Zoned>
808
939
  } = dual(
809
940
  isDateTimeArgs,
810
941
  (self: DateTime, zoneId: string, options?: {
@@ -828,12 +959,49 @@ export const setZoneNamed: {
828
959
  * })
829
960
  */
830
961
  export const unsafeSetZoneNamed: {
831
- (zoneId: string, options?: {
832
- readonly adjustForTimeZone?: boolean | undefined
833
- }): (self: DateTime) => Zoned
834
- (self: DateTime, zoneId: string, options?: {
835
- readonly adjustForTimeZone?: boolean | undefined
836
- }): Zoned
962
+ /**
963
+ * Set the time zone of a `DateTime` from an IANA time zone identifier. If the
964
+ * time zone is invalid, an `IllegalArgumentException` will be thrown.
965
+ *
966
+ * @since 3.6.0
967
+ * @category time zones
968
+ * @example
969
+ * import { DateTime, Effect } from "effect"
970
+ *
971
+ * Effect.gen(function* () {
972
+ * const now = yield* DateTime.now
973
+ * // set the time zone
974
+ * DateTime.unsafeSetZoneNamed(now, "Europe/London")
975
+ * })
976
+ */
977
+ (
978
+ zoneId: string,
979
+ options?: {
980
+ readonly adjustForTimeZone?: boolean | undefined
981
+ }
982
+ ): (self: DateTime) => Zoned
983
+ /**
984
+ * Set the time zone of a `DateTime` from an IANA time zone identifier. If the
985
+ * time zone is invalid, an `IllegalArgumentException` will be thrown.
986
+ *
987
+ * @since 3.6.0
988
+ * @category time zones
989
+ * @example
990
+ * import { DateTime, Effect } from "effect"
991
+ *
992
+ * Effect.gen(function* () {
993
+ * const now = yield* DateTime.now
994
+ * // set the time zone
995
+ * DateTime.unsafeSetZoneNamed(now, "Europe/London")
996
+ * })
997
+ */
998
+ (
999
+ self: DateTime,
1000
+ zoneId: string,
1001
+ options?: {
1002
+ readonly adjustForTimeZone?: boolean | undefined
1003
+ }
1004
+ ): Zoned
837
1005
  } = dual(isDateTimeArgs, (self: DateTime, zoneId: string, options?: {
838
1006
  readonly adjustForTimeZone?: boolean | undefined
839
1007
  }): Zoned => setZone(self, zoneUnsafeMakeNamed(zoneId), options))
@@ -862,7 +1030,53 @@ export const unsafeSetZoneNamed: {
862
1030
  * })
863
1031
  */
864
1032
  export const distance: {
1033
+ // =============================================================================
1034
+ // comparisons
1035
+ // =============================================================================
1036
+
1037
+ /**
1038
+ * Calulate the difference between two `DateTime` values, returning the number
1039
+ * of milliseconds the `other` DateTime is from `self`.
1040
+ *
1041
+ * If `other` is *after* `self`, the result will be a positive number.
1042
+ *
1043
+ * @since 3.6.0
1044
+ * @category comparisons
1045
+ * @example
1046
+ * import { DateTime, Effect } from "effect"
1047
+ *
1048
+ * Effect.gen(function* () {
1049
+ * const now = yield* DateTime.now
1050
+ * const other = DateTime.add(now, { minutes: 1 })
1051
+ *
1052
+ * // returns 60000
1053
+ * DateTime.distance(now, other)
1054
+ * })
1055
+ */
865
1056
  (other: DateTime): (self: DateTime) => number
1057
+ // =============================================================================
1058
+ // comparisons
1059
+ // =============================================================================
1060
+
1061
+ /**
1062
+ * Calulate the difference between two `DateTime` values, returning the number
1063
+ * of milliseconds the `other` DateTime is from `self`.
1064
+ *
1065
+ * If `other` is *after* `self`, the result will be a positive number.
1066
+ *
1067
+ * @since 3.6.0
1068
+ * @category comparisons
1069
+ * @example
1070
+ * import { DateTime, Effect } from "effect"
1071
+ *
1072
+ * Effect.gen(function* () {
1073
+ * const now = yield* DateTime.now
1074
+ * const other = DateTime.add(now, { minutes: 1 })
1075
+ *
1076
+ * // returns 60000
1077
+ * DateTime.distance(now, other)
1078
+ * })
1079
+ */
866
1080
  (self: DateTime, other: DateTime): number
867
1081
  } = dual(2, (self: DateTime, other: DateTime): number => toEpochMillis(other) - toEpochMillis(self))
868
1082
 
@@ -892,7 +1106,57 @@ export const distance: {
892
1106
  * })
893
1107
  */
894
1108
  export const distanceDurationEither: {
1109
+ /**
1110
+ * Calulate the difference between two `DateTime` values.
1111
+ *
1112
+ * If the `other` DateTime is before `self`, the result will be a negative
1113
+ * `Duration`, returned as a `Left`.
1114
+ *
1115
+ * If the `other` DateTime is after `self`, the result will be a positive
1116
+ * `Duration`, returned as a `Right`.
1117
+ *
1118
+ * @since 3.6.0
1119
+ * @category comparisons
1120
+ * @example
1121
+ * import { DateTime, Effect } from "effect"
1122
+ *
1123
+ * Effect.gen(function* () {
1124
+ * const now = yield* DateTime.now
1125
+ * const other = DateTime.add(now, { minutes: 1 })
1126
+ *
1127
+ * // returns Either.right(Duration.minutes(1))
1128
+ * DateTime.distanceDurationEither(now, other)
1129
+ *
1130
+ * // returns Either.left(Duration.minutes(1))
1131
+ * DateTime.distanceDurationEither(other, now)
1132
+ * })
1133
+ */
895
1134
  (other: DateTime): (self: DateTime) => Either.Either<Duration.Duration, Duration.Duration>
1135
+ /**
1136
+ * Calulate the difference between two `DateTime` values.
1137
+ *
1138
+ * If the `other` DateTime is before `self`, the result will be a negative
1139
+ * `Duration`, returned as a `Left`.
1140
+ *
1141
+ * If the `other` DateTime is after `self`, the result will be a positive
1142
+ * `Duration`, returned as a `Right`.
1143
+ *
1144
+ * @since 3.6.0
1145
+ * @category comparisons
1146
+ * @example
1147
+ * import { DateTime, Effect } from "effect"
1148
+ *
1149
+ * Effect.gen(function* () {
1150
+ * const now = yield* DateTime.now
1151
+ * const other = DateTime.add(now, { minutes: 1 })
1152
+ *
1153
+ * // returns Either.right(Duration.minutes(1))
1154
+ * DateTime.distanceDurationEither(now, other)
1155
+ *
1156
+ * // returns Either.left(Duration.minutes(1))
1157
+ * DateTime.distanceDurationEither(other, now)
1158
+ * })
1159
+ */
896
1160
  (self: DateTime, other: DateTime): Either.Either<Duration.Duration, Duration.Duration>
897
1161
  } = dual(2, (self: DateTime, other: DateTime): Either.Either<Duration.Duration, Duration.Duration> => {
898
1162
  const diffMillis = distance(self, other)
@@ -918,7 +1182,39 @@ export const distanceDurationEither: {
918
1182
  * })
919
1183
  */
920
1184
  export const distanceDuration: {
1185
+ /**
1186
+ * Calulate the distance between two `DateTime` values.
1187
+ *
1188
+ * @since 3.6.0
1189
+ * @category comparisons
1190
+ * @example
1191
+ * import { DateTime, Effect } from "effect"
1192
+ *
1193
+ * Effect.gen(function* () {
1194
+ * const now = yield* DateTime.now
1195
+ * const other = DateTime.add(now, { minutes: 1 })
1196
+ *
1197
+ * // returns Duration.minutes(1)
1198
+ * DateTime.distanceDuration(now, other)
1199
+ * })
1200
+ */
921
1201
  (other: DateTime): (self: DateTime) => Duration.Duration
1202
+ /**
1203
+ * Calulate the distance between two `DateTime` values.
1204
+ *
1205
+ * @since 3.6.0
1206
+ * @category comparisons
1207
+ * @example
1208
+ * import { DateTime, Effect } from "effect"
1209
+ *
1210
+ * Effect.gen(function* () {
1211
+ * const now = yield* DateTime.now
1212
+ * const other = DateTime.add(now, { minutes: 1 })
1213
+ *
1214
+ * // returns Duration.minutes(1)
1215
+ * DateTime.distanceDuration(now, other)
1216
+ * })
1217
+ */
922
1218
  (self: DateTime, other: DateTime): Duration.Duration
923
1219
  } = dual(
924
1220
  2,
@@ -930,7 +1226,15 @@ export const distanceDuration: {
930
1226
  * @category comparisons
931
1227
  */
932
1228
  export const min: {
1229
+ /**
1230
+ * @since 3.6.0
1231
+ * @category comparisons
1232
+ */
933
1233
  (that: DateTime): (self: DateTime) => DateTime
1234
+ /**
1235
+ * @since 3.6.0
1236
+ * @category comparisons
1237
+ */
934
1238
  (self: DateTime, that: DateTime): DateTime
935
1239
  } = order.min(Order)
936
1240
 
@@ -939,7 +1243,15 @@ export const min: {
939
1243
  * @category comparisons
940
1244
  */
941
1245
  export const max: {
1246
+ /**
1247
+ * @since 3.6.0
1248
+ * @category comparisons
1249
+ */
942
1250
  (that: DateTime): (self: DateTime) => DateTime
1251
+ /**
1252
+ * @since 3.6.0
1253
+ * @category comparisons
1254
+ */
943
1255
  (self: DateTime, that: DateTime): DateTime
944
1256
  } = order.max(Order)
945
1257
 
@@ -948,7 +1260,15 @@ export const max: {
948
1260
  * @category comparisons
949
1261
  */
950
1262
  export const greaterThan: {
1263
+ /**
1264
+ * @since 3.6.0
1265
+ * @category comparisons
1266
+ */
951
1267
  (that: DateTime): (self: DateTime) => boolean
1268
+ /**
1269
+ * @since 3.6.0
1270
+ * @category comparisons
1271
+ */
952
1272
  (self: DateTime, that: DateTime): boolean
953
1273
  } = order.greaterThan(Order)
954
1274
 
@@ -957,7 +1277,15 @@ export const greaterThan: {
957
1277
  * @category comparisons
958
1278
  */
959
1279
  export const greaterThanOrEqualTo: {
1280
+ /**
1281
+ * @since 3.6.0
1282
+ * @category comparisons
1283
+ */
960
1284
  (that: DateTime): (self: DateTime) => boolean
1285
+ /**
1286
+ * @since 3.6.0
1287
+ * @category comparisons
1288
+ */
961
1289
  (self: DateTime, that: DateTime): boolean
962
1290
  } = order.greaterThanOrEqualTo(Order)
963
1291
 
@@ -966,7 +1294,15 @@ export const greaterThanOrEqualTo: {
966
1294
  * @category comparisons
967
1295
  */
968
1296
  export const lessThan: {
1297
+ /**
1298
+ * @since 3.6.0
1299
+ * @category comparisons
1300
+ */
969
1301
  (that: DateTime): (self: DateTime) => boolean
1302
+ /**
1303
+ * @since 3.6.0
1304
+ * @category comparisons
1305
+ */
970
1306
  (self: DateTime, that: DateTime): boolean
971
1307
  } = order.lessThan(Order)
972
1308
 
@@ -975,7 +1311,15 @@ export const lessThan: {
975
1311
  * @category comparisons
976
1312
  */
977
1313
  export const lessThanOrEqualTo: {
1314
+ /**
1315
+ * @since 3.6.0
1316
+ * @category comparisons
1317
+ */
978
1318
  (that: DateTime): (self: DateTime) => boolean
1319
+ /**
1320
+ * @since 3.6.0
1321
+ * @category comparisons
1322
+ */
979
1323
  (self: DateTime, that: DateTime): boolean
980
1324
  } = order.lessThanOrEqualTo(Order)
981
1325
 
@@ -984,7 +1328,15 @@ export const lessThanOrEqualTo: {
984
1328
  * @category comparisons
985
1329
  */
986
1330
  export const between: {
1331
+ /**
1332
+ * @since 3.6.0
1333
+ * @category comparisons
1334
+ */
987
1335
  (options: { minimum: DateTime; maximum: DateTime }): (self: DateTime) => boolean
1336
+ /**
1337
+ * @since 3.6.0
1338
+ * @category comparisons
1339
+ */
988
1340
  (self: DateTime, options: { minimum: DateTime; maximum: DateTime }): boolean
989
1341
  } = order.between(Order)
990
1342
 
@@ -1179,7 +1531,35 @@ export const toPartsUtc = (self: DateTime): DateTime.PartsWithWeekday => {
1179
1531
  * assert.strictEqual(year, 2024)
1180
1532
  */
1181
1533
  export const getPartUtc: {
1534
+ /**
1535
+ * Get a part of a `DateTime` as a number.
1536
+ *
1537
+ * The part will be in the UTC time zone.
1538
+ *
1539
+ * @since 3.6.0
1540
+ * @category parts
1541
+ * @example
1542
+ * import { DateTime } from "effect"
1543
+ *
1544
+ * const now = DateTime.unsafeMake({ year: 2024 })
1545
+ * const year = DateTime.getPartUtc(now, "year")
1546
+ * assert.strictEqual(year, 2024)
1547
+ */
1182
1548
  (part: keyof DateTime.PartsWithWeekday): (self: DateTime) => number
1549
+ /**
1550
+ * Get a part of a `DateTime` as a number.
1551
+ *
1552
+ * The part will be in the UTC time zone.
1553
+ *
1554
+ * @since 3.6.0
1555
+ * @category parts
1556
+ * @example
1557
+ * import { DateTime } from "effect"
1558
+ *
1559
+ * const now = DateTime.unsafeMake({ year: 2024 })
1560
+ * const year = DateTime.getPartUtc(now, "year")
1561
+ * assert.strictEqual(year, 2024)
1562
+ */
1183
1563
  (self: DateTime, part: keyof DateTime.PartsWithWeekday): number
1184
1564
  } = dual(2, (self: DateTime, part: keyof DateTime.PartsWithWeekday): number => toPartsUtc(self)[part])
1185
1565
 
@@ -1198,7 +1578,35 @@ export const getPartUtc: {
1198
1578
  * assert.strictEqual(year, 2024)
1199
1579
  */
1200
1580
  export const getPart: {
1581
+ /**
1582
+ * Get a part of a `DateTime` as a number.
1583
+ *
1584
+ * The part will be time zone adjusted.
1585
+ *
1586
+ * @since 3.6.0
1587
+ * @category parts
1588
+ * @example
1589
+ * import { DateTime } from "effect"
1590
+ *
1591
+ * const now = DateTime.unsafeMakeZoned({ year: 2024 }, { timeZone: "Europe/London" })
1592
+ * const year = DateTime.getPart(now, "year")
1593
+ * assert.strictEqual(year, 2024)
1594
+ */
1201
1595
  (part: keyof DateTime.PartsWithWeekday): (self: DateTime) => number
1596
+ /**
1597
+ * Get a part of a `DateTime` as a number.
1598
+ *
1599
+ * The part will be time zone adjusted.
1600
+ *
1601
+ * @since 3.6.0
1602
+ * @category parts
1603
+ * @example
1604
+ * import { DateTime } from "effect"
1605
+ *
1606
+ * const now = DateTime.unsafeMakeZoned({ year: 2024 }, { timeZone: "Europe/London" })
1607
+ * const year = DateTime.getPart(now, "year")
1608
+ * assert.strictEqual(year, 2024)
1609
+ */
1202
1610
  (self: DateTime, part: keyof DateTime.PartsWithWeekday): number
1203
1611
  } = dual(2, (self: DateTime, part: keyof DateTime.PartsWithWeekday): number => toParts(self)[part])
1204
1612
 
@@ -1239,7 +1647,23 @@ const setPartsDate = (date: Date, parts: Partial<DateTime.PartsWithWeekday>): vo
1239
1647
  * @category parts
1240
1648
  */
1241
1649
  export const setParts: {
1650
+ /**
1651
+ * Set the different parts of a `DateTime` as an object.
1652
+ *
1653
+ * The Date will be time zone adjusted.
1654
+ *
1655
+ * @since 3.6.0
1656
+ * @category parts
1657
+ */
1242
1658
  (parts: Partial<DateTime.PartsWithWeekday>): <A extends DateTime>(self: A) => DateTime.PreserveZone<A>
1659
+ /**
1660
+ * Set the different parts of a `DateTime` as an object.
1661
+ *
1662
+ * The Date will be time zone adjusted.
1663
+ *
1664
+ * @since 3.6.0
1665
+ * @category parts
1666
+ */
1243
1667
  <A extends DateTime>(self: A, parts: Partial<DateTime.PartsWithWeekday>): DateTime.PreserveZone<A>
1244
1668
  } = dual(
1245
1669
  2,
@@ -1254,7 +1678,19 @@ export const setParts: {
1254
1678
  * @category parts
1255
1679
  */
1256
1680
  export const setPartsUtc: {
1681
+ /**
1682
+ * Set the different parts of a `DateTime` as an object.
1683
+ *
1684
+ * @since 3.6.0
1685
+ * @category parts
1686
+ */
1257
1687
  (parts: Partial<DateTime.PartsWithWeekday>): <A extends DateTime>(self: A) => DateTime.PreserveZone<A>
1688
+ /**
1689
+ * Set the different parts of a `DateTime` as an object.
1690
+ *
1691
+ * @since 3.6.0
1692
+ * @category parts
1693
+ */
1258
1694
  <A extends DateTime>(self: A, parts: Partial<DateTime.PartsWithWeekday>): DateTime.PreserveZone<A>
1259
1695
  } = dual(
1260
1696
  2,
@@ -1309,7 +1745,35 @@ export const setZoneCurrent = (self: DateTime): Effect.Effect<Zoned, never, Curr
1309
1745
  * }).pipe(DateTime.withCurrentZone(zone))
1310
1746
  */
1311
1747
  export const withCurrentZone: {
1748
+ /**
1749
+ * Provide the `CurrentTimeZone` to an effect.
1750
+ *
1751
+ * @since 3.6.0
1752
+ * @category current time zone
1753
+ * @example
1754
+ * import { DateTime, Effect } from "effect"
1755
+ *
1756
+ * const zone = DateTime.zoneUnsafeMakeNamed("Europe/London")
1757
+ *
1758
+ * Effect.gen(function* () {
1759
+ * const now = yield* DateTime.nowInCurrentZone
1760
+ * }).pipe(DateTime.withCurrentZone(zone))
1761
+ */
1312
1762
  (zone: TimeZone): <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, CurrentTimeZone>>
1763
+ /**
1764
+ * Provide the `CurrentTimeZone` to an effect.
1765
+ *
1766
+ * @since 3.6.0
1767
+ * @category current time zone
1768
+ * @example
1769
+ * import { DateTime, Effect } from "effect"
1770
+ *
1771
+ * const zone = DateTime.zoneUnsafeMakeNamed("Europe/London")
1772
+ *
1773
+ * Effect.gen(function* () {
1774
+ * const now = yield* DateTime.nowInCurrentZone
1775
+ * }).pipe(DateTime.withCurrentZone(zone))
1776
+ */
1313
1777
  <A, E, R>(effect: Effect.Effect<A, E, R>, zone: TimeZone): Effect.Effect<A, E, Exclude<R, CurrentTimeZone>>
1314
1778
  } = dual(
1315
1779
  2,
@@ -1350,9 +1814,35 @@ export const withCurrentZoneLocal = <A, E, R>(
1350
1814
  * }).pipe(DateTime.withCurrentZoneOffset(3 * 60 * 60 * 1000))
1351
1815
  */
1352
1816
  export const withCurrentZoneOffset: {
1817
+ /**
1818
+ * Provide the `CurrentTimeZone` to an effect, using a offset.
1819
+ *
1820
+ * @since 3.6.0
1821
+ * @category current time zone
1822
+ * @example
1823
+ * import { DateTime, Effect } from "effect"
1824
+ *
1825
+ * Effect.gen(function* () {
1826
+ * // will use the system's local time zone
1827
+ * const now = yield* DateTime.nowInCurrentZone
1828
+ * }).pipe(DateTime.withCurrentZoneOffset(3 * 60 * 60 * 1000))
1829
+ */
1353
1830
  (offset: number): <A, E, R>(
1354
1831
  effect: Effect.Effect<A, E, R>
1355
1832
  ) => Effect.Effect<A, E, Exclude<R, CurrentTimeZone>>
1833
+ /**
1834
+ * Provide the `CurrentTimeZone` to an effect, using a offset.
1835
+ *
1836
+ * @since 3.6.0
1837
+ * @category current time zone
1838
+ * @example
1839
+ * import { DateTime, Effect } from "effect"
1840
+ *
1841
+ * Effect.gen(function* () {
1842
+ * // will use the system's local time zone
1843
+ * const now = yield* DateTime.nowInCurrentZone
1844
+ * }).pipe(DateTime.withCurrentZoneOffset(3 * 60 * 60 * 1000))
1845
+ */
1356
1846
  <A, E, R>(effect: Effect.Effect<A, E, R>, offset: number): Effect.Effect<A, E, Exclude<R, CurrentTimeZone>>
1357
1847
  } = dual(
1358
1848
  2,
@@ -1377,9 +1867,41 @@ export const withCurrentZoneOffset: {
1377
1867
  * }).pipe(DateTime.withCurrentZoneNamed("Europe/London"))
1378
1868
  */
1379
1869
  export const withCurrentZoneNamed: {
1870
+ /**
1871
+ * Provide the `CurrentTimeZone` to an effect using an IANA time zone
1872
+ * identifier.
1873
+ *
1874
+ * If the time zone is invalid, it will fail with an `IllegalArgumentException`.
1875
+ *
1876
+ * @since 3.6.0
1877
+ * @category current time zone
1878
+ * @example
1879
+ * import { DateTime, Effect } from "effect"
1880
+ *
1881
+ * Effect.gen(function* () {
1882
+ * // will use the "Europe/London" time zone
1883
+ * const now = yield* DateTime.nowInCurrentZone
1884
+ * }).pipe(DateTime.withCurrentZoneNamed("Europe/London"))
1885
+ */
1380
1886
  (zone: string): <A, E, R>(
1381
1887
  effect: Effect.Effect<A, E, R>
1382
1888
  ) => Effect.Effect<A, E | IllegalArgumentException, Exclude<R, CurrentTimeZone>>
1889
+ /**
1890
+ * Provide the `CurrentTimeZone` to an effect using an IANA time zone
1891
+ * identifier.
1892
+ *
1893
+ * If the time zone is invalid, it will fail with an `IllegalArgumentException`.
1894
+ *
1895
+ * @since 3.6.0
1896
+ * @category current time zone
1897
+ * @example
1898
+ * import { DateTime, Effect } from "effect"
1899
+ *
1900
+ * Effect.gen(function* () {
1901
+ * // will use the "Europe/London" time zone
1902
+ * const now = yield* DateTime.nowInCurrentZone
1903
+ * }).pipe(DateTime.withCurrentZoneNamed("Europe/London"))
1904
+ */
1383
1905
  <A, E, R>(
1384
1906
  effect: Effect.Effect<A, E, R>,
1385
1907
  zone: string
@@ -1490,7 +2012,25 @@ const calculateNamedOffset = (adjustedMillis: number, zone: TimeZone.Named): num
1490
2012
  * @category mapping
1491
2013
  */
1492
2014
  export const mutate: {
2015
+ /**
2016
+ * Modify a `DateTime` by applying a function to a cloned `Date` instance.
2017
+ *
2018
+ * The `Date` will first have the time zone applied if possible, and then be
2019
+ * converted back to a `DateTime` within the same time zone.
2020
+ *
2021
+ * @since 3.6.0
2022
+ * @category mapping
2023
+ */
1493
2024
  (f: (date: Date) => void): <A extends DateTime>(self: A) => DateTime.PreserveZone<A>
2025
+ /**
2026
+ * Modify a `DateTime` by applying a function to a cloned `Date` instance.
2027
+ *
2028
+ * The `Date` will first have the time zone applied if possible, and then be
2029
+ * converted back to a `DateTime` within the same time zone.
2030
+ *
2031
+ * @since 3.6.0
2032
+ * @category mapping
2033
+ */
1494
2034
  <A extends DateTime>(self: A, f: (date: Date) => void): DateTime.PreserveZone<A>
1495
2035
  } = dual(2, (self: DateTime, f: (date: Date) => void): DateTime => {
1496
2036
  if (self._tag === "Utc") {
@@ -1511,7 +2051,19 @@ export const mutate: {
1511
2051
  * @category mapping
1512
2052
  */
1513
2053
  export const mutateUtc: {
2054
+ /**
2055
+ * Modify a `DateTime` by applying a function to a cloned UTC `Date` instance.
2056
+ *
2057
+ * @since 3.6.0
2058
+ * @category mapping
2059
+ */
1514
2060
  (f: (date: Date) => void): <A extends DateTime>(self: A) => DateTime.PreserveZone<A>
2061
+ /**
2062
+ * Modify a `DateTime` by applying a function to a cloned UTC `Date` instance.
2063
+ *
2064
+ * @since 3.6.0
2065
+ * @category mapping
2066
+ */
1515
2067
  <A extends DateTime>(self: A, f: (date: Date) => void): DateTime.PreserveZone<A>
1516
2068
  } = dual(2, (self: DateTime, f: (date: Date) => void): DateTime =>
1517
2069
  mapEpochMillis(self, (millis) => {
@@ -1535,7 +2087,35 @@ export const mutateUtc: {
1535
2087
  * )
1536
2088
  */
1537
2089
  export const mapEpochMillis: {
2090
+ /**
2091
+ * Transform a `DateTime` by applying a function to the number of milliseconds
2092
+ * since the Unix epoch.
2093
+ *
2094
+ * @since 3.6.0
2095
+ * @category mapping
2096
+ * @example
2097
+ * import { DateTime } from "effect"
2098
+ *
2099
+ * // add 10 milliseconds
2100
+ * DateTime.unsafeMake(0).pipe(
2101
+ * DateTime.mapEpochMillis((millis) => millis + 10)
2102
+ * )
2103
+ */
1538
2104
  (f: (millis: number) => number): <A extends DateTime>(self: A) => DateTime.PreserveZone<A>
2105
+ /**
2106
+ * Transform a `DateTime` by applying a function to the number of milliseconds
2107
+ * since the Unix epoch.
2108
+ *
2109
+ * @since 3.6.0
2110
+ * @category mapping
2111
+ * @example
2112
+ * import { DateTime } from "effect"
2113
+ *
2114
+ * // add 10 milliseconds
2115
+ * DateTime.unsafeMake(0).pipe(
2116
+ * DateTime.mapEpochMillis((millis) => millis + 10)
2117
+ * )
2118
+ */
1539
2119
  <A extends DateTime>(self: A, f: (millis: number) => number): DateTime.PreserveZone<A>
1540
2120
  } = dual(2, (self: DateTime, f: (millis: number) => number): DateTime => {
1541
2121
  const millis = f(toEpochMillis(self))
@@ -1557,7 +2137,35 @@ export const mapEpochMillis: {
1557
2137
  * )
1558
2138
  */
1559
2139
  export const withDate: {
2140
+ /**
2141
+ * Using the time zone adjusted `Date`, apply a function to the `Date` and
2142
+ * return the result.
2143
+ *
2144
+ * @since 3.6.0
2145
+ * @category mapping
2146
+ * @example
2147
+ * import { DateTime } from "effect"
2148
+ *
2149
+ * // get the time zone adjusted date in milliseconds
2150
+ * DateTime.unsafeMakeZoned(0, { timeZone: "Europe/London" }).pipe(
2151
+ * DateTime.withDate((date) => date.getTime())
2152
+ * )
2153
+ */
1560
2154
  <A>(f: (date: Date) => A): (self: DateTime) => A
2155
+ /**
2156
+ * Using the time zone adjusted `Date`, apply a function to the `Date` and
2157
+ * return the result.
2158
+ *
2159
+ * @since 3.6.0
2160
+ * @category mapping
2161
+ * @example
2162
+ * import { DateTime } from "effect"
2163
+ *
2164
+ * // get the time zone adjusted date in milliseconds
2165
+ * DateTime.unsafeMakeZoned(0, { timeZone: "Europe/London" }).pipe(
2166
+ * DateTime.withDate((date) => date.getTime())
2167
+ * )
2168
+ */
1561
2169
  <A>(self: DateTime, f: (date: Date) => A): A
1562
2170
  } = dual(2, <A>(self: DateTime, f: (date: Date) => A): A => f(toDate(self)))
1563
2171
 
@@ -1576,7 +2184,35 @@ export const withDate: {
1576
2184
  * )
1577
2185
  */
1578
2186
  export const withDateUtc: {
2187
+ /**
2188
+ * Using the time zone adjusted `Date`, apply a function to the `Date` and
2189
+ * return the result.
2190
+ *
2191
+ * @since 3.6.0
2192
+ * @category mapping
2193
+ * @example
2194
+ * import { DateTime } from "effect"
2195
+ *
2196
+ * // get the date in milliseconds
2197
+ * DateTime.unsafeMake(0).pipe(
2198
+ * DateTime.withDateUtc((date) => date.getTime())
2199
+ * )
2200
+ */
1579
2201
  <A>(f: (date: Date) => A): (self: DateTime) => A
2202
+ /**
2203
+ * Using the time zone adjusted `Date`, apply a function to the `Date` and
2204
+ * return the result.
2205
+ *
2206
+ * @since 3.6.0
2207
+ * @category mapping
2208
+ * @example
2209
+ * import { DateTime } from "effect"
2210
+ *
2211
+ * // get the date in milliseconds
2212
+ * DateTime.unsafeMake(0).pipe(
2213
+ * DateTime.withDateUtc((date) => date.getTime())
2214
+ * )
2215
+ */
1580
2216
  <A>(self: DateTime, f: (date: Date) => A): A
1581
2217
  } = dual(2, <A>(self: DateTime, f: (date: Date) => A): A => f(toDateUtc(self)))
1582
2218
 
@@ -1585,14 +2221,27 @@ export const withDateUtc: {
1585
2221
  * @category mapping
1586
2222
  */
1587
2223
  export const match: {
1588
- <A, B>(options: {
1589
- readonly onUtc: (_: Utc) => A
1590
- readonly onZoned: (_: Zoned) => B
1591
- }): (self: DateTime) => A | B
1592
- <A, B>(self: DateTime, options: {
1593
- readonly onUtc: (_: Utc) => A
1594
- readonly onZoned: (_: Zoned) => B
1595
- }): A | B
2224
+ /**
2225
+ * @since 3.6.0
2226
+ * @category mapping
2227
+ */
2228
+ <A, B>(
2229
+ options: {
2230
+ readonly onUtc: (_: Utc) => A
2231
+ readonly onZoned: (_: Zoned) => B
2232
+ }
2233
+ ): (self: DateTime) => A | B
2234
+ /**
2235
+ * @since 3.6.0
2236
+ * @category mapping
2237
+ */
2238
+ <A, B>(
2239
+ self: DateTime,
2240
+ options: {
2241
+ readonly onUtc: (_: Utc) => A
2242
+ readonly onZoned: (_: Zoned) => B
2243
+ }
2244
+ ): A | B
1596
2245
  } = dual(2, <A, B>(self: DateTime, options: {
1597
2246
  readonly onUtc: (_: Utc) => A
1598
2247
  readonly onZoned: (_: Zoned) => B
@@ -1616,7 +2265,41 @@ export const match: {
1616
2265
  * )
1617
2266
  */
1618
2267
  export const addDuration: {
2268
+ // =============================================================================
2269
+ // math
2270
+ // =============================================================================
2271
+
2272
+ /**
2273
+ * Add the given `Duration` to a `DateTime`.
2274
+ *
2275
+ * @since 3.6.0
2276
+ * @category math
2277
+ * @example
2278
+ * import { DateTime } from "effect"
2279
+ *
2280
+ * // add 5 minutes
2281
+ * DateTime.unsafeMake(0).pipe(
2282
+ * DateTime.addDuration("5 minutes")
2283
+ * )
2284
+ */
1619
2285
  (duration: Duration.DurationInput): <A extends DateTime>(self: A) => DateTime.PreserveZone<A>
2286
+ // =============================================================================
2287
+ // math
2288
+ // =============================================================================
2289
+
2290
+ /**
2291
+ * Add the given `Duration` to a `DateTime`.
2292
+ *
2293
+ * @since 3.6.0
2294
+ * @category math
2295
+ * @example
2296
+ * import { DateTime } from "effect"
2297
+ *
2298
+ * // add 5 minutes
2299
+ * DateTime.unsafeMake(0).pipe(
2300
+ * DateTime.addDuration("5 minutes")
2301
+ * )
2302
+ */
1620
2303
  <A extends DateTime>(self: A, duration: Duration.DurationInput): DateTime.PreserveZone<A>
1621
2304
  } = dual(
1622
2305
  2,
@@ -1638,7 +2321,33 @@ export const addDuration: {
1638
2321
  * )
1639
2322
  */
1640
2323
  export const subtractDuration: {
2324
+ /**
2325
+ * Subtract the given `Duration` from a `DateTime`.
2326
+ *
2327
+ * @since 3.6.0
2328
+ * @category math
2329
+ * @example
2330
+ * import { DateTime } from "effect"
2331
+ *
2332
+ * // subtract 5 minutes
2333
+ * DateTime.unsafeMake(0).pipe(
2334
+ * DateTime.subtractDuration("5 minutes")
2335
+ * )
2336
+ */
1641
2337
  (duration: Duration.DurationInput): <A extends DateTime>(self: A) => DateTime.PreserveZone<A>
2338
+ /**
2339
+ * Subtract the given `Duration` from a `DateTime`.
2340
+ *
2341
+ * @since 3.6.0
2342
+ * @category math
2343
+ * @example
2344
+ * import { DateTime } from "effect"
2345
+ *
2346
+ * // subtract 5 minutes
2347
+ * DateTime.unsafeMake(0).pipe(
2348
+ * DateTime.subtractDuration("5 minutes")
2349
+ * )
2350
+ */
1642
2351
  <A extends DateTime>(self: A, duration: Duration.DurationInput): DateTime.PreserveZone<A>
1643
2352
  } = dual(
1644
2353
  2,
@@ -1667,7 +2376,39 @@ const addMillis = (date: Date, amount: number): void => {
1667
2376
  * )
1668
2377
  */
1669
2378
  export const add: {
2379
+ /**
2380
+ * Add the given `amount` of `unit`'s to a `DateTime`.
2381
+ *
2382
+ * The time zone is taken into account when adding days, weeks, months, and
2383
+ * years.
2384
+ *
2385
+ * @since 3.6.0
2386
+ * @category math
2387
+ * @example
2388
+ * import { DateTime } from "effect"
2389
+ *
2390
+ * // add 5 minutes
2391
+ * DateTime.unsafeMake(0).pipe(
2392
+ * DateTime.add({ minutes: 5 })
2393
+ * )
2394
+ */
1670
2395
  (parts: Partial<DateTime.PartsForMath>): <A extends DateTime>(self: A) => DateTime.PreserveZone<A>
2396
+ /**
2397
+ * Add the given `amount` of `unit`'s to a `DateTime`.
2398
+ *
2399
+ * The time zone is taken into account when adding days, weeks, months, and
2400
+ * years.
2401
+ *
2402
+ * @since 3.6.0
2403
+ * @category math
2404
+ * @example
2405
+ * import { DateTime } from "effect"
2406
+ *
2407
+ * // add 5 minutes
2408
+ * DateTime.unsafeMake(0).pipe(
2409
+ * DateTime.add({ minutes: 5 })
2410
+ * )
2411
+ */
1671
2412
  <A extends DateTime>(self: A, parts: Partial<DateTime.PartsForMath>): DateTime.PreserveZone<A>
1672
2413
  } = dual(2, (self: DateTime, parts: Partial<DateTime.PartsForMath>): DateTime =>
1673
2414
  mutate(self, (date) => {
@@ -1724,7 +2465,33 @@ export const add: {
1724
2465
  * )
1725
2466
  */
1726
2467
  export const subtract: {
2468
+ /**
2469
+ * Subtract the given `amount` of `unit`'s from a `DateTime`.
2470
+ *
2471
+ * @since 3.6.0
2472
+ * @category math
2473
+ * @example
2474
+ * import { DateTime } from "effect"
2475
+ *
2476
+ * // subtract 5 minutes
2477
+ * DateTime.unsafeMake(0).pipe(
2478
+ * DateTime.subtract({ minutes: 5 })
2479
+ * )
2480
+ */
1727
2481
  (parts: Partial<DateTime.PartsForMath>): <A extends DateTime>(self: A) => DateTime.PreserveZone<A>
2482
+ /**
2483
+ * Subtract the given `amount` of `unit`'s from a `DateTime`.
2484
+ *
2485
+ * @since 3.6.0
2486
+ * @category math
2487
+ * @example
2488
+ * import { DateTime } from "effect"
2489
+ *
2490
+ * // subtract 5 minutes
2491
+ * DateTime.unsafeMake(0).pipe(
2492
+ * DateTime.subtract({ minutes: 5 })
2493
+ * )
2494
+ */
1728
2495
  <A extends DateTime>(self: A, parts: Partial<DateTime.PartsForMath>): DateTime.PreserveZone<A>
1729
2496
  } = dual(2, (self: DateTime, parts: Partial<DateTime.PartsForMath>): DateTime => {
1730
2497
  const newParts = {} as Partial<Mutable<DateTime.PartsForMath>>
@@ -1793,12 +2560,53 @@ function startOfDate(date: Date, part: DateTime.UnitSingular, options?: {
1793
2560
  * )
1794
2561
  */
1795
2562
  export const startOf: {
1796
- (part: DateTime.UnitSingular, options?: {
1797
- readonly weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined
1798
- }): <A extends DateTime>(self: A) => DateTime.PreserveZone<A>
1799
- <A extends DateTime>(self: A, part: DateTime.UnitSingular, options?: {
1800
- readonly weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined
1801
- }): DateTime.PreserveZone<A>
2563
+ /**
2564
+ * Converts a `DateTime` to the start of the given `part`.
2565
+ *
2566
+ * If the part is `week`, the `weekStartsOn` option can be used to specify the
2567
+ * day of the week that the week starts on. The default is 0 (Sunday).
2568
+ *
2569
+ * @since 3.6.0
2570
+ * @category math
2571
+ * @example
2572
+ * import { DateTime } from "effect"
2573
+ *
2574
+ * // returns "2024-01-01T00:00:00Z"
2575
+ * DateTime.unsafeMake("2024-01-01T12:00:00Z").pipe(
2576
+ * DateTime.startOf("day"),
2577
+ * DateTime.formatIso
2578
+ * )
2579
+ */
2580
+ (
2581
+ part: DateTime.UnitSingular,
2582
+ options?: {
2583
+ readonly weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined
2584
+ }
2585
+ ): <A extends DateTime>(self: A) => DateTime.PreserveZone<A>
2586
+ /**
2587
+ * Converts a `DateTime` to the start of the given `part`.
2588
+ *
2589
+ * If the part is `week`, the `weekStartsOn` option can be used to specify the
2590
+ * day of the week that the week starts on. The default is 0 (Sunday).
2591
+ *
2592
+ * @since 3.6.0
2593
+ * @category math
2594
+ * @example
2595
+ * import { DateTime } from "effect"
2596
+ *
2597
+ * // returns "2024-01-01T00:00:00Z"
2598
+ * DateTime.unsafeMake("2024-01-01T12:00:00Z").pipe(
2599
+ * DateTime.startOf("day"),
2600
+ * DateTime.formatIso
2601
+ * )
2602
+ */
2603
+ <A extends DateTime>(
2604
+ self: A,
2605
+ part: DateTime.UnitSingular,
2606
+ options?: {
2607
+ readonly weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined
2608
+ }
2609
+ ): DateTime.PreserveZone<A>
1802
2610
  } = dual(isDateTimeArgs, (self: DateTime, part: DateTime.UnitSingular, options?: {
1803
2611
  readonly weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined
1804
2612
  }): DateTime => mutate(self, (date) => startOfDate(date, part, options)))
@@ -1862,12 +2670,53 @@ function endOfDate(date: Date, part: DateTime.UnitSingular, options?: {
1862
2670
  * )
1863
2671
  */
1864
2672
  export const endOf: {
1865
- (part: DateTime.UnitSingular, options?: {
1866
- readonly weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined
1867
- }): <A extends DateTime>(self: A) => DateTime.PreserveZone<A>
1868
- <A extends DateTime>(self: A, part: DateTime.UnitSingular, options?: {
1869
- readonly weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined
1870
- }): DateTime.PreserveZone<A>
2673
+ /**
2674
+ * Converts a `DateTime` to the end of the given `part`.
2675
+ *
2676
+ * If the part is `week`, the `weekStartsOn` option can be used to specify the
2677
+ * day of the week that the week starts on. The default is 0 (Sunday).
2678
+ *
2679
+ * @since 3.6.0
2680
+ * @category math
2681
+ * @example
2682
+ * import { DateTime } from "effect"
2683
+ *
2684
+ * // returns "2024-01-01T23:59:59.999Z"
2685
+ * DateTime.unsafeMake("2024-01-01T12:00:00Z").pipe(
2686
+ * DateTime.endOf("day"),
2687
+ * DateTime.formatIso
2688
+ * )
2689
+ */
2690
+ (
2691
+ part: DateTime.UnitSingular,
2692
+ options?: {
2693
+ readonly weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined
2694
+ }
2695
+ ): <A extends DateTime>(self: A) => DateTime.PreserveZone<A>
2696
+ /**
2697
+ * Converts a `DateTime` to the end of the given `part`.
2698
+ *
2699
+ * If the part is `week`, the `weekStartsOn` option can be used to specify the
2700
+ * day of the week that the week starts on. The default is 0 (Sunday).
2701
+ *
2702
+ * @since 3.6.0
2703
+ * @category math
2704
+ * @example
2705
+ * import { DateTime } from "effect"
2706
+ *
2707
+ * // returns "2024-01-01T23:59:59.999Z"
2708
+ * DateTime.unsafeMake("2024-01-01T12:00:00Z").pipe(
2709
+ * DateTime.endOf("day"),
2710
+ * DateTime.formatIso
2711
+ * )
2712
+ */
2713
+ <A extends DateTime>(
2714
+ self: A,
2715
+ part: DateTime.UnitSingular,
2716
+ options?: {
2717
+ readonly weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined
2718
+ }
2719
+ ): DateTime.PreserveZone<A>
1871
2720
  } = dual(isDateTimeArgs, (self: DateTime, part: DateTime.UnitSingular, options?: {
1872
2721
  readonly weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined
1873
2722
  }): DateTime => mutate(self, (date) => endOfDate(date, part, options)))
@@ -1890,12 +2739,53 @@ export const endOf: {
1890
2739
  * )
1891
2740
  */
1892
2741
  export const nearest: {
1893
- (part: DateTime.UnitSingular, options?: {
1894
- readonly weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined
1895
- }): <A extends DateTime>(self: A) => DateTime.PreserveZone<A>
1896
- <A extends DateTime>(self: A, part: DateTime.UnitSingular, options?: {
1897
- readonly weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined
1898
- }): DateTime.PreserveZone<A>
2742
+ /**
2743
+ * Converts a `DateTime` to the nearest given `part`.
2744
+ *
2745
+ * If the part is `week`, the `weekStartsOn` option can be used to specify the
2746
+ * day of the week that the week starts on. The default is 0 (Sunday).
2747
+ *
2748
+ * @since 3.6.0
2749
+ * @category math
2750
+ * @example
2751
+ * import { DateTime } from "effect"
2752
+ *
2753
+ * // returns "2024-01-02T00:00:00Z"
2754
+ * DateTime.unsafeMake("2024-01-01T12:01:00Z").pipe(
2755
+ * DateTime.nearest("day"),
2756
+ * DateTime.formatIso
2757
+ * )
2758
+ */
2759
+ (
2760
+ part: DateTime.UnitSingular,
2761
+ options?: {
2762
+ readonly weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined
2763
+ }
2764
+ ): <A extends DateTime>(self: A) => DateTime.PreserveZone<A>
2765
+ /**
2766
+ * Converts a `DateTime` to the nearest given `part`.
2767
+ *
2768
+ * If the part is `week`, the `weekStartsOn` option can be used to specify the
2769
+ * day of the week that the week starts on. The default is 0 (Sunday).
2770
+ *
2771
+ * @since 3.6.0
2772
+ * @category math
2773
+ * @example
2774
+ * import { DateTime } from "effect"
2775
+ *
2776
+ * // returns "2024-01-02T00:00:00Z"
2777
+ * DateTime.unsafeMake("2024-01-01T12:01:00Z").pipe(
2778
+ * DateTime.nearest("day"),
2779
+ * DateTime.formatIso
2780
+ * )
2781
+ */
2782
+ <A extends DateTime>(
2783
+ self: A,
2784
+ part: DateTime.UnitSingular,
2785
+ options?: {
2786
+ readonly weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined
2787
+ }
2788
+ ): DateTime.PreserveZone<A>
1899
2789
  } = dual(isDateTimeArgs, (self: DateTime, part: DateTime.UnitSingular, options?: {
1900
2790
  readonly weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined
1901
2791
  }): DateTime =>
@@ -1940,6 +2830,17 @@ const intlTimeZone = (self: TimeZone): string => {
1940
2830
  * @category formatting
1941
2831
  */
1942
2832
  export const format: {
2833
+ /**
2834
+ * Format a `DateTime` as a string using the `DateTimeFormat` API.
2835
+ *
2836
+ * The `timeZone` option is set to the offset of the time zone.
2837
+ *
2838
+ * Note: On Node versions < 22, fixed "Offset" zones will set the time zone to
2839
+ * "UTC" and use the adjusted `Date`.
2840
+ *
2841
+ * @since 3.6.0
2842
+ * @category formatting
2843
+ */
1943
2844
  (
1944
2845
  options?:
1945
2846
  | Intl.DateTimeFormatOptions & {
@@ -1947,6 +2848,17 @@ export const format: {
1947
2848
  }
1948
2849
  | undefined
1949
2850
  ): (self: DateTime) => string
2851
+ /**
2852
+ * Format a `DateTime` as a string using the `DateTimeFormat` API.
2853
+ *
2854
+ * The `timeZone` option is set to the offset of the time zone.
2855
+ *
2856
+ * Note: On Node versions < 22, fixed "Offset" zones will set the time zone to
2857
+ * "UTC" and use the adjusted `Date`.
2858
+ *
2859
+ * @since 3.6.0
2860
+ * @category formatting
2861
+ */
1950
2862
  (
1951
2863
  self: DateTime,
1952
2864
  options?:
@@ -1985,6 +2897,14 @@ export const format: {
1985
2897
  * @category formatting
1986
2898
  */
1987
2899
  export const formatLocal: {
2900
+ /**
2901
+ * Format a `DateTime` as a string using the `DateTimeFormat` API.
2902
+ *
2903
+ * It will use the system's local time zone & locale.
2904
+ *
2905
+ * @since 3.6.0
2906
+ * @category formatting
2907
+ */
1988
2908
  (
1989
2909
  options?:
1990
2910
  | Intl.DateTimeFormatOptions & {
@@ -1992,6 +2912,14 @@ export const formatLocal: {
1992
2912
  }
1993
2913
  | undefined
1994
2914
  ): (self: DateTime) => string
2915
+ /**
2916
+ * Format a `DateTime` as a string using the `DateTimeFormat` API.
2917
+ *
2918
+ * It will use the system's local time zone & locale.
2919
+ *
2920
+ * @since 3.6.0
2921
+ * @category formatting
2922
+ */
1995
2923
  (
1996
2924
  self: DateTime,
1997
2925
  options?:
@@ -2018,6 +2946,14 @@ export const formatLocal: {
2018
2946
  * @category formatting
2019
2947
  */
2020
2948
  export const formatUtc: {
2949
+ /**
2950
+ * Format a `DateTime` as a string using the `DateTimeFormat` API.
2951
+ *
2952
+ * This forces the time zone to be UTC.
2953
+ *
2954
+ * @since 3.6.0
2955
+ * @category formatting
2956
+ */
2021
2957
  (
2022
2958
  options?:
2023
2959
  | Intl.DateTimeFormatOptions & {
@@ -2025,6 +2961,14 @@ export const formatUtc: {
2025
2961
  }
2026
2962
  | undefined
2027
2963
  ): (self: DateTime) => string
2964
+ /**
2965
+ * Format a `DateTime` as a string using the `DateTimeFormat` API.
2966
+ *
2967
+ * This forces the time zone to be UTC.
2968
+ *
2969
+ * @since 3.6.0
2970
+ * @category formatting
2971
+ */
2028
2972
  (
2029
2973
  self: DateTime,
2030
2974
  options?:
@@ -2053,7 +2997,19 @@ export const formatUtc: {
2053
2997
  * @category formatting
2054
2998
  */
2055
2999
  export const formatIntl: {
3000
+ /**
3001
+ * Format a `DateTime` as a string using the `DateTimeFormat` API.
3002
+ *
3003
+ * @since 3.6.0
3004
+ * @category formatting
3005
+ */
2056
3006
  (format: Intl.DateTimeFormat): (self: DateTime) => string
3007
+ /**
3008
+ * Format a `DateTime` as a string using the `DateTimeFormat` API.
3009
+ *
3010
+ * @since 3.6.0
3011
+ * @category formatting
3012
+ */
2057
3013
  (self: DateTime, format: Intl.DateTimeFormat): string
2058
3014
  } = dual(2, (self: DateTime, format: Intl.DateTimeFormat): string => format.format(self.epochMillis))
2059
3015