effect 2.0.0-next.55 → 2.0.0-next.56

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 (652) hide show
  1. package/README.md +14 -9
  2. package/dist/cjs/Cache.js.map +1 -1
  3. package/dist/cjs/Cause.js +53 -18
  4. package/dist/cjs/Cause.js.map +1 -1
  5. package/dist/cjs/ChildExecutorDecision.js.map +1 -1
  6. package/dist/cjs/Chunk.js +5 -5
  7. package/dist/cjs/Chunk.js.map +1 -1
  8. package/dist/cjs/Data.js +11 -20
  9. package/dist/cjs/Data.js.map +1 -1
  10. package/dist/cjs/Duration.js +4 -0
  11. package/dist/cjs/Duration.js.map +1 -1
  12. package/dist/cjs/Effect.js +11 -4
  13. package/dist/cjs/Effect.js.map +1 -1
  14. package/dist/cjs/Either.js +9 -2
  15. package/dist/cjs/Either.js.map +1 -1
  16. package/dist/cjs/Exit.js.map +1 -1
  17. package/dist/cjs/Fiber.js.map +1 -1
  18. package/dist/cjs/HashMap.js.map +1 -1
  19. package/dist/cjs/KeyedPool.js.map +1 -1
  20. package/dist/cjs/List.js.map +1 -1
  21. package/dist/cjs/MergeState.js.map +1 -1
  22. package/dist/cjs/MetricPolling.js +2 -2
  23. package/dist/cjs/MetricPolling.js.map +1 -1
  24. package/dist/cjs/MetricState.js.map +1 -1
  25. package/dist/cjs/NonEmptyIterable.js.map +1 -1
  26. package/dist/cjs/Option.js +2 -2
  27. package/dist/cjs/Option.js.map +1 -1
  28. package/dist/cjs/Pipeable.js.map +1 -1
  29. package/dist/cjs/Predicate.js +17 -1
  30. package/dist/cjs/Predicate.js.map +1 -1
  31. package/dist/cjs/PrimaryKey.js +15 -0
  32. package/dist/cjs/PrimaryKey.js.map +1 -0
  33. package/dist/cjs/Queue.js +6 -1
  34. package/dist/cjs/Queue.js.map +1 -1
  35. package/dist/cjs/ReadonlyArray.js +2 -0
  36. package/dist/cjs/ReadonlyArray.js.map +1 -1
  37. package/dist/cjs/ReadonlyRecord.js +2 -2
  38. package/dist/cjs/ReadonlyRecord.js.map +1 -1
  39. package/dist/cjs/RedBlackTree.js.map +1 -1
  40. package/dist/cjs/Request.js +35 -1
  41. package/dist/cjs/Request.js.map +1 -1
  42. package/dist/cjs/STM.js +1 -1
  43. package/dist/cjs/STM.js.map +1 -1
  44. package/dist/cjs/Sink.js.map +1 -1
  45. package/dist/cjs/SortedMap.js +4 -1
  46. package/dist/cjs/SortedMap.js.map +1 -1
  47. package/dist/cjs/SortedSet.js +2 -2
  48. package/dist/cjs/SortedSet.js.map +1 -1
  49. package/dist/cjs/Stream.js.map +1 -1
  50. package/dist/cjs/SubscriptionRef.js.map +1 -1
  51. package/dist/cjs/TPubSub.js.map +1 -1
  52. package/dist/cjs/TestAnnotation.js +3 -1
  53. package/dist/cjs/TestAnnotation.js.map +1 -1
  54. package/dist/cjs/TestClock.js.map +1 -1
  55. package/dist/cjs/UpstreamPullRequest.js.map +1 -1
  56. package/dist/cjs/index.js +4 -2
  57. package/dist/cjs/index.js.map +1 -1
  58. package/dist/cjs/internal/cache.js.map +1 -1
  59. package/dist/cjs/internal/cause.js +4 -103
  60. package/dist/cjs/internal/cause.js.map +1 -1
  61. package/dist/cjs/internal/channel/continuation.js.map +1 -1
  62. package/dist/cjs/internal/configProvider.js +13 -1
  63. package/dist/cjs/internal/configProvider.js.map +1 -1
  64. package/dist/cjs/internal/core-effect.js +7 -7
  65. package/dist/cjs/internal/core-effect.js.map +1 -1
  66. package/dist/cjs/internal/core-stream.js.map +1 -1
  67. package/dist/cjs/internal/core.js +159 -11
  68. package/dist/cjs/internal/core.js.map +1 -1
  69. package/dist/cjs/internal/data.js +4 -22
  70. package/dist/cjs/internal/data.js.map +1 -1
  71. package/dist/cjs/internal/dataSource.js +1 -1
  72. package/dist/cjs/internal/dataSource.js.map +1 -1
  73. package/dist/cjs/internal/deferred.js.map +1 -1
  74. package/dist/cjs/internal/differ/orPatch.js.map +1 -1
  75. package/dist/cjs/internal/effect/circular.js.map +1 -1
  76. package/dist/cjs/internal/effectable.js +21 -3
  77. package/dist/cjs/internal/effectable.js.map +1 -1
  78. package/dist/cjs/internal/fiberMessage.js.map +1 -1
  79. package/dist/cjs/internal/fiberRuntime.js +9 -10
  80. package/dist/cjs/internal/fiberRuntime.js.map +1 -1
  81. package/dist/cjs/internal/hashMap.js +1 -1
  82. package/dist/cjs/internal/hashMap.js.map +1 -1
  83. package/dist/cjs/internal/hashSet.js +2 -2
  84. package/dist/cjs/internal/hashSet.js.map +1 -1
  85. package/dist/cjs/internal/keyedPool.js.map +1 -1
  86. package/dist/cjs/internal/layer.js.map +1 -1
  87. package/dist/cjs/internal/metric/polling.js +7 -7
  88. package/dist/cjs/internal/metric/polling.js.map +1 -1
  89. package/dist/cjs/internal/metric.js +4 -0
  90. package/dist/cjs/internal/metric.js.map +1 -1
  91. package/dist/cjs/internal/pool.js.map +1 -1
  92. package/dist/cjs/internal/pubsub.js +24 -23
  93. package/dist/cjs/internal/pubsub.js.map +1 -1
  94. package/dist/cjs/internal/queue.js +10 -1
  95. package/dist/cjs/internal/queue.js.map +1 -1
  96. package/dist/cjs/internal/redBlackTree.js +5 -1
  97. package/dist/cjs/internal/redBlackTree.js.map +1 -1
  98. package/dist/cjs/internal/reloadable.js.map +1 -1
  99. package/dist/cjs/internal/request.js +29 -15
  100. package/dist/cjs/internal/request.js.map +1 -1
  101. package/dist/cjs/internal/resource.js +2 -2
  102. package/dist/cjs/internal/resource.js.map +1 -1
  103. package/dist/cjs/internal/runtime.js +2 -3
  104. package/dist/cjs/internal/runtime.js.map +1 -1
  105. package/dist/cjs/internal/schedule.js +6 -7
  106. package/dist/cjs/internal/schedule.js.map +1 -1
  107. package/dist/cjs/internal/scopedCache.js.map +1 -1
  108. package/dist/cjs/internal/scopedRef.js.map +1 -1
  109. package/dist/cjs/internal/sink.js +1 -1
  110. package/dist/cjs/internal/sink.js.map +1 -1
  111. package/dist/cjs/internal/stm/core.js +2 -2
  112. package/dist/cjs/internal/stm/core.js.map +1 -1
  113. package/dist/cjs/internal/stm/tArray.js.map +1 -1
  114. package/dist/cjs/internal/stm/tDeferred.js.map +1 -1
  115. package/dist/cjs/internal/stm/tMap.js.map +1 -1
  116. package/dist/cjs/internal/stm/tPriorityQueue.js.map +1 -1
  117. package/dist/cjs/internal/stm/tPubSub.js +17 -14
  118. package/dist/cjs/internal/stm/tPubSub.js.map +1 -1
  119. package/dist/cjs/internal/stm/tQueue.js +6 -7
  120. package/dist/cjs/internal/stm/tQueue.js.map +1 -1
  121. package/dist/cjs/internal/stm/tSemaphore.js +2 -2
  122. package/dist/cjs/internal/stm/tSemaphore.js.map +1 -1
  123. package/dist/cjs/internal/stm/tSet.js.map +1 -1
  124. package/dist/cjs/internal/stream.js +4 -4
  125. package/dist/cjs/internal/stream.js.map +1 -1
  126. package/dist/cjs/internal/subscriptionRef.js.map +1 -1
  127. package/dist/cjs/internal/take.js +1 -1
  128. package/dist/cjs/internal/take.js.map +1 -1
  129. package/dist/cjs/internal/version.js +1 -1
  130. package/dist/dts/Brand.d.ts +4 -4
  131. package/dist/dts/Brand.d.ts.map +1 -1
  132. package/dist/dts/Cache.d.ts +15 -14
  133. package/dist/dts/Cache.d.ts.map +1 -1
  134. package/dist/dts/Cause.d.ts +92 -25
  135. package/dist/dts/Cause.d.ts.map +1 -1
  136. package/dist/dts/Channel.d.ts +4 -4
  137. package/dist/dts/Channel.d.ts.map +1 -1
  138. package/dist/dts/ChildExecutorDecision.d.ts.map +1 -1
  139. package/dist/dts/Chunk.d.ts +26 -24
  140. package/dist/dts/Chunk.d.ts.map +1 -1
  141. package/dist/dts/Clock.d.ts +4 -4
  142. package/dist/dts/Clock.d.ts.map +1 -1
  143. package/dist/dts/Config.d.ts +4 -4
  144. package/dist/dts/Config.d.ts.map +1 -1
  145. package/dist/dts/ConfigError.d.ts +7 -7
  146. package/dist/dts/ConfigError.d.ts.map +1 -1
  147. package/dist/dts/ConfigProvider.d.ts +3 -3
  148. package/dist/dts/ConfigProvider.d.ts.map +1 -1
  149. package/dist/dts/ConfigProviderPathPatch.d.ts +1 -1
  150. package/dist/dts/ConfigProviderPathPatch.d.ts.map +1 -1
  151. package/dist/dts/Console.d.ts +36 -36
  152. package/dist/dts/Console.d.ts.map +1 -1
  153. package/dist/dts/Context.d.ts +4 -4
  154. package/dist/dts/Context.d.ts.map +1 -1
  155. package/dist/dts/Data.d.ts +3 -17
  156. package/dist/dts/Data.d.ts.map +1 -1
  157. package/dist/dts/Deferred.d.ts +4 -4
  158. package/dist/dts/Deferred.d.ts.map +1 -1
  159. package/dist/dts/Differ.d.ts +9 -9
  160. package/dist/dts/Differ.d.ts.map +1 -1
  161. package/dist/dts/Duration.d.ts +1 -1
  162. package/dist/dts/Duration.d.ts.map +1 -1
  163. package/dist/dts/Effect.d.ts +34 -20
  164. package/dist/dts/Effect.d.ts.map +1 -1
  165. package/dist/dts/Either.d.ts +15 -3
  166. package/dist/dts/Either.d.ts.map +1 -1
  167. package/dist/dts/Equal.d.ts +1 -1
  168. package/dist/dts/Equal.d.ts.map +1 -1
  169. package/dist/dts/Equivalence.d.ts +1 -1
  170. package/dist/dts/Equivalence.d.ts.map +1 -1
  171. package/dist/dts/Exit.d.ts +5 -3
  172. package/dist/dts/Exit.d.ts.map +1 -1
  173. package/dist/dts/Fiber.d.ts +12 -12
  174. package/dist/dts/Fiber.d.ts.map +1 -1
  175. package/dist/dts/FiberRef.d.ts +3 -3
  176. package/dist/dts/FiberRef.d.ts.map +1 -1
  177. package/dist/dts/GroupBy.d.ts +2 -2
  178. package/dist/dts/GroupBy.d.ts.map +1 -1
  179. package/dist/dts/Hash.d.ts +1 -1
  180. package/dist/dts/Hash.d.ts.map +1 -1
  181. package/dist/dts/HashMap.d.ts +6 -4
  182. package/dist/dts/HashMap.d.ts.map +1 -1
  183. package/dist/dts/HashSet.d.ts +9 -9
  184. package/dist/dts/HashSet.d.ts.map +1 -1
  185. package/dist/dts/Inspectable.d.ts +3 -3
  186. package/dist/dts/Inspectable.d.ts.map +1 -1
  187. package/dist/dts/KeyedPool.d.ts +5 -5
  188. package/dist/dts/KeyedPool.d.ts.map +1 -1
  189. package/dist/dts/Layer.d.ts +2 -2
  190. package/dist/dts/Layer.d.ts.map +1 -1
  191. package/dist/dts/List.d.ts +16 -16
  192. package/dist/dts/List.d.ts.map +1 -1
  193. package/dist/dts/Logger.d.ts +4 -4
  194. package/dist/dts/Logger.d.ts.map +1 -1
  195. package/dist/dts/Match.d.ts +11 -11
  196. package/dist/dts/Match.d.ts.map +1 -1
  197. package/dist/dts/MergeDecision.d.ts +2 -2
  198. package/dist/dts/MergeDecision.d.ts.map +1 -1
  199. package/dist/dts/MergeState.d.ts +5 -5
  200. package/dist/dts/MergeState.d.ts.map +1 -1
  201. package/dist/dts/Metric.d.ts +5 -5
  202. package/dist/dts/Metric.d.ts.map +1 -1
  203. package/dist/dts/MetricHook.d.ts +4 -4
  204. package/dist/dts/MetricHook.d.ts.map +1 -1
  205. package/dist/dts/MetricKey.d.ts +2 -2
  206. package/dist/dts/MetricKey.d.ts.map +1 -1
  207. package/dist/dts/MetricKeyType.d.ts +2 -2
  208. package/dist/dts/MetricKeyType.d.ts.map +1 -1
  209. package/dist/dts/MetricPair.d.ts +2 -2
  210. package/dist/dts/MetricPair.d.ts.map +1 -1
  211. package/dist/dts/MetricPolling.d.ts +16 -16
  212. package/dist/dts/MetricPolling.d.ts.map +1 -1
  213. package/dist/dts/MetricRegistry.d.ts +7 -7
  214. package/dist/dts/MetricRegistry.d.ts.map +1 -1
  215. package/dist/dts/MetricState.d.ts +4 -4
  216. package/dist/dts/MetricState.d.ts.map +1 -1
  217. package/dist/dts/MutableHashMap.d.ts +1 -1
  218. package/dist/dts/MutableHashMap.d.ts.map +1 -1
  219. package/dist/dts/MutableHashSet.d.ts +1 -1
  220. package/dist/dts/MutableHashSet.d.ts.map +1 -1
  221. package/dist/dts/MutableList.d.ts +1 -1
  222. package/dist/dts/MutableList.d.ts.map +1 -1
  223. package/dist/dts/MutableQueue.d.ts +1 -1
  224. package/dist/dts/MutableQueue.d.ts.map +1 -1
  225. package/dist/dts/MutableRef.d.ts +1 -1
  226. package/dist/dts/MutableRef.d.ts.map +1 -1
  227. package/dist/dts/NonEmptyIterable.d.ts +2 -2
  228. package/dist/dts/NonEmptyIterable.d.ts.map +1 -1
  229. package/dist/dts/Option.d.ts +13 -11
  230. package/dist/dts/Option.d.ts.map +1 -1
  231. package/dist/dts/Order.d.ts +1 -1
  232. package/dist/dts/Order.d.ts.map +1 -1
  233. package/dist/dts/Pipeable.d.ts +21 -23
  234. package/dist/dts/Pipeable.d.ts.map +1 -1
  235. package/dist/dts/Pool.d.ts +4 -4
  236. package/dist/dts/Pool.d.ts.map +1 -1
  237. package/dist/dts/Predicate.d.ts +17 -2
  238. package/dist/dts/Predicate.d.ts.map +1 -1
  239. package/dist/dts/PrimaryKey.d.ts +16 -0
  240. package/dist/dts/PrimaryKey.d.ts.map +1 -0
  241. package/dist/dts/PubSub.d.ts +3 -3
  242. package/dist/dts/PubSub.d.ts.map +1 -1
  243. package/dist/dts/Queue.d.ts +46 -27
  244. package/dist/dts/Queue.d.ts.map +1 -1
  245. package/dist/dts/Random.d.ts +3 -3
  246. package/dist/dts/Random.d.ts.map +1 -1
  247. package/dist/dts/ReadonlyArray.d.ts +36 -36
  248. package/dist/dts/ReadonlyArray.d.ts.map +1 -1
  249. package/dist/dts/ReadonlyRecord.d.ts +13 -11
  250. package/dist/dts/ReadonlyRecord.d.ts.map +1 -1
  251. package/dist/dts/RedBlackTree.d.ts +5 -2
  252. package/dist/dts/RedBlackTree.d.ts.map +1 -1
  253. package/dist/dts/Ref.d.ts +3 -3
  254. package/dist/dts/Ref.d.ts.map +1 -1
  255. package/dist/dts/Reloadable.d.ts +3 -3
  256. package/dist/dts/Reloadable.d.ts.map +1 -1
  257. package/dist/dts/Request.d.ts +49 -8
  258. package/dist/dts/Request.d.ts.map +1 -1
  259. package/dist/dts/RequestBlock.d.ts +8 -8
  260. package/dist/dts/RequestBlock.d.ts.map +1 -1
  261. package/dist/dts/RequestResolver.d.ts +5 -5
  262. package/dist/dts/RequestResolver.d.ts.map +1 -1
  263. package/dist/dts/Resource.d.ts +4 -4
  264. package/dist/dts/Resource.d.ts.map +1 -1
  265. package/dist/dts/Runtime.d.ts +3 -3
  266. package/dist/dts/Runtime.d.ts.map +1 -1
  267. package/dist/dts/STM.d.ts +9 -9
  268. package/dist/dts/STM.d.ts.map +1 -1
  269. package/dist/dts/Schedule.d.ts +6 -6
  270. package/dist/dts/Schedule.d.ts.map +1 -1
  271. package/dist/dts/Scheduler.d.ts +3 -3
  272. package/dist/dts/Scheduler.d.ts.map +1 -1
  273. package/dist/dts/ScopedCache.d.ts +9 -9
  274. package/dist/dts/ScopedCache.d.ts.map +1 -1
  275. package/dist/dts/ScopedRef.d.ts +3 -3
  276. package/dist/dts/ScopedRef.d.ts.map +1 -1
  277. package/dist/dts/SingleProducerAsyncInput.d.ts +7 -7
  278. package/dist/dts/SingleProducerAsyncInput.d.ts.map +1 -1
  279. package/dist/dts/Sink.d.ts +7 -4
  280. package/dist/dts/Sink.d.ts.map +1 -1
  281. package/dist/dts/SortedMap.d.ts +5 -2
  282. package/dist/dts/SortedMap.d.ts.map +1 -1
  283. package/dist/dts/SortedSet.d.ts +6 -12
  284. package/dist/dts/SortedSet.d.ts.map +1 -1
  285. package/dist/dts/Stream.d.ts +27 -19
  286. package/dist/dts/Stream.d.ts.map +1 -1
  287. package/dist/dts/StreamEmit.d.ts +12 -12
  288. package/dist/dts/StreamEmit.d.ts.map +1 -1
  289. package/dist/dts/SubscriptionRef.d.ts +3 -3
  290. package/dist/dts/SubscriptionRef.d.ts.map +1 -1
  291. package/dist/dts/Supervisor.d.ts +9 -9
  292. package/dist/dts/Supervisor.d.ts.map +1 -1
  293. package/dist/dts/SynchronizedRef.d.ts +4 -4
  294. package/dist/dts/SynchronizedRef.d.ts.map +1 -1
  295. package/dist/dts/TArray.d.ts +3 -3
  296. package/dist/dts/TArray.d.ts.map +1 -1
  297. package/dist/dts/TDeferred.d.ts +4 -4
  298. package/dist/dts/TDeferred.d.ts.map +1 -1
  299. package/dist/dts/TMap.d.ts +4 -4
  300. package/dist/dts/TMap.d.ts.map +1 -1
  301. package/dist/dts/TPriorityQueue.d.ts +3 -3
  302. package/dist/dts/TPriorityQueue.d.ts.map +1 -1
  303. package/dist/dts/TPubSub.d.ts +4 -1
  304. package/dist/dts/TPubSub.d.ts.map +1 -1
  305. package/dist/dts/TQueue.d.ts +9 -9
  306. package/dist/dts/TQueue.d.ts.map +1 -1
  307. package/dist/dts/TRandom.d.ts +3 -3
  308. package/dist/dts/TRandom.d.ts.map +1 -1
  309. package/dist/dts/TRef.d.ts +3 -3
  310. package/dist/dts/TRef.d.ts.map +1 -1
  311. package/dist/dts/TSet.d.ts +3 -3
  312. package/dist/dts/TSet.d.ts.map +1 -1
  313. package/dist/dts/Take.d.ts +2 -2
  314. package/dist/dts/Take.d.ts.map +1 -1
  315. package/dist/dts/TestAnnotation.d.ts +5 -3
  316. package/dist/dts/TestAnnotation.d.ts.map +1 -1
  317. package/dist/dts/TestAnnotations.d.ts +2 -2
  318. package/dist/dts/TestAnnotations.d.ts.map +1 -1
  319. package/dist/dts/TestClock.d.ts +3 -3
  320. package/dist/dts/TestClock.d.ts.map +1 -1
  321. package/dist/dts/TestLive.d.ts +1 -1
  322. package/dist/dts/TestLive.d.ts.map +1 -1
  323. package/dist/dts/TestSized.d.ts +1 -1
  324. package/dist/dts/TestSized.d.ts.map +1 -1
  325. package/dist/dts/Tracer.d.ts +5 -5
  326. package/dist/dts/Tracer.d.ts.map +1 -1
  327. package/dist/dts/Types.d.ts +7 -0
  328. package/dist/dts/Types.d.ts.map +1 -1
  329. package/dist/dts/UpstreamPullRequest.d.ts +2 -2
  330. package/dist/dts/UpstreamPullRequest.d.ts.map +1 -1
  331. package/dist/dts/UpstreamPullStrategy.d.ts +3 -3
  332. package/dist/dts/UpstreamPullStrategy.d.ts.map +1 -1
  333. package/dist/dts/Utils.d.ts +1 -1
  334. package/dist/dts/Utils.d.ts.map +1 -1
  335. package/dist/dts/index.d.ts +4 -0
  336. package/dist/dts/index.d.ts.map +1 -1
  337. package/dist/dts/internal/core-stream.d.ts.map +1 -1
  338. package/dist/dts/internal/fiberScope.d.ts +1 -1
  339. package/dist/dts/internal/fiberScope.d.ts.map +1 -1
  340. package/dist/dts/internal/stream/handoffSignal.d.ts +1 -1
  341. package/dist/dts/internal/stream/handoffSignal.d.ts.map +1 -1
  342. package/dist/dts/internal/version.d.ts +1 -1
  343. package/dist/esm/Cache.js.map +1 -1
  344. package/dist/esm/Cause.js +52 -17
  345. package/dist/esm/Cause.js.map +1 -1
  346. package/dist/esm/ChildExecutorDecision.js.map +1 -1
  347. package/dist/esm/Chunk.js +5 -5
  348. package/dist/esm/Chunk.js.map +1 -1
  349. package/dist/esm/Data.js +10 -19
  350. package/dist/esm/Data.js.map +1 -1
  351. package/dist/esm/Duration.js +4 -0
  352. package/dist/esm/Duration.js.map +1 -1
  353. package/dist/esm/Effect.js +7 -0
  354. package/dist/esm/Effect.js.map +1 -1
  355. package/dist/esm/Either.js +8 -1
  356. package/dist/esm/Either.js.map +1 -1
  357. package/dist/esm/Exit.js.map +1 -1
  358. package/dist/esm/Fiber.js.map +1 -1
  359. package/dist/esm/HashMap.js.map +1 -1
  360. package/dist/esm/KeyedPool.js.map +1 -1
  361. package/dist/esm/List.js.map +1 -1
  362. package/dist/esm/MergeState.js.map +1 -1
  363. package/dist/esm/MetricPolling.js +1 -1
  364. package/dist/esm/MetricPolling.js.map +1 -1
  365. package/dist/esm/MetricState.js.map +1 -1
  366. package/dist/esm/NonEmptyIterable.js.map +1 -1
  367. package/dist/esm/Option.js +2 -2
  368. package/dist/esm/Option.js.map +1 -1
  369. package/dist/esm/Pipeable.js.map +1 -1
  370. package/dist/esm/Predicate.js +15 -0
  371. package/dist/esm/Predicate.js.map +1 -1
  372. package/dist/esm/PrimaryKey.js +9 -0
  373. package/dist/esm/PrimaryKey.js.map +1 -0
  374. package/dist/esm/Queue.js +5 -0
  375. package/dist/esm/Queue.js.map +1 -1
  376. package/dist/esm/ReadonlyArray.js +2 -0
  377. package/dist/esm/ReadonlyArray.js.map +1 -1
  378. package/dist/esm/ReadonlyRecord.js +2 -2
  379. package/dist/esm/ReadonlyRecord.js.map +1 -1
  380. package/dist/esm/RedBlackTree.js.map +1 -1
  381. package/dist/esm/Request.js +34 -0
  382. package/dist/esm/Request.js.map +1 -1
  383. package/dist/esm/STM.js +1 -1
  384. package/dist/esm/STM.js.map +1 -1
  385. package/dist/esm/Sink.js.map +1 -1
  386. package/dist/esm/SortedMap.js +4 -1
  387. package/dist/esm/SortedMap.js.map +1 -1
  388. package/dist/esm/SortedSet.js +2 -2
  389. package/dist/esm/SortedSet.js.map +1 -1
  390. package/dist/esm/Stream.js.map +1 -1
  391. package/dist/esm/SubscriptionRef.js.map +1 -1
  392. package/dist/esm/TPubSub.js.map +1 -1
  393. package/dist/esm/TestAnnotation.js +3 -1
  394. package/dist/esm/TestAnnotation.js.map +1 -1
  395. package/dist/esm/TestClock.js.map +1 -1
  396. package/dist/esm/UpstreamPullRequest.js.map +1 -1
  397. package/dist/esm/index.js +4 -0
  398. package/dist/esm/index.js.map +1 -1
  399. package/dist/esm/internal/cache.js.map +1 -1
  400. package/dist/esm/internal/cause.js +3 -96
  401. package/dist/esm/internal/cause.js.map +1 -1
  402. package/dist/esm/internal/channel/continuation.js.map +1 -1
  403. package/dist/esm/internal/configProvider.js +13 -1
  404. package/dist/esm/internal/configProvider.js.map +1 -1
  405. package/dist/esm/internal/core-effect.js +7 -7
  406. package/dist/esm/internal/core-effect.js.map +1 -1
  407. package/dist/esm/internal/core-stream.js.map +1 -1
  408. package/dist/esm/internal/core.js +151 -10
  409. package/dist/esm/internal/core.js.map +1 -1
  410. package/dist/esm/internal/data.js +3 -21
  411. package/dist/esm/internal/data.js.map +1 -1
  412. package/dist/esm/internal/dataSource.js +1 -1
  413. package/dist/esm/internal/dataSource.js.map +1 -1
  414. package/dist/esm/internal/deferred.js.map +1 -1
  415. package/dist/esm/internal/differ/orPatch.js.map +1 -1
  416. package/dist/esm/internal/effect/circular.js.map +1 -1
  417. package/dist/esm/internal/effectable.js +20 -2
  418. package/dist/esm/internal/effectable.js.map +1 -1
  419. package/dist/esm/internal/fiberMessage.js.map +1 -1
  420. package/dist/esm/internal/fiberRuntime.js +9 -10
  421. package/dist/esm/internal/fiberRuntime.js.map +1 -1
  422. package/dist/esm/internal/hashMap.js +1 -1
  423. package/dist/esm/internal/hashMap.js.map +1 -1
  424. package/dist/esm/internal/hashSet.js +2 -2
  425. package/dist/esm/internal/hashSet.js.map +1 -1
  426. package/dist/esm/internal/keyedPool.js.map +1 -1
  427. package/dist/esm/internal/layer.js.map +1 -1
  428. package/dist/esm/internal/metric/polling.js +6 -6
  429. package/dist/esm/internal/metric/polling.js.map +1 -1
  430. package/dist/esm/internal/metric.js +4 -0
  431. package/dist/esm/internal/metric.js.map +1 -1
  432. package/dist/esm/internal/pool.js.map +1 -1
  433. package/dist/esm/internal/pubsub.js +24 -23
  434. package/dist/esm/internal/pubsub.js.map +1 -1
  435. package/dist/esm/internal/queue.js +9 -0
  436. package/dist/esm/internal/queue.js.map +1 -1
  437. package/dist/esm/internal/redBlackTree.js +5 -1
  438. package/dist/esm/internal/redBlackTree.js.map +1 -1
  439. package/dist/esm/internal/reloadable.js.map +1 -1
  440. package/dist/esm/internal/request.js +27 -14
  441. package/dist/esm/internal/request.js.map +1 -1
  442. package/dist/esm/internal/resource.js +2 -2
  443. package/dist/esm/internal/resource.js.map +1 -1
  444. package/dist/esm/internal/runtime.js +1 -2
  445. package/dist/esm/internal/runtime.js.map +1 -1
  446. package/dist/esm/internal/schedule.js +6 -7
  447. package/dist/esm/internal/schedule.js.map +1 -1
  448. package/dist/esm/internal/scopedCache.js.map +1 -1
  449. package/dist/esm/internal/scopedRef.js.map +1 -1
  450. package/dist/esm/internal/sink.js +1 -1
  451. package/dist/esm/internal/sink.js.map +1 -1
  452. package/dist/esm/internal/stm/core.js +2 -2
  453. package/dist/esm/internal/stm/core.js.map +1 -1
  454. package/dist/esm/internal/stm/tArray.js.map +1 -1
  455. package/dist/esm/internal/stm/tDeferred.js.map +1 -1
  456. package/dist/esm/internal/stm/tMap.js.map +1 -1
  457. package/dist/esm/internal/stm/tPriorityQueue.js.map +1 -1
  458. package/dist/esm/internal/stm/tPubSub.js +17 -14
  459. package/dist/esm/internal/stm/tPubSub.js.map +1 -1
  460. package/dist/esm/internal/stm/tQueue.js +6 -7
  461. package/dist/esm/internal/stm/tQueue.js.map +1 -1
  462. package/dist/esm/internal/stm/tSemaphore.js +2 -2
  463. package/dist/esm/internal/stm/tSemaphore.js.map +1 -1
  464. package/dist/esm/internal/stm/tSet.js.map +1 -1
  465. package/dist/esm/internal/stream.js +4 -4
  466. package/dist/esm/internal/stream.js.map +1 -1
  467. package/dist/esm/internal/subscriptionRef.js.map +1 -1
  468. package/dist/esm/internal/take.js +1 -1
  469. package/dist/esm/internal/take.js.map +1 -1
  470. package/dist/esm/internal/version.js +1 -1
  471. package/dist/esm/package.json +1 -1
  472. package/package.json +10 -2
  473. package/src/Brand.ts +4 -4
  474. package/src/Cache.ts +15 -17
  475. package/src/Cause.ts +124 -40
  476. package/src/Channel.ts +4 -4
  477. package/src/ChildExecutorDecision.ts +10 -2
  478. package/src/Chunk.ts +44 -36
  479. package/src/Clock.ts +4 -4
  480. package/src/Config.ts +4 -4
  481. package/src/ConfigError.ts +8 -8
  482. package/src/ConfigProvider.ts +5 -5
  483. package/src/ConfigProviderPathPatch.ts +1 -1
  484. package/src/Console.ts +36 -36
  485. package/src/Context.ts +4 -4
  486. package/src/Data.ts +13 -44
  487. package/src/Deferred.ts +4 -4
  488. package/src/Differ.ts +9 -9
  489. package/src/Duration.ts +5 -0
  490. package/src/Effect.ts +88 -26
  491. package/src/Either.ts +28 -5
  492. package/src/Equal.ts +1 -1
  493. package/src/Equivalence.ts +1 -1
  494. package/src/Exit.ts +21 -7
  495. package/src/Fiber.ts +20 -14
  496. package/src/FiberRef.ts +7 -7
  497. package/src/GroupBy.ts +2 -2
  498. package/src/Hash.ts +1 -1
  499. package/src/HashMap.ts +6 -4
  500. package/src/HashSet.ts +11 -11
  501. package/src/Inspectable.ts +3 -3
  502. package/src/KeyedPool.ts +13 -7
  503. package/src/Layer.ts +2 -2
  504. package/src/List.ts +24 -22
  505. package/src/Logger.ts +4 -4
  506. package/src/Match.ts +11 -11
  507. package/src/MergeDecision.ts +2 -2
  508. package/src/MergeState.ts +11 -5
  509. package/src/Metric.ts +5 -5
  510. package/src/MetricHook.ts +4 -4
  511. package/src/MetricKey.ts +2 -2
  512. package/src/MetricKeyType.ts +2 -2
  513. package/src/MetricPair.ts +2 -2
  514. package/src/MetricPolling.ts +22 -22
  515. package/src/MetricRegistry.ts +9 -9
  516. package/src/MetricState.ts +6 -4
  517. package/src/MutableHashMap.ts +1 -1
  518. package/src/MutableHashSet.ts +1 -1
  519. package/src/MutableList.ts +1 -1
  520. package/src/MutableQueue.ts +1 -1
  521. package/src/MutableRef.ts +1 -1
  522. package/src/NonEmptyIterable.ts +2 -2
  523. package/src/Option.ts +18 -15
  524. package/src/Order.ts +1 -1
  525. package/src/Pipeable.ts +275 -277
  526. package/src/Pool.ts +4 -4
  527. package/src/Predicate.ts +21 -2
  528. package/src/PrimaryKey.ts +17 -0
  529. package/src/PubSub.ts +3 -3
  530. package/src/Queue.ts +52 -30
  531. package/src/Random.ts +3 -3
  532. package/src/ReadonlyArray.ts +51 -66
  533. package/src/ReadonlyRecord.ts +37 -35
  534. package/src/RedBlackTree.ts +5 -2
  535. package/src/Ref.ts +3 -3
  536. package/src/Reloadable.ts +3 -3
  537. package/src/Request.ts +53 -8
  538. package/src/RequestBlock.ts +9 -9
  539. package/src/RequestResolver.ts +5 -5
  540. package/src/Resource.ts +4 -4
  541. package/src/Runtime.ts +3 -3
  542. package/src/STM.ts +23 -12
  543. package/src/Schedule.ts +7 -7
  544. package/src/Scheduler.ts +3 -3
  545. package/src/Scope.ts +3 -3
  546. package/src/ScopedCache.ts +9 -9
  547. package/src/ScopedRef.ts +3 -3
  548. package/src/SingleProducerAsyncInput.ts +7 -7
  549. package/src/Sink.ts +23 -9
  550. package/src/SortedMap.ts +9 -3
  551. package/src/SortedSet.ts +26 -41
  552. package/src/Stream.ts +70 -29
  553. package/src/StreamEmit.ts +12 -12
  554. package/src/SubscriptionRef.ts +5 -3
  555. package/src/Supervisor.ts +10 -10
  556. package/src/SynchronizedRef.ts +4 -4
  557. package/src/TArray.ts +4 -4
  558. package/src/TDeferred.ts +5 -5
  559. package/src/TMap.ts +5 -5
  560. package/src/TPriorityQueue.ts +4 -4
  561. package/src/TPubSub.ts +6 -3
  562. package/src/TQueue.ts +9 -9
  563. package/src/TRandom.ts +3 -3
  564. package/src/TRef.ts +4 -4
  565. package/src/TSet.ts +4 -4
  566. package/src/Take.ts +2 -2
  567. package/src/TestAnnotation.ts +8 -4
  568. package/src/TestAnnotations.ts +2 -2
  569. package/src/TestClock.ts +3 -5
  570. package/src/TestLive.ts +1 -1
  571. package/src/TestSized.ts +1 -1
  572. package/src/Tracer.ts +6 -6
  573. package/src/Types.ts +8 -0
  574. package/src/UpstreamPullRequest.ts +10 -4
  575. package/src/UpstreamPullStrategy.ts +3 -3
  576. package/src/Utils.ts +1 -1
  577. package/src/index.ts +5 -0
  578. package/src/internal/blockedRequests.ts +6 -6
  579. package/src/internal/cache.ts +12 -12
  580. package/src/internal/cause.ts +14 -138
  581. package/src/internal/channel/channelExecutor.ts +1 -1
  582. package/src/internal/channel/channelState.ts +5 -5
  583. package/src/internal/channel/continuation.ts +52 -32
  584. package/src/internal/channel/mergeDecision.ts +1 -1
  585. package/src/internal/channel/singleProducerAsyncInput.ts +1 -1
  586. package/src/internal/channel/subexecutor.ts +7 -7
  587. package/src/internal/config.ts +6 -6
  588. package/src/internal/configProvider.ts +14 -1
  589. package/src/internal/core-effect.ts +49 -38
  590. package/src/internal/core-stream.ts +18 -21
  591. package/src/internal/core.ts +286 -38
  592. package/src/internal/data.ts +3 -22
  593. package/src/internal/dataSource.ts +1 -1
  594. package/src/internal/deferred.ts +5 -5
  595. package/src/internal/differ/contextPatch.ts +5 -5
  596. package/src/internal/differ/orPatch.ts +18 -6
  597. package/src/internal/effect/circular.ts +3 -3
  598. package/src/internal/effectable.ts +23 -4
  599. package/src/internal/fiberMessage.ts +1 -4
  600. package/src/internal/fiberRuntime.ts +14 -15
  601. package/src/internal/fiberScope.ts +1 -1
  602. package/src/internal/groupBy.ts +1 -1
  603. package/src/internal/hashMap/node.ts +5 -5
  604. package/src/internal/hashMap.ts +23 -22
  605. package/src/internal/hashSet.ts +18 -20
  606. package/src/internal/keyedPool.ts +4 -4
  607. package/src/internal/layer.ts +6 -12
  608. package/src/internal/metric/key.ts +1 -1
  609. package/src/internal/metric/polling.ts +26 -26
  610. package/src/internal/metric.ts +4 -0
  611. package/src/internal/pool.ts +2 -2
  612. package/src/internal/pubsub.ts +64 -61
  613. package/src/internal/queue.ts +20 -6
  614. package/src/internal/redBlackTree/iterator.ts +1 -1
  615. package/src/internal/redBlackTree/node.ts +1 -1
  616. package/src/internal/redBlackTree.ts +7 -2
  617. package/src/internal/ref.ts +1 -1
  618. package/src/internal/reloadable.ts +1 -1
  619. package/src/internal/request.ts +39 -13
  620. package/src/internal/resource.ts +4 -4
  621. package/src/internal/ringBuffer.ts +1 -1
  622. package/src/internal/runtime.ts +2 -3
  623. package/src/internal/schedule.ts +6 -7
  624. package/src/internal/scopedCache.ts +7 -5
  625. package/src/internal/scopedRef.ts +1 -1
  626. package/src/internal/sink.ts +6 -3
  627. package/src/internal/stack.ts +1 -1
  628. package/src/internal/stm/core.ts +3 -3
  629. package/src/internal/stm/stm/stmState.ts +1 -1
  630. package/src/internal/stm/stm/tExit.ts +3 -3
  631. package/src/internal/stm/stm/tryCommit.ts +1 -1
  632. package/src/internal/stm/stm/versioned.ts +1 -1
  633. package/src/internal/stm/stm.ts +2 -2
  634. package/src/internal/stm/tArray.ts +2 -2
  635. package/src/internal/stm/tDeferred.ts +3 -3
  636. package/src/internal/stm/tMap.ts +3 -3
  637. package/src/internal/stm/tPriorityQueue.ts +2 -2
  638. package/src/internal/stm/tPubSub.ts +43 -38
  639. package/src/internal/stm/tQueue.ts +7 -8
  640. package/src/internal/stm/tReentrantLock.ts +2 -2
  641. package/src/internal/stm/tRef.ts +1 -1
  642. package/src/internal/stm/tSemaphore.ts +2 -2
  643. package/src/internal/stm/tSet.ts +2 -2
  644. package/src/internal/stream/debounceState.ts +2 -2
  645. package/src/internal/stream/handoff.ts +3 -3
  646. package/src/internal/stream/handoffSignal.ts +2 -2
  647. package/src/internal/stream/pull.ts +1 -1
  648. package/src/internal/stream.ts +66 -33
  649. package/src/internal/subscriptionRef.ts +2 -2
  650. package/src/internal/supervisor.ts +3 -3
  651. package/src/internal/take.ts +2 -2
  652. package/src/internal/version.ts +1 -1
