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
@@ -0,0 +1,747 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.zonedOffsetIso = exports.zonedOffset = exports.zoneUnsafeMakeNamed = exports.zoneToString = exports.zoneMakeOffset = exports.zoneMakeNamedEffect = exports.zoneMakeNamed = exports.zoneMakeLocal = exports.zoneFromString = exports.withDateUtc = exports.withDate = 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.setZone = exports.setPartsUtc = exports.setParts = exports.removeTime = exports.now = exports.nearest = exports.mutateUtc = exports.mutate = exports.min = exports.max = exports.match = exports.mapEpochMillis = exports.makeZonedProto = exports.makeZonedFromString = exports.makeZoned = exports.make = exports.lessThanOrEqualTo = exports.lessThan = 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 = void 0;
7
+ var _Cause = require("../Cause.js");
8
+ var Clock = _interopRequireWildcard(require("../Clock.js"));
9
+ var Duration = _interopRequireWildcard(require("../Duration.js"));
10
+ var Either = _interopRequireWildcard(require("../Either.js"));
11
+ var Equal = _interopRequireWildcard(require("../Equal.js"));
12
+ var equivalence = _interopRequireWildcard(require("../Equivalence.js"));
13
+ var _Function = require("../Function.js");
14
+ var _GlobalValue = require("../GlobalValue.js");
15
+ var Hash = _interopRequireWildcard(require("../Hash.js"));
16
+ var Inspectable = _interopRequireWildcard(require("../Inspectable.js"));
17
+ var Option = _interopRequireWildcard(require("../Option.js"));
18
+ var order = _interopRequireWildcard(require("../Order.js"));
19
+ var _Pipeable = require("../Pipeable.js");
20
+ var Predicate = _interopRequireWildcard(require("../Predicate.js"));
21
+ var internalEffect = _interopRequireWildcard(require("./core-effect.js"));
22
+ var core = _interopRequireWildcard(require("./core.js"));
23
+ 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); }
24
+ 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; }
25
+ /** @internal */
26
+ const TypeId = exports.TypeId = /*#__PURE__*/Symbol.for("effect/DateTime");
27
+ /** @internal */
28
+ const TimeZoneTypeId = exports.TimeZoneTypeId = /*#__PURE__*/Symbol.for("effect/DateTime/TimeZone");
29
+ const Proto = {
30
+ [TypeId]: TypeId,
31
+ pipe() {
32
+ return (0, _Pipeable.pipeArguments)(this, arguments);
33
+ },
34
+ [Inspectable.NodeInspectSymbol]() {
35
+ return this.toString();
36
+ },
37
+ toJSON() {
38
+ return toDateUtc(this).toJSON();
39
+ }
40
+ };
41
+ const ProtoUtc = {
42
+ ...Proto,
43
+ _tag: "Utc",
44
+ [Hash.symbol]() {
45
+ return Hash.cached(this, Hash.number(this.epochMillis));
46
+ },
47
+ [Equal.symbol](that) {
48
+ return isDateTime(that) && that._tag === "Utc" && this.epochMillis === that.epochMillis;
49
+ },
50
+ toString() {
51
+ return `DateTime.Utc(${toDateUtc(this).toJSON()})`;
52
+ }
53
+ };
54
+ const ProtoZoned = {
55
+ ...Proto,
56
+ _tag: "Zoned",
57
+ [Hash.symbol]() {
58
+ return (0, _Function.pipe)(Hash.number(this.epochMillis), Hash.combine(Hash.hash(this.zone)), Hash.cached(this));
59
+ },
60
+ [Equal.symbol](that) {
61
+ return isDateTime(that) && that._tag === "Zoned" && this.epochMillis === that.epochMillis && Equal.equals(this.zone, that.zone);
62
+ },
63
+ toString() {
64
+ return `DateTime.Zoned(${formatIsoZoned(this)})`;
65
+ }
66
+ };
67
+ const ProtoTimeZone = {
68
+ [TimeZoneTypeId]: TimeZoneTypeId,
69
+ [Inspectable.NodeInspectSymbol]() {
70
+ return this.toString();
71
+ }
72
+ };
73
+ const ProtoTimeZoneNamed = {
74
+ ...ProtoTimeZone,
75
+ _tag: "Named",
76
+ [Hash.symbol]() {
77
+ return Hash.cached(this, Hash.string(`Named:${this.id}`));
78
+ },
79
+ [Equal.symbol](that) {
80
+ return isTimeZone(that) && that._tag === "Named" && this.id === that.id;
81
+ },
82
+ toString() {
83
+ return `TimeZone.Named(${this.id})`;
84
+ },
85
+ toJSON() {
86
+ return {
87
+ _id: "TimeZone",
88
+ _tag: "Named",
89
+ id: this.id
90
+ };
91
+ }
92
+ };
93
+ const ProtoTimeZoneOffset = {
94
+ ...ProtoTimeZone,
95
+ _tag: "Offset",
96
+ [Hash.symbol]() {
97
+ return Hash.cached(this, Hash.string(`Offset:${this.offset}`));
98
+ },
99
+ [Equal.symbol](that) {
100
+ return isTimeZone(that) && that._tag === "Offset" && this.offset === that.offset;
101
+ },
102
+ toString() {
103
+ return `TimeZone.Offset(${offsetToString(this.offset)})`;
104
+ },
105
+ toJSON() {
106
+ return {
107
+ _id: "TimeZone",
108
+ _tag: "Offset",
109
+ offset: this.offset
110
+ };
111
+ }
112
+ };
113
+ /** @internal */
114
+ const makeZonedProto = (epochMillis, zone, partsUtc) => {
115
+ const self = Object.create(ProtoZoned);
116
+ self.epochMillis = epochMillis;
117
+ self.zone = zone;
118
+ self.partsUtc = partsUtc;
119
+ return self;
120
+ };
121
+ // =============================================================================
122
+ // guards
123
+ // =============================================================================
124
+ /** @internal */
125
+ exports.makeZonedProto = makeZonedProto;
126
+ const isDateTime = u => Predicate.hasProperty(u, TypeId);
127
+ exports.isDateTime = isDateTime;
128
+ const isDateTimeArgs = args => isDateTime(args[0]);
129
+ /** @internal */
130
+ const isTimeZone = u => Predicate.hasProperty(u, TimeZoneTypeId);
131
+ /** @internal */
132
+ exports.isTimeZone = isTimeZone;
133
+ const isTimeZoneOffset = u => isTimeZone(u) && u._tag === "Offset";
134
+ /** @internal */
135
+ exports.isTimeZoneOffset = isTimeZoneOffset;
136
+ const isTimeZoneNamed = u => isTimeZone(u) && u._tag === "Named";
137
+ /** @internal */
138
+ exports.isTimeZoneNamed = isTimeZoneNamed;
139
+ const isUtc = self => self._tag === "Utc";
140
+ /** @internal */
141
+ exports.isUtc = isUtc;
142
+ const isZoned = self => self._tag === "Zoned";
143
+ // =============================================================================
144
+ // instances
145
+ // =============================================================================
146
+ /** @internal */
147
+ exports.isZoned = isZoned;
148
+ const Equivalence = exports.Equivalence = /*#__PURE__*/equivalence.make((a, b) => a.epochMillis === b.epochMillis);
149
+ /** @internal */
150
+ const Order = exports.Order = /*#__PURE__*/order.make((self, that) => self.epochMillis < that.epochMillis ? -1 : self.epochMillis > that.epochMillis ? 1 : 0);
151
+ /** @internal */
152
+ const clamp = exports.clamp = /*#__PURE__*/order.clamp(Order);
153
+ // =============================================================================
154
+ // constructors
155
+ // =============================================================================
156
+ const makeUtc = epochMillis => {
157
+ const self = Object.create(ProtoUtc);
158
+ self.epochMillis = epochMillis;
159
+ return self;
160
+ };
161
+ /** @internal */
162
+ const unsafeFromDate = date => {
163
+ const epochMillis = date.getTime();
164
+ if (Number.isNaN(epochMillis)) {
165
+ throw new _Cause.IllegalArgumentException("Invalid date");
166
+ }
167
+ return makeUtc(epochMillis);
168
+ };
169
+ /** @internal */
170
+ exports.unsafeFromDate = unsafeFromDate;
171
+ const unsafeMake = input => {
172
+ if (isDateTime(input)) {
173
+ return input;
174
+ } else if (input instanceof Date) {
175
+ return unsafeFromDate(input);
176
+ } else if (typeof input === "object") {
177
+ const date = new Date(0);
178
+ setPartsDate(date, input);
179
+ return unsafeFromDate(date);
180
+ }
181
+ return unsafeFromDate(new Date(input));
182
+ };
183
+ /** @internal */
184
+ exports.unsafeMake = unsafeMake;
185
+ const unsafeMakeZoned = (input, options) => {
186
+ if (options?.timeZone === undefined && isDateTime(input) && isZoned(input)) {
187
+ return input;
188
+ }
189
+ const self = unsafeMake(input);
190
+ let zone;
191
+ if (options?.timeZone === undefined) {
192
+ const offset = new Date(self.epochMillis).getTimezoneOffset() * -60 * 1000;
193
+ zone = zoneMakeOffset(offset);
194
+ } else if (isTimeZone(options?.timeZone)) {
195
+ zone = options.timeZone;
196
+ } else if (typeof options?.timeZone === "number") {
197
+ zone = zoneMakeOffset(options.timeZone);
198
+ } else {
199
+ const parsedZone = zoneFromString(options.timeZone);
200
+ if (Option.isNone(parsedZone)) {
201
+ throw new _Cause.IllegalArgumentException(`Invalid time zone: ${options.timeZone}`);
202
+ }
203
+ zone = parsedZone.value;
204
+ }
205
+ if (options?.adjustForTimeZone !== true) {
206
+ return makeZonedProto(self.epochMillis, zone, self.partsUtc);
207
+ }
208
+ return makeZonedFromAdjusted(self.epochMillis, zone);
209
+ };
210
+ /** @internal */
211
+ exports.unsafeMakeZoned = unsafeMakeZoned;
212
+ const makeZoned = exports.makeZoned = /*#__PURE__*/Option.liftThrowable(unsafeMakeZoned);
213
+ /** @internal */
214
+ const make = exports.make = /*#__PURE__*/Option.liftThrowable(unsafeMake);
215
+ const zonedStringRegex = /^(.{17,35})\[(.+)\]$/;
216
+ /** @internal */
217
+ const makeZonedFromString = input => {
218
+ const match = zonedStringRegex.exec(input);
219
+ if (match === null) {
220
+ const offset = parseOffset(input);
221
+ return offset !== null ? makeZoned(input, {
222
+ timeZone: offset
223
+ }) : Option.none();
224
+ }
225
+ const [, isoString, timeZone] = match;
226
+ return makeZoned(isoString, {
227
+ timeZone
228
+ });
229
+ };
230
+ /** @internal */
231
+ exports.makeZonedFromString = makeZonedFromString;
232
+ const now = exports.now = /*#__PURE__*/core.map(Clock.currentTimeMillis, makeUtc);
233
+ /** @internal */
234
+ const unsafeNow = () => makeUtc(Date.now());
235
+ // =============================================================================
236
+ // time zones
237
+ // =============================================================================
238
+ /** @internal */
239
+ exports.unsafeNow = unsafeNow;
240
+ 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));
241
+ /** @internal */
242
+ const setZoneOffset = exports.setZoneOffset = /*#__PURE__*/(0, _Function.dual)(isDateTimeArgs, (self, offset, options) => setZone(self, zoneMakeOffset(offset), options));
243
+ const validZoneCache = /*#__PURE__*/(0, _GlobalValue.globalValue)("effect/DateTime/validZoneCache", () => new Map());
244
+ const formatOptions = {
245
+ day: "numeric",
246
+ month: "numeric",
247
+ year: "numeric",
248
+ hour: "numeric",
249
+ minute: "numeric",
250
+ second: "numeric",
251
+ timeZoneName: "longOffset",
252
+ fractionalSecondDigits: 3,
253
+ hourCycle: "h23"
254
+ };
255
+ const zoneMakeIntl = format => {
256
+ const zoneId = format.resolvedOptions().timeZone;
257
+ if (validZoneCache.has(zoneId)) {
258
+ return validZoneCache.get(zoneId);
259
+ }
260
+ const zone = Object.create(ProtoTimeZoneNamed);
261
+ zone.id = zoneId;
262
+ zone.format = format;
263
+ validZoneCache.set(zoneId, zone);
264
+ return zone;
265
+ };
266
+ /** @internal */
267
+ const zoneUnsafeMakeNamed = zoneId => {
268
+ if (validZoneCache.has(zoneId)) {
269
+ return validZoneCache.get(zoneId);
270
+ }
271
+ try {
272
+ return zoneMakeIntl(new Intl.DateTimeFormat("en-US", {
273
+ ...formatOptions,
274
+ timeZone: zoneId
275
+ }));
276
+ } catch (_) {
277
+ throw new _Cause.IllegalArgumentException(`Invalid time zone: ${zoneId}`);
278
+ }
279
+ };
280
+ /** @internal */
281
+ exports.zoneUnsafeMakeNamed = zoneUnsafeMakeNamed;
282
+ const zoneMakeOffset = offset => {
283
+ const zone = Object.create(ProtoTimeZoneOffset);
284
+ zone.offset = offset;
285
+ return zone;
286
+ };
287
+ /** @internal */
288
+ exports.zoneMakeOffset = zoneMakeOffset;
289
+ const zoneMakeNamed = exports.zoneMakeNamed = /*#__PURE__*/Option.liftThrowable(zoneUnsafeMakeNamed);
290
+ /** @internal */
291
+ const zoneMakeNamedEffect = zoneId => internalEffect.try_({
292
+ try: () => zoneUnsafeMakeNamed(zoneId),
293
+ catch: e => e
294
+ });
295
+ /** @internal */
296
+ exports.zoneMakeNamedEffect = zoneMakeNamedEffect;
297
+ const zoneMakeLocal = () => zoneMakeIntl(new Intl.DateTimeFormat("en-US", formatOptions));
298
+ exports.zoneMakeLocal = zoneMakeLocal;
299
+ const offsetZoneRegex = /^(?:GMT|[+-])/;
300
+ /** @internal */
301
+ const zoneFromString = zone => {
302
+ if (offsetZoneRegex.test(zone)) {
303
+ const offset = parseOffset(zone);
304
+ return offset === null ? Option.none() : Option.some(zoneMakeOffset(offset));
305
+ }
306
+ return zoneMakeNamed(zone);
307
+ };
308
+ /** @internal */
309
+ exports.zoneFromString = zoneFromString;
310
+ const zoneToString = self => {
311
+ if (self._tag === "Offset") {
312
+ return offsetToString(self.offset);
313
+ }
314
+ return self.id;
315
+ };
316
+ /** @internal */
317
+ exports.zoneToString = zoneToString;
318
+ const setZoneNamed = exports.setZoneNamed = /*#__PURE__*/(0, _Function.dual)(isDateTimeArgs, (self, zoneId, options) => Option.map(zoneMakeNamed(zoneId), zone => setZone(self, zone, options)));
319
+ /** @internal */
320
+ const unsafeSetZoneNamed = exports.unsafeSetZoneNamed = /*#__PURE__*/(0, _Function.dual)(isDateTimeArgs, (self, zoneId, options) => setZone(self, zoneUnsafeMakeNamed(zoneId), options));
321
+ // =============================================================================
322
+ // comparisons
323
+ // =============================================================================
324
+ /** @internal */
325
+ const distance = exports.distance = /*#__PURE__*/(0, _Function.dual)(2, (self, other) => toEpochMillis(other) - toEpochMillis(self));
326
+ /** @internal */
327
+ const distanceDurationEither = exports.distanceDurationEither = /*#__PURE__*/(0, _Function.dual)(2, (self, other) => {
328
+ const diffMillis = distance(self, other);
329
+ return diffMillis > 0 ? Either.right(Duration.millis(diffMillis)) : Either.left(Duration.millis(-diffMillis));
330
+ });
331
+ /** @internal */
332
+ const distanceDuration = exports.distanceDuration = /*#__PURE__*/(0, _Function.dual)(2, (self, other) => Duration.millis(Math.abs(distance(self, other))));
333
+ /** @internal */
334
+ const min = exports.min = /*#__PURE__*/order.min(Order);
335
+ /** @internal */
336
+ const max = exports.max = /*#__PURE__*/order.max(Order);
337
+ /** @internal */
338
+ const greaterThan = exports.greaterThan = /*#__PURE__*/order.greaterThan(Order);
339
+ /** @internal */
340
+ const greaterThanOrEqualTo = exports.greaterThanOrEqualTo = /*#__PURE__*/order.greaterThanOrEqualTo(Order);
341
+ /** @internal */
342
+ const lessThan = exports.lessThan = /*#__PURE__*/order.lessThan(Order);
343
+ /** @internal */
344
+ const lessThanOrEqualTo = exports.lessThanOrEqualTo = /*#__PURE__*/order.lessThanOrEqualTo(Order);
345
+ /** @internal */
346
+ const between = exports.between = /*#__PURE__*/order.between(Order);
347
+ /** @internal */
348
+ const isFuture = self => core.map(now, lessThan(self));
349
+ /** @internal */
350
+ exports.isFuture = isFuture;
351
+ const unsafeIsFuture = self => lessThan(unsafeNow(), self);
352
+ /** @internal */
353
+ exports.unsafeIsFuture = unsafeIsFuture;
354
+ const isPast = self => core.map(now, greaterThan(self));
355
+ /** @internal */
356
+ exports.isPast = isPast;
357
+ const unsafeIsPast = self => greaterThan(unsafeNow(), self);
358
+ // =============================================================================
359
+ // conversions
360
+ // =============================================================================
361
+ /** @internal */
362
+ exports.unsafeIsPast = unsafeIsPast;
363
+ const toDateUtc = self => new Date(self.epochMillis);
364
+ /** @internal */
365
+ exports.toDateUtc = toDateUtc;
366
+ const toDate = self => {
367
+ if (self._tag === "Utc") {
368
+ return new Date(self.epochMillis);
369
+ } else if (self.zone._tag === "Offset") {
370
+ return new Date(self.epochMillis + self.zone.offset);
371
+ } else if (self.adjustedEpochMillis !== undefined) {
372
+ return new Date(self.adjustedEpochMillis);
373
+ }
374
+ const parts = self.zone.format.formatToParts(self.epochMillis).filter(_ => _.type !== "literal");
375
+ const date = new Date(0);
376
+ date.setUTCFullYear(Number(parts[2].value), Number(parts[0].value) - 1, Number(parts[1].value));
377
+ date.setUTCHours(Number(parts[3].value), Number(parts[4].value), Number(parts[5].value), Number(parts[6].value));
378
+ self.adjustedEpochMillis = date.getTime();
379
+ return date;
380
+ };
381
+ /** @internal */
382
+ exports.toDate = toDate;
383
+ const zonedOffset = self => {
384
+ const date = toDate(self);
385
+ return date.getTime() - toEpochMillis(self);
386
+ };
387
+ exports.zonedOffset = zonedOffset;
388
+ const offsetToString = offset => {
389
+ const abs = Math.abs(offset);
390
+ const hours = Math.floor(abs / (60 * 60 * 1000));
391
+ const minutes = Math.round(abs % (60 * 60 * 1000) / (60 * 1000));
392
+ return `${offset < 0 ? "-" : "+"}${String(hours).padStart(2, "0")}:${String(minutes).padStart(2, "0")}`;
393
+ };
394
+ /** @internal */
395
+ const zonedOffsetIso = self => offsetToString(zonedOffset(self));
396
+ /** @internal */
397
+ exports.zonedOffsetIso = zonedOffsetIso;
398
+ const toEpochMillis = self => self.epochMillis;
399
+ /** @internal */
400
+ exports.toEpochMillis = toEpochMillis;
401
+ const removeTime = self => withDate(self, date => {
402
+ date.setUTCHours(0, 0, 0, 0);
403
+ return makeUtc(date.getTime());
404
+ });
405
+ // =============================================================================
406
+ // parts
407
+ // =============================================================================
408
+ exports.removeTime = removeTime;
409
+ const dateToParts = date => ({
410
+ millis: date.getUTCMilliseconds(),
411
+ seconds: date.getUTCSeconds(),
412
+ minutes: date.getUTCMinutes(),
413
+ hours: date.getUTCHours(),
414
+ day: date.getUTCDate(),
415
+ weekDay: date.getUTCDay(),
416
+ month: date.getUTCMonth() + 1,
417
+ year: date.getUTCFullYear()
418
+ });
419
+ /** @internal */
420
+ const toParts = self => {
421
+ if (self._tag === "Utc") {
422
+ return toPartsUtc(self);
423
+ } else if (self.partsAdjusted !== undefined) {
424
+ return self.partsAdjusted;
425
+ }
426
+ self.partsAdjusted = withDate(self, dateToParts);
427
+ return self.partsAdjusted;
428
+ };
429
+ /** @internal */
430
+ exports.toParts = toParts;
431
+ const toPartsUtc = self => {
432
+ if (self.partsUtc !== undefined) {
433
+ return self.partsUtc;
434
+ }
435
+ self.partsUtc = withDateUtc(self, dateToParts);
436
+ return self.partsUtc;
437
+ };
438
+ /** @internal */
439
+ exports.toPartsUtc = toPartsUtc;
440
+ const getPartUtc = exports.getPartUtc = /*#__PURE__*/(0, _Function.dual)(2, (self, part) => toPartsUtc(self)[part]);
441
+ /** @internal */
442
+ const getPart = exports.getPart = /*#__PURE__*/(0, _Function.dual)(2, (self, part) => toParts(self)[part]);
443
+ const setPartsDate = (date, parts) => {
444
+ if (parts.year !== undefined) {
445
+ date.setUTCFullYear(parts.year);
446
+ }
447
+ if (parts.month !== undefined) {
448
+ date.setUTCMonth(parts.month - 1);
449
+ }
450
+ if (parts.day !== undefined) {
451
+ date.setUTCDate(parts.day);
452
+ }
453
+ if (parts.weekDay !== undefined) {
454
+ const diff = parts.weekDay - date.getUTCDay();
455
+ date.setUTCDate(date.getUTCDate() + diff);
456
+ }
457
+ if (parts.hours !== undefined) {
458
+ date.setUTCHours(parts.hours);
459
+ }
460
+ if (parts.minutes !== undefined) {
461
+ date.setUTCMinutes(parts.minutes);
462
+ }
463
+ if (parts.seconds !== undefined) {
464
+ date.setUTCSeconds(parts.seconds);
465
+ }
466
+ if (parts.millis !== undefined) {
467
+ date.setUTCMilliseconds(parts.millis);
468
+ }
469
+ };
470
+ /** @internal */
471
+ const setParts = exports.setParts = /*#__PURE__*/(0, _Function.dual)(2, (self, parts) => mutate(self, date => setPartsDate(date, parts)));
472
+ /** @internal */
473
+ const setPartsUtc = exports.setPartsUtc = /*#__PURE__*/(0, _Function.dual)(2, (self, parts) => mutateUtc(self, date => setPartsDate(date, parts)));
474
+ // =============================================================================
475
+ // mapping
476
+ // =============================================================================
477
+ const makeZonedFromAdjusted = (adjustedMillis, zone) => {
478
+ const offset = zone._tag === "Offset" ? zone.offset : calculateNamedOffset(adjustedMillis, zone);
479
+ return makeZonedProto(adjustedMillis - offset, zone);
480
+ };
481
+ const offsetRegex = /([+-])(\d{2}):(\d{2})$/;
482
+ const parseOffset = offset => {
483
+ const match = offsetRegex.exec(offset);
484
+ if (match === null) {
485
+ return null;
486
+ }
487
+ const [, sign, hours, minutes] = match;
488
+ return (sign === "+" ? 1 : -1) * (Number(hours) * 60 + Number(minutes)) * 60 * 1000;
489
+ };
490
+ const calculateNamedOffset = (adjustedMillis, zone) => {
491
+ const offset = zone.format.formatToParts(adjustedMillis).find(_ => _.type === "timeZoneName")?.value ?? "";
492
+ if (offset === "GMT") {
493
+ return 0;
494
+ }
495
+ const result = parseOffset(offset);
496
+ if (result === null) {
497
+ // fallback to using the adjusted date
498
+ return zonedOffset(makeZonedProto(adjustedMillis, zone));
499
+ }
500
+ return result;
501
+ };
502
+ /** @internal */
503
+ const mutate = exports.mutate = /*#__PURE__*/(0, _Function.dual)(2, (self, f) => {
504
+ if (self._tag === "Utc") {
505
+ const date = toDateUtc(self);
506
+ f(date);
507
+ return makeUtc(date.getTime());
508
+ }
509
+ const adjustedDate = toDate(self);
510
+ const newAdjustedDate = new Date(adjustedDate.getTime());
511
+ f(newAdjustedDate);
512
+ return makeZonedFromAdjusted(newAdjustedDate.getTime(), self.zone);
513
+ });
514
+ /** @internal */
515
+ const mutateUtc = exports.mutateUtc = /*#__PURE__*/(0, _Function.dual)(2, (self, f) => mapEpochMillis(self, millis => {
516
+ const date = new Date(millis);
517
+ f(date);
518
+ return date.getTime();
519
+ }));
520
+ /** @internal */
521
+ const mapEpochMillis = exports.mapEpochMillis = /*#__PURE__*/(0, _Function.dual)(2, (self, f) => {
522
+ const millis = f(toEpochMillis(self));
523
+ return self._tag === "Utc" ? makeUtc(millis) : makeZonedProto(millis, self.zone);
524
+ });
525
+ /** @internal */
526
+ const withDate = exports.withDate = /*#__PURE__*/(0, _Function.dual)(2, (self, f) => f(toDate(self)));
527
+ /** @internal */
528
+ const withDateUtc = exports.withDateUtc = /*#__PURE__*/(0, _Function.dual)(2, (self, f) => f(toDateUtc(self)));
529
+ /** @internal */
530
+ const match = exports.match = /*#__PURE__*/(0, _Function.dual)(2, (self, options) => self._tag === "Utc" ? options.onUtc(self) : options.onZoned(self));
531
+ // =============================================================================
532
+ // math
533
+ // =============================================================================
534
+ /** @internal */
535
+ const addDuration = exports.addDuration = /*#__PURE__*/(0, _Function.dual)(2, (self, duration) => mapEpochMillis(self, millis => millis + Duration.toMillis(duration)));
536
+ /** @internal */
537
+ const subtractDuration = exports.subtractDuration = /*#__PURE__*/(0, _Function.dual)(2, (self, duration) => mapEpochMillis(self, millis => millis - Duration.toMillis(duration)));
538
+ const addMillis = (date, amount) => {
539
+ date.setTime(date.getTime() + amount);
540
+ };
541
+ /** @internal */
542
+ const add = exports.add = /*#__PURE__*/(0, _Function.dual)(2, (self, parts) => mutate(self, date => {
543
+ if (parts.millis) {
544
+ addMillis(date, parts.millis);
545
+ }
546
+ if (parts.seconds) {
547
+ addMillis(date, parts.seconds * 1000);
548
+ }
549
+ if (parts.minutes) {
550
+ addMillis(date, parts.minutes * 60 * 1000);
551
+ }
552
+ if (parts.hours) {
553
+ addMillis(date, parts.hours * 60 * 60 * 1000);
554
+ }
555
+ if (parts.days) {
556
+ date.setUTCDate(date.getUTCDate() + parts.days);
557
+ }
558
+ if (parts.weeks) {
559
+ date.setUTCDate(date.getUTCDate() + parts.weeks * 7);
560
+ }
561
+ if (parts.months) {
562
+ const day = date.getUTCDate();
563
+ date.setUTCMonth(date.getUTCMonth() + parts.months + 1, 0);
564
+ if (day < date.getUTCDate()) {
565
+ date.setUTCDate(day);
566
+ }
567
+ }
568
+ if (parts.years) {
569
+ const day = date.getUTCDate();
570
+ const month = date.getUTCMonth();
571
+ date.setUTCFullYear(date.getUTCFullYear() + parts.years, month + 1, 0);
572
+ if (day < date.getUTCDate()) {
573
+ date.setUTCDate(day);
574
+ }
575
+ }
576
+ }));
577
+ /** @internal */
578
+ const subtract = exports.subtract = /*#__PURE__*/(0, _Function.dual)(2, (self, parts) => {
579
+ const newParts = {};
580
+ for (const key in parts) {
581
+ newParts[key] = -1 * parts[key];
582
+ }
583
+ return add(self, newParts);
584
+ });
585
+ const startOfDate = (date, part, options) => {
586
+ switch (part) {
587
+ case "second":
588
+ {
589
+ date.setUTCMilliseconds(0);
590
+ break;
591
+ }
592
+ case "minute":
593
+ {
594
+ date.setUTCSeconds(0, 0);
595
+ break;
596
+ }
597
+ case "hour":
598
+ {
599
+ date.setUTCMinutes(0, 0, 0);
600
+ break;
601
+ }
602
+ case "day":
603
+ {
604
+ date.setUTCHours(0, 0, 0, 0);
605
+ break;
606
+ }
607
+ case "week":
608
+ {
609
+ const weekStartsOn = options?.weekStartsOn ?? 0;
610
+ const day = date.getUTCDay();
611
+ const diff = (day - weekStartsOn + 7) % 7;
612
+ date.setUTCDate(date.getUTCDate() - diff);
613
+ date.setUTCHours(0, 0, 0, 0);
614
+ break;
615
+ }
616
+ case "month":
617
+ {
618
+ date.setUTCDate(1);
619
+ date.setUTCHours(0, 0, 0, 0);
620
+ break;
621
+ }
622
+ case "year":
623
+ {
624
+ date.setUTCMonth(0, 1);
625
+ date.setUTCHours(0, 0, 0, 0);
626
+ break;
627
+ }
628
+ }
629
+ };
630
+ /** @internal */
631
+ const startOf = exports.startOf = /*#__PURE__*/(0, _Function.dual)(isDateTimeArgs, (self, part, options) => mutate(self, date => startOfDate(date, part, options)));
632
+ const endOfDate = (date, part, options) => {
633
+ switch (part) {
634
+ case "second":
635
+ {
636
+ date.setUTCMilliseconds(999);
637
+ break;
638
+ }
639
+ case "minute":
640
+ {
641
+ date.setUTCSeconds(59, 999);
642
+ break;
643
+ }
644
+ case "hour":
645
+ {
646
+ date.setUTCMinutes(59, 59, 999);
647
+ break;
648
+ }
649
+ case "day":
650
+ {
651
+ date.setUTCHours(23, 59, 59, 999);
652
+ break;
653
+ }
654
+ case "week":
655
+ {
656
+ const weekStartsOn = options?.weekStartsOn ?? 0;
657
+ const day = date.getUTCDay();
658
+ const diff = (day - weekStartsOn + 7) % 7;
659
+ date.setUTCDate(date.getUTCDate() - diff + 6);
660
+ date.setUTCHours(23, 59, 59, 999);
661
+ break;
662
+ }
663
+ case "month":
664
+ {
665
+ date.setUTCMonth(date.getUTCMonth() + 1, 0);
666
+ date.setUTCHours(23, 59, 59, 999);
667
+ break;
668
+ }
669
+ case "year":
670
+ {
671
+ date.setUTCMonth(11, 31);
672
+ date.setUTCHours(23, 59, 59, 999);
673
+ break;
674
+ }
675
+ }
676
+ };
677
+ /** @internal */
678
+ const endOf = exports.endOf = /*#__PURE__*/(0, _Function.dual)(isDateTimeArgs, (self, part, options) => mutate(self, date => endOfDate(date, part, options)));
679
+ /** @internal */
680
+ const nearest = exports.nearest = /*#__PURE__*/(0, _Function.dual)(isDateTimeArgs, (self, part, options) => mutate(self, date => {
681
+ if (part === "milli") return;
682
+ const millis = date.getTime();
683
+ const start = new Date(millis);
684
+ startOfDate(start, part, options);
685
+ const startMillis = start.getTime();
686
+ const end = new Date(millis);
687
+ endOfDate(end, part, options);
688
+ const endMillis = end.getTime() + 1;
689
+ const diffStart = millis - startMillis;
690
+ const diffEnd = endMillis - millis;
691
+ if (diffStart < diffEnd) {
692
+ date.setTime(startMillis);
693
+ } else {
694
+ date.setTime(endMillis);
695
+ }
696
+ }));
697
+ // =============================================================================
698
+ // formatting
699
+ // =============================================================================
700
+ const intlTimeZone = self => {
701
+ if (self._tag === "Named") {
702
+ return self.id;
703
+ }
704
+ return offsetToString(self.offset);
705
+ };
706
+ /** @internal */
707
+ const format = exports.format = /*#__PURE__*/(0, _Function.dual)(isDateTimeArgs, (self, options) => {
708
+ try {
709
+ return new Intl.DateTimeFormat(options?.locale, {
710
+ timeZone: self._tag === "Utc" ? "UTC" : intlTimeZone(self.zone),
711
+ ...options
712
+ }).format(self.epochMillis);
713
+ } catch (_) {
714
+ return new Intl.DateTimeFormat(options?.locale, {
715
+ timeZone: "UTC",
716
+ ...options
717
+ }).format(toDate(self));
718
+ }
719
+ });
720
+ /** @internal */
721
+ const formatLocal = exports.formatLocal = /*#__PURE__*/(0, _Function.dual)(isDateTimeArgs, (self, options) => new Intl.DateTimeFormat(options?.locale, options).format(self.epochMillis));
722
+ /** @internal */
723
+ const formatUtc = exports.formatUtc = /*#__PURE__*/(0, _Function.dual)(isDateTimeArgs, (self, options) => new Intl.DateTimeFormat(options?.locale, {
724
+ ...options,
725
+ timeZone: "UTC"
726
+ }).format(self.epochMillis));
727
+ /** @internal */
728
+ const formatIntl = exports.formatIntl = /*#__PURE__*/(0, _Function.dual)(2, (self, format) => format.format(self.epochMillis));
729
+ /** @internal */
730
+ const formatIso = self => toDateUtc(self).toISOString();
731
+ /** @internal */
732
+ exports.formatIso = formatIso;
733
+ const formatIsoDate = self => toDate(self).toISOString().slice(0, 10);
734
+ /** @internal */
735
+ exports.formatIsoDate = formatIsoDate;
736
+ const formatIsoDateUtc = self => toDateUtc(self).toISOString().slice(0, 10);
737
+ /** @internal */
738
+ exports.formatIsoDateUtc = formatIsoDateUtc;
739
+ const formatIsoOffset = self => {
740
+ const date = toDate(self);
741
+ return self._tag === "Utc" ? date.toISOString() : `${date.toISOString().slice(0, -1)}${zonedOffsetIso(self)}`;
742
+ };
743
+ /** @internal */
744
+ exports.formatIsoOffset = formatIsoOffset;
745
+ const formatIsoZoned = self => self.zone._tag === "Offset" ? formatIsoOffset(self) : `${formatIsoOffset(self)}[${self.zone.id}]`;
746
+ exports.formatIsoZoned = formatIsoZoned;
747
+ //# sourceMappingURL=dateTime.js.map