effect 3.10.18 → 3.11.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 (448) hide show
  1. package/dist/cjs/Array.js +206 -0
  2. package/dist/cjs/Array.js.map +1 -1
  3. package/dist/cjs/BigDecimal.js +181 -24
  4. package/dist/cjs/BigDecimal.js.map +1 -1
  5. package/dist/cjs/BigInt.js +54 -0
  6. package/dist/cjs/BigInt.js.map +1 -1
  7. package/dist/cjs/Boolean.js +24 -0
  8. package/dist/cjs/Boolean.js.map +1 -1
  9. package/dist/cjs/Brand.js +4 -0
  10. package/dist/cjs/Brand.js.map +1 -1
  11. package/dist/cjs/Channel.js +44 -4
  12. package/dist/cjs/Channel.js.map +1 -1
  13. package/dist/cjs/Chunk.js +8 -0
  14. package/dist/cjs/Chunk.js.map +1 -1
  15. package/dist/cjs/Config.js +10 -1
  16. package/dist/cjs/Config.js.map +1 -1
  17. package/dist/cjs/Context.js +50 -1
  18. package/dist/cjs/Context.js.map +1 -1
  19. package/dist/cjs/Cron.js +81 -67
  20. package/dist/cjs/Cron.js.map +1 -1
  21. package/dist/cjs/Data.js +14 -0
  22. package/dist/cjs/Data.js.map +1 -1
  23. package/dist/cjs/DateTime.js +178 -664
  24. package/dist/cjs/DateTime.js.map +1 -1
  25. package/dist/cjs/Duration.js +2 -0
  26. package/dist/cjs/Duration.js.map +1 -1
  27. package/dist/cjs/Effect.js +296 -4
  28. package/dist/cjs/Effect.js.map +1 -1
  29. package/dist/cjs/Either.js +38 -2
  30. package/dist/cjs/Either.js.map +1 -1
  31. package/dist/cjs/FiberHandle.js +6 -0
  32. package/dist/cjs/FiberHandle.js.map +1 -1
  33. package/dist/cjs/FiberMap.js +6 -0
  34. package/dist/cjs/FiberMap.js.map +1 -1
  35. package/dist/cjs/FiberSet.js +6 -0
  36. package/dist/cjs/FiberSet.js.map +1 -1
  37. package/dist/cjs/Function.js +34 -0
  38. package/dist/cjs/Function.js.map +1 -1
  39. package/dist/cjs/GlobalValue.js +2 -0
  40. package/dist/cjs/GlobalValue.js.map +1 -1
  41. package/dist/cjs/HashMap.js.map +1 -1
  42. package/dist/cjs/Inspectable.js +8 -4
  43. package/dist/cjs/Inspectable.js.map +1 -1
  44. package/dist/cjs/Iterable.js +18 -0
  45. package/dist/cjs/Iterable.js.map +1 -1
  46. package/dist/cjs/JSONSchema.js.map +1 -1
  47. package/dist/cjs/List.js +4 -0
  48. package/dist/cjs/List.js.map +1 -1
  49. package/dist/cjs/Logger.js +26 -0
  50. package/dist/cjs/Logger.js.map +1 -1
  51. package/dist/cjs/Mailbox.js +2 -0
  52. package/dist/cjs/Mailbox.js.map +1 -1
  53. package/dist/cjs/ManagedRuntime.js +2 -0
  54. package/dist/cjs/ManagedRuntime.js.map +1 -1
  55. package/dist/cjs/Metric.js +10 -0
  56. package/dist/cjs/Metric.js.map +1 -1
  57. package/dist/cjs/Micro.js +1104 -1069
  58. package/dist/cjs/Micro.js.map +1 -1
  59. package/dist/cjs/Number.js +44 -0
  60. package/dist/cjs/Number.js.map +1 -1
  61. package/dist/cjs/Option.js +70 -0
  62. package/dist/cjs/Option.js.map +1 -1
  63. package/dist/cjs/Order.js +2 -0
  64. package/dist/cjs/Order.js.map +1 -1
  65. package/dist/cjs/Ordering.js +4 -0
  66. package/dist/cjs/Ordering.js.map +1 -1
  67. package/dist/cjs/Predicate.js +68 -0
  68. package/dist/cjs/Predicate.js.map +1 -1
  69. package/dist/cjs/Random.js +4 -0
  70. package/dist/cjs/Random.js.map +1 -1
  71. package/dist/cjs/RateLimiter.js +4 -0
  72. package/dist/cjs/RateLimiter.js.map +1 -1
  73. package/dist/cjs/RcMap.js +2 -0
  74. package/dist/cjs/RcMap.js.map +1 -1
  75. package/dist/cjs/RcRef.js +2 -0
  76. package/dist/cjs/RcRef.js.map +1 -1
  77. package/dist/cjs/Record.js +56 -0
  78. package/dist/cjs/Record.js.map +1 -1
  79. package/dist/cjs/Redacted.js +8 -0
  80. package/dist/cjs/Redacted.js.map +1 -1
  81. package/dist/cjs/RegExp.js +4 -0
  82. package/dist/cjs/RegExp.js.map +1 -1
  83. package/dist/cjs/Request.js +4 -0
  84. package/dist/cjs/Request.js.map +1 -1
  85. package/dist/cjs/RequestResolver.js +2 -0
  86. package/dist/cjs/RequestResolver.js.map +1 -1
  87. package/dist/cjs/Runtime.js +6 -0
  88. package/dist/cjs/Runtime.js.map +1 -1
  89. package/dist/cjs/STM.js.map +1 -1
  90. package/dist/cjs/Schema.js +91 -8
  91. package/dist/cjs/Schema.js.map +1 -1
  92. package/dist/cjs/Sink.js +9 -1
  93. package/dist/cjs/Sink.js.map +1 -1
  94. package/dist/cjs/Stream.js +179 -7
  95. package/dist/cjs/Stream.js.map +1 -1
  96. package/dist/cjs/String.js +62 -0
  97. package/dist/cjs/String.js.map +1 -1
  98. package/dist/cjs/Struct.js +12 -0
  99. package/dist/cjs/Struct.js.map +1 -1
  100. package/dist/cjs/Symbol.js +2 -0
  101. package/dist/cjs/Symbol.js.map +1 -1
  102. package/dist/cjs/Trie.js +56 -0
  103. package/dist/cjs/Trie.js.map +1 -1
  104. package/dist/cjs/Tuple.js +18 -0
  105. package/dist/cjs/Tuple.js.map +1 -1
  106. package/dist/cjs/Utils.js +7 -1
  107. package/dist/cjs/Utils.js.map +1 -1
  108. package/dist/cjs/internal/channel/channelExecutor.js +5 -9
  109. package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
  110. package/dist/cjs/internal/channel.js +156 -130
  111. package/dist/cjs/internal/channel.js.map +1 -1
  112. package/dist/cjs/internal/config.js +13 -4
  113. package/dist/cjs/internal/config.js.map +1 -1
  114. package/dist/cjs/internal/context.js +46 -3
  115. package/dist/cjs/internal/context.js.map +1 -1
  116. package/dist/cjs/internal/dateTime.js +747 -0
  117. package/dist/cjs/internal/dateTime.js.map +1 -0
  118. package/dist/cjs/internal/fiberRuntime.js +34 -11
  119. package/dist/cjs/internal/fiberRuntime.js.map +1 -1
  120. package/dist/cjs/internal/groupBy.js +9 -3
  121. package/dist/cjs/internal/groupBy.js.map +1 -1
  122. package/dist/cjs/internal/layer.js +1 -1
  123. package/dist/cjs/internal/layer.js.map +1 -1
  124. package/dist/cjs/internal/mailbox.js +1 -1
  125. package/dist/cjs/internal/mailbox.js.map +1 -1
  126. package/dist/cjs/internal/sink.js +25 -21
  127. package/dist/cjs/internal/sink.js.map +1 -1
  128. package/dist/cjs/internal/stream.js +70 -71
  129. package/dist/cjs/internal/stream.js.map +1 -1
  130. package/dist/cjs/internal/version.js +1 -1
  131. package/dist/cjs/internal/version.js.map +1 -1
  132. package/dist/dts/Array.d.ts +534 -0
  133. package/dist/dts/Array.d.ts.map +1 -1
  134. package/dist/dts/BigDecimal.d.ts +172 -1
  135. package/dist/dts/BigDecimal.d.ts.map +1 -1
  136. package/dist/dts/BigInt.d.ts +114 -0
  137. package/dist/dts/BigInt.d.ts.map +1 -1
  138. package/dist/dts/Boolean.d.ts +56 -0
  139. package/dist/dts/Boolean.d.ts.map +1 -1
  140. package/dist/dts/Brand.d.ts +6 -0
  141. package/dist/dts/Brand.d.ts.map +1 -1
  142. package/dist/dts/Channel.d.ts +66 -5
  143. package/dist/dts/Channel.d.ts.map +1 -1
  144. package/dist/dts/Chunk.d.ts +30 -0
  145. package/dist/dts/Chunk.d.ts.map +1 -1
  146. package/dist/dts/Config.d.ts +25 -1
  147. package/dist/dts/Config.d.ts.map +1 -1
  148. package/dist/dts/Context.d.ts +155 -0
  149. package/dist/dts/Context.d.ts.map +1 -1
  150. package/dist/dts/Cron.d.ts +21 -6
  151. package/dist/dts/Cron.d.ts.map +1 -1
  152. package/dist/dts/Data.d.ts +26 -0
  153. package/dist/dts/Data.d.ts.map +1 -1
  154. package/dist/dts/DateTime.d.ts +192 -49
  155. package/dist/dts/DateTime.d.ts.map +1 -1
  156. package/dist/dts/Duration.d.ts +2 -0
  157. package/dist/dts/Duration.d.ts.map +1 -1
  158. package/dist/dts/Effect.d.ts +658 -1
  159. package/dist/dts/Effect.d.ts.map +1 -1
  160. package/dist/dts/Either.d.ts +84 -2
  161. package/dist/dts/Either.d.ts.map +1 -1
  162. package/dist/dts/FiberHandle.d.ts +6 -0
  163. package/dist/dts/FiberHandle.d.ts.map +1 -1
  164. package/dist/dts/FiberMap.d.ts +6 -0
  165. package/dist/dts/FiberMap.d.ts.map +1 -1
  166. package/dist/dts/FiberSet.d.ts +6 -0
  167. package/dist/dts/FiberSet.d.ts.map +1 -1
  168. package/dist/dts/Function.d.ts +50 -0
  169. package/dist/dts/Function.d.ts.map +1 -1
  170. package/dist/dts/GlobalValue.d.ts +2 -0
  171. package/dist/dts/GlobalValue.d.ts.map +1 -1
  172. package/dist/dts/HashMap.d.ts +6 -0
  173. package/dist/dts/HashMap.d.ts.map +1 -1
  174. package/dist/dts/Inspectable.d.ts.map +1 -1
  175. package/dist/dts/Iterable.d.ts +26 -0
  176. package/dist/dts/Iterable.d.ts.map +1 -1
  177. package/dist/dts/JSONSchema.d.ts +1 -0
  178. package/dist/dts/JSONSchema.d.ts.map +1 -1
  179. package/dist/dts/List.d.ts +20 -0
  180. package/dist/dts/List.d.ts.map +1 -1
  181. package/dist/dts/Logger.d.ts +34 -0
  182. package/dist/dts/Logger.d.ts.map +1 -1
  183. package/dist/dts/Mailbox.d.ts +2 -0
  184. package/dist/dts/Mailbox.d.ts.map +1 -1
  185. package/dist/dts/ManagedRuntime.d.ts +2 -0
  186. package/dist/dts/ManagedRuntime.d.ts.map +1 -1
  187. package/dist/dts/Metric.d.ts +18 -0
  188. package/dist/dts/Metric.d.ts.map +1 -1
  189. package/dist/dts/Micro.d.ts +880 -863
  190. package/dist/dts/Micro.d.ts.map +1 -1
  191. package/dist/dts/Number.d.ts +104 -0
  192. package/dist/dts/Number.d.ts.map +1 -1
  193. package/dist/dts/Option.d.ts +142 -0
  194. package/dist/dts/Option.d.ts.map +1 -1
  195. package/dist/dts/Order.d.ts +2 -0
  196. package/dist/dts/Order.d.ts.map +1 -1
  197. package/dist/dts/Ordering.d.ts +8 -0
  198. package/dist/dts/Ordering.d.ts.map +1 -1
  199. package/dist/dts/Predicate.d.ts +104 -0
  200. package/dist/dts/Predicate.d.ts.map +1 -1
  201. package/dist/dts/Random.d.ts +4 -0
  202. package/dist/dts/Random.d.ts.map +1 -1
  203. package/dist/dts/RateLimiter.d.ts +4 -0
  204. package/dist/dts/RateLimiter.d.ts.map +1 -1
  205. package/dist/dts/RcMap.d.ts +6 -0
  206. package/dist/dts/RcMap.d.ts.map +1 -1
  207. package/dist/dts/RcRef.d.ts +2 -0
  208. package/dist/dts/RcRef.d.ts.map +1 -1
  209. package/dist/dts/Record.d.ts +136 -0
  210. package/dist/dts/Record.d.ts.map +1 -1
  211. package/dist/dts/Redacted.d.ts +8 -0
  212. package/dist/dts/Redacted.d.ts.map +1 -1
  213. package/dist/dts/RegExp.d.ts +4 -0
  214. package/dist/dts/RegExp.d.ts.map +1 -1
  215. package/dist/dts/Request.d.ts +4 -0
  216. package/dist/dts/Request.d.ts.map +1 -1
  217. package/dist/dts/RequestResolver.d.ts +6 -0
  218. package/dist/dts/RequestResolver.d.ts.map +1 -1
  219. package/dist/dts/Runtime.d.ts +18 -0
  220. package/dist/dts/Runtime.d.ts.map +1 -1
  221. package/dist/dts/STM.d.ts +2 -0
  222. package/dist/dts/STM.d.ts.map +1 -1
  223. package/dist/dts/Schema.d.ts +90 -0
  224. package/dist/dts/Schema.d.ts.map +1 -1
  225. package/dist/dts/Sink.d.ts +8 -0
  226. package/dist/dts/Sink.d.ts.map +1 -1
  227. package/dist/dts/Stream.d.ts +394 -32
  228. package/dist/dts/Stream.d.ts.map +1 -1
  229. package/dist/dts/String.d.ts +94 -0
  230. package/dist/dts/String.d.ts.map +1 -1
  231. package/dist/dts/Struct.d.ts +24 -0
  232. package/dist/dts/Struct.d.ts.map +1 -1
  233. package/dist/dts/Symbol.d.ts +2 -0
  234. package/dist/dts/Symbol.d.ts.map +1 -1
  235. package/dist/dts/Trie.d.ts +132 -0
  236. package/dist/dts/Trie.d.ts.map +1 -1
  237. package/dist/dts/Tuple.d.ts +42 -0
  238. package/dist/dts/Tuple.d.ts.map +1 -1
  239. package/dist/dts/Types.d.ts +24 -0
  240. package/dist/dts/Types.d.ts.map +1 -1
  241. package/dist/dts/Utils.d.ts +4 -0
  242. package/dist/dts/Utils.d.ts.map +1 -1
  243. package/dist/dts/internal/context.d.ts +1 -1
  244. package/dist/dts/internal/context.d.ts.map +1 -1
  245. package/dist/dts/internal/dateTime.d.ts +2 -0
  246. package/dist/dts/internal/dateTime.d.ts.map +1 -0
  247. package/dist/dts/internal/fiberRuntime.d.ts.map +1 -1
  248. package/dist/dts/internal/stream.d.ts.map +1 -1
  249. package/dist/esm/Array.js +208 -0
  250. package/dist/esm/Array.js.map +1 -1
  251. package/dist/esm/BigDecimal.js +175 -20
  252. package/dist/esm/BigDecimal.js.map +1 -1
  253. package/dist/esm/BigInt.js +54 -0
  254. package/dist/esm/BigInt.js.map +1 -1
  255. package/dist/esm/Boolean.js +24 -0
  256. package/dist/esm/Boolean.js.map +1 -1
  257. package/dist/esm/Brand.js +4 -0
  258. package/dist/esm/Brand.js.map +1 -1
  259. package/dist/esm/Channel.js +42 -2
  260. package/dist/esm/Channel.js.map +1 -1
  261. package/dist/esm/Chunk.js +8 -0
  262. package/dist/esm/Chunk.js.map +1 -1
  263. package/dist/esm/Config.js +9 -0
  264. package/dist/esm/Config.js.map +1 -1
  265. package/dist/esm/Context.js +49 -0
  266. package/dist/esm/Context.js.map +1 -1
  267. package/dist/esm/Cron.js +81 -67
  268. package/dist/esm/Cron.js.map +1 -1
  269. package/dist/esm/Data.js +16 -0
  270. package/dist/esm/Data.js.map +1 -1
  271. package/dist/esm/DateTime.js +176 -627
  272. package/dist/esm/DateTime.js.map +1 -1
  273. package/dist/esm/Duration.js +2 -0
  274. package/dist/esm/Duration.js.map +1 -1
  275. package/dist/esm/Effect.js +297 -0
  276. package/dist/esm/Effect.js.map +1 -1
  277. package/dist/esm/Either.js +40 -2
  278. package/dist/esm/Either.js.map +1 -1
  279. package/dist/esm/FiberHandle.js +6 -0
  280. package/dist/esm/FiberHandle.js.map +1 -1
  281. package/dist/esm/FiberMap.js +6 -0
  282. package/dist/esm/FiberMap.js.map +1 -1
  283. package/dist/esm/FiberSet.js +6 -0
  284. package/dist/esm/FiberSet.js.map +1 -1
  285. package/dist/esm/Function.js +34 -0
  286. package/dist/esm/Function.js.map +1 -1
  287. package/dist/esm/GlobalValue.js +2 -0
  288. package/dist/esm/GlobalValue.js.map +1 -1
  289. package/dist/esm/HashMap.js.map +1 -1
  290. package/dist/esm/Inspectable.js +8 -4
  291. package/dist/esm/Inspectable.js.map +1 -1
  292. package/dist/esm/Iterable.js +18 -0
  293. package/dist/esm/Iterable.js.map +1 -1
  294. package/dist/esm/JSONSchema.js.map +1 -1
  295. package/dist/esm/List.js +4 -0
  296. package/dist/esm/List.js.map +1 -1
  297. package/dist/esm/Logger.js +26 -0
  298. package/dist/esm/Logger.js.map +1 -1
  299. package/dist/esm/Mailbox.js +2 -0
  300. package/dist/esm/Mailbox.js.map +1 -1
  301. package/dist/esm/ManagedRuntime.js +2 -0
  302. package/dist/esm/ManagedRuntime.js.map +1 -1
  303. package/dist/esm/Metric.js +10 -0
  304. package/dist/esm/Metric.js.map +1 -1
  305. package/dist/esm/Micro.js +1077 -1037
  306. package/dist/esm/Micro.js.map +1 -1
  307. package/dist/esm/Number.js +44 -0
  308. package/dist/esm/Number.js.map +1 -1
  309. package/dist/esm/Option.js +72 -0
  310. package/dist/esm/Option.js.map +1 -1
  311. package/dist/esm/Order.js +2 -0
  312. package/dist/esm/Order.js.map +1 -1
  313. package/dist/esm/Ordering.js +4 -0
  314. package/dist/esm/Ordering.js.map +1 -1
  315. package/dist/esm/Predicate.js +68 -0
  316. package/dist/esm/Predicate.js.map +1 -1
  317. package/dist/esm/Random.js +4 -0
  318. package/dist/esm/Random.js.map +1 -1
  319. package/dist/esm/RateLimiter.js +4 -0
  320. package/dist/esm/RateLimiter.js.map +1 -1
  321. package/dist/esm/RcMap.js +2 -0
  322. package/dist/esm/RcMap.js.map +1 -1
  323. package/dist/esm/RcRef.js +2 -0
  324. package/dist/esm/RcRef.js.map +1 -1
  325. package/dist/esm/Record.js +56 -0
  326. package/dist/esm/Record.js.map +1 -1
  327. package/dist/esm/Redacted.js +8 -0
  328. package/dist/esm/Redacted.js.map +1 -1
  329. package/dist/esm/RegExp.js +4 -0
  330. package/dist/esm/RegExp.js.map +1 -1
  331. package/dist/esm/Request.js +4 -0
  332. package/dist/esm/Request.js.map +1 -1
  333. package/dist/esm/RequestResolver.js +2 -0
  334. package/dist/esm/RequestResolver.js.map +1 -1
  335. package/dist/esm/Runtime.js +6 -0
  336. package/dist/esm/Runtime.js.map +1 -1
  337. package/dist/esm/STM.js.map +1 -1
  338. package/dist/esm/Schema.js +88 -0
  339. package/dist/esm/Schema.js.map +1 -1
  340. package/dist/esm/Sink.js +8 -0
  341. package/dist/esm/Sink.js.map +1 -1
  342. package/dist/esm/Stream.js +183 -5
  343. package/dist/esm/Stream.js.map +1 -1
  344. package/dist/esm/String.js +62 -0
  345. package/dist/esm/String.js.map +1 -1
  346. package/dist/esm/Struct.js +12 -0
  347. package/dist/esm/Struct.js.map +1 -1
  348. package/dist/esm/Symbol.js +2 -0
  349. package/dist/esm/Symbol.js.map +1 -1
  350. package/dist/esm/Trie.js +56 -0
  351. package/dist/esm/Trie.js.map +1 -1
  352. package/dist/esm/Tuple.js +22 -0
  353. package/dist/esm/Tuple.js.map +1 -1
  354. package/dist/esm/Utils.js +5 -0
  355. package/dist/esm/Utils.js.map +1 -1
  356. package/dist/esm/internal/channel/channelExecutor.js +5 -7
  357. package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
  358. package/dist/esm/internal/channel.js +152 -129
  359. package/dist/esm/internal/channel.js.map +1 -1
  360. package/dist/esm/internal/config.js +11 -3
  361. package/dist/esm/internal/config.js.map +1 -1
  362. package/dist/esm/internal/context.js +42 -2
  363. package/dist/esm/internal/context.js.map +1 -1
  364. package/dist/esm/internal/dateTime.js +704 -0
  365. package/dist/esm/internal/dateTime.js.map +1 -0
  366. package/dist/esm/internal/fiberRuntime.js +31 -9
  367. package/dist/esm/internal/fiberRuntime.js.map +1 -1
  368. package/dist/esm/internal/groupBy.js +9 -3
  369. package/dist/esm/internal/groupBy.js.map +1 -1
  370. package/dist/esm/internal/layer.js +1 -1
  371. package/dist/esm/internal/layer.js.map +1 -1
  372. package/dist/esm/internal/mailbox.js +1 -1
  373. package/dist/esm/internal/mailbox.js.map +1 -1
  374. package/dist/esm/internal/sink.js +23 -20
  375. package/dist/esm/internal/sink.js.map +1 -1
  376. package/dist/esm/internal/stream.js +66 -69
  377. package/dist/esm/internal/stream.js.map +1 -1
  378. package/dist/esm/internal/version.js +1 -1
  379. package/dist/esm/internal/version.js.map +1 -1
  380. package/package.json +1 -1
  381. package/src/Array.ts +534 -0
  382. package/src/BigDecimal.ts +247 -21
  383. package/src/BigInt.ts +114 -0
  384. package/src/Boolean.ts +56 -0
  385. package/src/Brand.ts +6 -0
  386. package/src/Channel.ts +81 -5
  387. package/src/Chunk.ts +32 -0
  388. package/src/Config.ts +26 -1
  389. package/src/Context.ts +163 -0
  390. package/src/Cron.ts +91 -68
  391. package/src/Data.ts +26 -0
  392. package/src/DateTime.ts +307 -757
  393. package/src/Duration.ts +2 -0
  394. package/src/Effect.ts +910 -1
  395. package/src/Either.ts +84 -2
  396. package/src/FiberHandle.ts +6 -0
  397. package/src/FiberMap.ts +6 -0
  398. package/src/FiberSet.ts +6 -0
  399. package/src/Function.ts +50 -0
  400. package/src/GlobalValue.ts +2 -0
  401. package/src/HashMap.ts +6 -0
  402. package/src/Inspectable.ts +11 -7
  403. package/src/Iterable.ts +26 -0
  404. package/src/JSONSchema.ts +1 -0
  405. package/src/List.ts +24 -0
  406. package/src/Logger.ts +34 -0
  407. package/src/Mailbox.ts +2 -0
  408. package/src/ManagedRuntime.ts +2 -0
  409. package/src/Metric.ts +18 -0
  410. package/src/Micro.ts +2007 -1745
  411. package/src/Number.ts +104 -0
  412. package/src/Option.ts +142 -0
  413. package/src/Order.ts +2 -0
  414. package/src/Ordering.ts +8 -0
  415. package/src/Predicate.ts +104 -0
  416. package/src/Random.ts +4 -0
  417. package/src/RateLimiter.ts +4 -0
  418. package/src/RcMap.ts +6 -0
  419. package/src/RcRef.ts +2 -0
  420. package/src/Record.ts +136 -0
  421. package/src/Redacted.ts +8 -0
  422. package/src/RegExp.ts +4 -0
  423. package/src/Request.ts +4 -0
  424. package/src/RequestResolver.ts +6 -0
  425. package/src/Runtime.ts +18 -0
  426. package/src/STM.ts +2 -0
  427. package/src/Schema.ts +124 -0
  428. package/src/Sink.ts +11 -0
  429. package/src/Stream.ts +399 -44
  430. package/src/String.ts +94 -0
  431. package/src/Struct.ts +24 -0
  432. package/src/Symbol.ts +2 -0
  433. package/src/Trie.ts +132 -0
  434. package/src/Tuple.ts +42 -0
  435. package/src/Types.ts +24 -0
  436. package/src/Utils.ts +8 -0
  437. package/src/internal/channel/channelExecutor.ts +37 -33
  438. package/src/internal/channel.ts +504 -467
  439. package/src/internal/config.ts +18 -6
  440. package/src/internal/context.ts +56 -4
  441. package/src/internal/dateTime.ts +1126 -0
  442. package/src/internal/fiberRuntime.ts +35 -16
  443. package/src/internal/groupBy.ts +13 -22
  444. package/src/internal/layer.ts +5 -8
  445. package/src/internal/mailbox.ts +6 -4
  446. package/src/internal/sink.ts +55 -35
  447. package/src/internal/stream.ts +299 -299
  448. package/src/internal/version.ts +1 -1