@@ -26,7 +26,7 @@ import type * as MetricLabel from "../MetricLabel.js"
26
26
  import * as MutableRef from "../MutableRef.js"
27
27
  import * as Option from "../Option.js"
28
28
  import { pipeArguments } from "../Pipeable.js"
29
- import { hasProperty, isObject, type Predicate, type Refinement } from "../Predicate.js"
29
+ import { hasProperty, isObject, isPromise, isString, type Predicate, type Refinement } from "../Predicate.js"
30
30
  import * as ReadonlyArray from "../ReadonlyArray.js"
31
31
  import type * as Request from "../Request.js"
32
32
  import type * as BlockedRequests from "../RequestBlock.js"
@@ -35,11 +35,12 @@ import type * as RuntimeFlags from "../RuntimeFlags.js"
35
35
  import * as RuntimeFlagsPatch from "../RuntimeFlagsPatch.js"
36
36
  import type * as Scope from "../Scope.js"
37
37
  import type * as Tracer from "../Tracer.js"
38
+ import type { NoInfer } from "../Types.js"
38
39
  import * as _blockedRequests from "./blockedRequests.js"
39
40
  import * as internalCause from "./cause.js"
40
41
  import * as deferred from "./deferred.js"
41
42
  import * as internalDiffer from "./differ.js"
