effect 3.8.4 → 3.9.0

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