effect 3.8.4 → 3.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (757) hide show
  1. package/dist/cjs/Array.js +24 -3
  2. package/dist/cjs/Array.js.map +1 -1
  3. package/dist/cjs/BigDecimal.js +5 -3
  4. package/dist/cjs/BigDecimal.js.map +1 -1
  5. package/dist/cjs/BigInt.js.map +1 -1
  6. package/dist/cjs/Boolean.js.map +1 -1
  7. package/dist/cjs/Cause.js.map +1 -1
  8. package/dist/cjs/Channel.js.map +1 -1
  9. package/dist/cjs/ChildExecutorDecision.js.map +1 -1
  10. package/dist/cjs/Chunk.js +3 -0
  11. package/dist/cjs/Chunk.js.map +1 -1
  12. package/dist/cjs/Config.js.map +1 -1
  13. package/dist/cjs/ConfigError.js.map +1 -1
  14. package/dist/cjs/ConfigProvider.js.map +1 -1
  15. package/dist/cjs/ConfigProviderPathPatch.js.map +1 -1
  16. package/dist/cjs/Console.js.map +1 -1
  17. package/dist/cjs/Context.js.map +1 -1
  18. package/dist/cjs/Cron.js +3 -0
  19. package/dist/cjs/Cron.js.map +1 -1
  20. package/dist/cjs/Data.js.map +1 -1
  21. package/dist/cjs/DateTime.js +6 -0
  22. package/dist/cjs/DateTime.js.map +1 -1
  23. package/dist/cjs/Deferred.js.map +1 -1
  24. package/dist/cjs/Differ.js.map +1 -1
  25. package/dist/cjs/Duration.js +3 -0
  26. package/dist/cjs/Duration.js.map +1 -1
  27. package/dist/cjs/Effect.js +122 -35
  28. package/dist/cjs/Effect.js.map +1 -1
  29. package/dist/cjs/Either.js.map +1 -1
  30. package/dist/cjs/Equivalence.js.map +1 -1
  31. package/dist/cjs/ExecutionStrategy.js.map +1 -1
  32. package/dist/cjs/Exit.js.map +1 -1
  33. package/dist/cjs/Fiber.js.map +1 -1
  34. package/dist/cjs/FiberHandle.js +3 -0
  35. package/dist/cjs/FiberHandle.js.map +1 -1
  36. package/dist/cjs/FiberId.js.map +1 -1
  37. package/dist/cjs/FiberMap.js +3 -0
  38. package/dist/cjs/FiberMap.js.map +1 -1
  39. package/dist/cjs/FiberRef.js.map +1 -1
  40. package/dist/cjs/FiberRefs.js.map +1 -1
  41. package/dist/cjs/FiberRefsPatch.js.map +1 -1
  42. package/dist/cjs/FiberSet.js +3 -0
  43. package/dist/cjs/FiberSet.js.map +1 -1
  44. package/dist/cjs/Function.js.map +1 -1
  45. package/dist/cjs/GroupBy.js.map +1 -1
  46. package/dist/cjs/Hash.js.map +1 -1
  47. package/dist/cjs/HashMap.js.map +1 -1
  48. package/dist/cjs/HashSet.js.map +1 -1
  49. package/dist/cjs/Inspectable.js +15 -1
  50. package/dist/cjs/Inspectable.js.map +1 -1
  51. package/dist/cjs/Iterable.js.map +1 -1
  52. package/dist/cjs/KeyedPool.js.map +1 -1
  53. package/dist/cjs/Layer.js.map +1 -1
  54. package/dist/cjs/List.js +6 -0
  55. package/dist/cjs/List.js.map +1 -1
  56. package/dist/cjs/LogLevel.js.map +1 -1
  57. package/dist/cjs/Logger.js.map +1 -1
  58. package/dist/cjs/Mailbox.js.map +1 -1
  59. package/dist/cjs/ManagedRuntime.js +16 -1
  60. package/dist/cjs/ManagedRuntime.js.map +1 -1
  61. package/dist/cjs/MergeDecision.js.map +1 -1
  62. package/dist/cjs/MergeState.js.map +1 -1
  63. package/dist/cjs/MergeStrategy.js.map +1 -1
  64. package/dist/cjs/Metric.js.map +1 -1
  65. package/dist/cjs/MetricHook.js.map +1 -1
  66. package/dist/cjs/MetricKey.js.map +1 -1
  67. package/dist/cjs/MetricPolling.js.map +1 -1
  68. package/dist/cjs/MetricState.js.map +1 -1
  69. package/dist/cjs/Micro.js +6 -0
  70. package/dist/cjs/Micro.js.map +1 -1
  71. package/dist/cjs/MutableHashMap.js +3 -0
  72. package/dist/cjs/MutableHashMap.js.map +1 -1
  73. package/dist/cjs/MutableHashSet.js +3 -0
  74. package/dist/cjs/MutableHashSet.js.map +1 -1
  75. package/dist/cjs/MutableList.js +3 -0
  76. package/dist/cjs/MutableList.js.map +1 -1
  77. package/dist/cjs/MutableQueue.js +3 -0
  78. package/dist/cjs/MutableQueue.js.map +1 -1
  79. package/dist/cjs/MutableRef.js +3 -0
  80. package/dist/cjs/MutableRef.js.map +1 -1
  81. package/dist/cjs/Number.js.map +1 -1
  82. package/dist/cjs/Option.js.map +1 -1
  83. package/dist/cjs/Order.js.map +1 -1
  84. package/dist/cjs/Ordering.js.map +1 -1
  85. package/dist/cjs/Pipeable.js.map +1 -1
  86. package/dist/cjs/Pool.js.map +1 -1
  87. package/dist/cjs/Predicate.js +18 -2
  88. package/dist/cjs/Predicate.js.map +1 -1
  89. package/dist/cjs/PubSub.js.map +1 -1
  90. package/dist/cjs/Queue.js.map +1 -1
  91. package/dist/cjs/RcMap.js.map +1 -1
  92. package/dist/cjs/Readable.js.map +1 -1
  93. package/dist/cjs/Record.js.map +1 -1
  94. package/dist/cjs/RedBlackTree.js.map +1 -1
  95. package/dist/cjs/Ref.js.map +1 -1
  96. package/dist/cjs/RegExp.js +20 -1
  97. package/dist/cjs/RegExp.js.map +1 -1
  98. package/dist/cjs/Request.js.map +1 -1
  99. package/dist/cjs/RequestResolver.js.map +1 -1
  100. package/dist/cjs/Resource.js.map +1 -1
  101. package/dist/cjs/Runtime.js.map +1 -1
  102. package/dist/cjs/RuntimeFlags.js.map +1 -1
  103. package/dist/cjs/RuntimeFlagsPatch.js.map +1 -1
  104. package/dist/cjs/STM.js.map +1 -1
  105. package/dist/cjs/Schedule.js.map +1 -1
  106. package/dist/cjs/ScheduleInterval.js.map +1 -1
  107. package/dist/cjs/ScheduleIntervals.js.map +1 -1
  108. package/dist/cjs/Scheduler.js.map +1 -1
  109. package/dist/cjs/Scope.js.map +1 -1
  110. package/dist/cjs/ScopedRef.js.map +1 -1
  111. package/dist/cjs/Sink.js.map +1 -1
  112. package/dist/cjs/SortedMap.js +3 -0
  113. package/dist/cjs/SortedMap.js.map +1 -1
  114. package/dist/cjs/SortedSet.js +3 -0
  115. package/dist/cjs/SortedSet.js.map +1 -1
  116. package/dist/cjs/Stream.js +17 -3
  117. package/dist/cjs/Stream.js.map +1 -1
  118. package/dist/cjs/StreamHaltStrategy.js.map +1 -1
  119. package/dist/cjs/String.js.map +1 -1
  120. package/dist/cjs/Struct.js.map +1 -1
  121. package/dist/cjs/Subscribable.js.map +1 -1
  122. package/dist/cjs/SubscriptionRef.js.map +1 -1
  123. package/dist/cjs/SynchronizedRef.js.map +1 -1
  124. package/dist/cjs/TArray.js.map +1 -1
  125. package/dist/cjs/TDeferred.js.map +1 -1
  126. package/dist/cjs/TMap.js.map +1 -1
  127. package/dist/cjs/TPriorityQueue.js.map +1 -1
  128. package/dist/cjs/TPubSub.js.map +1 -1
  129. package/dist/cjs/TQueue.js.map +1 -1
  130. package/dist/cjs/TReentrantLock.js.map +1 -1
  131. package/dist/cjs/TRef.js.map +1 -1
  132. package/dist/cjs/TSemaphore.js.map +1 -1
  133. package/dist/cjs/TSet.js.map +1 -1
  134. package/dist/cjs/Take.js.map +1 -1
  135. package/dist/cjs/TestAnnotationMap.js.map +1 -1
  136. package/dist/cjs/TestClock.js.map +1 -1
  137. package/dist/cjs/TestServices.js.map +1 -1
  138. package/dist/cjs/Trie.js.map +1 -1
  139. package/dist/cjs/Tuple.js +21 -2
  140. package/dist/cjs/Tuple.js.map +1 -1
  141. package/dist/cjs/Unify.js.map +1 -1
  142. package/dist/cjs/UpstreamPullRequest.js.map +1 -1
  143. package/dist/cjs/UpstreamPullStrategy.js.map +1 -1
  144. package/dist/cjs/Utils.js +1 -14
  145. package/dist/cjs/Utils.js.map +1 -1
  146. package/dist/cjs/internal/cause.js +3 -0
  147. package/dist/cjs/internal/cause.js.map +1 -1
  148. package/dist/cjs/internal/context.js +6 -1
  149. package/dist/cjs/internal/context.js.map +1 -1
  150. package/dist/cjs/internal/core-effect.js.map +1 -1
  151. package/dist/cjs/internal/core.js +16 -3
  152. package/dist/cjs/internal/core.js.map +1 -1
  153. package/dist/cjs/internal/effect/circular.js +5 -1
  154. package/dist/cjs/internal/effect/circular.js.map +1 -1
  155. package/dist/cjs/internal/fiberId.js +9 -0
  156. package/dist/cjs/internal/fiberId.js.map +1 -1
  157. package/dist/cjs/internal/hashMap.js +3 -0
  158. package/dist/cjs/internal/hashMap.js.map +1 -1
  159. package/dist/cjs/internal/hashSet.js +3 -0
  160. package/dist/cjs/internal/hashSet.js.map +1 -1
  161. package/dist/cjs/internal/layer.js +33 -19
  162. package/dist/cjs/internal/layer.js.map +1 -1
  163. package/dist/cjs/internal/mailbox.js +3 -0
  164. package/dist/cjs/internal/mailbox.js.map +1 -1
  165. package/dist/cjs/internal/managedRuntime/circular.js +10 -0
  166. package/dist/cjs/internal/managedRuntime/circular.js.map +1 -0
  167. package/dist/cjs/internal/managedRuntime.js +23 -9
  168. package/dist/cjs/internal/managedRuntime.js.map +1 -1
  169. package/dist/cjs/internal/option.js +3 -0
  170. package/dist/cjs/internal/option.js.map +1 -1
  171. package/dist/cjs/internal/pool.js +6 -1
  172. package/dist/cjs/internal/pool.js.map +1 -1
  173. package/dist/cjs/internal/redBlackTree.js +3 -0
  174. package/dist/cjs/internal/redBlackTree.js.map +1 -1
  175. package/dist/cjs/internal/resource.js +15 -5
  176. package/dist/cjs/internal/resource.js.map +1 -1
  177. package/dist/cjs/internal/runtime.js +4 -1
  178. package/dist/cjs/internal/runtime.js.map +1 -1
  179. package/dist/cjs/internal/scopedRef.js +11 -8
  180. package/dist/cjs/internal/scopedRef.js.map +1 -1
  181. package/dist/cjs/internal/stm/core.js +1 -2
  182. package/dist/cjs/internal/stm/core.js.map +1 -1
  183. package/dist/cjs/internal/stream.js +12 -3
  184. package/dist/cjs/internal/stream.js.map +1 -1
  185. package/dist/cjs/internal/trie.js +3 -0
  186. package/dist/cjs/internal/trie.js.map +1 -1
  187. package/dist/cjs/internal/version.js +1 -1
  188. package/dist/dts/Array.d.ts +2735 -2
  189. package/dist/dts/Array.d.ts.map +1 -1
  190. package/dist/dts/BigDecimal.d.ts +558 -1
  191. package/dist/dts/BigDecimal.d.ts.map +1 -1
  192. package/dist/dts/BigInt.d.ts +490 -0
  193. package/dist/dts/BigInt.d.ts.map +1 -1
  194. package/dist/dts/Boolean.d.ts +228 -0
  195. package/dist/dts/Boolean.d.ts.map +1 -1
  196. package/dist/dts/Cause.d.ts +172 -0
  197. package/dist/dts/Cause.d.ts.map +1 -1
  198. package/dist/dts/Channel.d.ts +750 -0
  199. package/dist/dts/Channel.d.ts.map +1 -1
  200. package/dist/dts/ChildExecutorDecision.d.ts +12 -0
  201. package/dist/dts/ChildExecutorDecision.d.ts.map +1 -1
  202. package/dist/dts/Chunk.d.ts +791 -0
  203. package/dist/dts/Chunk.d.ts.map +1 -1
  204. package/dist/dts/Config.d.ts +174 -0
  205. package/dist/dts/Config.d.ts.map +1 -1
  206. package/dist/dts/ConfigError.d.ts +16 -0
  207. package/dist/dts/ConfigError.d.ts.map +1 -1
  208. package/dist/dts/ConfigProvider.d.ts +84 -0
  209. package/dist/dts/ConfigProvider.d.ts.map +1 -1
  210. package/dist/dts/ConfigProviderPathPatch.d.ts +32 -0
  211. package/dist/dts/ConfigProviderPathPatch.d.ts.map +1 -1
  212. package/dist/dts/Console.d.ts +24 -0
  213. package/dist/dts/Console.d.ts.map +1 -1
  214. package/dist/dts/Context.d.ts +234 -3
  215. package/dist/dts/Context.d.ts.map +1 -1
  216. package/dist/dts/Cron.d.ts +12 -0
  217. package/dist/dts/Cron.d.ts.map +1 -1
  218. package/dist/dts/Data.d.ts +165 -0
  219. package/dist/dts/Data.d.ts.map +1 -1
  220. package/dist/dts/DateTime.d.ts +878 -0
  221. package/dist/dts/DateTime.d.ts.map +1 -1
  222. package/dist/dts/Deferred.d.ts +171 -1
  223. package/dist/dts/Deferred.d.ts.map +1 -1
  224. package/dist/dts/Differ.d.ts +78 -0
  225. package/dist/dts/Differ.d.ts.map +1 -1
  226. package/dist/dts/Duration.d.ts +130 -0
  227. package/dist/dts/Duration.d.ts.map +1 -1
  228. package/dist/dts/Effect.d.ts +4350 -13
  229. package/dist/dts/Effect.d.ts.map +1 -1
  230. package/dist/dts/Either.d.ts +620 -0
  231. package/dist/dts/Either.d.ts.map +1 -1
  232. package/dist/dts/Equivalence.d.ts +24 -0
  233. package/dist/dts/Equivalence.d.ts.map +1 -1
  234. package/dist/dts/ExecutionStrategy.d.ts +14 -0
  235. package/dist/dts/ExecutionStrategy.d.ts.map +1 -1
  236. package/dist/dts/Exit.d.ts +252 -0
  237. package/dist/dts/Exit.d.ts.map +1 -1
  238. package/dist/dts/Fiber.d.ts +182 -0
  239. package/dist/dts/Fiber.d.ts.map +1 -1
  240. package/dist/dts/FiberHandle.d.ts +42 -0
  241. package/dist/dts/FiberHandle.d.ts.map +1 -1
  242. package/dist/dts/FiberId.d.ts +24 -0
  243. package/dist/dts/FiberId.d.ts.map +1 -1
  244. package/dist/dts/FiberMap.d.ts +102 -0
  245. package/dist/dts/FiberMap.d.ts.map +1 -1
  246. package/dist/dts/FiberRef.d.ts +80 -0
  247. package/dist/dts/FiberRef.d.ts.map +1 -1
  248. package/dist/dts/FiberRefs.d.ts +84 -0
  249. package/dist/dts/FiberRefs.d.ts.map +1 -1
  250. package/dist/dts/FiberRefsPatch.d.ts +30 -0
  251. package/dist/dts/FiberRefsPatch.d.ts.map +1 -1
  252. package/dist/dts/FiberSet.d.ts +38 -0
  253. package/dist/dts/FiberSet.d.ts.map +1 -1
  254. package/dist/dts/Function.d.ts +144 -28
  255. package/dist/dts/Function.d.ts.map +1 -1
  256. package/dist/dts/GroupBy.d.ts +38 -0
  257. package/dist/dts/GroupBy.d.ts.map +1 -1
  258. package/dist/dts/Hash.d.ts +8 -0
  259. package/dist/dts/Hash.d.ts.map +1 -1
  260. package/dist/dts/HashMap.d.ts +315 -0
  261. package/dist/dts/HashMap.d.ts.map +1 -1
  262. package/dist/dts/HashSet.d.ts +284 -0
  263. package/dist/dts/HashSet.d.ts.map +1 -1
  264. package/dist/dts/Inspectable.d.ts +15 -0
  265. package/dist/dts/Inspectable.d.ts.map +1 -1
  266. package/dist/dts/Iterable.d.ts +454 -0
  267. package/dist/dts/Iterable.d.ts.map +1 -1
  268. package/dist/dts/KeyedPool.d.ts +34 -0
  269. package/dist/dts/KeyedPool.d.ts.map +1 -1
  270. package/dist/dts/Layer.d.ts +460 -5
  271. package/dist/dts/Layer.d.ts.map +1 -1
  272. package/dist/dts/List.d.ts +430 -0
  273. package/dist/dts/List.d.ts.map +1 -1
  274. package/dist/dts/LogLevel.d.ts +46 -0
  275. package/dist/dts/LogLevel.d.ts.map +1 -1
  276. package/dist/dts/Logger.d.ts +194 -0
  277. package/dist/dts/Logger.d.ts.map +1 -1
  278. package/dist/dts/Mailbox.d.ts +16 -0
  279. package/dist/dts/Mailbox.d.ts.map +1 -1
  280. package/dist/dts/ManagedRuntime.d.ts +41 -2
  281. package/dist/dts/ManagedRuntime.d.ts.map +1 -1
  282. package/dist/dts/MergeDecision.d.ts +8 -0
  283. package/dist/dts/MergeDecision.d.ts.map +1 -1
  284. package/dist/dts/MergeState.d.ts +8 -0
  285. package/dist/dts/MergeState.d.ts.map +1 -1
  286. package/dist/dts/MergeStrategy.d.ts +12 -0
  287. package/dist/dts/MergeStrategy.d.ts.map +1 -1
  288. package/dist/dts/Metric.d.ts +410 -0
  289. package/dist/dts/Metric.d.ts.map +1 -1
  290. package/dist/dts/MetricHook.d.ts +24 -0
  291. package/dist/dts/MetricHook.d.ts.map +1 -1
  292. package/dist/dts/MetricKey.d.ts +48 -0
  293. package/dist/dts/MetricKey.d.ts.map +1 -1
  294. package/dist/dts/MetricPolling.d.ts +40 -0
  295. package/dist/dts/MetricPolling.d.ts.map +1 -1
  296. package/dist/dts/MetricState.d.ts +16 -0
  297. package/dist/dts/MetricState.d.ts.map +1 -1
  298. package/dist/dts/Micro.d.ts +1110 -0
  299. package/dist/dts/Micro.d.ts.map +1 -1
  300. package/dist/dts/MutableHashMap.d.ts +50 -0
  301. package/dist/dts/MutableHashMap.d.ts.map +1 -1
  302. package/dist/dts/MutableHashSet.d.ts +24 -0
  303. package/dist/dts/MutableHashSet.d.ts.map +1 -1
  304. package/dist/dts/MutableList.d.ts +36 -0
  305. package/dist/dts/MutableList.d.ts.map +1 -1
  306. package/dist/dts/MutableQueue.d.ts +62 -0
  307. package/dist/dts/MutableQueue.d.ts.map +1 -1
  308. package/dist/dts/MutableRef.d.ts +56 -0
  309. package/dist/dts/MutableRef.d.ts.map +1 -1
  310. package/dist/dts/Number.d.ts +474 -0
  311. package/dist/dts/Number.d.ts.map +1 -1
  312. package/dist/dts/Option.d.ts +1019 -0
  313. package/dist/dts/Option.d.ts.map +1 -1
  314. package/dist/dts/Order.d.ts +24 -0
  315. package/dist/dts/Order.d.ts.map +1 -1
  316. package/dist/dts/Ordering.d.ts +66 -0
  317. package/dist/dts/Ordering.d.ts.map +1 -1
  318. package/dist/dts/Pipeable.d.ts +21 -21
  319. package/dist/dts/Pipeable.d.ts.map +1 -1
  320. package/dist/dts/Pool.d.ts +37 -1
  321. package/dist/dts/Pool.d.ts.map +1 -1
  322. package/dist/dts/Predicate.d.ts +513 -0
  323. package/dist/dts/Predicate.d.ts.map +1 -1
  324. package/dist/dts/PubSub.d.ts +28 -0
  325. package/dist/dts/PubSub.d.ts.map +1 -1
  326. package/dist/dts/Queue.d.ts +106 -2
  327. package/dist/dts/Queue.d.ts.map +1 -1
  328. package/dist/dts/RcMap.d.ts +70 -0
  329. package/dist/dts/RcMap.d.ts.map +1 -1
  330. package/dist/dts/Readable.d.ts +16 -0
  331. package/dist/dts/Readable.d.ts.map +1 -1
  332. package/dist/dts/Record.d.ts +800 -0
  333. package/dist/dts/Record.d.ts.map +1 -1
  334. package/dist/dts/RedBlackTree.d.ts +300 -0
  335. package/dist/dts/RedBlackTree.d.ts.map +1 -1
  336. package/dist/dts/Ref.d.ts +88 -0
  337. package/dist/dts/Ref.d.ts.map +1 -1
  338. package/dist/dts/RegExp.d.ts +12 -2
  339. package/dist/dts/RegExp.d.ts.map +1 -1
  340. package/dist/dts/Request.d.ts +76 -0
  341. package/dist/dts/Request.d.ts.map +1 -1
  342. package/dist/dts/RequestResolver.d.ts +144 -0
  343. package/dist/dts/RequestResolver.d.ts.map +1 -1
  344. package/dist/dts/Resource.d.ts +21 -1
  345. package/dist/dts/Resource.d.ts.map +1 -1
  346. package/dist/dts/Runtime.d.ts +126 -0
  347. package/dist/dts/Runtime.d.ts.map +1 -1
  348. package/dist/dts/RuntimeFlags.d.ts +100 -0
  349. package/dist/dts/RuntimeFlags.d.ts.map +1 -1
  350. package/dist/dts/RuntimeFlagsPatch.d.ts +112 -0
  351. package/dist/dts/RuntimeFlagsPatch.d.ts.map +1 -1
  352. package/dist/dts/STM.d.ts +1090 -0
  353. package/dist/dts/STM.d.ts.map +1 -1
  354. package/dist/dts/Schedule.d.ts +704 -0
  355. package/dist/dts/Schedule.d.ts.map +1 -1
  356. package/dist/dts/ScheduleInterval.d.ts +68 -0
  357. package/dist/dts/ScheduleInterval.d.ts.map +1 -1
  358. package/dist/dts/ScheduleIntervals.d.ts +50 -0
  359. package/dist/dts/ScheduleIntervals.d.ts.map +1 -1
  360. package/dist/dts/Scope.d.ts +36 -0
  361. package/dist/dts/Scope.d.ts.map +1 -1
  362. package/dist/dts/ScopedRef.d.ts +43 -1
  363. package/dist/dts/ScopedRef.d.ts.map +1 -1
  364. package/dist/dts/Sink.d.ts +464 -0
  365. package/dist/dts/Sink.d.ts.map +1 -1
  366. package/dist/dts/SortedMap.d.ts +76 -0
  367. package/dist/dts/SortedMap.d.ts.map +1 -1
  368. package/dist/dts/SortedSet.d.ts +142 -0
  369. package/dist/dts/SortedSet.d.ts.map +1 -1
  370. package/dist/dts/Stream.d.ts +4998 -1
  371. package/dist/dts/Stream.d.ts.map +1 -1
  372. package/dist/dts/StreamHaltStrategy.d.ts +12 -0
  373. package/dist/dts/StreamHaltStrategy.d.ts.map +1 -1
  374. package/dist/dts/String.d.ts +200 -0
  375. package/dist/dts/String.d.ts.map +1 -1
  376. package/dist/dts/Struct.d.ts +84 -0
  377. package/dist/dts/Struct.d.ts.map +1 -1
  378. package/dist/dts/Subscribable.d.ts +16 -0
  379. package/dist/dts/Subscribable.d.ts.map +1 -1
  380. package/dist/dts/SubscriptionRef.d.ts +152 -0
  381. package/dist/dts/SubscriptionRef.d.ts.map +1 -1
  382. package/dist/dts/SynchronizedRef.d.ts +152 -0
  383. package/dist/dts/SynchronizedRef.d.ts.map +1 -1
  384. package/dist/dts/TArray.d.ts +426 -0
  385. package/dist/dts/TArray.d.ts.map +1 -1
  386. package/dist/dts/TDeferred.d.ts +24 -0
  387. package/dist/dts/TDeferred.d.ts.map +1 -1
  388. package/dist/dts/TMap.d.ts +366 -0
  389. package/dist/dts/TMap.d.ts.map +1 -1
  390. package/dist/dts/TPriorityQueue.d.ts +60 -0
  391. package/dist/dts/TPriorityQueue.d.ts.map +1 -1
  392. package/dist/dts/TPubSub.d.ts +28 -0
  393. package/dist/dts/TPubSub.d.ts.map +1 -1
  394. package/dist/dts/TQueue.d.ts +108 -0
  395. package/dist/dts/TQueue.d.ts.map +1 -1
  396. package/dist/dts/TReentrantLock.d.ts +36 -0
  397. package/dist/dts/TReentrantLock.d.ts.map +1 -1
  398. package/dist/dts/TRef.d.ts +88 -0
  399. package/dist/dts/TRef.d.ts.map +1 -1
  400. package/dist/dts/TSemaphore.d.ts +40 -0
  401. package/dist/dts/TSemaphore.d.ts.map +1 -1
  402. package/dist/dts/TSet.d.ts +254 -0
  403. package/dist/dts/TSet.d.ts.map +1 -1
  404. package/dist/dts/Take.d.ts +56 -0
  405. package/dist/dts/Take.d.ts.map +1 -1
  406. package/dist/dts/TestAnnotationMap.d.ts.map +1 -1
  407. package/dist/dts/TestClock.d.ts.map +1 -1
  408. package/dist/dts/TestServices.d.ts.map +1 -1
  409. package/dist/dts/Trie.d.ts +906 -0
  410. package/dist/dts/Trie.d.ts.map +1 -1
  411. package/dist/dts/Tuple.d.ts +203 -0
  412. package/dist/dts/Tuple.d.ts.map +1 -1
  413. package/dist/dts/Types.d.ts +39 -0
  414. package/dist/dts/Types.d.ts.map +1 -1
  415. package/dist/dts/Unify.d.ts +26 -13
  416. package/dist/dts/Unify.d.ts.map +1 -1
  417. package/dist/dts/UpstreamPullRequest.d.ts +12 -0
  418. package/dist/dts/UpstreamPullRequest.d.ts.map +1 -1
  419. package/dist/dts/UpstreamPullStrategy.d.ts +12 -0
  420. package/dist/dts/UpstreamPullStrategy.d.ts.map +1 -1
  421. package/dist/dts/Utils.d.ts.map +1 -1
  422. package/dist/dts/internal/core.d.ts.map +1 -1
  423. package/dist/dts/internal/hashMap.d.ts.map +1 -1
  424. package/dist/dts/internal/layer.d.ts.map +1 -1
  425. package/dist/dts/internal/managedRuntime/circular.d.ts +2 -0
  426. package/dist/dts/internal/managedRuntime/circular.d.ts.map +1 -0
  427. package/dist/dts/internal/stream.d.ts.map +1 -1
  428. package/dist/esm/Array.js +21 -0
  429. package/dist/esm/Array.js.map +1 -1
  430. package/dist/esm/BigDecimal.js +6 -3
  431. package/dist/esm/BigDecimal.js.map +1 -1
  432. package/dist/esm/BigInt.js.map +1 -1
  433. package/dist/esm/Boolean.js.map +1 -1
  434. package/dist/esm/Cause.js.map +1 -1
  435. package/dist/esm/Channel.js.map +1 -1
  436. package/dist/esm/ChildExecutorDecision.js.map +1 -1
  437. package/dist/esm/Chunk.js +4 -1
  438. package/dist/esm/Chunk.js.map +1 -1
  439. package/dist/esm/Config.js.map +1 -1
  440. package/dist/esm/ConfigError.js.map +1 -1
  441. package/dist/esm/ConfigProvider.js.map +1 -1
  442. package/dist/esm/ConfigProviderPathPatch.js.map +1 -1
  443. package/dist/esm/Console.js.map +1 -1
  444. package/dist/esm/Context.js.map +1 -1
  445. package/dist/esm/Cron.js +4 -1
  446. package/dist/esm/Cron.js.map +1 -1
  447. package/dist/esm/Data.js.map +1 -1
  448. package/dist/esm/DateTime.js +6 -0
  449. package/dist/esm/DateTime.js.map +1 -1
  450. package/dist/esm/Deferred.js.map +1 -1
  451. package/dist/esm/Differ.js.map +1 -1
  452. package/dist/esm/Duration.js +4 -1
  453. package/dist/esm/Duration.js.map +1 -1
  454. package/dist/esm/Effect.js +116 -30
  455. package/dist/esm/Effect.js.map +1 -1
  456. package/dist/esm/Either.js.map +1 -1
  457. package/dist/esm/Equivalence.js.map +1 -1
  458. package/dist/esm/ExecutionStrategy.js.map +1 -1
  459. package/dist/esm/Exit.js.map +1 -1
  460. package/dist/esm/Fiber.js.map +1 -1
  461. package/dist/esm/FiberHandle.js +3 -0
  462. package/dist/esm/FiberHandle.js.map +1 -1
  463. package/dist/esm/FiberId.js.map +1 -1
  464. package/dist/esm/FiberMap.js +3 -0
  465. package/dist/esm/FiberMap.js.map +1 -1
  466. package/dist/esm/FiberRef.js.map +1 -1
  467. package/dist/esm/FiberRefs.js.map +1 -1
  468. package/dist/esm/FiberRefsPatch.js.map +1 -1
  469. package/dist/esm/FiberSet.js +3 -0
  470. package/dist/esm/FiberSet.js.map +1 -1
  471. package/dist/esm/Function.js.map +1 -1
  472. package/dist/esm/GroupBy.js.map +1 -1
  473. package/dist/esm/Hash.js.map +1 -1
  474. package/dist/esm/HashMap.js.map +1 -1
  475. package/dist/esm/HashSet.js.map +1 -1
  476. package/dist/esm/Inspectable.js +14 -0
  477. package/dist/esm/Inspectable.js.map +1 -1
  478. package/dist/esm/Iterable.js.map +1 -1
  479. package/dist/esm/KeyedPool.js.map +1 -1
  480. package/dist/esm/Layer.js.map +1 -1
  481. package/dist/esm/List.js +7 -1
  482. package/dist/esm/List.js.map +1 -1
  483. package/dist/esm/LogLevel.js.map +1 -1
  484. package/dist/esm/Logger.js.map +1 -1
  485. package/dist/esm/Mailbox.js.map +1 -1
  486. package/dist/esm/ManagedRuntime.js +15 -0
  487. package/dist/esm/ManagedRuntime.js.map +1 -1
  488. package/dist/esm/MergeDecision.js.map +1 -1
  489. package/dist/esm/MergeState.js.map +1 -1
  490. package/dist/esm/MergeStrategy.js.map +1 -1
  491. package/dist/esm/Metric.js.map +1 -1
  492. package/dist/esm/MetricHook.js.map +1 -1
  493. package/dist/esm/MetricKey.js.map +1 -1
  494. package/dist/esm/MetricPolling.js.map +1 -1
  495. package/dist/esm/MetricState.js.map +1 -1
  496. package/dist/esm/Micro.js +7 -1
  497. package/dist/esm/Micro.js.map +1 -1
  498. package/dist/esm/MutableHashMap.js +4 -1
  499. package/dist/esm/MutableHashMap.js.map +1 -1
  500. package/dist/esm/MutableHashSet.js +4 -1
  501. package/dist/esm/MutableHashSet.js.map +1 -1
  502. package/dist/esm/MutableList.js +4 -1
  503. package/dist/esm/MutableList.js.map +1 -1
  504. package/dist/esm/MutableQueue.js +4 -1
  505. package/dist/esm/MutableQueue.js.map +1 -1
  506. package/dist/esm/MutableRef.js +4 -1
  507. package/dist/esm/MutableRef.js.map +1 -1
  508. package/dist/esm/Number.js.map +1 -1
  509. package/dist/esm/Option.js.map +1 -1
  510. package/dist/esm/Order.js.map +1 -1
  511. package/dist/esm/Ordering.js.map +1 -1
  512. package/dist/esm/Pipeable.js.map +1 -1
  513. package/dist/esm/Pool.js.map +1 -1
  514. package/dist/esm/Predicate.js +15 -0
  515. package/dist/esm/Predicate.js.map +1 -1
  516. package/dist/esm/PubSub.js.map +1 -1
  517. package/dist/esm/Queue.js.map +1 -1
  518. package/dist/esm/RcMap.js.map +1 -1
  519. package/dist/esm/Readable.js.map +1 -1
  520. package/dist/esm/Record.js.map +1 -1
  521. package/dist/esm/RedBlackTree.js.map +1 -1
  522. package/dist/esm/Ref.js.map +1 -1
  523. package/dist/esm/RegExp.js +16 -0
  524. package/dist/esm/RegExp.js.map +1 -1
  525. package/dist/esm/Request.js.map +1 -1
  526. package/dist/esm/RequestResolver.js.map +1 -1
  527. package/dist/esm/Resource.js.map +1 -1
  528. package/dist/esm/Runtime.js.map +1 -1
  529. package/dist/esm/RuntimeFlags.js.map +1 -1
  530. package/dist/esm/RuntimeFlagsPatch.js.map +1 -1
  531. package/dist/esm/STM.js.map +1 -1
  532. package/dist/esm/Schedule.js.map +1 -1
  533. package/dist/esm/ScheduleInterval.js.map +1 -1
  534. package/dist/esm/ScheduleIntervals.js.map +1 -1
  535. package/dist/esm/Scheduler.js.map +1 -1
  536. package/dist/esm/Scope.js.map +1 -1
  537. package/dist/esm/ScopedRef.js.map +1 -1
  538. package/dist/esm/Sink.js.map +1 -1
  539. package/dist/esm/SortedMap.js +4 -1
  540. package/dist/esm/SortedMap.js.map +1 -1
  541. package/dist/esm/SortedSet.js +4 -1
  542. package/dist/esm/SortedSet.js.map +1 -1
  543. package/dist/esm/Stream.js +14 -0
  544. package/dist/esm/Stream.js.map +1 -1
  545. package/dist/esm/StreamHaltStrategy.js.map +1 -1
  546. package/dist/esm/String.js.map +1 -1
  547. package/dist/esm/Struct.js.map +1 -1
  548. package/dist/esm/Subscribable.js.map +1 -1
  549. package/dist/esm/SubscriptionRef.js.map +1 -1
  550. package/dist/esm/SynchronizedRef.js.map +1 -1
  551. package/dist/esm/TArray.js.map +1 -1
  552. package/dist/esm/TDeferred.js.map +1 -1
  553. package/dist/esm/TMap.js.map +1 -1
  554. package/dist/esm/TPriorityQueue.js.map +1 -1
  555. package/dist/esm/TPubSub.js.map +1 -1
  556. package/dist/esm/TQueue.js.map +1 -1
  557. package/dist/esm/TReentrantLock.js.map +1 -1
  558. package/dist/esm/TRef.js.map +1 -1
  559. package/dist/esm/TSemaphore.js.map +1 -1
  560. package/dist/esm/TSet.js.map +1 -1
  561. package/dist/esm/Take.js.map +1 -1
  562. package/dist/esm/TestAnnotationMap.js.map +1 -1
  563. package/dist/esm/TestClock.js.map +1 -1
  564. package/dist/esm/TestServices.js.map +1 -1
  565. package/dist/esm/Trie.js.map +1 -1
  566. package/dist/esm/Tuple.js +19 -0
  567. package/dist/esm/Tuple.js.map +1 -1
  568. package/dist/esm/Unify.js.map +1 -1
  569. package/dist/esm/UpstreamPullRequest.js.map +1 -1
  570. package/dist/esm/UpstreamPullStrategy.js.map +1 -1
  571. package/dist/esm/Utils.js +1 -14
  572. package/dist/esm/Utils.js.map +1 -1
  573. package/dist/esm/internal/cause.js +4 -1
  574. package/dist/esm/internal/cause.js.map +1 -1
  575. package/dist/esm/internal/context.js +7 -2
  576. package/dist/esm/internal/context.js.map +1 -1
  577. package/dist/esm/internal/core-effect.js.map +1 -1
  578. package/dist/esm/internal/core.js +14 -2
  579. package/dist/esm/internal/core.js.map +1 -1
  580. package/dist/esm/internal/effect/circular.js +5 -1
  581. package/dist/esm/internal/effect/circular.js.map +1 -1
  582. package/dist/esm/internal/fiberId.js +10 -1
  583. package/dist/esm/internal/fiberId.js.map +1 -1
  584. package/dist/esm/internal/hashMap.js +4 -1
  585. package/dist/esm/internal/hashMap.js.map +1 -1
  586. package/dist/esm/internal/hashSet.js +4 -1
  587. package/dist/esm/internal/hashSet.js.map +1 -1
  588. package/dist/esm/internal/layer.js +32 -18
  589. package/dist/esm/internal/layer.js.map +1 -1
  590. package/dist/esm/internal/mailbox.js +3 -0
  591. package/dist/esm/internal/mailbox.js.map +1 -1
  592. package/dist/esm/internal/managedRuntime/circular.js +4 -0
  593. package/dist/esm/internal/managedRuntime/circular.js.map +1 -0
  594. package/dist/esm/internal/managedRuntime.js +21 -8
  595. package/dist/esm/internal/managedRuntime.js.map +1 -1
  596. package/dist/esm/internal/option.js +4 -1
  597. package/dist/esm/internal/option.js.map +1 -1
  598. package/dist/esm/internal/pool.js +6 -1
  599. package/dist/esm/internal/pool.js.map +1 -1
  600. package/dist/esm/internal/redBlackTree.js +4 -1
  601. package/dist/esm/internal/redBlackTree.js.map +1 -1
  602. package/dist/esm/internal/resource.js +15 -5
  603. package/dist/esm/internal/resource.js.map +1 -1
  604. package/dist/esm/internal/runtime.js +4 -1
  605. package/dist/esm/internal/runtime.js.map +1 -1
  606. package/dist/esm/internal/scopedRef.js +11 -8
  607. package/dist/esm/internal/scopedRef.js.map +1 -1
  608. package/dist/esm/internal/stm/core.js +1 -2
  609. package/dist/esm/internal/stm/core.js.map +1 -1
  610. package/dist/esm/internal/stream.js +9 -0
  611. package/dist/esm/internal/stream.js.map +1 -1
  612. package/dist/esm/internal/trie.js +4 -1
  613. package/dist/esm/internal/trie.js.map +1 -1
  614. package/dist/esm/internal/version.js +1 -1
  615. package/package.json +1 -1
  616. package/src/Array.ts +2791 -40
  617. package/src/BigDecimal.ts +589 -19
  618. package/src/BigInt.ts +516 -16
  619. package/src/Boolean.ts +241 -8
  620. package/src/Cause.ts +177 -1
  621. package/src/Channel.ts +766 -49
  622. package/src/ChildExecutorDecision.ts +12 -0
  623. package/src/Chunk.ts +822 -5
  624. package/src/Config.ts +187 -8
  625. package/src/ConfigError.ts +16 -0
  626. package/src/ConfigProvider.ts +89 -1
  627. package/src/ConfigProviderPathPatch.ts +32 -0
  628. package/src/Console.ts +37 -8
  629. package/src/Context.ts +234 -3
  630. package/src/Cron.ts +16 -1
  631. package/src/Data.ts +165 -0
  632. package/src/DateTime.ts +1012 -50
  633. package/src/Deferred.ts +171 -1
  634. package/src/Differ.ts +89 -27
  635. package/src/Duration.ts +160 -17
  636. package/src/Effect.ts +4717 -164
  637. package/src/Either.ts +650 -34
  638. package/src/Equivalence.ts +24 -0
  639. package/src/ExecutionStrategy.ts +29 -10
  640. package/src/Exit.ts +252 -0
  641. package/src/Fiber.ts +182 -0
  642. package/src/FiberHandle.ts +45 -0
  643. package/src/FiberId.ts +24 -0
  644. package/src/FiberMap.ts +147 -21
  645. package/src/FiberRef.ts +80 -0
  646. package/src/FiberRefs.ts +84 -0
  647. package/src/FiberRefsPatch.ts +35 -1
  648. package/src/FiberSet.ts +41 -0
  649. package/src/Function.ts +416 -31
  650. package/src/GroupBy.ts +38 -0
  651. package/src/Hash.ts +8 -0
  652. package/src/HashMap.ts +316 -0
  653. package/src/HashSet.ts +284 -0
  654. package/src/Inspectable.ts +22 -0
  655. package/src/Iterable.ts +456 -6
  656. package/src/KeyedPool.ts +34 -0
  657. package/src/Layer.ts +475 -38
  658. package/src/List.ts +483 -4
  659. package/src/LogLevel.ts +46 -0
  660. package/src/Logger.ts +195 -4
  661. package/src/Mailbox.ts +16 -0
  662. package/src/ManagedRuntime.ts +46 -2
  663. package/src/MergeDecision.ts +8 -0
  664. package/src/MergeState.ts +8 -0
  665. package/src/MergeStrategy.ts +25 -8
  666. package/src/Metric.ts +426 -15
  667. package/src/MetricHook.ts +24 -0
  668. package/src/MetricKey.ts +62 -8
  669. package/src/MetricPolling.ts +42 -6
  670. package/src/MetricState.ts +16 -0
  671. package/src/Micro.ts +1223 -61
  672. package/src/MutableHashMap.ts +109 -2
  673. package/src/MutableHashSet.ts +28 -1
  674. package/src/MutableList.ts +40 -1
  675. package/src/MutableQueue.ts +66 -1
  676. package/src/MutableRef.ts +60 -1
  677. package/src/Number.ts +500 -16
  678. package/src/Option.ts +1042 -16
  679. package/src/Order.ts +24 -0
  680. package/src/Ordering.ts +66 -0
  681. package/src/Pipeable.ts +224 -21
  682. package/src/Pool.ts +42 -1
  683. package/src/Predicate.ts +514 -0
  684. package/src/PubSub.ts +28 -0
  685. package/src/Queue.ts +106 -2
  686. package/src/RcMap.ts +70 -0
  687. package/src/Readable.ts +18 -7
  688. package/src/Record.ts +814 -40
  689. package/src/RedBlackTree.ts +305 -1
  690. package/src/Ref.ts +88 -0
  691. package/src/RegExp.ts +17 -0
  692. package/src/Request.ts +76 -0
  693. package/src/RequestResolver.ts +145 -4
  694. package/src/Resource.ts +22 -1
  695. package/src/Runtime.ts +134 -2
  696. package/src/RuntimeFlags.ts +100 -0
  697. package/src/RuntimeFlagsPatch.ts +112 -0
  698. package/src/STM.ts +1107 -11
  699. package/src/Schedule.ts +704 -0
  700. package/src/ScheduleInterval.ts +68 -0
  701. package/src/ScheduleIntervals.ts +50 -0
  702. package/src/Scheduler.ts +2 -0
  703. package/src/Scope.ts +36 -0
  704. package/src/ScopedRef.ts +44 -1
  705. package/src/Sink.ts +464 -0
  706. package/src/SortedMap.ts +80 -1
  707. package/src/SortedSet.ts +147 -4
  708. package/src/Stream.ts +5041 -54
  709. package/src/StreamHaltStrategy.ts +29 -12
  710. package/src/String.ts +200 -0
  711. package/src/Struct.ts +86 -7
  712. package/src/Subscribable.ts +16 -0
  713. package/src/SubscriptionRef.ts +159 -11
  714. package/src/SynchronizedRef.ts +169 -8
  715. package/src/TArray.ts +431 -1
  716. package/src/TDeferred.ts +24 -0
  717. package/src/TMap.ts +381 -12
  718. package/src/TPriorityQueue.ts +60 -0
  719. package/src/TPubSub.ts +28 -0
  720. package/src/TQueue.ts +108 -0
  721. package/src/TReentrantLock.ts +36 -0
  722. package/src/TRef.ts +88 -0
  723. package/src/TSemaphore.ts +40 -0
  724. package/src/TSet.ts +280 -12
  725. package/src/Take.ts +56 -0
  726. package/src/TestAnnotationMap.ts +45 -1
  727. package/src/TestClock.ts +6 -0
  728. package/src/TestServices.ts +66 -0
  729. package/src/Trie.ts +906 -0
  730. package/src/Tuple.ts +223 -8
  731. package/src/Types.ts +41 -0
  732. package/src/Unify.ts +28 -17
  733. package/src/UpstreamPullRequest.ts +12 -0
  734. package/src/UpstreamPullStrategy.ts +12 -0
  735. package/src/Utils.ts +1 -15
  736. package/src/internal/cause.ts +4 -1
  737. package/src/internal/context.ts +7 -2
  738. package/src/internal/core-effect.ts +7 -7
  739. package/src/internal/core.ts +14 -2
  740. package/src/internal/effect/circular.ts +8 -2
  741. package/src/internal/fiberId.ts +10 -1
  742. package/src/internal/hashMap.ts +4 -1
  743. package/src/internal/hashSet.ts +4 -1
  744. package/src/internal/layer.ts +105 -38
  745. package/src/internal/mailbox.ts +3 -0
  746. package/src/internal/managedRuntime/circular.ts +6 -0
  747. package/src/internal/managedRuntime.ts +36 -22
  748. package/src/internal/option.ts +4 -1
  749. package/src/internal/pool.ts +7 -1
  750. package/src/internal/redBlackTree.ts +4 -1
  751. package/src/internal/resource.ts +16 -5
  752. package/src/internal/runtime.ts +4 -1
  753. package/src/internal/scopedRef.ts +12 -8
  754. package/src/internal/stm/core.ts +2 -3
  755. package/src/internal/stream.ts +27 -0
  756. package/src/internal/trie.ts +4 -1
  757. package/src/internal/version.ts +1 -1