@@ -4,130 +4,23 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.zonedOffsetIso = exports.zonedOffset = exports.zoneUnsafeMakeNamed = exports.zoneToString = exports.zoneMakeOffset = exports.zoneMakeNamedEffect = exports.zoneMakeNamed = exports.zoneMakeLocal = exports.zoneFromString = exports.withDateUtc = exports.withDate = exports.withCurrentZoneOffset = exports.withCurrentZoneNamed = exports.withCurrentZoneLocal = exports.withCurrentZone = exports.unsafeSetZoneNamed = exports.unsafeNow = exports.unsafeMakeZoned = exports.unsafeMake = exports.unsafeIsPast = exports.unsafeIsFuture = exports.unsafeFromDate = exports.toPartsUtc = exports.toParts = exports.toEpochMillis = exports.toDateUtc = exports.toDate = exports.subtractDuration = exports.subtract = exports.startOf = exports.setZoneOffset = exports.setZoneNamed = exports.setZoneCurrent = exports.setZone = exports.setPartsUtc = exports.setParts = exports.removeTime = exports.nowInCurrentZone = exports.now = exports.nearest = exports.mutateUtc = exports.mutate = exports.min = exports.max = exports.match = exports.mapEpochMillis = exports.makeZonedFromString = exports.makeZoned = exports.make = exports.lessThanOrEqualTo = exports.lessThan = exports.layerCurrentZoneOffset = exports.layerCurrentZoneNamed = exports.layerCurrentZoneLocal = exports.layerCurrentZone = exports.isZoned = exports.isUtc = exports.isTimeZoneOffset = exports.isTimeZoneNamed = exports.isTimeZone = exports.isPast = exports.isFuture = exports.isDateTime = exports.greaterThanOrEqualTo = exports.greaterThan = exports.getPartUtc = exports.getPart = exports.formatUtc = exports.formatLocal = exports.formatIsoZoned = exports.formatIsoOffset = exports.formatIsoDateUtc = exports.formatIsoDate = exports.formatIso = exports.formatIntl = exports.format = exports.endOf = exports.distanceDurationEither = exports.distanceDuration = exports.distance = exports.clamp = exports.between = exports.addDuration = exports.add = exports.TypeId = exports.TimeZoneTypeId = exports.Order = exports.Equivalence = exports.CurrentTimeZone = void 0;
7
- var _Cause = require("./Cause.js");
8
- var Clock = _interopRequireWildcard(require("./Clock.js"));
9
7
  var Context = _interopRequireWildcard(require("./Context.js"));