42
- import { effectVariance } from "./effectable.js"
43
+ import { effectVariance, StructuralCommitPrototype } from "./effectable.js"
43
44
  import type * as FiberRuntime from "./fiberRuntime.js"
44
45
  import type * as fiberScope from "./fiberScope.js"
45
46
  import * as DeferredOpCodes from "./opCodes/deferred.js"
@@ -61,7 +62,7 @@ export const EffectErrorTypeId = Symbol.for(EffectErrorSymbolKey)
61
62
  export type EffectErrorTypeId = typeof EffectErrorTypeId
62
63
 
63
64
  /** @internal */
64
- export interface EffectError<E> {
65
+ export interface EffectError<out E> {
65
66
  readonly [EffectErrorTypeId]: EffectErrorTypeId
66
67
  readonly _tag: "EffectError"
67
68
  readonly cause: Cause.Cause<E>
@@ -262,13 +263,13 @@ export type Op<Tag extends string, Body = {}> = Effect.Effect<never, never, neve
262
263
  /** @internal */
263
264
  export interface Async extends
264
265
  Op<OpCodes.OP_ASYNC, {
265
- readonly i0: (resume: (effect: Primitive) => void) => void
266
+ i0(resume: (effect: Primitive) => void): void
266
267
  readonly i1: FiberId.FiberId
267
268
  }>
268
269
  {}
269
270
 
270
271
  /** @internal */
271
- export interface Blocked<R = any, E = any, A = any> extends
272
+ export interface Blocked<out R = any, out E = any, out A = any> extends
272
273
  Op<"Blocked", {
273
274
  readonly i0: BlockedRequests.RequestBlock<R>
274
275
  readonly i1: Effect.Effect<R, E, A>
@@ -276,7 +277,7 @@ export interface Blocked<R = any, E = any, A = any> extends
276
277
  {}
277
278
 
278
279
  /** @internal */
279
- export interface RunBlocked<R = any> extends
280
+ export interface RunBlocked<out R = any> extends
280
281
  Op<"RunBlocked", {
281
282
  readonly i0: BlockedRequests.RequestBlock<R>
282
283
  }>
@@ -295,7 +296,7 @@ export interface OpTag extends Op<OpCodes.OP_TAG, {}> {}
295
296
  /** @internal */
296
297
  export interface Commit extends
297
298
  Op<OpCodes.OP_COMMIT, {
298
- readonly commit: () => Effect.Effect<unknown, unknown, unknown>
299
+ commit(): Effect.Effect<unknown, unknown, unknown>
299
300
  }>
300
301
  {}
301
302
 
@@ -303,7 +304,7 @@ export interface Commit extends
303
304
  export interface OnFailure extends
304
305
  Op<OpCodes.OP_ON_FAILURE, {
305
306
  readonly i0: Primitive
306
- readonly i1: (a: Cause.Cause<unknown>) => Primitive
307
+ i1(a: Cause.Cause<unknown>): Primitive
307
308
  }>
308
309
  {}
309
310
 
@@ -311,7 +312,7 @@ export interface OnFailure extends
311
312
  export interface OnSuccess extends
312
313
  Op<OpCodes.OP_ON_SUCCESS, {
313
314
  readonly i0: Primitive
314
- readonly i1: (a: unknown) => Primitive
315
+ i1(a: unknown): Primitive
315
316
  }>
316
317
  {}
317
318
 
@@ -319,7 +320,7 @@ export interface OnSuccess extends
319
320
  export interface OnStep extends
320
321
  Op<"OnStep", {
321
322
  readonly i0: Primitive
322
- readonly i1: (result: Exit.Exit<any, any> | Blocked) => Primitive
323
+ i1(result: Exit.Exit<any, any> | Blocked): Primitive
323
324
  }>
324
325
  {}
325
326
 
@@ -327,8 +328,8 @@ export interface OnStep extends
327
328
  export interface OnSuccessAndFailure extends
328
329
  Op<OpCodes.OP_ON_SUCCESS_AND_FAILURE, {
329
330
  readonly i0: Primitive
330
- readonly i1: (a: Cause.Cause<unknown>) => Primitive
331
- readonly i2: (a: unknown) => Primitive
331
+ i1(a: Cause.Cause<unknown>): Primitive
332
+ i2(a: unknown): Primitive
332
333
  }>
333
334
  {}
334
335
 
@@ -342,7 +343,7 @@ export interface Success extends
342
343
  /** @internal */
343
344
  export interface Sync extends
344
345
  Op<OpCodes.OP_SYNC, {
345
- readonly i0: LazyArg<unknown>
346
+ i0(): unknown
346
347
  }>
347
348
  {}
348
349
 
@@ -357,16 +358,16 @@ export interface UpdateRuntimeFlags extends
357
358
  /** @internal */
358
359
  export interface While extends
359
360
  Op<OpCodes.OP_WHILE, {
360
- readonly i0: () => boolean
361
- readonly i1: () => Primitive
362
- readonly i2: (a: unknown) => void
361
+ i0(): boolean
362
+ i1(): Primitive
363
+ i2(a: unknown): void
363
364
  }>
364
365
  {}
365
366
 
366
367
  /** @internal */
367
368
  export interface WithRuntime extends
368
369
  Op<OpCodes.OP_WITH_RUNTIME, {
369
- readonly i0: (fiber: FiberRuntime.FiberRuntime<unknown, unknown>, status: FiberStatus.Running) => Primitive
370
+ i0(fiber: FiberRuntime.FiberRuntime<unknown, unknown>, status: FiberStatus.Running): Primitive
370
371
  }>
371
372
  {}
372
373
 
@@ -641,7 +642,7 @@ export const die = (defect: unknown): Effect.Effect<never, never, never> =>
641
642
 
642
643
  /* @internal */
643
644
  export const dieMessage = (message: string): Effect.Effect<never, never, never> =>
644
- failCauseSync(() => internalCause.die(internalCause.RuntimeException(message)))
645
+ failCauseSync(() => internalCause.die(new RuntimeException(message)))
645
646
 
646
647
  /* @internal */
647
648
  export const dieSync = (evaluate: LazyArg<unknown>): Effect.Effect<never, never, never> => flatMap(sync(evaluate), die)
@@ -707,6 +708,51 @@ export const flatMap = dual<
707
708
  return effect
708
709
  })
709
710
 
711
+ /* @internal */
712
+ export const andThen = dual<
713
+ {
714
+ <A, X>(
715
+ f: (a: NoInfer<A>) => X
716
+ ): <R, E>(
717
+ self: Effect.Effect<R, E, A>
718
+ ) => [X] extends [Effect.Effect<infer R1, infer E1, infer A1>] ? Effect.Effect<R | R1, E | E1, A1>
719
+ : [X] extends [Promise<infer A1>] ? Effect.Effect<R, E | Cause.UnknownException, A1>
720
+ : Effect.Effect<R, E, X>
721
+ <X>(
722
+ f: X
723
+ ): <R, E, A>(
724
+ self: Effect.Effect<R, E, A>
725
+ ) => [X] extends [Effect.Effect<infer R1, infer E1, infer A1>] ? Effect.Effect<R | R1, E | E1, A1>
726
+ : [X] extends [Promise<infer A1>] ? Effect.Effect<R, E | Cause.UnknownException, A1>
727
+ : Effect.Effect<R, E, X>
728
+ },
729
+ {
730
+ <A, R, E, X>(
731
+ self: Effect.Effect<R, E, A>,
732
+ f: (a: NoInfer<A>) => X
733
+ ): [X] extends [Effect.Effect<infer R1, infer E1, infer A1>] ? Effect.Effect<R | R1, E | E1, A1>
734
+ : [X] extends [Promise<infer A1>] ? Effect.Effect<R, E | Cause.UnknownException, A1>
735
+ : Effect.Effect<R, E, X>
736
+ <A, R, E, X>(
737
+ self: Effect.Effect<R, E, A>,
738
+ f: X
739
+ ): [X] extends [Effect.Effect<infer R1, infer E1, infer A1>] ? Effect.Effect<R | R1, E | E1, A1>
740
+ : [X] extends [Promise<infer A1>] ? Effect.Effect<R, E | Cause.UnknownException, A1>
741
+ : Effect.Effect<R, E, X>
742
+ }
743
+ >(2, (self, f) =>
744
+ flatMap(self, (a) => {
745
+ const b = typeof f === "function" ? (f as any)(a) : f
746
+ if (isEffect(b)) {
747
+ return b
748
+ } else if (isPromise(b)) {
749
+ return async<never, Cause.UnknownException, any>((resume) => {
750
+ b.then((a) => resume(succeed(a))).catch((e) => resume(fail(new UnknownException(e))))
751
+ })
752
+ }
753
+ return succeed(b)
754
+ }))
755
+
710
756
  /* @internal */
711
757
  export const step = <R, E, A>(
712
758
  self: Effect.Effect<R, E, A>
@@ -1062,7 +1108,7 @@ export const orDieWith = dual<
1062
1108
  export const partitionMap = <A, A1, A2>(
1063
1109
  elements: Iterable<A>,
1064
1110
  f: (a: A) => Either.Either<A1, A2>
1065
- ): [Array<A1>, Array<A2>] =>
1111
+ ): [left: Array<A1>, right: Array<A2>] =>
1066
1112
  ReadonlyArray.fromIterable(elements).reduceRight(
1067
1113
  ([lefts, rights], current) => {
1068
1114
  const either = f(current)
@@ -1105,14 +1151,48 @@ export const sync = <A>(evaluate: LazyArg<A>): Effect.Effect<never, never, A> =>
1105
1151
 
1106
1152
  /* @internal */
1107
1153
  export const tap = dual<
1108
- <A, X extends A, R2, E2, _>(
1109
- f: (a: X) => Effect.Effect<R2, E2, _>
1110
- ) => <R, E>(self: Effect.Effect<R, E, A>) => Effect.Effect<R | R2, E | E2, A>,
1111
- <R, E, A, X extends A, R2, E2, _>(
1112
- self: Effect.Effect<R, E, A>,
1113
- f: (a: X) => Effect.Effect<R2, E2, _>
1114
- ) => Effect.Effect<R | R2, E | E2, A>
1115
- >(2, (self, f) => flatMap(self, (a) => as(f(a as any), a)))
1154
+ {
1155
+ <A, X>(
1156
+ f: (a: NoInfer<A>) => X
1157
+ ): <R, E>(
1158
+ self: Effect.Effect<R, E, A>
1159
+ ) => [X] extends [Effect.Effect<infer R1, infer E1, infer _A1>] ? Effect.Effect<R | R1, E | E1, A>
1160
+ : [X] extends [Promise<infer _A1>] ? Effect.Effect<R, E | Cause.UnknownException, A>
1161
+ : Effect.Effect<R, E, A>
1162
+ <X>(
1163
+ f: X
1164
+ ): <R, E, A>(
1165
+ self: Effect.Effect<R, E, A>
1166
+ ) => [X] extends [Effect.Effect<infer R1, infer E1, infer _A1>] ? Effect.Effect<R | R1, E | E1, A>
1167
+ : [X] extends [Promise<infer _A1>] ? Effect.Effect<R, E | Cause.UnknownException, A>
1168
+ : Effect.Effect<R, E, A>
1169
+ },
1170
+ {
1171
+ <A, R, E, X>(
1172
+ self: Effect.Effect<R, E, A>,
1173
+ f: (a: NoInfer<A>) => X
1174
+ ): [X] extends [Effect.Effect<infer R1, infer E1, infer _A1>] ? Effect.Effect<R | R1, E | E1, A>
1175
+ : [X] extends [Promise<infer _A1>] ? Effect.Effect<R, E | Cause.UnknownException, A>
1176
+ : Effect.Effect<R, E, A>
1177
+ <A, R, E, X>(
1178
+ self: Effect.Effect<R, E, A>,
1179
+ f: X
1180
+ ): [X] extends [Effect.Effect<infer R1, infer E1, infer _A1>] ? Effect.Effect<R | R1, E | E1, A>
1181
+ : [X] extends [Promise<infer _A1>] ? Effect.Effect<R, E | Cause.UnknownException, A>
1182
+ : Effect.Effect<R, E, A>
1183
+ }
1184
+ >(2, (self, f) =>
1185
+ flatMap(self, (a) => {
1186
+ const b = typeof f === "function" ? (f as any)(a) : f
1187
+ if (isEffect(b)) {
1188
+ return as(b, a)
1189
+ } else if (isPromise(b)) {
1190
+ return async<never, Cause.UnknownException, any>((resume) => {
1191
+ b.then((_) => resume(succeed(a))).catch((e) => resume(fail(new UnknownException(e))))
1192
+ })
1193
+ }
1194
+ return succeed(a)
1195
+ }))
1116
1196
 
1117
1197
  /* @internal */
1118
1198
  export const transplant = <R, E, A>(
@@ -1479,7 +1559,7 @@ export const FiberRefTypeId: FiberRef.FiberRefTypeId = Symbol.for(
1479
1559
 
1480
1560
  /** @internal */
1481
1561
  const fiberRefVariance = {
1482
- _A: (_: never) => _
1562
+ _A: (_: any) => _
1483
1563
  }
1484
1564
 
1485
1565
  /* @internal */
@@ -1594,14 +1674,14 @@ export const RequestResolverTypeId: RequestResolver.RequestResolverTypeId = Symb
1594
1674
  RequestResolverSymbolKey
1595
1675
  ) as RequestResolver.RequestResolverTypeId
1596
1676
 
1597
- const dataSourceVariance = {
1598
- _R: (_: never) => _,
1599
- _A: (_: never) => _
1677
+ const requestResolverVariance = {
1678
+ _A: (_: unknown) => _,
1679
+ _R: (_: never) => _
1600
1680
  }
1601
1681
 
1602
1682
  /** @internal */
1603
- export class RequestResolverImpl<R, A> implements RequestResolver.RequestResolver<A, R> {
1604
- readonly [RequestResolverTypeId] = dataSourceVariance
1683
+ export class RequestResolverImpl<out R, in A> implements RequestResolver.RequestResolver<A, R> {
1684
+ readonly [RequestResolverTypeId] = requestResolverVariance
1605
1685
  constructor(
1606
1686
  readonly runAll: (
1607
1687
  requests: Array<Array<Request.Entry<A>>>
@@ -2071,6 +2151,172 @@ export const releaseMapMake: Effect.Effect<never, never, ReleaseMap> = sync(():
2071
2151
  }
2072
2152
  }))
2073
2153
 
2154
+ // -----------------------------------------------------------------------------
2155
+ // Cause
2156
+ // -----------------------------------------------------------------------------
2157
+
2158
+ /** @internal */
2159
+ export const causeSquash = <E>(self: Cause.Cause<E>): unknown => {
2160
+ return causeSquashWith(identity)(self)
2161
+ }
2162
+
2163
+ /** @internal */
2164
+ export const causeSquashWith = dual<
2165
+ <E>(f: (error: E) => unknown) => (self: Cause.Cause<E>) => unknown,
2166
+ <E>(self: Cause.Cause<E>, f: (error: E) => unknown) => unknown
2167
+ >(2, (self, f) => {
2168
+ const option = pipe(self, internalCause.failureOption, Option.map(f))
2169
+ switch (option._tag) {
2170
+ case "None": {
2171
+ return pipe(
2172
+ internalCause.defects(self),
2173
+ Chunk.head,
2174
+ Option.match({
2175
+ onNone: () => {
2176
+ const interrupts = Array.from(internalCause.interruptors(self)).flatMap((fiberId) =>
2177
+ Array.from(FiberId.ids(fiberId)).map((id) => `#${id}`)
2178
+ )
2179
+ return new InterruptedException(interrupts ? `Interrupted by fibers: ${interrupts.join(", ")}` : void 0)
2180
+ },
2181
+ onSome: identity
2182
+ })
2183
+ )
2184
+ }
2185
+ case "Some": {
2186
+ return option.value
2187
+ }
2188
+ }
2189
+ })
2190
+
2191
+ // -----------------------------------------------------------------------------
2192
+ // Errors
2193
+ // -----------------------------------------------------------------------------
2194
+
2195
+ /** @internal */
2196
+ export const YieldableError: new(message?: string) => Cause.YieldableError = (function() {
2197
+ class YieldableError extends globalThis.Error {
2198
+ commit() {
2199
+ return fail(this)
2200
+ }
2201
+ toString() {
2202
+ return this.stack ?? `${this.name}: ${this.message}`
2203
+ }
2204
+ toJSON() {
2205
+ return { ...this }
2206
+ }
2207
+ [NodeInspectSymbol](): string {
2208
+ return this.toString()
2209
+ }
2210
+ }
2211
+ Object.assign(YieldableError.prototype, StructuralCommitPrototype)
2212
+ return YieldableError as any
2213
+ })()
2214
+
2215
+ const makeException = <T extends { _tag: string; message?: string }>(
2216
+ proto: Omit<T, keyof Cause.YieldableError | "_tag">,
2217
+ tag: T["_tag"]
2218
+ ): new(message?: string | undefined) => T => {
2219
+ class Base extends YieldableError {
2220
+ readonly _tag = tag
2221
+ }
2222
+ Object.assign(Base.prototype, proto)
2223
+ ;(Base.prototype as any).name = tag
2224
+ return Base as any
2225
+ }
2226
+
2227
+ /** @internal */
2228
+ export const RuntimeExceptionTypeId: Cause.RuntimeExceptionTypeId = Symbol.for(
2229
+ "effect/Cause/errors/RuntimeException"
2230
+ ) as Cause.RuntimeExceptionTypeId
2231
+
2232
+ /** @internal */
2233
+ export const RuntimeException = makeException<Cause.RuntimeException>({
2234
+ [RuntimeExceptionTypeId]: RuntimeExceptionTypeId
2235
+ }, "RuntimeException")
2236
+
2237
+ /** @internal */
2238
+ export const isRuntimeException = (u: unknown): u is Cause.RuntimeException => hasProperty(u, RuntimeExceptionTypeId)
2239
+
2240
+ /** @internal */
2241
+ export const InterruptedExceptionTypeId: Cause.InterruptedExceptionTypeId = Symbol.for(
2242
+ "effect/Cause/errors/InterruptedException"
2243
+ ) as Cause.InterruptedExceptionTypeId
2244
+
2245
+ /** @internal */
2246
+ export const InterruptedException = makeException<Cause.InterruptedException>({
2247
+ [InterruptedExceptionTypeId]: InterruptedExceptionTypeId
2248
+ }, "InterruptedException")
2249
+
2250
+ /** @internal */
2251
+ export const isInterruptedException = (u: unknown): u is Cause.InterruptedException =>
2252
+ hasProperty(u, InterruptedExceptionTypeId)
2253
+
2254
+ /** @internal */
2255
+ export const IllegalArgumentExceptionTypeId: Cause.IllegalArgumentExceptionTypeId = Symbol.for(
2256
+ "effect/Cause/errors/IllegalArgument"
2257
+ ) as Cause.IllegalArgumentExceptionTypeId
2258
+
2259
+ /** @internal */
2260
+ export const IllegalArgumentException = makeException<Cause.IllegalArgumentException>({
2261
+ [IllegalArgumentExceptionTypeId]: IllegalArgumentExceptionTypeId
2262
+ }, "IllegalArgumentException")
2263
+
2264
+ /** @internal */
2265
+ export const isIllegalArgumentException = (u: unknown): u is Cause.IllegalArgumentException =>
2266
+ hasProperty(u, IllegalArgumentExceptionTypeId)
2267
+
2268
+ /** @internal */
2269
+ export const NoSuchElementExceptionTypeId: Cause.NoSuchElementExceptionTypeId = Symbol.for(
2270
+ "effect/Cause/errors/NoSuchElement"
2271
+ ) as Cause.NoSuchElementExceptionTypeId
2272
+
2273
+ /** @internal */
2274
+ export const NoSuchElementException = makeException<Cause.NoSuchElementException>({
2275
+ [NoSuchElementExceptionTypeId]: NoSuchElementExceptionTypeId
2276
+ }, "NoSuchElementException")
2277
+
2278
+ /** @internal */
2279
+ export const isNoSuchElementException = (u: unknown): u is Cause.NoSuchElementException =>
2280
+ hasProperty(u, NoSuchElementExceptionTypeId)
2281
+
2282
+ /** @internal */
2283
+ export const InvalidPubSubCapacityExceptionTypeId: Cause.InvalidPubSubCapacityExceptionTypeId = Symbol.for(
2284
+ "effect/Cause/errors/InvalidPubSubCapacityException"
2285
+ ) as Cause.InvalidPubSubCapacityExceptionTypeId
2286
+
2287
+ /** @internal */
2288
+ export const InvalidPubSubCapacityException = makeException<Cause.InvalidPubSubCapacityException>({
2289
+ [InvalidPubSubCapacityExceptionTypeId]: InvalidPubSubCapacityExceptionTypeId
2290
+ }, "InvalidPubSubCapacityException")
2291
+
2292
+ /** @internal */
2293
+ export const isInvalidCapacityError = (u: unknown): u is Cause.InvalidPubSubCapacityException =>
2294
+ hasProperty(u, InvalidPubSubCapacityExceptionTypeId)
2295
+
2296
+ /** @internal */
2297
+ export const UnknownExceptionTypeId: Cause.UnknownExceptionTypeId = Symbol.for(
2298
+ "effect/Cause/errors/UnknownException"
2299
+ ) as Cause.UnknownExceptionTypeId
2300
+
2301
+ /** @internal */
2302
+ export const UnknownException: new(error: unknown, message?: string | undefined) => Cause.UnknownException =
2303
+ (function() {
2304
+ class UnknownException extends YieldableError {
2305
+ readonly _tag = "UnknownException"
2306
+ constructor(readonly error: unknown, message?: string) {
2307
+ super(message ?? (hasProperty(error, "message") && isString(error.message) ? error.message : void 0))
2308
+ }
2309
+ }
2310
+ Object.assign(UnknownException.prototype, {
2311
+ [UnknownExceptionTypeId]: UnknownExceptionTypeId,
2312
+ name: "UnknownException"
2313
+ })
2314
+ return UnknownException as any
2315
+ })()
2316
+
2317
+ /** @internal */
2318
+ export const isUnknownException = (u: unknown): u is Cause.UnknownException => hasProperty(u, UnknownExceptionTypeId)
2319
+
2074
2320
  // -----------------------------------------------------------------------------
2075
2321
  // Exit
2076
2322
  // -----------------------------------------------------------------------------
@@ -2142,16 +2388,18 @@ export const exitDie = (defect: unknown): Exit.Exit<never, never> =>
2142
2388
  exitFailCause(internalCause.die(defect)) as Exit.Exit<never, never>
2143
2389
 
2144
2390
  /** @internal */
2145
- export const exitExists = dual<
2146
- <A>(predicate: Predicate<A>) => <E>(self: Exit.Exit<E, A>) => boolean,
2147
- <E, A>(self: Exit.Exit<E, A>, predicate: Predicate<A>) => boolean
2148
- >(2, (self, predicate) => {
2391
+ export const exitExists: {
2392
+ <A, B extends A>(refinement: Refinement<A, B>): <E>(self: Exit.Exit<E, A>) => self is Exit.Exit<never, B>
2393
+ <A>(predicate: Predicate<A>): <E>(self: Exit.Exit<E, A>) => boolean
2394
+ <E, A, B extends A>(self: Exit.Exit<E, A>, refinement: Refinement<A, B>): self is Exit.Exit<never, B>
2395
+ <E, A>(self: Exit.Exit<E, A>, predicate: Predicate<A>): boolean
2396
+ } = dual(2, <E, A, B extends A>(self: Exit.Exit<E, A>, refinement: Refinement<A, B>): self is Exit.Exit<never, B> => {
2149
2397
  switch (self._tag) {
2150
2398
  case OpCodes.OP_FAILURE: {
2151
2399
  return false
2152
2400
  }
2153
2401
  case OpCodes.OP_SUCCESS: {
2154
- return predicate(self.i0)
2402
+ return refinement(self.i0)
2155
2403
  }
2156
2404
  }
2157
2405
  })
@@ -2,6 +2,7 @@ import type * as Data from "../Data.js"
2
2
  import * as Equal from "../Equal.js"
3
3
  import * as Hash from "../Hash.js"
4
4
  import type * as Types from "../Types.js"
5
+ import { StructuralPrototype } from "./effectable.js"
5
6
 
6
7
  /** @internal */
7
8
  export const ArrayProto: Equal.Equal = Object.assign(Object.create(Array.prototype), {
@@ -17,26 +18,6 @@ export const ArrayProto: Equal.Equal = Object.assign(Object.create(Array.prototy
17
18
  }
18
19
  })
19
20
 
20
- /** @internal */
21
- export const StructProto: Equal.Equal = {
22
- [Hash.symbol](this: Equal.Equal) {
23
- return Hash.structure(this)
24
- },
25
- [Equal.symbol](this: Equal.Equal, that: Equal.Equal) {
26
- const selfKeys = Object.keys(this)
27
- const thatKeys = Object.keys(that as object)
28
- if (selfKeys.length !== thatKeys.length) {
29
- return false
30
- }
31
- for (const key of selfKeys) {
32
- if (!(key in (that as object) && Equal.equals((this as any)[key], (that as any)[key]))) {
33
- return false
34
- }
35
- }
36
- return true
37
- }
38
- }
39
-
40
21
  /** @internal */
41
22
  export const Structural: new<A>(
42
23
  args: Types.Equals<Omit<A, keyof Equal.Equal>, {}> extends true ? void
@@ -47,10 +28,10 @@ export const Structural: new<A>(
47
28
  Object.assign(this, args)
48
29
  }
49
30
  }
50
- Structural.prototype = StructProto
31
+ Structural.prototype = StructuralPrototype
51
32
  return Structural as any
52
33
  })()
53
34
 
54
35
  /** @internal */
55
36
  export const struct = <As extends Readonly<Record<string, any>>>(as: As): Data.Data<As> =>
56
- Object.assign(Object.create(StructProto), as)
37
+ Object.assign(Object.create(StructuralPrototype), as)
@@ -87,7 +87,7 @@ export const batchN = dual<
87
87
  new core.RequestResolverImpl(
88
88
  (requests) => {
89
89
  return n < 1
90
- ? core.die(Cause.IllegalArgumentException("RequestResolver.batchN: n must be at least 1"))
90
+ ? core.die(new Cause.IllegalArgumentException("RequestResolver.batchN: n must be at least 1"))
91
91
  : self.runAll(
92
92
  Array.from(Chunk.map(
93
93
  RA.reduce(
@@ -12,21 +12,21 @@ export const DeferredTypeId: Deferred.DeferredTypeId = Symbol.for(
12
12
 
13
13
  /** @internal */
14
14
  export const deferredVariance = {
15
- _E: (_: never) => _,
16
- _A: (_: never) => _
15
+ _E: (_: any) => _,
16
+ _A: (_: any) => _
17
17
  }
18
18
 
19
19
  /** @internal */
20
- export type State<E, A> = Pending<E, A> | Done<E, A>
20
+ export type State</* in out */ E, /* in out */ A> = Pending<E, A> | Done<E, A>
21
21
 
22
22
  /** @internal */
23
- export interface Pending<E, A> {
23
+ export interface Pending<in E, in A> {
24
24
  readonly _tag: "Pending"
25
25
  readonly joiners: Array<(effect: Effect.Effect<never, E, A>) => void>
26
26
  }
27
27
 
28
28
  /** @internal */
29
- export interface Done<E, A> {
29
+ export interface Done<out E, out A> {
30
30
  readonly _tag: "Done"
31
31
  readonly effect: Effect.Effect<never, E, A>
32
32
  }
@@ -40,7 +40,7 @@ const _empty = Object.create(EmptyProto)
40
40
  export const empty = <Input, Output>(): Differ.Context.Patch<Input, Output> => _empty
41
41
 
42
42
  /** @internal */
43
- export interface AndThen<Input, Output, Output2> extends Differ.Context.Patch<Input, Output2> {
43
+ export interface AndThen<in out Input, in out Output, in out Output2> extends Differ.Context.Patch<Input, Output2> {
44
44
  readonly _tag: "AndThen"
45
45
  readonly first: Differ.Context.Patch<Input, Output>
46
46
  readonly second: Differ.Context.Patch<Output, Output2>
@@ -61,7 +61,7 @@ const makeAndThen = <Input, Output, Output2>(
61
61
  }
62
62
 
63
63
  /** @internal */
64
- export interface AddService<Env, T, I> extends Differ.Context.Patch<Env, Env | I> {
64
+ export interface AddService<in out Env, in out T, in out I> extends Differ.Context.Patch<Env, Env | I> {
65
65
  readonly _tag: "AddService"
66
66
  readonly tag: Tag<T, I>
67
67
  readonly service: T
@@ -82,7 +82,7 @@ const makeAddService = <Env, I, T>(
82
82
  }
83
83
 
84
84
  /** @internal */
85
- export interface RemoveService<Env, T, I> extends Differ.Context.Patch<Env, Exclude<Env, I>> {
85
+ export interface RemoveService<in out Env, in out T, in out I> extends Differ.Context.Patch<Env, Exclude<Env, I>> {
86
86
  readonly _tag: "RemoveService"
87
87
  readonly tag: Tag<T, I>
88
88
  }
@@ -100,10 +100,10 @@ const makeRemoveService = <Env, I, T>(
100
100
  }
101
101
 
102
102
  /** @internal */
103
- export interface UpdateService<Env, T, I> extends Differ.Context.Patch<Env | I, Env | I> {
103
+ export interface UpdateService<in out Env, in out T, in out I> extends Differ.Context.Patch<Env | I, Env | I> {
104
104
  readonly _tag: "UpdateService"
105
105
  readonly tag: Tag<T, I>
106
- readonly update: (service: T) => T
106
+ update(service: T): T
107
107
  }
108
108
 
109
109
  const UpdateServiceProto = Object.assign(Object.create(PatchProto), {
@@ -24,7 +24,9 @@ const PatchProto = {
24
24
  }
25
25
 
26
26
  /** @internal */
27
- export interface Empty<Value, Value2, Patch, Patch2> extends Differ.Or.Patch<Value, Value2, Patch, Patch2> {
27
+ export interface Empty<in out Value, in out Value2, in out Patch, in out Patch2>
28
+ extends Differ.Or.Patch<Value, Value2, Patch, Patch2>
29
+ {
28
30
  readonly _tag: "Empty"
29
31
  }
30
32
 
@@ -43,7 +45,9 @@ export const empty = <Value, Value2, Patch, Patch2>(): Differ.Or.Patch<
43
45
  > => _empty
44
46
 
45
47
  /** @internal */
46
- export interface AndThen<Value, Value2, Patch, Patch2> extends Differ.Or.Patch<Value, Value2, Patch, Patch2> {
48
+ export interface AndThen<in out Value, in out Value2, in out Patch, Patch2>
49
+ extends Differ.Or.Patch<Value, Value2, Patch, Patch2>
50
+ {
47
51
  readonly _tag: "AndThen"
48
52
  readonly first: Differ.Or.Patch<Value, Value2, Patch, Patch2>
49
53
  readonly second: Differ.Or.Patch<Value, Value2, Patch, Patch2>
@@ -70,7 +74,9 @@ export const makeAndThen = <Value, Value2, Patch, Patch2>(
70
74
  }
71
75
 
72
76
  /** @internal */
73
- export interface SetLeft<Value, Value2, Patch, Patch2> extends Differ.Or.Patch<Value, Value2, Patch, Patch2> {
77
+ export interface SetLeft<in out Value, in out Value2, in out Patch, Patch2>
78
+ extends Differ.Or.Patch<Value, Value2, Patch, Patch2>
79
+ {
74
80
  readonly _tag: "SetLeft"
75
81
  readonly value: Value
76
82
  }
@@ -94,7 +100,9 @@ export const makeSetLeft = <Value, Value2, Patch, Patch2>(
94
100
  }
95
101
 
96
102
  /** @internal */
97
- export interface SetRight<Value, Value2, Patch, Patch2> extends Differ.Or.Patch<Value, Value2, Patch, Patch2> {
103
+ export interface SetRight<in out Value, in out Value2, in out Patch, in out Patch2>
104
+ extends Differ.Or.Patch<Value, Value2, Patch, Patch2>
105
+ {
98
106
  readonly _tag: "SetRight"
99
107
  readonly value: Value2
100
108
  }
@@ -118,7 +126,9 @@ export const makeSetRight = <Value, Value2, Patch, Patch2>(
118
126
  }
119
127
 
120
128
  /** @internal */
121
- export interface UpdateLeft<Value, Value2, Patch, Patch2> extends Differ.Or.Patch<Value, Value2, Patch, Patch2> {
129
+ export interface UpdateLeft<in out Value, in out Value2, in out Patch, in out Patch2>
130
+ extends Differ.Or.Patch<Value, Value2, Patch, Patch2>
131
+ {
122
132
  readonly _tag: "UpdateLeft"
123
133
  readonly patch: Patch
124
134
  }
@@ -142,7 +152,9 @@ export const makeUpdateLeft = <Value, Value2, Patch, Patch2>(
142
152
  }
143
153
 
144
154
  /** @internal */
145
- export interface UpdateRight<Value, Value2, Patch, Patch2> extends Differ.Or.Patch<Value, Value2, Patch, Patch2> {
155
+ export interface UpdateRight<in out Value, in out Value2, in out Patch, in out Patch2>
156
+ extends Differ.Or.Patch<Value, Value2, Patch, Patch2>
157
+ {
146
158
  readonly _tag: "UpdateRight"
147
159
  readonly patch: Patch2
148
160
  }