@@ -125,7 +125,33 @@ export declare const left: <L>(left: L) => Either<never, L>;
125
125
  * @since 2.0.0
126
126
  */
127
127
  export declare const fromNullable: {
128
+ /**
129
+ * Takes a lazy default and a nullable value, if the value is not nully (`null` or `undefined`), turn it into a `Right`, if the value is nully use
130
+ * the provided default as a `Left`.
131
+ *
132
+ * @example
133
+ * import { Either } from "effect"
134
+ *
135
+ * assert.deepStrictEqual(Either.fromNullable(1, () => 'fallback'), Either.right(1))
136
+ * assert.deepStrictEqual(Either.fromNullable(null, () => 'fallback'), Either.left('fallback'))
137
+ *
138
+ * @category constructors
139
+ * @since 2.0.0
140
+ */
128
141
  <R, L>(onNullable: (right: R) => L): (self: R) => Either<NonNullable<R>, L>;
142
+ /**
143
+ * Takes a lazy default and a nullable value, if the value is not nully (`null` or `undefined`), turn it into a `Right`, if the value is nully use
144
+ * the provided default as a `Left`.
145
+ *
146
+ * @example
147
+ * import { Either } from "effect"
148
+ *
149
+ * assert.deepStrictEqual(Either.fromNullable(1, () => 'fallback'), Either.right(1))
150
+ * assert.deepStrictEqual(Either.fromNullable(null, () => 'fallback'), Either.left('fallback'))
151
+ *
152
+ * @category constructors
153
+ * @since 2.0.0
154
+ */
129
155
  <R, L>(self: R, onNullable: (right: R) => L): Either<NonNullable<R>, L>;
130
156
  };