10
- var Duration = _interopRequireWildcard(require("./Duration.js"));
11
8
  var Effect = _interopRequireWildcard(require("./Effect.js"));
12
- var Either = _interopRequireWildcard(require("./Either.js"));
13
- var Equal = _interopRequireWildcard(require("./Equal.js"));
14
- var Equivalence_ = _interopRequireWildcard(require("./Equivalence.js"));
15
9
  var _Function = require("./Function.js");
16
- var _GlobalValue = require("./GlobalValue.js");
17
- var Hash = _interopRequireWildcard(require("./Hash.js"));
18
- var Inspectable = _interopRequireWildcard(require("./Inspectable.js"));
10
+ var Internal = _interopRequireWildcard(require("./internal/dateTime.js"));
19
11
  var Layer = _interopRequireWildcard(require("./Layer.js"));
20
- var Option = _interopRequireWildcard(require("./Option.js"));
21
- var order = _interopRequireWildcard(require("./Order.js"));
22
- var _Pipeable = require("./Pipeable.js");
23
- var Predicate = _interopRequireWildcard(require("./Predicate.js"));
24
12
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
25
13
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
26
- /**
27
- * @since 3.6.0
28
- */
29
-
30
14
  /**
31
15
  * @since 3.6.0
32
16
  * @category type ids
33
17
  */
34
- const TypeId = exports.TypeId = /*#__PURE__*/Symbol.for("effect/DateTime");
18
+ const TypeId = exports.TypeId = Internal.TypeId;
35
19
  /**
36
20
  * @since 3.6.0
37
21
  * @category type ids
38
22
  */
39
- const TimeZoneTypeId = exports.TimeZoneTypeId = /*#__PURE__*/Symbol.for("effect/DateTime/TimeZone");
40
- const Proto = {
41
- [TypeId]: TypeId,
42
- pipe() {
43
- return (0, _Pipeable.pipeArguments)(this, arguments);
44
- },
45
- [Inspectable.NodeInspectSymbol]() {
46
- return this.toString();
47
- },
48
- toJSON() {
49
- return toDateUtc(this).toJSON();
50
- }
51
- };
52
- const ProtoUtc = {
53
- ...Proto,
54
- _tag: "Utc",
55
- [Hash.symbol]() {
56
- return Hash.cached(this, Hash.number(this.epochMillis));
57
- },
58
- [Equal.symbol](that) {
59
- return isDateTime(that) && that._tag === "Utc" && this.epochMillis === that.epochMillis;
60
- },
61
- toString() {
62
- return `DateTime.Utc(${toDateUtc(this).toJSON()})`;
63
- }
64
- };
65
- const ProtoZoned = {
66
- ...Proto,
67
- _tag: "Zoned",
68
- [Hash.symbol]() {
69
- return (0, _Function.pipe)(Hash.number(this.epochMillis), Hash.combine(Hash.hash(this.zone)), Hash.cached(this));
70
- },
71
- [Equal.symbol](that) {
72
- return isDateTime(that) && that._tag === "Zoned" && this.epochMillis === that.epochMillis && Equal.equals(this.zone, that.zone);
73
- },
74
- toString() {
75
- return `DateTime.Zoned(${formatIsoZoned(this)})`;
76
- }
77
- };
78
- const ProtoTimeZone = {
79
- [TimeZoneTypeId]: TimeZoneTypeId,
80
- [Inspectable.NodeInspectSymbol]() {
81
- return this.toString();
82
- }
83
- };
84
- const ProtoTimeZoneNamed = {
85
- ...ProtoTimeZone,
86
- _tag: "Named",
87
- [Hash.symbol]() {
88
- return Hash.cached(this, Hash.string(`Named:${this.id}`));
89
- },
90
- [Equal.symbol](that) {
91
- return isTimeZone(that) && that._tag === "Named" && this.id === that.id;
92
- },
93
- toString() {
94
- return `TimeZone.Named(${this.id})`;
95
- },
96
- toJSON() {
97
- return {
98
- _id: "TimeZone",
99
- _tag: "Named",
100
- id: this.id
101
- };
102
- }
103
- };
104
- const ProtoTimeZoneOffset = {
105
- ...ProtoTimeZone,
106
- _tag: "Offset",
107
- [Hash.symbol]() {
108
- return Hash.cached(this, Hash.string(`Offset:${this.offset}`));
109
- },
110
- [Equal.symbol](that) {
111
- return isTimeZone(that) && that._tag === "Offset" && this.offset === that.offset;
112
- },
113
- toString() {
114
- return `TimeZone.Offset(${offsetToString(this.offset)})`;
115
- },
116
- toJSON() {
117
- return {
118
- _id: "TimeZone",
119
- _tag: "Offset",
120
- offset: this.offset
121
- };
122
- }
123
- };
124
- const makeZonedProto = (epochMillis, zone, partsUtc) => {
125
- const self = Object.create(ProtoZoned);
126
- self.epochMillis = epochMillis;
127
- self.zone = zone;
128
- self.partsUtc = partsUtc;
129
- return self;
130
- };
23
+ const TimeZoneTypeId = exports.TimeZoneTypeId = Internal.TimeZoneTypeId;
131
24
  // =============================================================================
132
25
  // guards
133
26
  // =============================================================================