131
157
  /**
@@ -139,7 +165,27 @@ export declare const fromNullable: {
139
165
  * @since 2.0.0
140
166
  */
141
167
  export declare const fromOption: {
168
+ /**
169
+ * @example
170
+ * import { Either, Option } from "effect"
171
+ *
172
+ * assert.deepStrictEqual(Either.fromOption(Option.some(1), () => 'error'), Either.right(1))
173
+ * assert.deepStrictEqual(Either.fromOption(Option.none(), () => 'error'), Either.left('error'))
174
+ *
175
+ * @category constructors
176
+ * @since 2.0.0
177
+ */
142
178
  <L>(onNone: () => L): <R>(self: Option<R>) => Either<R, L>;
179
+ /**
180
+ * @example
181
+ * import { Either, Option } from "effect"
182
+ *
183
+ * assert.deepStrictEqual(Either.fromOption(Option.some(1), () => 'error'), Either.right(1))
184
+ * assert.deepStrictEqual(Either.fromOption(Option.none(), () => 'error'), Either.left('error'))
185
+ *
186
+ * @category constructors
187
+ * @since 2.0.0
188
+ */
143
189
  <R, L>(self: Option<R>, onNone: () => L): Either<R, L>;
144
190
  };
145
191
  declare const try_: {
@@ -245,10 +291,18 @@ export declare const getEquivalence: <R, L>({ left, right }: {
245
291
  * @since 2.0.0
246
292
  */
247
293
  export declare const mapBoth: {
294
+ /**
295
+ * @category mapping
296
+ * @since 2.0.0
297
+ */
248
298
  <L, L2, R, R2>(options: {
249
299
  readonly onLeft: (left: L) => L2;
250
300
  readonly onRight: (right: R) => R2;
251
301
  }): (self: Either<R, L>) => Either<R2, L2>;
302
+ /**
303
+ * @category mapping
304
+ * @since 2.0.0
305
+ */
252
306
  <L, R, L2, R2>(self: Either<R, L>, options: {
253
307
  readonly onLeft: (left: L) => L2;
254
308
  readonly onRight: (right: R) => R2;
@@ -264,7 +318,25 @@ export declare const mapBoth: {
264
318
  * @since 2.0.0
265
319
  */
266
320
  export declare const mapLeft: {
321
+ /**
322
+ * Maps the `Left` side of an `Either` value to a new `Either` value.
323
+ *
324
+ * @param self - The input `Either` value to map.
325
+ * @param f - A transformation function to apply to the `Left` value of the input `Either`.
326
+ *
327
+ * @category mapping
328
+ * @since 2.0.0
329
+ */
267
330
  <L, L2>(f: (left: L) => L2): <R>(self: Either<R, L>) => Either<R, L2>;
331
+ /**
332
+ * Maps the `Left` side of an `Either` value to a new `Either` value.
333
+ *
334
+ * @param self - The input `Either` value to map.
335
+ * @param f - A transformation function to apply to the `Left` value of the input `Either`.
336
+ *
337
+ * @category mapping
338
+ * @since 2.0.0
339
+ */
268
340
  <R, L, L2>(self: Either<R, L>, f: (left: L) => L2): Either<R, L2>;
269
341
  };
270
342
  /**
@@ -277,7 +349,25 @@ export declare const mapLeft: {
277
349
  * @since 2.0.0
278
350
  */
279
351
  export declare const map: {
352
+ /**
353
+ * Maps the `Right` side of an `Either` value to a new `Either` value.
354
+ *
355
+ * @param self - An `Either` to map
356
+ * @param f - The function to map over the value of the `Either`
357
+ *
358
+ * @category mapping
359
+ * @since 2.0.0
360
+ */
280
361
  <R, R2>(f: (right: R) => R2): <L>(self: Either<R, L>) => Either<R2, L>;
362
+ /**
363
+ * Maps the `Right` side of an `Either` value to a new `Either` value.
364
+ *
365
+ * @param self - An `Either` to map
366
+ * @param f - The function to map over the value of the `Either`
367
+ *
368
+ * @category mapping
369
+ * @since 2.0.0
370
+ */
281
371
  <R, L, R2>(self: Either<R, L>, f: (right: R) => R2): Either<R2, L>;
282
372
  };
283
373
  /**
@@ -301,10 +391,50 @@ export declare const map: {
301
391
  * @since 2.0.0
302
392
  */
303
393
  export declare const match: {
394
+ /**
395
+ * Takes two functions and an `Either` value, if the value is a `Left` the inner value is applied to the `onLeft function,
396
+ * if the value is a `Right` the inner value is applied to the `onRight` function.
397
+ *
398
+ * @example
399
+ * import { pipe, Either } from "effect"
400
+ *
401
+ * const onLeft = (strings: ReadonlyArray<string>): string => `strings: ${strings.join(', ')}`
402
+ *
403
+ * const onRight = (value: number): string => `Ok: ${value}`
404
+ *
405
+ * assert.deepStrictEqual(pipe(Either.right(1), Either.match({ onLeft, onRight })), 'Ok: 1')
406
+ * assert.deepStrictEqual(
407
+ * pipe(Either.left(['string 1', 'string 2']), Either.match({ onLeft, onRight })),
408
+ * 'strings: string 1, string 2'
409
+ * )
410
+ *
411
+ * @category pattern matching
412
+ * @since 2.0.0
413
+ */
304
414
  <L, B, R, C = B>(options: {
305
415
  readonly onLeft: (left: L) => B;
306
416
  readonly onRight: (right: R) => C;
307
417
  }): (self: Either<R, L>) => B | C;
418
+ /**
419
+ * Takes two functions and an `Either` value, if the value is a `Left` the inner value is applied to the `onLeft function,
420
+ * if the value is a `Right` the inner value is applied to the `onRight` function.
421
+ *
422
+ * @example
423
+ * import { pipe, Either } from "effect"
424
+ *
425
+ * const onLeft = (strings: ReadonlyArray<string>): string => `strings: ${strings.join(', ')}`
426
+ *
427
+ * const onRight = (value: number): string => `Ok: ${value}`
428
+ *
429
+ * assert.deepStrictEqual(pipe(Either.right(1), Either.match({ onLeft, onRight })), 'Ok: 1')
430
+ * assert.deepStrictEqual(
431
+ * pipe(Either.left(['string 1', 'string 2']), Either.match({ onLeft, onRight })),
432
+ * 'strings: string 1, string 2'
433
+ * )
434
+ *
435
+ * @category pattern matching
436
+ * @since 2.0.0
437
+ */
308
438
  <R, L, B, C = B>(self: Either<R, L>, options: {
309
439
  readonly onLeft: (left: L) => B;
310
440
  readonly onRight: (right: R) => C;
@@ -340,9 +470,125 @@ export declare const match: {
340
470
  * @since 3.4.0
341
471
  */
342
472
  export declare const liftPredicate: {
473
+ /**
474
+ * Transforms a `Predicate` function into a `Right` of the input value if the predicate returns `true`
475
+ * or `Left` of the result of the provided function if the predicate returns false
476
+ *
477
+ * @param predicate - A `Predicate` function that takes in a value of type `A` and returns a boolean.
478
+ *
479
+ * @example
480
+ * import { pipe, Either } from "effect"
481
+ *
482
+ * const isPositive = (n: number): boolean => n > 0
483
+ *
484
+ * assert.deepStrictEqual(
485
+ * pipe(
486
+ * 1,
487
+ * Either.liftPredicate(isPositive, n => `${n} is not positive`)
488
+ * ),
489
+ * Either.right(1)
490
+ * )
491
+ * assert.deepStrictEqual(
492
+ * pipe(
493
+ * 0,
494
+ * Either.liftPredicate(isPositive, n => `${n} is not positive`)
495
+ * ),
496
+ * Either.left("0 is not positive")
497
+ * )
498
+ *
499
+ * @category lifting
500
+ * @since 3.4.0
501
+ */
343
502
  <A, B extends A, E>(refinement: Refinement<NoInfer<A>, B>, orLeftWith: (a: NoInfer<A>) => E): (a: A) => Either<B, E>;
503
+ /**
504
+ * Transforms a `Predicate` function into a `Right` of the input value if the predicate returns `true`
505
+ * or `Left` of the result of the provided function if the predicate returns false
506
+ *
507
+ * @param predicate - A `Predicate` function that takes in a value of type `A` and returns a boolean.
508
+ *
509
+ * @example
510
+ * import { pipe, Either } from "effect"
511
+ *
512
+ * const isPositive = (n: number): boolean => n > 0
513
+ *
514
+ * assert.deepStrictEqual(
515
+ * pipe(
516
+ * 1,
517
+ * Either.liftPredicate(isPositive, n => `${n} is not positive`)
518
+ * ),
519
+ * Either.right(1)
520
+ * )
521
+ * assert.deepStrictEqual(
522
+ * pipe(
523
+ * 0,
524
+ * Either.liftPredicate(isPositive, n => `${n} is not positive`)
525
+ * ),
526
+ * Either.left("0 is not positive")
527
+ * )
528
+ *
529
+ * @category lifting
530
+ * @since 3.4.0
531
+ */
344
532
  <A, E>(predicate: Predicate<NoInfer<A>>, orLeftWith: (a: NoInfer<A>) => E): (a: A) => Either<A, E>;
533
+ /**
534
+ * Transforms a `Predicate` function into a `Right` of the input value if the predicate returns `true`
535
+ * or `Left` of the result of the provided function if the predicate returns false
536
+ *
537
+ * @param predicate - A `Predicate` function that takes in a value of type `A` and returns a boolean.
538
+ *
539
+ * @example
540
+ * import { pipe, Either } from "effect"
541
+ *
542
+ * const isPositive = (n: number): boolean => n > 0
543
+ *
544
+ * assert.deepStrictEqual(
545
+ * pipe(
546
+ * 1,
547
+ * Either.liftPredicate(isPositive, n => `${n} is not positive`)
548
+ * ),
549
+ * Either.right(1)
550
+ * )
551
+ * assert.deepStrictEqual(
552
+ * pipe(
553
+ * 0,
554
+ * Either.liftPredicate(isPositive, n => `${n} is not positive`)
555
+ * ),
556
+ * Either.left("0 is not positive")
557
+ * )
558
+ *
559
+ * @category lifting
560
+ * @since 3.4.0
561
+ */
345
562
  <A, E, B extends A>(self: A, refinement: Refinement<A, B>, orLeftWith: (a: A) => E): Either<B, E>;
563
+ /**
564
+ * Transforms a `Predicate` function into a `Right` of the input value if the predicate returns `true`
565
+ * or `Left` of the result of the provided function if the predicate returns false
566
+ *
567
+ * @param predicate - A `Predicate` function that takes in a value of type `A` and returns a boolean.
568
+ *
569
+ * @example
570
+ * import { pipe, Either } from "effect"
571
+ *
572
+ * const isPositive = (n: number): boolean => n > 0
573
+ *
574
+ * assert.deepStrictEqual(
575
+ * pipe(
576
+ * 1,
577
+ * Either.liftPredicate(isPositive, n => `${n} is not positive`)
578
+ * ),
579
+ * Either.right(1)
580
+ * )
581
+ * assert.deepStrictEqual(
582
+ * pipe(
583
+ * 0,
584
+ * Either.liftPredicate(isPositive, n => `${n} is not positive`)
585
+ * ),
586
+ * Either.left("0 is not positive")
587
+ * )
588
+ *
589
+ * @category lifting
590
+ * @since 3.4.0
591
+ */
346
592
  <A, E>(self: A, predicate: Predicate<NoInfer<A>>, orLeftWith: (a: NoInfer<A>) => E): Either<A, E>;
347
593
  };
348
594
  /**
@@ -373,9 +619,117 @@ export declare const liftPredicate: {
373
619
  * @category filtering & conditionals
374
620
  */
375
621
  export declare const filterOrLeft: {
622
+ /**
623
+ * Filter the right value with the provided function.
624
+ * If the predicate fails, set the left value with the result of the provided function.
625
+ *
626
+ * @example
627
+ * import { pipe, Either } from "effect"
628
+ *
629
+ * const isPositive = (n: number): boolean => n > 0
630
+ *
631
+ * assert.deepStrictEqual(
632
+ * pipe(
633
+ * Either.right(1),
634
+ * Either.filterOrLeft(isPositive, n => `${n} is not positive`)
635
+ * ),
636
+ * Either.right(1)
637
+ * )
638
+ * assert.deepStrictEqual(
639
+ * pipe(
640
+ * Either.right(0),
641
+ * Either.filterOrLeft(isPositive, n => `${n} is not positive`)
642
+ * ),
643
+ * Either.left("0 is not positive")
644
+ * )
645
+ *
646
+ * @since 2.0.0
647
+ * @category filtering & conditionals
648
+ */
376
649
  <R, B extends R, L2>(refinement: Refinement<NoInfer<R>, B>, orLeftWith: (right: NoInfer<R>) => L2): <L>(self: Either<R, L>) => Either<B, L2 | L>;
650
+ /**
651
+ * Filter the right value with the provided function.
652
+ * If the predicate fails, set the left value with the result of the provided function.
653
+ *
654
+ * @example
655
+ * import { pipe, Either } from "effect"
656
+ *
657
+ * const isPositive = (n: number): boolean => n > 0
658
+ *
659
+ * assert.deepStrictEqual(
660
+ * pipe(
661
+ * Either.right(1),
662
+ * Either.filterOrLeft(isPositive, n => `${n} is not positive`)
663
+ * ),
664
+ * Either.right(1)
665
+ * )
666
+ * assert.deepStrictEqual(
667
+ * pipe(
668
+ * Either.right(0),
669
+ * Either.filterOrLeft(isPositive, n => `${n} is not positive`)
670
+ * ),
671
+ * Either.left("0 is not positive")
672
+ * )
673
+ *
674
+ * @since 2.0.0
675
+ * @category filtering & conditionals
676
+ */
377
677
  <R, L2>(predicate: Predicate<NoInfer<R>>, orLeftWith: (right: NoInfer<R>) => L2): <L>(self: Either<R, L>) => Either<R, L2 | L>;
678
+ /**
679
+ * Filter the right value with the provided function.
680
+ * If the predicate fails, set the left value with the result of the provided function.
681
+ *
682
+ * @example
683
+ * import { pipe, Either } from "effect"
684
+ *
685
+ * const isPositive = (n: number): boolean => n > 0
686
+ *
687
+ * assert.deepStrictEqual(
688
+ * pipe(
689
+ * Either.right(1),
690
+ * Either.filterOrLeft(isPositive, n => `${n} is not positive`)
691
+ * ),
692
+ * Either.right(1)
693
+ * )
694
+ * assert.deepStrictEqual(
695
+ * pipe(
696
+ * Either.right(0),
697
+ * Either.filterOrLeft(isPositive, n => `${n} is not positive`)
698
+ * ),
699
+ * Either.left("0 is not positive")
700
+ * )
701
+ *
702
+ * @since 2.0.0
703
+ * @category filtering & conditionals
704
+ */
378
705
  <R, L, B extends R, L2>(self: Either<R, L>, refinement: Refinement<R, B>, orLeftWith: (right: R) => L2): Either<B, L | L2>;
706
+ /**
707
+ * Filter the right value with the provided function.
708
+ * If the predicate fails, set the left value with the result of the provided function.
709
+ *
710
+ * @example
711
+ * import { pipe, Either } from "effect"
712
+ *
713
+ * const isPositive = (n: number): boolean => n > 0
714
+ *
715
+ * assert.deepStrictEqual(
716
+ * pipe(
717
+ * Either.right(1),
718
+ * Either.filterOrLeft(isPositive, n => `${n} is not positive`)
719
+ * ),
720
+ * Either.right(1)
721
+ * )
722
+ * assert.deepStrictEqual(
723
+ * pipe(
724
+ * Either.right(0),
725
+ * Either.filterOrLeft(isPositive, n => `${n} is not positive`)
726
+ * ),
727
+ * Either.left("0 is not positive")
728
+ * )
729
+ *
730
+ * @since 2.0.0
731
+ * @category filtering & conditionals
732
+ */
379
733
  <R, L, E2>(self: Either<R, L>, predicate: Predicate<R>, orLeftWith: (right: R) => E2): Either<R, L | E2>;
380
734
  };
381
735
  /**
@@ -396,7 +750,31 @@ export declare const merge: <R, L>(self: Either<R, L>) => L | R;
396
750
  * @since 2.0.0
397
751
  */
398
752
  export declare const getOrElse: {
753
+ /**
754
+ * Returns the wrapped value if it's a `Right` or a default value if is a `Left`.
755
+ *
756
+ * @example
757
+ * import { Either } from "effect"
758
+ *
759
+ * assert.deepStrictEqual(Either.getOrElse(Either.right(1), (error) => error + "!"), 1)
760
+ * assert.deepStrictEqual(Either.getOrElse(Either.left("not a number"), (error) => error + "!"), "not a number!")
761
+ *
762
+ * @category getters
763
+ * @since 2.0.0
764
+ */
399
765
  <L, R2>(onLeft: (left: L) => R2): <R>(self: Either<R, L>) => R2 | R;
766
+ /**
767
+ * Returns the wrapped value if it's a `Right` or a default value if is a `Left`.
768
+ *
769
+ * @example
770
+ * import { Either } from "effect"
771
+ *
772
+ * assert.deepStrictEqual(Either.getOrElse(Either.right(1), (error) => error + "!"), 1)
773
+ * assert.deepStrictEqual(Either.getOrElse(Either.left("not a number"), (error) => error + "!"), "not a number!")
774
+ *
775
+ * @category getters
776
+ * @since 2.0.0
777
+ */
400
778
  <R, L, R2>(self: Either<R, L>, onLeft: (left: L) => R2): R | R2;
401
779
  };
402
780
  /**
@@ -442,7 +820,47 @@ export declare const getOrUndefined: <R, L>(self: Either<R, L>) => R | undefined
442
820
  * @since 2.0.0
443
821
  */
444
822
  export declare const getOrThrowWith: {
823
+ /**
824
+ * Extracts the value of an `Either` or throws if the `Either` is `Left`.
825
+ *
826
+ * If a default error is sufficient for your use case and you don't need to configure the thrown error, see {@link getOrThrow}.
827
+ *
828
+ * @param self - The `Either` to extract the value from.
829
+ * @param onLeft - A function that will be called if the `Either` is `Left`. It returns the error to be thrown.
830
+ *
831
+ * @example
832
+ * import { Either } from "effect"
833
+ *
834
+ * assert.deepStrictEqual(
835
+ * Either.getOrThrowWith(Either.right(1), () => new Error('Unexpected Left')),
836
+ * 1
837
+ * )
838
+ * assert.throws(() => Either.getOrThrowWith(Either.left("error"), () => new Error('Unexpected Left')))
839
+ *
840
+ * @category getters
841
+ * @since 2.0.0
842
+ */
445
843
  <L>(onLeft: (left: L) => unknown): <A>(self: Either<A, L>) => A;
844
+ /**
845
+ * Extracts the value of an `Either` or throws if the `Either` is `Left`.
846
+ *
847
+ * If a default error is sufficient for your use case and you don't need to configure the thrown error, see {@link getOrThrow}.
848
+ *
849
+ * @param self - The `Either` to extract the value from.
850
+ * @param onLeft - A function that will be called if the `Either` is `Left`. It returns the error to be thrown.
851
+ *
852
+ * @example
853
+ * import { Either } from "effect"
854
+ *
855
+ * assert.deepStrictEqual(
856
+ * Either.getOrThrowWith(Either.right(1), () => new Error('Unexpected Left')),
857
+ * 1
858
+ * )
859
+ * assert.throws(() => Either.getOrThrowWith(Either.left("error"), () => new Error('Unexpected Left')))
860
+ *
861
+ * @category getters
862
+ * @since 2.0.0
863
+ */
446
864
  <R, L>(self: Either<R, L>, onLeft: (left: L) => unknown): R;
447
865
  };
448
866
  /**
@@ -473,7 +891,25 @@ export declare const getOrThrow: <R, L>(self: Either<R, L>) => R;
473
891
  * @since 2.0.0
474
892
  */
475
893
  export declare const orElse: {
894
+ /**
895
+ * Returns `self` if it is a `Right` or `that` otherwise.
896
+ *
897
+ * @param self - The input `Either` value to check and potentially return.
898
+ * @param that - A function that takes the error value from `self` (if it's a `Left`) and returns a new `Either` value.
899
+ *
900
+ * @category error handling
901
+ * @since 2.0.0
902
+ */
476
903
  <L, R2, L2>(that: (left: L) => Either<R2, L2>): <R>(self: Either<R, L>) => Either<R | R2, L2>;
904
+ /**
905
+ * Returns `self` if it is a `Right` or `that` otherwise.
906
+ *
907
+ * @param self - The input `Either` value to check and potentially return.
908
+ * @param that - A function that takes the error value from `self` (if it's a `Left`) and returns a new `Either` value.
909
+ *
910
+ * @category error handling
911
+ * @since 2.0.0
912
+ */
477
913
  <R, L, R2, L2>(self: Either<R, L>, that: (left: L) => Either<R2, L2>): Either<R | R2, L2>;
478
914
  };
479
915
  /**
@@ -481,7 +917,15 @@ export declare const orElse: {
481
917
  * @since 2.0.0
482
918
  */
483
919
  export declare const flatMap: {
920
+ /**
921
+ * @category sequencing
922
+ * @since 2.0.0
923
+ */
484
924
  <R, R2, L2>(f: (right: R) => Either<R2, L2>): <L>(self: Either<R, L>) => Either<R2, L | L2>;
925
+ /**
926
+ * @category sequencing
927
+ * @since 2.0.0
928
+ */
485
929
  <R, L, R2, L2>(self: Either<R, L>, f: (right: R) => Either<R2, L2>): Either<R2, L | L2>;
486
930
  };
487
931
  /**
@@ -491,13 +935,61 @@ export declare const flatMap: {
491
935
  * @since 2.0.0
492
936
  */
493
937
  export declare const andThen: {
938
+ /**
939
+ * Executes a sequence of two `Either`s. The second `Either` can be dependent on the result of the first `Either`.
940
+ *
941
+ * @category sequencing
942
+ * @since 2.0.0
943
+ */
494
944
  <R, R2, L2>(f: (right: R) => Either<R2, L2>): <L>(self: Either<R, L>) => Either<R2, L | L2>;
945
+ /**
946
+ * Executes a sequence of two `Either`s. The second `Either` can be dependent on the result of the first `Either`.
947
+ *
948
+ * @category sequencing
949
+ * @since 2.0.0
950
+ */
495
951
  <R2, L2>(f: Either<R2, L2>): <L, R1>(self: Either<R1, L>) => Either<R2, L | L2>;
952
+ /**
953
+ * Executes a sequence of two `Either`s. The second `Either` can be dependent on the result of the first `Either`.
954
+ *
955
+ * @category sequencing
956
+ * @since 2.0.0
957
+ */
496
958
  <R, R2>(f: (right: R) => R2): <L>(self: Either<R, L>) => Either<R2, L>;
959
+ /**
960
+ * Executes a sequence of two `Either`s. The second `Either` can be dependent on the result of the first `Either`.
961
+ *
962
+ * @category sequencing
963
+ * @since 2.0.0
964
+ */
497
965
  <R2>(right: NotFunction<R2>): <R1, L>(self: Either<R1, L>) => Either<R2, L>;
966
+ /**
967
+ * Executes a sequence of two `Either`s. The second `Either` can be dependent on the result of the first `Either`.
968
+ *
969
+ * @category sequencing
970
+ * @since 2.0.0
971
+ */
498
972
  <R, L, R2, L2>(self: Either<R, L>, f: (right: R) => Either<R2, L2>): Either<R2, L | L2>;
973
+ /**
974
+ * Executes a sequence of two `Either`s. The second `Either` can be dependent on the result of the first `Either`.
975
+ *
976
+ * @category sequencing
977
+ * @since 2.0.0
978
+ */
499
979
  <R, L, R2, L2>(self: Either<R, L>, f: Either<R2, L2>): Either<R2, L | L2>;
980
+ /**
981
+ * Executes a sequence of two `Either`s. The second `Either` can be dependent on the result of the first `Either`.
982
+ *
983
+ * @category sequencing
984
+ * @since 2.0.0
985
+ */
500
986
  <R, L, R2>(self: Either<R, L>, f: (right: R) => R2): Either<R2, L>;
987
+ /**
988
+ * Executes a sequence of two `Either`s. The second `Either` can be dependent on the result of the first `Either`.
989
+ *
990
+ * @category sequencing
991
+ * @since 2.0.0
992
+ */
501
993
  <R, L, R2>(self: Either<R, L>, f: NotFunction<R2>): Either<R2, L>;
502
994
  };
503
995
  /**
@@ -505,7 +997,15 @@ export declare const andThen: {
505
997
  * @since 2.0.0
506
998
  */
507
999
  export declare const zipWith: {
1000
+ /**
1001
+ * @category zipping
1002
+ * @since 2.0.0
1003
+ */
508
1004
  <R2, L2, R, B>(that: Either<R2, L2>, f: (right: R, right2: R2) => B): <L>(self: Either<R, L>) => Either<B, L2 | L>;
1005
+ /**
1006
+ * @category zipping
1007
+ * @since 2.0.0
1008
+ */
509
1009
  <R, L, R2, L2, B>(self: Either<R, L>, that: Either<R2, L2>, f: (right: R, right2: R2) => B): Either<B, L | L2>;
510
1010
  };
511
1011
  /**
@@ -513,7 +1013,15 @@ export declare const zipWith: {
513
1013
  * @since 2.0.0
514
1014
  */
515
1015
  export declare const ap: {
1016
+ /**
1017
+ * @category combining
1018
+ * @since 2.0.0
1019
+ */
516
1020
  <R, L2>(that: Either<R, L2>): <R2, L>(self: Either<(right: R) => R2, L>) => Either<R2, L | L2>;
1021
+ /**
1022
+ * @category combining
1023
+ * @since 2.0.0
1024
+ */
517
1025
  <R, R2, L, L2>(self: Either<(right: R) => R2, L>, that: Either<R, L2>): Either<R2, L | L2>;
518
1026
  };
519
1027
  /**
@@ -611,9 +1119,65 @@ export declare const Do: Either<{}>;
611
1119
  * @since 2.0.0
612
1120
  */
613
1121
  export declare const bind: {
1122
+ /**
1123
+ * The "do simulation" in Effect allows you to write code in a more declarative style, similar to the "do notation" in other programming languages. It provides a way to define variables and perform operations on them using functions like `bind` and `let`.
1124
+ *
1125
+ * Here's how the do simulation works:
1126
+ *
1127
+ * 1. Start the do simulation using the `Do` value
1128
+ * 2. Within the do simulation scope, you can use the `bind` function to define variables and bind them to `Either` values
1129
+ * 3. You can accumulate multiple `bind` statements to define multiple variables within the scope
1130
+ * 4. Inside the do simulation scope, you can also use the `let` function to define variables and bind them to simple values
1131
+ *
1132
+ * @see {@link Do}
1133
+ * @see {@link bindTo}
1134
+ * @see {@link let_ let}
1135
+ *
1136
+ * @example
1137
+ * import { Either, pipe } from "effect"
1138
+ *
1139
+ * const result = pipe(
1140
+ * Either.Do,
1141
+ * Either.bind("x", () => Either.right(2)),
1142
+ * Either.bind("y", () => Either.right(3)),
1143
+ * Either.let("sum", ({ x, y }) => x + y)
1144
+ * )
1145
+ * assert.deepStrictEqual(result, Either.right({ x: 2, y: 3, sum: 5 }))
1146
+ *
1147
+ * @category do notation
1148
+ * @since 2.0.0
1149
+ */
614
1150
  <N extends string, A extends object, B, L2>(name: Exclude<N, keyof A>, f: (a: A) => Either<B, L2>): <L1>(self: Either<A, L1>) => Either<{
615
1151
  [K in N | keyof A]: K extends keyof A ? A[K] : B;
616
1152
  }, L1 | L2>;
1153
+ /**
1154
+ * The "do simulation" in Effect allows you to write code in a more declarative style, similar to the "do notation" in other programming languages. It provides a way to define variables and perform operations on them using functions like `bind` and `let`.
1155
+ *
1156
+ * Here's how the do simulation works:
1157
+ *
1158
+ * 1. Start the do simulation using the `Do` value
1159
+ * 2. Within the do simulation scope, you can use the `bind` function to define variables and bind them to `Either` values
1160
+ * 3. You can accumulate multiple `bind` statements to define multiple variables within the scope
1161
+ * 4. Inside the do simulation scope, you can also use the `let` function to define variables and bind them to simple values
1162
+ *
1163
+ * @see {@link Do}
1164
+ * @see {@link bindTo}
1165
+ * @see {@link let_ let}
1166
+ *
1167
+ * @example
1168
+ * import { Either, pipe } from "effect"
1169
+ *
1170
+ * const result = pipe(
1171
+ * Either.Do,
1172
+ * Either.bind("x", () => Either.right(2)),
1173
+ * Either.bind("y", () => Either.right(3)),
1174
+ * Either.let("sum", ({ x, y }) => x + y)
1175
+ * )
1176
+ * assert.deepStrictEqual(result, Either.right({ x: 2, y: 3, sum: 5 }))
1177
+ *
1178
+ * @category do notation
1179
+ * @since 2.0.0
1180
+ */
617
1181
  <A extends object, L1, N extends string, B, L2>(self: Either<A, L1>, name: Exclude<N, keyof A>, f: (a: A) => Either<B, L2>): Either<{
618
1182
  [K in N | keyof A]: K extends keyof A ? A[K] : B;
619
1183
  }, L1 | L2>;
@@ -647,9 +1211,65 @@ export declare const bind: {
647
1211
  * @since 2.0.0
648
1212
  */
649
1213
  export declare const bindTo: {
1214
+ /**
1215
+ * The "do simulation" in Effect allows you to write code in a more declarative style, similar to the "do notation" in other programming languages. It provides a way to define variables and perform operations on them using functions like `bind` and `let`.
1216
+ *
1217
+ * Here's how the do simulation works:
1218
+ *
1219
+ * 1. Start the do simulation using the `Do` value
1220
+ * 2. Within the do simulation scope, you can use the `bind` function to define variables and bind them to `Either` values
1221
+ * 3. You can accumulate multiple `bind` statements to define multiple variables within the scope
1222
+ * 4. Inside the do simulation scope, you can also use the `let` function to define variables and bind them to simple values
1223
+ *
1224
+ * @see {@link Do}
1225
+ * @see {@link bind}
1226
+ * @see {@link let_ let}
1227
+ *
1228
+ * @example
1229
+ * import { Either, pipe } from "effect"
1230
+ *
1231
+ * const result = pipe(
1232
+ * Either.Do,
1233
+ * Either.bind("x", () => Either.right(2)),
1234
+ * Either.bind("y", () => Either.right(3)),
1235
+ * Either.let("sum", ({ x, y }) => x + y)
1236
+ * )
1237
+ * assert.deepStrictEqual(result, Either.right({ x: 2, y: 3, sum: 5 }))
1238
+ *
1239
+ * @category do notation
1240
+ * @since 2.0.0
1241
+ */
650
1242
  <N extends string>(name: N): <R, L>(self: Either<R, L>) => Either<{
651
1243
  [K in N]: R;
652
1244
  }, L>;
1245
+ /**
1246
+ * The "do simulation" in Effect allows you to write code in a more declarative style, similar to the "do notation" in other programming languages. It provides a way to define variables and perform operations on them using functions like `bind` and `let`.
1247
+ *
1248
+ * Here's how the do simulation works:
1249
+ *
1250
+ * 1. Start the do simulation using the `Do` value
1251
+ * 2. Within the do simulation scope, you can use the `bind` function to define variables and bind them to `Either` values
1252
+ * 3. You can accumulate multiple `bind` statements to define multiple variables within the scope
1253
+ * 4. Inside the do simulation scope, you can also use the `let` function to define variables and bind them to simple values
1254
+ *
1255
+ * @see {@link Do}
1256
+ * @see {@link bind}
1257
+ * @see {@link let_ let}
1258
+ *
1259
+ * @example
1260
+ * import { Either, pipe } from "effect"
1261
+ *
1262
+ * const result = pipe(
1263
+ * Either.Do,
1264
+ * Either.bind("x", () => Either.right(2)),
1265
+ * Either.bind("y", () => Either.right(3)),
1266
+ * Either.let("sum", ({ x, y }) => x + y)
1267
+ * )
1268
+ * assert.deepStrictEqual(result, Either.right({ x: 2, y: 3, sum: 5 }))
1269
+ *
1270
+ * @category do notation
1271
+ * @since 2.0.0
1272
+ */
653
1273
  <R, L, N extends string>(self: Either<R, L>, name: N): Either<{
654
1274
  [K in N]: R;
655
1275
  }, L>;