@@ -135,38 +28,32 @@ const makeZonedProto = (epochMillis, zone, partsUtc) => {
135
28
  * @since 3.6.0
136
29
  * @category guards
137
30
  */
138
- const isDateTime = u => Predicate.hasProperty(u, TypeId);
139
- exports.isDateTime = isDateTime;
140
- const isDateTimeArgs = args => isDateTime(args[0]);
31
+ const isDateTime = exports.isDateTime = Internal.isDateTime;
141
32
  /**
142
33
  * @since 3.6.0
143
34
  * @category guards
144
35
  */
145
- const isTimeZone = u => Predicate.hasProperty(u, TimeZoneTypeId);
36
+ const isTimeZone = exports.isTimeZone = Internal.isTimeZone;
146
37
  /**
147
38
  * @since 3.6.0
148
39
  * @category guards
149
40
  */
150
- exports.isTimeZone = isTimeZone;
151
- const isTimeZoneOffset = u => isTimeZone(u) && u._tag === "Offset";
41
+ const isTimeZoneOffset = exports.isTimeZoneOffset = Internal.isTimeZoneOffset;
152
42
  /**
153
43
  * @since 3.6.0
154
44
  * @category guards
155
45
  */
156
- exports.isTimeZoneOffset = isTimeZoneOffset;
157
- const isTimeZoneNamed = u => isTimeZone(u) && u._tag === "Named";
46
+ const isTimeZoneNamed = exports.isTimeZoneNamed = Internal.isTimeZoneNamed;
158
47
  /**
159
48
  * @since 3.6.0
160
49
  * @category guards
161
50
  */
162
- exports.isTimeZoneNamed = isTimeZoneNamed;
163
- const isUtc = self => self._tag === "Utc";
51
+ const isUtc = exports.isUtc = Internal.isUtc;
164
52
  /**
165
53
  * @since 3.6.0
166
54
  * @category guards
167
55
  */
168
- exports.isUtc = isUtc;
169
- const isZoned = self => self._tag === "Zoned";
56
+ const isZoned = exports.isZoned = Internal.isZoned;
170
57
  // =============================================================================
171
58
  // instances
172
59
  // =============================================================================
@@ -174,25 +61,19 @@ const isZoned = self => self._tag === "Zoned";
174
61
  * @since 3.6.0
175
62
  * @category instances
176
63
  */
177
- exports.isZoned = isZoned;
178
- const Equivalence = exports.Equivalence = /*#__PURE__*/Equivalence_.make((a, b) => a.epochMillis === b.epochMillis);
64
+ const Equivalence = exports.Equivalence = Internal.Equivalence;
179
65
  /**
180
66
  * @since 3.6.0
181
67
  * @category instances
182
68
  */
183
- const Order = exports.Order = /*#__PURE__*/order.make((self, that) => self.epochMillis < that.epochMillis ? -1 : self.epochMillis > that.epochMillis ? 1 : 0);
69
+ const Order = exports.Order = Internal.Order;
184
70
  /**
185
71
  * @since 3.6.0
186
72
  */
187
- const clamp = exports.clamp = /*#__PURE__*/order.clamp(Order);
73
+ const clamp = exports.clamp = Internal.clamp;
188
74
  // =============================================================================
189
75
  // constructors
190
76
  // =============================================================================
191
- const makeUtc = epochMillis => {
192
- const self = Object.create(ProtoUtc);
193
- self.epochMillis = epochMillis;
194
- return self;
195
- };
196
77
  /**
197
78
  * Create a `DateTime` from a `Date`.
198
79
  *
@@ -201,13 +82,7 @@ const makeUtc = epochMillis => {
201
82
  * @since 3.6.0
202
83
  * @category constructors
203
84
  */
204
- const unsafeFromDate = date => {
205
- const epochMillis = date.getTime();
206
- if (Number.isNaN(epochMillis)) {
207
- throw new _Cause.IllegalArgumentException("Invalid date");
208
- }
209
- return makeUtc(epochMillis);
210
- };
85
+ const unsafeFromDate = exports.unsafeFromDate = Internal.unsafeFromDate;
211
86
  /**
212
87
  * Create a `DateTime` from one of the following:
213
88
  *
@@ -220,6 +95,7 @@ const unsafeFromDate = date => {
220
95
  * @since 3.6.0
221
96
  * @category constructors
222
97
  * @example
98
+ * ```ts
223
99
  * import { DateTime } from "effect"
224
100
  *
225
101
  * // from Date
@@ -230,20 +106,9 @@ const unsafeFromDate = date => {
230
106
  *
231
107
  * // from string
232
108
  * DateTime.unsafeMake("2024-01-01")
109
+ * ```
233
110
  */
234
- exports.unsafeFromDate = unsafeFromDate;
235
- const unsafeMake = input => {
236
- if (isDateTime(input)) {
237
- return input;
238
- } else if (input instanceof Date) {
239
- return unsafeFromDate(input);
240
- } else if (typeof input === "object") {
241
- const date = new Date(0);
242
- setPartsDate(date, input);
243
- return unsafeFromDate(date);
244
- }
245
- return unsafeFromDate(new Date(input));
246
- };
111
+ const unsafeMake = exports.unsafeMake = Internal.unsafeMake;
247
112
  /**
248
113
  * Create a `DateTime.Zoned` using `DateTime.unsafeMake` and a time zone.
249
114
  *
@@ -254,36 +119,13 @@ const unsafeMake = input => {
254
119
  * @since 3.6.0
255
120
  * @category constructors
256
121
  * @example
122
+ * ```ts
257
123
  * import { DateTime } from "effect"
258
124
  *
259
125
  * DateTime.unsafeMakeZoned(new Date(), { timeZone: "Europe/London" })
126
+ * ```
260
127
  */
261
- exports.unsafeMake = unsafeMake;
262
- const unsafeMakeZoned = (input, options) => {
263
- if (options?.timeZone === undefined && isDateTime(input) && isZoned(input)) {
264
- return input;
265
- }
266
- const self = unsafeMake(input);
267
- let zone;
268
- if (options?.timeZone === undefined) {
269
- const offset = new Date(self.epochMillis).getTimezoneOffset() * -60 * 1000;
270
- zone = zoneMakeOffset(offset);
271
- } else if (isTimeZone(options?.timeZone)) {
272
- zone = options.timeZone;
273
- } else if (typeof options?.timeZone === "number") {
274
- zone = zoneMakeOffset(options.timeZone);
275
- } else {
276
- const parsedZone = zoneFromString(options.timeZone);
277
- if (Option.isNone(parsedZone)) {
278
- throw new _Cause.IllegalArgumentException(`Invalid time zone: ${options.timeZone}`);
279
- }
280
- zone = parsedZone.value;
281
- }
282
- if (options?.adjustForTimeZone !== true) {
283
- return makeZonedProto(self.epochMillis, zone, self.partsUtc);
284
- }
285
- return makeZonedFromAdjusted(self.epochMillis, zone);
286
- };
128
+ const unsafeMakeZoned = exports.unsafeMakeZoned = Internal.unsafeMakeZoned;
287
129
  /**
288
130
  * Create a `DateTime.Zoned` using `DateTime.make` and a time zone.
289
131
  *
@@ -294,12 +136,13 @@ const unsafeMakeZoned = (input, options) => {
294
136
  * @since 3.6.0
295
137
  * @category constructors
296
138
  * @example
139
+ * ```ts
297
140
  * import { DateTime } from "effect"
298
141
  *
299
142
  * DateTime.makeZoned(new Date(), { timeZone: "Europe/London" })
143
+ * ```
300
144
  */
301
- exports.unsafeMakeZoned = unsafeMakeZoned;
302
- const makeZoned = exports.makeZoned = /*#__PURE__*/Option.liftThrowable(unsafeMakeZoned);
145
+ const makeZoned = exports.makeZoned = Internal.makeZoned;
303
146
  /**
304
147
  * Create a `DateTime` from one of the following:
305
148
  *
@@ -314,6 +157,7 @@ const makeZoned = exports.makeZoned = /*#__PURE__*/Option.liftThrowable(unsafeMa
314
157
  * @since 3.6.0
315
158
  * @category constructors
316
159
  * @example
160
+ * ```ts
317
161
  * import { DateTime } from "effect"
318
162
  *
319
163
  * // from Date
@@ -324,9 +168,9 @@ const makeZoned = exports.makeZoned = /*#__PURE__*/Option.liftThrowable(unsafeMa
324
168
  *
325
169
  * // from string
326
170
  * DateTime.make("2024-01-01")
171
+ * ```
327
172
  */
328
- const make = exports.make = /*#__PURE__*/Option.liftThrowable(unsafeMake);
329
- const zonedStringRegex = /^(.{17,35})\[(.+)\]$/;
173
+ const make = exports.make = Internal.make;
330
174
  /**
331
175
  * Create a `DateTime.Zoned` from a string.
332
176
  *
@@ -335,40 +179,29 @@ const zonedStringRegex = /^(.{17,35})\[(.+)\]$/;
335
179
  * @since 3.6.0
336
180
  * @category constructors
337
181
  */
338
- const makeZonedFromString = input => {
339
- const match = zonedStringRegex.exec(input);
340
- if (match === null) {
341
- const offset = parseOffset(input);
342
- return offset !== null ? makeZoned(input, {
343
- timeZone: offset
344
- }) : Option.none();
345
- }
346
- const [, isoString, timeZone] = match;
347
- return makeZoned(isoString, {
348
- timeZone
349
- });
350
- };
182
+ const makeZonedFromString = exports.makeZonedFromString = Internal.makeZonedFromString;
351
183
  /**
352
184
  * Get the current time using the `Clock` service and convert it to a `DateTime`.
353
185
  *
354
186
  * @since 3.6.0
355
187
  * @category constructors
356
188
  * @example
189
+ * ```ts
357
190
  * import { DateTime, Effect } from "effect"
358
191
  *
359
192
  * Effect.gen(function* () {
360
193
  * const now = yield* DateTime.now
361
194
  * })
195
+ * ```
362
196
  */
363
- exports.makeZonedFromString = makeZonedFromString;
364
- const now = exports.now = /*#__PURE__*/Effect.map(Clock.currentTimeMillis, makeUtc);
197
+ const now = exports.now = Internal.now;
365
198
  /**
366
199
  * Get the current time using `Date.now`.
367
200
  *
368
201
  * @since 3.6.0
369
202
  * @category constructors
370
203
  */
371
- const unsafeNow = () => makeUtc(Date.now());
204
+ const unsafeNow = exports.unsafeNow = Internal.unsafeNow;
372
205
  // =============================================================================
373
206
  // time zones
374
207
  // =============================================================================
@@ -378,6 +211,7 @@ const unsafeNow = () => makeUtc(Date.now());
378
211
  * @since 3.6.0
379
212
  * @category time zones
380
213
  * @example
214
+ * ```ts
381
215
  * import { DateTime, Effect } from "effect"
382
216
  *
383
217
  * Effect.gen(function* () {
@@ -387,9 +221,9 @@ const unsafeNow = () => makeUtc(Date.now());
387
221
  * // set the time zone
388
222
  * const zoned: DateTime.Zoned = DateTime.setZone(now, zone)
389
223
  * })
224
+ * ```
390
225
  */
391
- exports.unsafeNow = unsafeNow;
392
- const setZone = exports.setZone = /*#__PURE__*/(0, _Function.dual)(isDateTimeArgs, (self, zone, options) => options?.adjustForTimeZone === true ? makeZonedFromAdjusted(self.epochMillis, zone) : makeZonedProto(self.epochMillis, zone, self.partsUtc));
226
+ const setZone = exports.setZone = Internal.setZone;
393
227
  /**
394
228
  * Add a fixed offset time zone to a `DateTime`.
395
229
  *
@@ -398,6 +232,7 @@ const setZone = exports.setZone = /*#__PURE__*/(0, _Function.dual)(isDateTimeArg
398
232
  * @since 3.6.0
399
233
  * @category time zones
400
234
  * @example
235
+ * ```ts
401
236
  * import { DateTime, Effect } from "effect"
402
237
  *
403
238
  * Effect.gen(function* () {
@@ -406,31 +241,9 @@ const setZone = exports.setZone = /*#__PURE__*/(0, _Function.dual)(isDateTimeArg
406
241
  * // set the offset time zone in milliseconds
407
242
  * const zoned: DateTime.Zoned = DateTime.setZoneOffset(now, 3 * 60 * 60 * 1000)
408
243
  * })
244
+ * ```
409
245
  */
410
- const setZoneOffset = exports.setZoneOffset = /*#__PURE__*/(0, _Function.dual)(isDateTimeArgs, (self, offset, options) => setZone(self, zoneMakeOffset(offset), options));
411
- const validZoneCache = /*#__PURE__*/(0, _GlobalValue.globalValue)("effect/DateTime/validZoneCache", () => new Map());
412
- const formatOptions = {
413
- day: "numeric",
414
- month: "numeric",
415
- year: "numeric",
416
- hour: "numeric",
417
- minute: "numeric",
418
- second: "numeric",
419
- timeZoneName: "longOffset",
420
- fractionalSecondDigits: 3,
421
- hourCycle: "h23"
422
- };
423
- const zoneMakeIntl = format => {
424
- const zoneId = format.resolvedOptions().timeZone;
425
- if (validZoneCache.has(zoneId)) {
426
- return validZoneCache.get(zoneId);
427
- }
428
- const zone = Object.create(ProtoTimeZoneNamed);
429
- zone.id = zoneId;
430
- zone.format = format;
431
- validZoneCache.set(zoneId, zone);
432
- return zone;
433
- };
246
+ const setZoneOffset = exports.setZoneOffset = Internal.setZoneOffset;
434
247
  /**
435
248
  * Attempt to create a named time zone from a IANA time zone identifier.
436
249
  *
@@ -439,31 +252,14 @@ const zoneMakeIntl = format => {
439
252
  * @since 3.6.0
440
253
  * @category time zones
441
254
  */
442
- const zoneUnsafeMakeNamed = zoneId => {
443
- if (validZoneCache.has(zoneId)) {
444
- return validZoneCache.get(zoneId);
445
- }
446
- try {
447
- return zoneMakeIntl(new Intl.DateTimeFormat("en-US", {
448
- ...formatOptions,
449
- timeZone: zoneId
450
- }));
451
- } catch (_) {
452
- throw new _Cause.IllegalArgumentException(`Invalid time zone: ${zoneId}`);
453
- }
454
- };
255
+ const zoneUnsafeMakeNamed = exports.zoneUnsafeMakeNamed = Internal.zoneUnsafeMakeNamed;
455
256
  /**
456
257
  * Create a fixed offset time zone.
457
258
  *
458
259
  * @since 3.6.0
459
260
  * @category time zones
460
261
  */
461
- exports.zoneUnsafeMakeNamed = zoneUnsafeMakeNamed;
462
- const zoneMakeOffset = offset => {
463
- const zone = Object.create(ProtoTimeZoneOffset);
464
- zone.offset = offset;
465
- return zone;
466
- };
262
+ const zoneMakeOffset = exports.zoneMakeOffset = Internal.zoneMakeOffset;
467
263
  /**
468
264
  * Create a named time zone from a IANA time zone identifier. If the time zone
469
265
  * is invalid, `None` will be returned.
@@ -471,8 +267,7 @@ const zoneMakeOffset = offset => {
471
267
  * @since 3.6.0
472
268
  * @category time zones
473
269
  */
474
- exports.zoneMakeOffset = zoneMakeOffset;
475
- const zoneMakeNamed = exports.zoneMakeNamed = /*#__PURE__*/Option.liftThrowable(zoneUnsafeMakeNamed);
270
+ const zoneMakeNamed = exports.zoneMakeNamed = Internal.zoneMakeNamed;
476
271
  /**
477
272
  * Create a named time zone from a IANA time zone identifier. If the time zone
478
273
  * is invalid, it will fail with an `IllegalArgumentException`.
@@ -480,39 +275,28 @@ const zoneMakeNamed = exports.zoneMakeNamed = /*#__PURE__*/Option.liftThrowable(
480
275
  * @since 3.6.0
481
276
  * @category time zones
482
277
  */
483
- const zoneMakeNamedEffect = zoneId => Effect.try({
484
- try: () => zoneUnsafeMakeNamed(zoneId),
485
- catch: e => e
486
- });
278
+ const zoneMakeNamedEffect = exports.zoneMakeNamedEffect = Internal.zoneMakeNamedEffect;
487
279
  /**
488
280
  * Create a named time zone from the system's local time zone.
489
281
  *
490
282
  * @since 3.6.0
491
283
  * @category time zones
492
284
  */
493
- exports.zoneMakeNamedEffect = zoneMakeNamedEffect;
494
- const zoneMakeLocal = () => zoneMakeIntl(new Intl.DateTimeFormat("en-US", formatOptions));
495
- exports.zoneMakeLocal = zoneMakeLocal;
496
- const offsetZoneRegex = /^(?:GMT|[+-])/;
285
+ const zoneMakeLocal = exports.zoneMakeLocal = Internal.zoneMakeLocal;
497
286
  /**
498
287
  * Try parse a TimeZone from a string
499
288
  *
500
289
  * @since 3.6.0
501
290
  * @category time zones
502
291
  */
503
- const zoneFromString = zone => {
504
- if (offsetZoneRegex.test(zone)) {
505
- const offset = parseOffset(zone);
506
- return offset === null ? Option.none() : Option.some(zoneMakeOffset(offset));
507
- }
508
- return zoneMakeNamed(zone);
509
- };
292
+ const zoneFromString = exports.zoneFromString = Internal.zoneFromString;
510
293
  /**
511
294
  * Format a `TimeZone` as a string.
512
295
  *
513
296
  * @since 3.6.0
514
297
  * @category time zones
515
298
  * @example
299
+ * ```ts
516
300
  * import { DateTime, Effect } from "effect"
517
301
  *
518
302
  * // Outputs "+03:00"
@@ -520,14 +304,9 @@ const zoneFromString = zone => {
520
304
  *
521
305
  * // Outputs "Europe/London"
522
306
  * DateTime.zoneToString(DateTime.zoneUnsafeMakeNamed("Europe/London"))
307
+ * ```
523
308
  */
524
- exports.zoneFromString = zoneFromString;
525
- const zoneToString = self => {
526
- if (self._tag === "Offset") {
527
- return offsetToString(self.offset);
528
- }
529
- return self.id;
530
- };
309
+ const zoneToString = exports.zoneToString = Internal.zoneToString;
531
310
  /**
532
311
  * Set the time zone of a `DateTime` from an IANA time zone identifier. If the
533
312
  * time zone is invalid, `None` will be returned.
@@ -535,6 +314,7 @@ const zoneToString = self => {
535
314
  * @since 3.6.0
536
315
  * @category time zones
537
316
  * @example
317
+ * ```ts
538
318
  * import { DateTime, Effect } from "effect"
539
319
  *
540
320
  * Effect.gen(function* () {
@@ -542,9 +322,9 @@ const zoneToString = self => {
542
322
  * // set the time zone, returns an Option
543
323
  * DateTime.setZoneNamed(now, "Europe/London")
544
324
  * })
325
+ * ```
545
326
  */
546
- exports.zoneToString = zoneToString;
547
- const setZoneNamed = exports.setZoneNamed = /*#__PURE__*/(0, _Function.dual)(isDateTimeArgs, (self, zoneId, options) => Option.map(zoneMakeNamed(zoneId), zone => setZone(self, zone, options)));
327
+ const setZoneNamed = exports.setZoneNamed = Internal.setZoneNamed;
548
328
  /**
549
329
  * Set the time zone of a `DateTime` from an IANA time zone identifier. If the
550
330
  * time zone is invalid, an `IllegalArgumentException` will be thrown.
@@ -552,6 +332,7 @@ const setZoneNamed = exports.setZoneNamed = /*#__PURE__*/(0, _Function.dual)(isD
552
332
  * @since 3.6.0
553
333
  * @category time zones
554
334
  * @example
335
+ * ```ts
555
336
  * import { DateTime, Effect } from "effect"
556
337
  *
557
338
  * Effect.gen(function* () {
@@ -559,8 +340,9 @@ const setZoneNamed = exports.setZoneNamed = /*#__PURE__*/(0, _Function.dual)(isD
559
340
  * // set the time zone
560
341
  * DateTime.unsafeSetZoneNamed(now, "Europe/London")
561
342
  * })
343
+ * ```
562
344
  */
563
- const unsafeSetZoneNamed = exports.unsafeSetZoneNamed = /*#__PURE__*/(0, _Function.dual)(isDateTimeArgs, (self, zoneId, options) => setZone(self, zoneUnsafeMakeNamed(zoneId), options));
345
+ const unsafeSetZoneNamed = exports.unsafeSetZoneNamed = Internal.unsafeSetZoneNamed;
564
346
  // =============================================================================
565
347
  // comparisons
566
348
  // =============================================================================
@@ -573,6 +355,7 @@ const unsafeSetZoneNamed = exports.unsafeSetZoneNamed = /*#__PURE__*/(0, _Functi
573
355
  * @since 3.6.0
574
356
  * @category comparisons
575
357
  * @example
358
+ * ```ts
576
359
  * import { DateTime, Effect } from "effect"
577
360
  *
578
361
  * Effect.gen(function* () {
@@ -582,8 +365,9 @@ const unsafeSetZoneNamed = exports.unsafeSetZoneNamed = /*#__PURE__*/(0, _Functi
582
365
  * // returns 60000
583
366
  * DateTime.distance(now, other)
584
367
  * })
368
+ * ```
585
369
  */
586
- const distance = exports.distance = /*#__PURE__*/(0, _Function.dual)(2, (self, other) => toEpochMillis(other) - toEpochMillis(self));
370
+ const distance = exports.distance = Internal.distance;
587
371
  /**
588
372
  * Calulate the difference between two `DateTime` values.
589
373
  *
@@ -596,6 +380,7 @@ const distance = exports.distance = /*#__PURE__*/(0, _Function.dual)(2, (self, o
596
380
  * @since 3.6.0
597
381
  * @category comparisons
598
382
  * @example
383
+ * ```ts
599
384
  * import { DateTime, Effect } from "effect"
600
385
  *
601
386
  * Effect.gen(function* () {
@@ -608,17 +393,16 @@ const distance = exports.distance = /*#__PURE__*/(0, _Function.dual)(2, (self, o
608
393
  * // returns Either.left(Duration.minutes(1))
609
394
  * DateTime.distanceDurationEither(other, now)
610
395
  * })
396
+ * ```
611
397
  */
612
- const distanceDurationEither = exports.distanceDurationEither = /*#__PURE__*/(0, _Function.dual)(2, (self, other) => {
613
- const diffMillis = distance(self, other);
614
- return diffMillis > 0 ? Either.right(Duration.millis(diffMillis)) : Either.left(Duration.millis(-diffMillis));
615
- });
398
+ const distanceDurationEither = exports.distanceDurationEither = Internal.distanceDurationEither;
616
399
  /**
617
400
  * Calulate the distance between two `DateTime` values.
618
401
  *
619
402
  * @since 3.6.0
620
403
  * @category comparisons
621
404
  * @example
405
+ * ```ts
622
406
  * import { DateTime, Effect } from "effect"
623
407
  *
624
408
  * Effect.gen(function* () {
@@ -628,66 +412,64 @@ const distanceDurationEither = exports.distanceDurationEither = /*#__PURE__*/(0,
628
412
  * // returns Duration.minutes(1)
629
413
  * DateTime.distanceDuration(now, other)
630
414
  * })
415
+ * ```
631
416
  */
632
- const distanceDuration = exports.distanceDuration = /*#__PURE__*/(0, _Function.dual)(2, (self, other) => Duration.millis(Math.abs(distance(self, other))));
417
+ const distanceDuration = exports.distanceDuration = Internal.distanceDuration;
633
418
  /**
634
419
  * @since 3.6.0
635
420
  * @category comparisons
636
421
  */
637
- const min = exports.min = /*#__PURE__*/order.min(Order);
422
+ const min = exports.min = Internal.min;
638
423
  /**
639
424
  * @since 3.6.0
640
425
  * @category comparisons
641
426
  */
642
- const max = exports.max = /*#__PURE__*/order.max(Order);
427
+ const max = exports.max = Internal.max;
643
428
  /**
644
429
  * @since 3.6.0
645
430
  * @category comparisons
646
431
  */
647
- const greaterThan = exports.greaterThan = /*#__PURE__*/order.greaterThan(Order);
432
+ const greaterThan = exports.greaterThan = Internal.greaterThan;
648
433
  /**
649
434
  * @since 3.6.0
650
435
  * @category comparisons
651
436
  */
652
- const greaterThanOrEqualTo = exports.greaterThanOrEqualTo = /*#__PURE__*/order.greaterThanOrEqualTo(Order);
437
+ const greaterThanOrEqualTo = exports.greaterThanOrEqualTo = Internal.greaterThanOrEqualTo;
653
438
  /**
654
439
  * @since 3.6.0
655
440
  * @category comparisons
656
441
  */
657
- const lessThan = exports.lessThan = /*#__PURE__*/order.lessThan(Order);
442
+ const lessThan = exports.lessThan = Internal.lessThan;
658
443
  /**
659
444
  * @since 3.6.0
660
445
  * @category comparisons
661
446
  */
662
- const lessThanOrEqualTo = exports.lessThanOrEqualTo = /*#__PURE__*/order.lessThanOrEqualTo(Order);
447
+ const lessThanOrEqualTo = exports.lessThanOrEqualTo = Internal.lessThanOrEqualTo;
663
448
  /**
664
449
  * @since 3.6.0
665
450
  * @category comparisons
666
451
  */
667
- const between = exports.between = /*#__PURE__*/order.between(Order);
452
+ const between = exports.between = Internal.between;
668
453
  /**
669
454
  * @since 3.6.0
670
455
  * @category comparisons
671
456
  */
672
- const isFuture = self => Effect.map(now, lessThan(self));
457
+ const isFuture = exports.isFuture = Internal.isFuture;
673
458
  /**
674
459
  * @since 3.6.0
675
460
  * @category comparisons
676
461
  */
677
- exports.isFuture = isFuture;
678
- const unsafeIsFuture = self => lessThan(unsafeNow(), self);
462
+ const unsafeIsFuture = exports.unsafeIsFuture = Internal.unsafeIsFuture;
679
463
  /**
680
464
  * @since 3.6.0
681
465
  * @category comparisons
682
466
  */
683
- exports.unsafeIsFuture = unsafeIsFuture;
684
- const isPast = self => Effect.map(now, greaterThan(self));
467
+ const isPast = exports.isPast = Internal.isPast;
685
468
  /**
686
469
  * @since 3.6.0
687
470
  * @category comparisons
688
471
  */
689
- exports.isPast = isPast;
690
- const unsafeIsPast = self => greaterThan(unsafeNow(), self);
472
+ const unsafeIsPast = exports.unsafeIsPast = Internal.unsafeIsPast;
691
473
  // =============================================================================
692
474
  // conversions
693
475
  // =============================================================================
@@ -697,48 +479,21 @@ const unsafeIsPast = self => greaterThan(unsafeNow(), self);
697
479
  * @since 3.6.0
698
480
  * @category conversions
699
481
  */
700
- exports.unsafeIsPast = unsafeIsPast;
701
- const toDateUtc = self => new Date(self.epochMillis);
482
+ const toDateUtc = exports.toDateUtc = Internal.toDateUtc;
702
483
  /**
703
484
  * Convert a `DateTime` to a `Date`, applying the time zone first.
704
485
  *
705
486
  * @since 3.6.0
706
487
  * @category conversions
707
488
  */
708
- exports.toDateUtc = toDateUtc;
709
- const toDate = self => {
710
- if (self._tag === "Utc") {
711
- return new Date(self.epochMillis);
712
- } else if (self.zone._tag === "Offset") {
713
- return new Date(self.epochMillis + self.zone.offset);
714
- } else if (self.adjustedEpochMillis !== undefined) {
715
- return new Date(self.adjustedEpochMillis);
716
- }
717
- const parts = self.zone.format.formatToParts(self.epochMillis).filter(_ => _.type !== "literal");
718
- const date = new Date(0);
719
- date.setUTCFullYear(Number(parts[2].value), Number(parts[0].value) - 1, Number(parts[1].value));
720
- date.setUTCHours(Number(parts[3].value), Number(parts[4].value), Number(parts[5].value), Number(parts[6].value));
721
- self.adjustedEpochMillis = date.getTime();
722
- return date;
723
- };
489
+ const toDate = exports.toDate = Internal.toDate;
724
490
  /**
725
491
  * Calculate the time zone offset of a `DateTime.Zoned` in milliseconds.
726
492
  *
727
493
  * @since 3.6.0
728
494
  * @category conversions
729
495
  */
730
- exports.toDate = toDate;
731
- const zonedOffset = self => {
732
- const date = toDate(self);
733
- return date.getTime() - toEpochMillis(self);
734
- };
735
- exports.zonedOffset = zonedOffset;
736
- const offsetToString = offset => {
737
- const abs = Math.abs(offset);
738
- const hours = Math.floor(abs / (60 * 60 * 1000));
739
- const minutes = Math.round(abs % (60 * 60 * 1000) / (60 * 1000));
740
- return `${offset < 0 ? "-" : "+"}${String(hours).padStart(2, "0")}:${String(minutes).padStart(2, "0")}`;
741
- };
496
+ const zonedOffset = exports.zonedOffset = Internal.zonedOffset;
742
497
  /**
743
498
  * Calculate the time zone offset of a `DateTime` in milliseconds.
744
499
  *
@@ -747,15 +502,14 @@ const offsetToString = offset => {
747
502
  * @since 3.6.0
748
503
  * @category conversions
749
504
  */
750
- const zonedOffsetIso = self => offsetToString(zonedOffset(self));
505
+ const zonedOffsetIso = exports.zonedOffsetIso = Internal.zonedOffsetIso;
751
506
  /**
752
507
  * Get the milliseconds since the Unix epoch of a `DateTime`.
753
508
  *
754
509
  * @since 3.6.0
755
510
  * @category conversions
756
511
  */
757
- exports.zonedOffsetIso = zonedOffsetIso;
758
- const toEpochMillis = self => self.epochMillis;
512
+ const toEpochMillis = exports.toEpochMillis = Internal.toEpochMillis;
759
513
  /**
760
514
  * Remove the time aspect of a `DateTime`, first adjusting for the time
761
515
  * zone. It will return a `DateTime.Utc` only containing the date.
@@ -763,6 +517,7 @@ const toEpochMillis = self => self.epochMillis;
763
517
  * @since 3.6.0
764
518
  * @category conversions
765
519
  * @example
520
+ * ```ts
766
521
  * import { DateTime } from "effect"
767
522
  *
768
523
  * // returns "2024-01-01T00:00:00Z"
@@ -773,26 +528,12 @@ const toEpochMillis = self => self.epochMillis;
773
528
  * DateTime.removeTime,
774
529
  * DateTime.formatIso
775
530
  * )
531
+ * ```
776
532
  */
777
- exports.toEpochMillis = toEpochMillis;
778
- const removeTime = self => withDate(self, date => {
779
- date.setUTCHours(0, 0, 0, 0);
780
- return makeUtc(date.getTime());
781
- });
533
+ const removeTime = exports.removeTime = Internal.removeTime;
782
534
  // =============================================================================
783
535
  // parts
784
536
  // =============================================================================
785
- exports.removeTime = removeTime;
786
- const dateToParts = date => ({
787
- millis: date.getUTCMilliseconds(),
788
- seconds: date.getUTCSeconds(),
789
- minutes: date.getUTCMinutes(),
790
- hours: date.getUTCHours(),
791
- day: date.getUTCDate(),
792
- weekDay: date.getUTCDay(),
793
- month: date.getUTCMonth() + 1,
794
- year: date.getUTCFullYear()
795
- });
796
537
  /**
797
538
  * Get the different parts of a `DateTime` as an object.
798
539
  *
@@ -801,15 +542,7 @@ const dateToParts = date => ({
801
542
  * @since 3.6.0
802
543
  * @category parts
803
544
  */
804
- const toParts = self => {
805
- if (self._tag === "Utc") {
806
- return toPartsUtc(self);
807
- } else if (self.partsAdjusted !== undefined) {
808
- return self.partsAdjusted;
809
- }
810
- self.partsAdjusted = withDate(self, dateToParts);
811
- return self.partsAdjusted;
812
- };
545
+ const toParts = exports.toParts = Internal.toParts;
813
546
  /**
814
547
  * Get the different parts of a `DateTime` as an object.
815
548
  *
@@ -818,14 +551,7 @@ const toParts = self => {
818
551
  * @since 3.6.0
819
552
  * @category parts
820
553
  */
821
- exports.toParts = toParts;
822
- const toPartsUtc = self => {
823
- if (self.partsUtc !== undefined) {
824
- return self.partsUtc;
825
- }
826
- self.partsUtc = withDateUtc(self, dateToParts);
827
- return self.partsUtc;
828
- };
554
+ const toPartsUtc = exports.toPartsUtc = Internal.toPartsUtc;
829
555
  /**
830
556
  * Get a part of a `DateTime` as a number.
831
557
  *
@@ -834,14 +560,15 @@ const toPartsUtc = self => {
834
560
  * @since 3.6.0
835
561
  * @category parts
836
562
  * @example
563
+ * ```ts
837
564
  * import { DateTime } from "effect"
838
565
  *
839
566
  * const now = DateTime.unsafeMake({ year: 2024 })
840
567
  * const year = DateTime.getPartUtc(now, "year")
841
568
  * assert.strictEqual(year, 2024)
569
+ * ```
842
570
  */
843
- exports.toPartsUtc = toPartsUtc;
844
- const getPartUtc = exports.getPartUtc = /*#__PURE__*/(0, _Function.dual)(2, (self, part) => toPartsUtc(self)[part]);
571
+ const getPartUtc = exports.getPartUtc = Internal.getPartUtc;
845
572
  /**
846
573
  * Get a part of a `DateTime` as a number.
847
574
  *
@@ -850,40 +577,15 @@ const getPartUtc = exports.getPartUtc = /*#__PURE__*/(0, _Function.dual)(2, (sel
850
577
  * @since 3.6.0
851
578
  * @category parts
852
579
  * @example
580
+ * ```ts
853
581
  * import { DateTime } from "effect"
854
582
  *
855
583
  * const now = DateTime.unsafeMakeZoned({ year: 2024 }, { timeZone: "Europe/London" })
856
584
  * const year = DateTime.getPart(now, "year")
857
585
  * assert.strictEqual(year, 2024)
586
+ * ```
858
587
  */
859
- const getPart = exports.getPart = /*#__PURE__*/(0, _Function.dual)(2, (self, part) => toParts(self)[part]);
860
- const setPartsDate = (date, parts) => {
861
- if (parts.year !== undefined) {
862
- date.setUTCFullYear(parts.year);
863
- }
864
- if (parts.month !== undefined) {
865
- date.setUTCMonth(parts.month - 1);
866
- }
867
- if (parts.day !== undefined) {
868
- date.setUTCDate(parts.day);
869
- }
870
- if (parts.weekDay !== undefined) {
871
- const diff = parts.weekDay - date.getUTCDay();
872
- date.setUTCDate(date.getUTCDate() + diff);
873
- }
874
- if (parts.hours !== undefined) {
875
- date.setUTCHours(parts.hours);
876
- }
877
- if (parts.minutes !== undefined) {
878
- date.setUTCMinutes(parts.minutes);
879
- }
880
- if (parts.seconds !== undefined) {
881
- date.setUTCSeconds(parts.seconds);
882
- }
883
- if (parts.millis !== undefined) {
884
- date.setUTCMilliseconds(parts.millis);
885
- }
886
- };
588
+ const getPart = exports.getPart = Internal.getPart;
887
589
  /**
888
590
  * Set the different parts of a `DateTime` as an object.
889
591
  *
@@ -892,21 +594,21 @@ const setPartsDate = (date, parts) => {
892
594
  * @since 3.6.0
893
595
  * @category parts
894
596
  */
895
- const setParts = exports.setParts = /*#__PURE__*/(0, _Function.dual)(2, (self, parts) => mutate(self, date => setPartsDate(date, parts)));
597
+ const setParts = exports.setParts = Internal.setParts;
896
598
  /**
897
599
  * Set the different parts of a `DateTime` as an object.
898
600
  *
899
601
  * @since 3.6.0
900
602
  * @category parts
901
603
  */
902
- const setPartsUtc = exports.setPartsUtc = /*#__PURE__*/(0, _Function.dual)(2, (self, parts) => mutateUtc(self, date => setPartsDate(date, parts)));
604
+ const setPartsUtc = exports.setPartsUtc = Internal.setPartsUtc;
903
605
  // =============================================================================
904
606
  // current time zone
905
607
  // =============================================================================
906
- /**
907
- * @since 3.6.0
908
- * @category current time zone
909
- */
608
+ // =============================================================================
609
+ // current time zone
610
+ // =============================================================================
611
+ /** @internal */
910
612
  class CurrentTimeZone extends /*#__PURE__*/Context.Tag("effect/DateTime/CurrentTimeZone")() {}
911
613
  /**
912
614
  * Set the time zone of a `DateTime` to the current time zone, which is
@@ -915,6 +617,7 @@ class CurrentTimeZone extends /*#__PURE__*/Context.Tag("effect/DateTime/CurrentT
915
617
  * @since 3.6.0
916
618
  * @category current time zone
917
619
  * @example
620
+ * ```ts
918
621
  * import { DateTime, Effect } from "effect"
919
622
  *
920
623
  * Effect.gen(function* () {
@@ -923,6 +626,7 @@ class CurrentTimeZone extends /*#__PURE__*/Context.Tag("effect/DateTime/CurrentT
923
626
  * // set the time zone to "Europe/London"
924
627
  * const zoned = yield* DateTime.setZoneCurrent(now)
925
628
  * }).pipe(DateTime.withCurrentZoneNamed("Europe/London"))
629
+ * ```
926
630
  */
927
631
  exports.CurrentTimeZone = CurrentTimeZone;
928
632
  const setZoneCurrent = self => Effect.map(CurrentTimeZone, zone => setZone(self, zone));
@@ -932,6 +636,7 @@ const setZoneCurrent = self => Effect.map(CurrentTimeZone, zone => setZone(self,
932
636
  * @since 3.6.0
933
637
  * @category current time zone
934
638
  * @example
639
+ * ```ts
935
640
  * import { DateTime, Effect } from "effect"
936
641
  *
937
642
  * const zone = DateTime.zoneUnsafeMakeNamed("Europe/London")
@@ -939,6 +644,7 @@ const setZoneCurrent = self => Effect.map(CurrentTimeZone, zone => setZone(self,
939
644
  * Effect.gen(function* () {
940
645
  * const now = yield* DateTime.nowInCurrentZone
941
646
  * }).pipe(DateTime.withCurrentZone(zone))
647
+ * ```
942
648
  */
943
649
  exports.setZoneCurrent = setZoneCurrent;
944
650
  const withCurrentZone = exports.withCurrentZone = /*#__PURE__*/(0, _Function.dual)(2, (effect, zone) => Effect.provideService(effect, CurrentTimeZone, zone));
@@ -949,12 +655,14 @@ const withCurrentZone = exports.withCurrentZone = /*#__PURE__*/(0, _Function.dua
949
655
  * @since 3.6.0
950
656
  * @category current time zone
951
657
  * @example
658
+ * ```ts
952
659
  * import { DateTime, Effect } from "effect"
953
660
  *
954
661
  * Effect.gen(function* () {
955
662
  * // will use the system's local time zone
956
663
  * const now = yield* DateTime.nowInCurrentZone
957
664
  * }).pipe(DateTime.withCurrentZoneLocal)
665
+ * ```
958
666
  */
959
667
  const withCurrentZoneLocal = effect => Effect.provideServiceEffect(effect, CurrentTimeZone, Effect.sync(zoneMakeLocal));
960
668
  /**
@@ -963,12 +671,14 @@ const withCurrentZoneLocal = effect => Effect.provideServiceEffect(effect, Curre
963
671
  * @since 3.6.0
964
672
  * @category current time zone
965
673
  * @example
674
+ * ```ts
966
675
  * import { DateTime, Effect } from "effect"
967
676
  *
968
677
  * Effect.gen(function* () {
969
678
  * // will use the system's local time zone
970
679
  * const now = yield* DateTime.nowInCurrentZone
971
680
  * }).pipe(DateTime.withCurrentZoneOffset(3 * 60 * 60 * 1000))
681
+ * ```
972
682
  */
973
683
  exports.withCurrentZoneLocal = withCurrentZoneLocal;
974
684
  const withCurrentZoneOffset = exports.withCurrentZoneOffset = /*#__PURE__*/(0, _Function.dual)(2, (effect, offset) => Effect.provideService(effect, CurrentTimeZone, zoneMakeOffset(offset)));
@@ -981,12 +691,14 @@ const withCurrentZoneOffset = exports.withCurrentZoneOffset = /*#__PURE__*/(0, _
981
691
  * @since 3.6.0
982
692
  * @category current time zone
983
693
  * @example
694
+ * ```ts
984
695
  * import { DateTime, Effect } from "effect"
985
696
  *
986
697
  * Effect.gen(function* () {
987
698
  * // will use the "Europe/London" time zone
988
699
  * const now = yield* DateTime.nowInCurrentZone
989
700
  * }).pipe(DateTime.withCurrentZoneNamed("Europe/London"))
701
+ * ```
990
702
  */
991
703
  const withCurrentZoneNamed = exports.withCurrentZoneNamed = /*#__PURE__*/(0, _Function.dual)(2, (effect, zone) => Effect.provideServiceEffect(effect, CurrentTimeZone, zoneMakeNamedEffect(zone)));
992
704
  /**
@@ -995,73 +707,19 @@ const withCurrentZoneNamed = exports.withCurrentZoneNamed = /*#__PURE__*/(0, _Fu
995
707
  * @since 3.6.0
996
708
  * @category current time zone
997
709
  * @example
710
+ * ```ts
998
711
  * import { DateTime, Effect } from "effect"
999
712
  *
1000
713
  * Effect.gen(function* () {
1001
714
  * // will use the "Europe/London" time zone
1002
715
  * const now = yield* DateTime.nowInCurrentZone
1003
716
  * }).pipe(DateTime.withCurrentZoneNamed("Europe/London"))
717
+ * ```
1004
718
  */
1005
719
  const nowInCurrentZone = exports.nowInCurrentZone = /*#__PURE__*/Effect.flatMap(now, setZoneCurrent);
1006
- /**
1007
- * Create a Layer from the given time zone.
1008
- *
1009
- * @since 3.6.0
1010
- * @category current time zone
1011
- */
1012
- const layerCurrentZone = zone => Layer.succeed(CurrentTimeZone, zone);
1013
- /**
1014
- * Create a Layer from the given time zone offset.
1015
- *
1016
- * @since 3.6.0
1017
- * @category current time zone
1018
- */
1019
- exports.layerCurrentZone = layerCurrentZone;
1020
- const layerCurrentZoneOffset = offset => Layer.succeed(CurrentTimeZone, zoneMakeOffset(offset));
1021
- /**
1022
- * Create a Layer from the given IANA time zone identifier.
1023
- *
1024
- * @since 3.6.0
1025
- * @category current time zone
1026
- */
1027
- exports.layerCurrentZoneOffset = layerCurrentZoneOffset;
1028
- const layerCurrentZoneNamed = zoneId => Layer.effect(CurrentTimeZone, zoneMakeNamedEffect(zoneId));
1029
- /**
1030
- * Create a Layer from the systems local time zone.
1031
- *
1032
- * @since 3.6.0
1033
- * @category current time zone
1034
- */
1035
- exports.layerCurrentZoneNamed = layerCurrentZoneNamed;
1036
- const layerCurrentZoneLocal = exports.layerCurrentZoneLocal = /*#__PURE__*/Layer.sync(CurrentTimeZone, zoneMakeLocal);
1037
720
  // =============================================================================
1038
721
  // mapping
1039
722
  // =============================================================================
1040
- const makeZonedFromAdjusted = (adjustedMillis, zone) => {
1041
- const offset = zone._tag === "Offset" ? zone.offset : calculateNamedOffset(adjustedMillis, zone);
1042
- return makeZonedProto(adjustedMillis - offset, zone);
1043
- };
1044
- const offsetRegex = /([+-])(\d{2}):(\d{2})$/;
1045
- const parseOffset = offset => {
1046
- const match = offsetRegex.exec(offset);
1047
- if (match === null) {
1048
- return null;
1049
- }
1050
- const [, sign, hours, minutes] = match;
1051
- return (sign === "+" ? 1 : -1) * (Number(hours) * 60 + Number(minutes)) * 60 * 1000;
1052
- };
1053
- const calculateNamedOffset = (adjustedMillis, zone) => {
1054
- const offset = zone.format.formatToParts(adjustedMillis).find(_ => _.type === "timeZoneName")?.value ?? "";
1055
- if (offset === "GMT") {
1056
- return 0;
1057
- }
1058
- const result = parseOffset(offset);
1059
- if (result === null) {
1060
- // fallback to using the adjusted date
1061
- return zonedOffset(makeZonedProto(adjustedMillis, zone));
1062
- }
1063
- return result;
1064
- };
1065
723
  /**
1066
724
  * Modify a `DateTime` by applying a function to a cloned `Date` instance.
1067
725
  *
@@ -1071,28 +729,14 @@ const calculateNamedOffset = (adjustedMillis, zone) => {
1071
729
  * @since 3.6.0
1072
730
  * @category mapping
1073
731
  */
1074
- const mutate = exports.mutate = /*#__PURE__*/(0, _Function.dual)(2, (self, f) => {
1075
- if (self._tag === "Utc") {
1076
- const date = toDateUtc(self);
1077
- f(date);
1078
- return makeUtc(date.getTime());
1079
- }
1080
- const adjustedDate = toDate(self);
1081
- const newAdjustedDate = new Date(adjustedDate.getTime());
1082
- f(newAdjustedDate);
1083
- return makeZonedFromAdjusted(newAdjustedDate.getTime(), self.zone);
1084
- });
732
+ const mutate = exports.mutate = Internal.mutate;
1085
733
  /**
1086
734
  * Modify a `DateTime` by applying a function to a cloned UTC `Date` instance.
1087
735
  *
1088
736
  * @since 3.6.0
1089
737
  * @category mapping
1090
738
  */
1091
- const mutateUtc = exports.mutateUtc = /*#__PURE__*/(0, _Function.dual)(2, (self, f) => mapEpochMillis(self, millis => {
1092
- const date = new Date(millis);
1093
- f(date);
1094
- return date.getTime();
1095
- }));
739
+ const mutateUtc = exports.mutateUtc = Internal.mutateUtc;
1096
740
  /**
1097
741
  * Transform a `DateTime` by applying a function to the number of milliseconds
1098
742
  * since the Unix epoch.
@@ -1100,17 +744,16 @@ const mutateUtc = exports.mutateUtc = /*#__PURE__*/(0, _Function.dual)(2, (self,
1100
744
  * @since 3.6.0
1101
745
  * @category mapping
1102
746
  * @example
747
+ * ```ts
1103
748
  * import { DateTime } from "effect"
1104
749
  *
1105
750
  * // add 10 milliseconds
1106
751
  * DateTime.unsafeMake(0).pipe(
1107
752
  * DateTime.mapEpochMillis((millis) => millis + 10)
1108
753
  * )
754
+ * ```
1109
755
  */
1110
- const mapEpochMillis = exports.mapEpochMillis = /*#__PURE__*/(0, _Function.dual)(2, (self, f) => {
1111
- const millis = f(toEpochMillis(self));
1112
- return self._tag === "Utc" ? makeUtc(millis) : makeZonedProto(millis, self.zone);
1113
- });
756
+ const mapEpochMillis = exports.mapEpochMillis = Internal.mapEpochMillis;
1114
757
  /**
1115
758
  * Using the time zone adjusted `Date`, apply a function to the `Date` and
1116
759
  * return the result.
@@ -1118,14 +761,16 @@ const mapEpochMillis = exports.mapEpochMillis = /*#__PURE__*/(0, _Function.dual)
1118
761
  * @since 3.6.0
1119
762
  * @category mapping
1120
763
  * @example
764
+ * ```ts
1121
765
  * import { DateTime } from "effect"
1122
766
  *
1123
767
  * // get the time zone adjusted date in milliseconds
1124
768
  * DateTime.unsafeMakeZoned(0, { timeZone: "Europe/London" }).pipe(
1125
769
  * DateTime.withDate((date) => date.getTime())
1126
770
  * )
771
+ * ```
1127
772
  */
1128
- const withDate = exports.withDate = /*#__PURE__*/(0, _Function.dual)(2, (self, f) => f(toDate(self)));
773
+ const withDate = exports.withDate = Internal.withDate;
1129
774
  /**
1130
775
  * Using the time zone adjusted `Date`, apply a function to the `Date` and
1131
776
  * return the result.
@@ -1133,19 +778,21 @@ const withDate = exports.withDate = /*#__PURE__*/(0, _Function.dual)(2, (self, f
1133
778
  * @since 3.6.0
1134
779
  * @category mapping
1135
780
  * @example
781
+ * ```ts
1136
782
  * import { DateTime } from "effect"
1137
783
  *
1138
784
  * // get the date in milliseconds
1139
785
  * DateTime.unsafeMake(0).pipe(
1140
786
  * DateTime.withDateUtc((date) => date.getTime())
1141
787
  * )
788
+ * ```
1142
789
  */
1143
- const withDateUtc = exports.withDateUtc = /*#__PURE__*/(0, _Function.dual)(2, (self, f) => f(toDateUtc(self)));
790
+ const withDateUtc = exports.withDateUtc = Internal.withDateUtc;
1144
791
  /**
1145
792
  * @since 3.6.0
1146
793
  * @category mapping
1147
794
  */
1148
- const match = exports.match = /*#__PURE__*/(0, _Function.dual)(2, (self, options) => self._tag === "Utc" ? options.onUtc(self) : options.onZoned(self));
795
+ const match = exports.match = Internal.match;
1149
796
  // =============================================================================
1150
797
  // math
1151
798
  // =============================================================================
@@ -1155,31 +802,32 @@ const match = exports.match = /*#__PURE__*/(0, _Function.dual)(2, (self, options
1155
802
  * @since 3.6.0
1156
803
  * @category math
1157
804
  * @example
805
+ * ```ts
1158
806
  * import { DateTime } from "effect"
1159
807
  *
1160
808
  * // add 5 minutes
1161
809
  * DateTime.unsafeMake(0).pipe(
1162
810
  * DateTime.addDuration("5 minutes")
1163
811
  * )
812
+ * ```
1164
813
  */
1165
- const addDuration = exports.addDuration = /*#__PURE__*/(0, _Function.dual)(2, (self, duration) => mapEpochMillis(self, millis => millis + Duration.toMillis(duration)));
814
+ const addDuration = exports.addDuration = Internal.addDuration;
1166
815
  /**
1167
816
  * Subtract the given `Duration` from a `DateTime`.
1168
817
  *
1169
818
  * @since 3.6.0
1170
819
  * @category math
1171
820
  * @example
821
+ * ```ts
1172
822
  * import { DateTime } from "effect"
1173
823
  *
1174
824
  * // subtract 5 minutes
1175
825
  * DateTime.unsafeMake(0).pipe(
1176
826
  * DateTime.subtractDuration("5 minutes")
1177
827
  * )
828
+ * ```
1178
829
  */
1179
- const subtractDuration = exports.subtractDuration = /*#__PURE__*/(0, _Function.dual)(2, (self, duration) => mapEpochMillis(self, millis => millis - Duration.toMillis(duration)));
1180
- const addMillis = (date, amount) => {
1181
- date.setTime(date.getTime() + amount);
1182
- };
830
+ const subtractDuration = exports.subtractDuration = Internal.subtractDuration;
1183
831
  /**
1184
832
  * Add the given `amount` of `unit`'s to a `DateTime`.
1185
833
  *
@@ -1189,113 +837,32 @@ const addMillis = (date, amount) => {
1189
837
  * @since 3.6.0
1190
838
  * @category math
1191
839
  * @example
840
+ * ```ts
1192
841
  * import { DateTime } from "effect"
1193
842
  *
1194
843
  * // add 5 minutes
1195
844
  * DateTime.unsafeMake(0).pipe(
1196
845
  * DateTime.add({ minutes: 5 })
1197
846
  * )
847
+ * ```
1198
848
  */
1199
- const add = exports.add = /*#__PURE__*/(0, _Function.dual)(2, (self, parts) => mutate(self, date => {
1200
- if (parts.millis) {
1201
- addMillis(date, parts.millis);
1202
- }
1203
- if (parts.seconds) {
1204
- addMillis(date, parts.seconds * 1000);
1205
- }
1206
- if (parts.minutes) {
1207
- addMillis(date, parts.minutes * 60 * 1000);
1208
- }
1209
- if (parts.hours) {
1210
- addMillis(date, parts.hours * 60 * 60 * 1000);
1211
- }
1212
- if (parts.days) {
1213
- date.setUTCDate(date.getUTCDate() + parts.days);
1214
- }
1215
- if (parts.weeks) {
1216
- date.setUTCDate(date.getUTCDate() + parts.weeks * 7);
1217
- }
1218
- if (parts.months) {
1219
- const day = date.getUTCDate();
1220
- date.setUTCMonth(date.getUTCMonth() + parts.months + 1, 0);
1221
- if (day < date.getUTCDate()) {
1222
- date.setUTCDate(day);
1223
- }
1224
- }
1225
- if (parts.years) {
1226
- const day = date.getUTCDate();
1227
- const month = date.getUTCMonth();
1228
- date.setUTCFullYear(date.getUTCFullYear() + parts.years, month + 1, 0);
1229
- if (day < date.getUTCDate()) {
1230
- date.setUTCDate(day);
1231
- }
1232
- }
1233
- }));
849
+ const add = exports.add = Internal.add;
1234
850
  /**
1235
851
  * Subtract the given `amount` of `unit`'s from a `DateTime`.
1236
852
  *
1237
853
  * @since 3.6.0
1238
854
  * @category math
1239
855
  * @example
856
+ * ```ts
1240
857
  * import { DateTime } from "effect"
1241
858
  *
1242
859
  * // subtract 5 minutes
1243
860
  * DateTime.unsafeMake(0).pipe(
1244
861
  * DateTime.subtract({ minutes: 5 })
1245
862
  * )
863
+ * ```
1246
864
  */
1247
- const subtract = exports.subtract = /*#__PURE__*/(0, _Function.dual)(2, (self, parts) => {
1248
- const newParts = {};
1249
- for (const key in parts) {
1250
- newParts[key] = -1 * parts[key];
1251
- }
1252
- return add(self, newParts);
1253
- });
1254
- function startOfDate(date, part, options) {
1255
- switch (part) {
1256
- case "second":
1257
- {
1258
- date.setUTCMilliseconds(0);
1259
- break;
1260
- }
1261
- case "minute":
1262
- {
1263
- date.setUTCSeconds(0, 0);
1264
- break;
1265
- }
1266
- case "hour":
1267
- {
1268
- date.setUTCMinutes(0, 0, 0);
1269
- break;
1270
- }
1271
- case "day":
1272
- {
1273
- date.setUTCHours(0, 0, 0, 0);
1274
- break;
1275
- }
1276
- case "week":
1277
- {
1278
- const weekStartsOn = options?.weekStartsOn ?? 0;
1279
- const day = date.getUTCDay();
1280
- const diff = (day - weekStartsOn + 7) % 7;
1281
- date.setUTCDate(date.getUTCDate() - diff);
1282
- date.setUTCHours(0, 0, 0, 0);
1283
- break;
1284
- }
1285
- case "month":
1286
- {
1287
- date.setUTCDate(1);
1288
- date.setUTCHours(0, 0, 0, 0);
1289
- break;
1290
- }
1291
- case "year":
1292
- {
1293
- date.setUTCMonth(0, 1);
1294
- date.setUTCHours(0, 0, 0, 0);
1295
- break;
1296
- }
1297
- }
1298
- }
865
+ const subtract = exports.subtract = Internal.subtract;
1299
866
  /**
1300
867
  * Converts a `DateTime` to the start of the given `part`.
1301
868
  *
@@ -1305,6 +872,7 @@ function startOfDate(date, part, options) {
1305
872
  * @since 3.6.0
1306
873
  * @category math
1307
874
  * @example
875
+ * ```ts
1308
876
  * import { DateTime } from "effect"
1309
877
  *
1310
878
  * // returns "2024-01-01T00:00:00Z"
@@ -1312,53 +880,9 @@ function startOfDate(date, part, options) {
1312
880
  * DateTime.startOf("day"),
1313
881
  * DateTime.formatIso
1314
882
  * )
883
+ * ```
1315
884
  */
1316
- const startOf = exports.startOf = /*#__PURE__*/(0, _Function.dual)(isDateTimeArgs, (self, part, options) => mutate(self, date => startOfDate(date, part, options)));
1317
- function endOfDate(date, part, options) {
1318
- switch (part) {
1319
- case "second":
1320
- {
1321
- date.setUTCMilliseconds(999);
1322
- break;
1323
- }
1324
- case "minute":
1325
- {
1326
- date.setUTCSeconds(59, 999);
1327
- break;
1328
- }
1329
- case "hour":
1330
- {
1331
- date.setUTCMinutes(59, 59, 999);
1332
- break;
1333
- }
1334
- case "day":
1335
- {
1336
- date.setUTCHours(23, 59, 59, 999);
1337
- break;
1338
- }
1339
- case "week":
1340
- {
1341
- const weekStartsOn = options?.weekStartsOn ?? 0;
1342
- const day = date.getUTCDay();
1343
- const diff = (day - weekStartsOn + 7) % 7;
1344
- date.setUTCDate(date.getUTCDate() - diff + 6);
1345
- date.setUTCHours(23, 59, 59, 999);
1346
- break;
1347
- }
1348
- case "month":
1349
- {
1350
- date.setUTCMonth(date.getUTCMonth() + 1, 0);
1351
- date.setUTCHours(23, 59, 59, 999);
1352
- break;
1353
- }
1354
- case "year":
1355
- {
1356
- date.setUTCMonth(11, 31);
1357
- date.setUTCHours(23, 59, 59, 999);
1358
- break;
1359
- }
1360
- }
1361
- }
885
+ const startOf = exports.startOf = Internal.startOf;
1362
886
  /**
1363
887
  * Converts a `DateTime` to the end of the given `part`.
1364
888
  *
@@ -1368,6 +892,7 @@ function endOfDate(date, part, options) {
1368
892
  * @since 3.6.0
1369
893
  * @category math
1370
894
  * @example
895
+ * ```ts
1371
896
  * import { DateTime } from "effect"
1372
897
  *
1373
898
  * // returns "2024-01-01T23:59:59.999Z"
@@ -1375,8 +900,9 @@ function endOfDate(date, part, options) {
1375
900
  * DateTime.endOf("day"),
1376
901
  * DateTime.formatIso
1377
902
  * )
903
+ * ```
1378
904
  */
1379
- const endOf = exports.endOf = /*#__PURE__*/(0, _Function.dual)(isDateTimeArgs, (self, part, options) => mutate(self, date => endOfDate(date, part, options)));
905
+ const endOf = exports.endOf = Internal.endOf;
1380
906
  /**
1381
907
  * Converts a `DateTime` to the nearest given `part`.
1382
908
  *
@@ -1386,6 +912,7 @@ const endOf = exports.endOf = /*#__PURE__*/(0, _Function.dual)(isDateTimeArgs, (
1386
912
  * @since 3.6.0
1387
913
  * @category math
1388
914
  * @example
915
+ * ```ts
1389
916
  * import { DateTime } from "effect"
1390
917
  *
1391
918
  * // returns "2024-01-02T00:00:00Z"
@@ -1393,33 +920,12 @@ const endOf = exports.endOf = /*#__PURE__*/(0, _Function.dual)(isDateTimeArgs, (
1393
920
  * DateTime.nearest("day"),
1394
921
  * DateTime.formatIso
1395
922
  * )
923
+ * ```
1396
924
  */
1397
- const nearest = exports.nearest = /*#__PURE__*/(0, _Function.dual)(isDateTimeArgs, (self, part, options) => mutate(self, date => {
1398
- if (part === "milli") return;
1399
- const millis = date.getTime();
1400
- const start = new Date(millis);
1401
- startOfDate(start, part, options);
1402
- const startMillis = start.getTime();
1403
- const end = new Date(millis);
1404
- endOfDate(end, part, options);
1405
- const endMillis = end.getTime() + 1;
1406
- const diffStart = millis - startMillis;
1407
- const diffEnd = endMillis - millis;
1408
- if (diffStart < diffEnd) {
1409
- date.setTime(startMillis);
1410
- } else {
1411
- date.setTime(endMillis);
1412
- }
1413
- }));
925
+ const nearest = exports.nearest = Internal.nearest;
1414
926
  // =============================================================================
1415
927
  // formatting
1416
928
  // =============================================================================
1417
- const intlTimeZone = self => {
1418
- if (self._tag === "Named") {
1419
- return self.id;
1420
- }
1421
- return offsetToString(self.offset);
1422
- };
1423
929
  /**
1424
930
  * Format a `DateTime` as a string using the `DateTimeFormat` API.
1425
931
  *
@@ -1431,19 +937,7 @@ const intlTimeZone = self => {
1431
937
  * @since 3.6.0
1432
938
  * @category formatting
1433
939
  */
1434
- const format = exports.format = /*#__PURE__*/(0, _Function.dual)(isDateTimeArgs, (self, options) => {
1435
- try {
1436
- return new Intl.DateTimeFormat(options?.locale, {
1437
- timeZone: self._tag === "Utc" ? "UTC" : intlTimeZone(self.zone),
1438
- ...options
1439
- }).format(self.epochMillis);
1440
- } catch (_) {
1441
- return new Intl.DateTimeFormat(options?.locale, {
1442
- timeZone: "UTC",
1443
- ...options
1444
- }).format(toDate(self));
1445
- }
1446
- });
940
+ const format = exports.format = Internal.format;
1447
941
  /**
1448
942
  * Format a `DateTime` as a string using the `DateTimeFormat` API.
1449
943
  *
@@ -1452,7 +946,7 @@ const format = exports.format = /*#__PURE__*/(0, _Function.dual)(isDateTimeArgs,
1452
946
  * @since 3.6.0
1453
947
  * @category formatting
1454
948
  */
1455
- const formatLocal = exports.formatLocal = /*#__PURE__*/(0, _Function.dual)(isDateTimeArgs, (self, options) => new Intl.DateTimeFormat(options?.locale, options).format(self.epochMillis));
949
+ const formatLocal = exports.formatLocal = Internal.formatLocal;
1456
950
  /**
1457
951
  * Format a `DateTime` as a string using the `DateTimeFormat` API.
1458
952
  *
@@ -1461,51 +955,42 @@ const formatLocal = exports.formatLocal = /*#__PURE__*/(0, _Function.dual)(isDat
1461
955
  * @since 3.6.0
1462
956
  * @category formatting
1463
957
  */
1464
- const formatUtc = exports.formatUtc = /*#__PURE__*/(0, _Function.dual)(isDateTimeArgs, (self, options) => new Intl.DateTimeFormat(options?.locale, {
1465
- ...options,
1466
- timeZone: "UTC"
1467
- }).format(self.epochMillis));
958
+ const formatUtc = exports.formatUtc = Internal.formatUtc;
1468
959
  /**
1469
960
  * Format a `DateTime` as a string using the `DateTimeFormat` API.
1470
961
  *
1471
962
  * @since 3.6.0
1472
963
  * @category formatting
1473
964
  */
1474
- const formatIntl = exports.formatIntl = /*#__PURE__*/(0, _Function.dual)(2, (self, format) => format.format(self.epochMillis));
965
+ const formatIntl = exports.formatIntl = Internal.formatIntl;
1475
966
  /**
1476
967
  * Format a `DateTime` as a UTC ISO string.
1477
968
  *
1478
969
  * @since 3.6.0
1479
970
  * @category formatting
1480
971
  */
1481
- const formatIso = self => toDateUtc(self).toISOString();
972
+ const formatIso = exports.formatIso = Internal.formatIso;
1482
973
  /**
1483
974
  * Format a `DateTime` as a time zone adjusted ISO date string.
1484
975
  *
1485
976
  * @since 3.6.0
1486
977
  * @category formatting
1487
978
  */
1488
- exports.formatIso = formatIso;
1489
- const formatIsoDate = self => toDate(self).toISOString().slice(0, 10);
979
+ const formatIsoDate = exports.formatIsoDate = Internal.formatIsoDate;
1490
980
  /**
1491
981
  * Format a `DateTime` as a UTC ISO date string.
1492
982
  *
1493
983
  * @since 3.6.0
1494
984
  * @category formatting
1495
985
  */
1496
- exports.formatIsoDate = formatIsoDate;
1497
- const formatIsoDateUtc = self => toDateUtc(self).toISOString().slice(0, 10);
986
+ const formatIsoDateUtc = exports.formatIsoDateUtc = Internal.formatIsoDateUtc;
1498
987
  /**
1499
988
  * Format a `DateTime.Zoned` as a ISO string with an offset.
1500
989
  *
1501
990
  * @since 3.6.0
1502
991
  * @category formatting
1503
992
  */
1504
- exports.formatIsoDateUtc = formatIsoDateUtc;
1505
- const formatIsoOffset = self => {
1506
- const date = toDate(self);
1507
- return self._tag === "Utc" ? date.toISOString() : `${date.toISOString().slice(0, -1)}${zonedOffsetIso(self)}`;
1508
- };
993
+ const formatIsoOffset = exports.formatIsoOffset = Internal.formatIsoOffset;
1509
994
  /**
1510
995
  * Format a `DateTime.Zoned` as a string.
1511
996
  *
@@ -1514,7 +999,36 @@ const formatIsoOffset = self => {
1514
999
  * @since 3.6.0
1515
1000
  * @category formatting
1516
1001
  */
1517
- exports.formatIsoOffset = formatIsoOffset;
1518
- const formatIsoZoned = self => self.zone._tag === "Offset" ? formatIsoOffset(self) : `${formatIsoOffset(self)}[${self.zone.id}]`;
1519
- exports.formatIsoZoned = formatIsoZoned;
1002
+ const formatIsoZoned = exports.formatIsoZoned = Internal.formatIsoZoned;
1003
+ /**
1004
+ * Create a Layer from the given time zone.
1005
+ *
1006
+ * @since 3.6.0
1007
+ * @category current time zone
1008
+ */
1009
+ const layerCurrentZone = zone => Layer.succeed(CurrentTimeZone, zone);
1010
+ /**
1011
+ * Create a Layer from the given time zone offset.
1012
+ *
1013
+ * @since 3.6.0
1014
+ * @category current time zone
1015
+ */
1016
+ exports.layerCurrentZone = layerCurrentZone;
1017
+ const layerCurrentZoneOffset = offset => Layer.succeed(CurrentTimeZone, Internal.zoneMakeOffset(offset));
1018
+ /**
1019
+ * Create a Layer from the given IANA time zone identifier.
1020
+ *
1021
+ * @since 3.6.0
1022
+ * @category current time zone
1023
+ */
1024
+ exports.layerCurrentZoneOffset = layerCurrentZoneOffset;
1025
+ const layerCurrentZoneNamed = zoneId => Layer.effect(CurrentTimeZone, Internal.zoneMakeNamedEffect(zoneId));
1026
+ /**
1027
+ * Create a Layer from the systems local time zone.
1028
+ *
1029
+ * @since 3.6.0
1030
+ * @category current time zone
1031
+ */
1032
+ exports.layerCurrentZoneNamed = layerCurrentZoneNamed;
1033
+ const layerCurrentZoneLocal = exports.layerCurrentZoneLocal = /*#__PURE__*/Layer.sync(CurrentTimeZone, zoneMakeLocal);
1520
1034
  //# sourceMappingURL=DateTime.js.map