effect 2.3.7 → 2.4.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 (422) hide show
  1. package/dist/cjs/BigDecimal.js +1 -1
  2. package/dist/cjs/BigDecimal.js.map +1 -1
  3. package/dist/cjs/BigInt.js +14 -1
  4. package/dist/cjs/BigInt.js.map +1 -1
  5. package/dist/cjs/Chunk.js +1 -1
  6. package/dist/cjs/Chunk.js.map +1 -1
  7. package/dist/cjs/Cron.js +1 -1
  8. package/dist/cjs/Cron.js.map +1 -1
  9. package/dist/cjs/Duration.js +1 -1
  10. package/dist/cjs/Duration.js.map +1 -1
  11. package/dist/cjs/Effect.js +16 -61
  12. package/dist/cjs/Effect.js.map +1 -1
  13. package/dist/cjs/Either.js +35 -6
  14. package/dist/cjs/Either.js.map +1 -1
  15. package/dist/cjs/Equal.js +1 -1
  16. package/dist/cjs/Equal.js.map +1 -1
  17. package/dist/cjs/Exit.js +1 -1
  18. package/dist/cjs/FiberMap.js.map +1 -1
  19. package/dist/cjs/Hash.js +29 -1
  20. package/dist/cjs/Hash.js.map +1 -1
  21. package/dist/cjs/List.js +3 -2
  22. package/dist/cjs/List.js.map +1 -1
  23. package/dist/cjs/Number.js +25 -1
  24. package/dist/cjs/Number.js.map +1 -1
  25. package/dist/cjs/ReadonlyArray.js +2 -2
  26. package/dist/cjs/ReadonlyArray.js.map +1 -1
  27. package/dist/cjs/ReadonlyRecord.js +71 -76
  28. package/dist/cjs/ReadonlyRecord.js.map +1 -1
  29. package/dist/cjs/STM.js.map +1 -1
  30. package/dist/cjs/Schedule.js.map +1 -1
  31. package/dist/cjs/Sink.js.map +1 -1
  32. package/dist/cjs/SortedMap.js +1 -1
  33. package/dist/cjs/SortedMap.js.map +1 -1
  34. package/dist/cjs/SortedSet.js +1 -1
  35. package/dist/cjs/SortedSet.js.map +1 -1
  36. package/dist/cjs/Stream.js +3 -23
  37. package/dist/cjs/Stream.js.map +1 -1
  38. package/dist/cjs/Struct.js +3 -1
  39. package/dist/cjs/Struct.js.map +1 -1
  40. package/dist/cjs/TestAnnotation.js +1 -1
  41. package/dist/cjs/TestAnnotation.js.map +1 -1
  42. package/dist/cjs/internal/cache.js +1 -1
  43. package/dist/cjs/internal/cache.js.map +1 -1
  44. package/dist/cjs/internal/cause.js +1 -1
  45. package/dist/cjs/internal/cause.js.map +1 -1
  46. package/dist/cjs/internal/channel/channelExecutor.js +5 -5
  47. package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
  48. package/dist/cjs/internal/channel/channelState.js +5 -5
  49. package/dist/cjs/internal/channel/channelState.js.map +1 -1
  50. package/dist/cjs/internal/channel.js.map +1 -1
  51. package/dist/cjs/internal/clock.js +3 -4
  52. package/dist/cjs/internal/clock.js.map +1 -1
  53. package/dist/cjs/internal/context.js +1 -1
  54. package/dist/cjs/internal/context.js.map +1 -1
  55. package/dist/cjs/internal/core-effect.js +6 -23
  56. package/dist/cjs/internal/core-effect.js.map +1 -1
  57. package/dist/cjs/internal/core.js +15 -31
  58. package/dist/cjs/internal/core.js.map +1 -1
  59. package/dist/cjs/internal/data.js +1 -1
  60. package/dist/cjs/internal/data.js.map +1 -1
  61. package/dist/cjs/internal/effect/circular.js +5 -6
  62. package/dist/cjs/internal/effect/circular.js.map +1 -1
  63. package/dist/cjs/internal/effectable.js +2 -2
  64. package/dist/cjs/internal/effectable.js.map +1 -1
  65. package/dist/cjs/internal/either.js +1 -1
  66. package/dist/cjs/internal/either.js.map +1 -1
  67. package/dist/cjs/internal/fiberId.js +2 -9
  68. package/dist/cjs/internal/fiberId.js.map +1 -1
  69. package/dist/cjs/internal/fiberStatus.js +4 -3
  70. package/dist/cjs/internal/fiberStatus.js.map +1 -1
  71. package/dist/cjs/internal/groupBy.js.map +1 -1
  72. package/dist/cjs/internal/hashMap.js +1 -1
  73. package/dist/cjs/internal/hashMap.js.map +1 -1
  74. package/dist/cjs/internal/hashSet.js +1 -1
  75. package/dist/cjs/internal/hashSet.js.map +1 -1
  76. package/dist/cjs/internal/keyedPool.js +2 -2
  77. package/dist/cjs/internal/keyedPool.js.map +1 -1
  78. package/dist/cjs/internal/layer.js +0 -2
  79. package/dist/cjs/internal/layer.js.map +1 -1
  80. package/dist/cjs/internal/metric/keyType.js +4 -4
  81. package/dist/cjs/internal/metric/keyType.js.map +1 -1
  82. package/dist/cjs/internal/metric/state.js +5 -9
  83. package/dist/cjs/internal/metric/state.js.map +1 -1
  84. package/dist/cjs/internal/option.js +1 -1
  85. package/dist/cjs/internal/option.js.map +1 -1
  86. package/dist/cjs/internal/pool.js +1 -1
  87. package/dist/cjs/internal/pool.js.map +1 -1
  88. package/dist/cjs/internal/redBlackTree.js +1 -1
  89. package/dist/cjs/internal/redBlackTree.js.map +1 -1
  90. package/dist/cjs/internal/runtime.js +12 -1
  91. package/dist/cjs/internal/runtime.js.map +1 -1
  92. package/dist/cjs/internal/schedule.js +4 -4
  93. package/dist/cjs/internal/schedule.js.map +1 -1
  94. package/dist/cjs/internal/secret.js +1 -1
  95. package/dist/cjs/internal/secret.js.map +1 -1
  96. package/dist/cjs/internal/sink.js +0 -2
  97. package/dist/cjs/internal/sink.js.map +1 -1
  98. package/dist/cjs/internal/stm/core.js +1 -1
  99. package/dist/cjs/internal/stm/core.js.map +1 -1
  100. package/dist/cjs/internal/stm/stm/stmState.js +6 -4
  101. package/dist/cjs/internal/stm/stm/stmState.js.map +1 -1
  102. package/dist/cjs/internal/stm/stm/tExit.js +7 -6
  103. package/dist/cjs/internal/stm/stm/tExit.js.map +1 -1
  104. package/dist/cjs/internal/stm/stm.js +1 -0
  105. package/dist/cjs/internal/stm/stm.js.map +1 -1
  106. package/dist/cjs/internal/stream.js +51 -64
  107. package/dist/cjs/internal/stream.js.map +1 -1
  108. package/dist/cjs/internal/trie.js +1 -1
  109. package/dist/cjs/internal/trie.js.map +1 -1
  110. package/dist/cjs/internal/version.js +1 -1
  111. package/dist/dts/BigDecimal.d.ts.map +1 -1
  112. package/dist/dts/BigInt.d.ts +7 -0
  113. package/dist/dts/BigInt.d.ts.map +1 -1
  114. package/dist/dts/Brand.d.ts +1 -1
  115. package/dist/dts/Brand.d.ts.map +1 -1
  116. package/dist/dts/Cause.d.ts +1 -1
  117. package/dist/dts/Cause.d.ts.map +1 -1
  118. package/dist/dts/Channel.d.ts +11 -11
  119. package/dist/dts/Channel.d.ts.map +1 -1
  120. package/dist/dts/Chunk.d.ts +3 -3
  121. package/dist/dts/Config.d.ts +4 -4
  122. package/dist/dts/Config.d.ts.map +1 -1
  123. package/dist/dts/Cron.d.ts +1 -1
  124. package/dist/dts/Cron.d.ts.map +1 -1
  125. package/dist/dts/Differ.d.ts +2 -2
  126. package/dist/dts/Differ.d.ts.map +1 -1
  127. package/dist/dts/Effect.d.ts +52 -108
  128. package/dist/dts/Effect.d.ts.map +1 -1
  129. package/dist/dts/Either.d.ts +126 -83
  130. package/dist/dts/Either.d.ts.map +1 -1
  131. package/dist/dts/Encoding.d.ts +6 -6
  132. package/dist/dts/Encoding.d.ts.map +1 -1
  133. package/dist/dts/Equal.d.ts.map +1 -1
  134. package/dist/dts/Exit.d.ts +2 -2
  135. package/dist/dts/Fiber.d.ts +2 -2
  136. package/dist/dts/Fiber.d.ts.map +1 -1
  137. package/dist/dts/FiberMap.d.ts +4 -5
  138. package/dist/dts/FiberMap.d.ts.map +1 -1
  139. package/dist/dts/GroupBy.d.ts +12 -12
  140. package/dist/dts/GroupBy.d.ts.map +1 -1
  141. package/dist/dts/Hash.d.ts +8 -0
  142. package/dist/dts/Hash.d.ts.map +1 -1
  143. package/dist/dts/Layer.d.ts +26 -26
  144. package/dist/dts/Layer.d.ts.map +1 -1
  145. package/dist/dts/List.d.ts +2 -2
  146. package/dist/dts/List.d.ts.map +1 -1
  147. package/dist/dts/Logger.d.ts +4 -4
  148. package/dist/dts/Match.d.ts +2 -2
  149. package/dist/dts/Match.d.ts.map +1 -1
  150. package/dist/dts/MergeDecision.d.ts +1 -1
  151. package/dist/dts/MergeState.d.ts +5 -5
  152. package/dist/dts/MergeState.d.ts.map +1 -1
  153. package/dist/dts/Metric.d.ts +13 -13
  154. package/dist/dts/Metric.d.ts.map +1 -1
  155. package/dist/dts/MetricPolling.d.ts +4 -4
  156. package/dist/dts/MetricPolling.d.ts.map +1 -1
  157. package/dist/dts/Number.d.ts +8 -0
  158. package/dist/dts/Number.d.ts.map +1 -1
  159. package/dist/dts/Option.d.ts +11 -11
  160. package/dist/dts/ReadonlyArray.d.ts +9 -8
  161. package/dist/dts/ReadonlyArray.d.ts.map +1 -1
  162. package/dist/dts/ReadonlyRecord.d.ts +111 -94
  163. package/dist/dts/ReadonlyRecord.d.ts.map +1 -1
  164. package/dist/dts/Reloadable.d.ts +4 -4
  165. package/dist/dts/Reloadable.d.ts.map +1 -1
  166. package/dist/dts/RequestResolver.d.ts +13 -13
  167. package/dist/dts/RequestResolver.d.ts.map +1 -1
  168. package/dist/dts/Resource.d.ts +1 -1
  169. package/dist/dts/Resource.d.ts.map +1 -1
  170. package/dist/dts/STM.d.ts +144 -139
  171. package/dist/dts/STM.d.ts.map +1 -1
  172. package/dist/dts/Schedule.d.ts +171 -179
  173. package/dist/dts/Schedule.d.ts.map +1 -1
  174. package/dist/dts/SingleProducerAsyncInput.d.ts +1 -1
  175. package/dist/dts/SingleProducerAsyncInput.d.ts.map +1 -1
  176. package/dist/dts/Sink.d.ts +13 -13
  177. package/dist/dts/Sink.d.ts.map +1 -1
  178. package/dist/dts/SortedMap.d.ts.map +1 -1
  179. package/dist/dts/SortedSet.d.ts.map +1 -1
  180. package/dist/dts/Stream.d.ts +355 -366
  181. package/dist/dts/Stream.d.ts.map +1 -1
  182. package/dist/dts/Struct.d.ts +3 -3
  183. package/dist/dts/Struct.d.ts.map +1 -1
  184. package/dist/dts/SubscriptionRef.d.ts +2 -2
  185. package/dist/dts/TArray.d.ts +2 -2
  186. package/dist/dts/TDeferred.d.ts +3 -3
  187. package/dist/dts/TMap.d.ts +10 -10
  188. package/dist/dts/TSet.d.ts +4 -4
  189. package/dist/dts/Take.d.ts +2 -2
  190. package/dist/dts/TestAnnotation.d.ts +2 -2
  191. package/dist/dts/TestAnnotation.d.ts.map +1 -1
  192. package/dist/dts/Types.d.ts +7 -0
  193. package/dist/dts/Types.d.ts.map +1 -1
  194. package/dist/dts/internal/metric/keyType.d.ts.map +1 -1
  195. package/dist/dts/internal/metric/state.d.ts.map +1 -1
  196. package/dist/dts/internal/stm/stm.d.ts +2 -15
  197. package/dist/dts/internal/stm/stm.d.ts.map +1 -1
  198. package/dist/esm/BigDecimal.js +1 -1
  199. package/dist/esm/BigDecimal.js.map +1 -1
  200. package/dist/esm/BigInt.js +12 -0
  201. package/dist/esm/BigInt.js.map +1 -1
  202. package/dist/esm/Chunk.js +1 -1
  203. package/dist/esm/Chunk.js.map +1 -1
  204. package/dist/esm/Cron.js +1 -1
  205. package/dist/esm/Cron.js.map +1 -1
  206. package/dist/esm/Duration.js +1 -1
  207. package/dist/esm/Duration.js.map +1 -1
  208. package/dist/esm/Effect.js +13 -58
  209. package/dist/esm/Effect.js.map +1 -1
  210. package/dist/esm/Either.js +42 -5
  211. package/dist/esm/Either.js.map +1 -1
  212. package/dist/esm/Equal.js +1 -1
  213. package/dist/esm/Equal.js.map +1 -1
  214. package/dist/esm/Exit.js +1 -1
  215. package/dist/esm/FiberMap.js.map +1 -1
  216. package/dist/esm/Hash.js +27 -0
  217. package/dist/esm/Hash.js.map +1 -1
  218. package/dist/esm/List.js +3 -2
  219. package/dist/esm/List.js.map +1 -1
  220. package/dist/esm/Number.js +23 -0
  221. package/dist/esm/Number.js.map +1 -1
  222. package/dist/esm/ReadonlyArray.js +2 -2
  223. package/dist/esm/ReadonlyArray.js.map +1 -1
  224. package/dist/esm/ReadonlyRecord.js +70 -75
  225. package/dist/esm/ReadonlyRecord.js.map +1 -1
  226. package/dist/esm/STM.js.map +1 -1
  227. package/dist/esm/Schedule.js.map +1 -1
  228. package/dist/esm/Sink.js.map +1 -1
  229. package/dist/esm/SortedMap.js +1 -1
  230. package/dist/esm/SortedMap.js.map +1 -1
  231. package/dist/esm/SortedSet.js +1 -1
  232. package/dist/esm/SortedSet.js.map +1 -1
  233. package/dist/esm/Stream.js +5 -22
  234. package/dist/esm/Stream.js.map +1 -1
  235. package/dist/esm/Struct.js +3 -1
  236. package/dist/esm/Struct.js.map +1 -1
  237. package/dist/esm/TestAnnotation.js +1 -1
  238. package/dist/esm/TestAnnotation.js.map +1 -1
  239. package/dist/esm/internal/cache.js +1 -1
  240. package/dist/esm/internal/cache.js.map +1 -1
  241. package/dist/esm/internal/cause.js +1 -1
  242. package/dist/esm/internal/cause.js.map +1 -1
  243. package/dist/esm/internal/channel/channelExecutor.js +5 -5
  244. package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
  245. package/dist/esm/internal/channel/channelState.js +3 -3
  246. package/dist/esm/internal/channel/channelState.js.map +1 -1
  247. package/dist/esm/internal/channel.js.map +1 -1
  248. package/dist/esm/internal/clock.js +3 -4
  249. package/dist/esm/internal/clock.js.map +1 -1
  250. package/dist/esm/internal/context.js +1 -1
  251. package/dist/esm/internal/context.js.map +1 -1
  252. package/dist/esm/internal/core-effect.js +4 -20
  253. package/dist/esm/internal/core-effect.js.map +1 -1
  254. package/dist/esm/internal/core.js +12 -26
  255. package/dist/esm/internal/core.js.map +1 -1
  256. package/dist/esm/internal/data.js +1 -1
  257. package/dist/esm/internal/data.js.map +1 -1
  258. package/dist/esm/internal/effect/circular.js +5 -6
  259. package/dist/esm/internal/effect/circular.js.map +1 -1
  260. package/dist/esm/internal/effectable.js +2 -2
  261. package/dist/esm/internal/effectable.js.map +1 -1
  262. package/dist/esm/internal/either.js +1 -1
  263. package/dist/esm/internal/either.js.map +1 -1
  264. package/dist/esm/internal/fiberId.js +2 -9
  265. package/dist/esm/internal/fiberId.js.map +1 -1
  266. package/dist/esm/internal/fiberStatus.js +4 -3
  267. package/dist/esm/internal/fiberStatus.js.map +1 -1
  268. package/dist/esm/internal/groupBy.js.map +1 -1
  269. package/dist/esm/internal/hashMap.js +1 -1
  270. package/dist/esm/internal/hashMap.js.map +1 -1
  271. package/dist/esm/internal/hashSet.js +1 -1
  272. package/dist/esm/internal/hashSet.js.map +1 -1
  273. package/dist/esm/internal/keyedPool.js +2 -2
  274. package/dist/esm/internal/keyedPool.js.map +1 -1
  275. package/dist/esm/internal/layer.js +0 -2
  276. package/dist/esm/internal/layer.js.map +1 -1
  277. package/dist/esm/internal/metric/keyType.js +4 -4
  278. package/dist/esm/internal/metric/keyType.js.map +1 -1
  279. package/dist/esm/internal/metric/state.js +5 -9
  280. package/dist/esm/internal/metric/state.js.map +1 -1
  281. package/dist/esm/internal/option.js +1 -1
  282. package/dist/esm/internal/option.js.map +1 -1
  283. package/dist/esm/internal/pool.js +1 -1
  284. package/dist/esm/internal/pool.js.map +1 -1
  285. package/dist/esm/internal/redBlackTree.js +1 -1
  286. package/dist/esm/internal/redBlackTree.js.map +1 -1
  287. package/dist/esm/internal/runtime.js +12 -1
  288. package/dist/esm/internal/runtime.js.map +1 -1
  289. package/dist/esm/internal/schedule.js +4 -4
  290. package/dist/esm/internal/schedule.js.map +1 -1
  291. package/dist/esm/internal/secret.js +1 -1
  292. package/dist/esm/internal/secret.js.map +1 -1
  293. package/dist/esm/internal/sink.js +0 -2
  294. package/dist/esm/internal/sink.js.map +1 -1
  295. package/dist/esm/internal/stm/core.js +1 -1
  296. package/dist/esm/internal/stm/core.js.map +1 -1
  297. package/dist/esm/internal/stm/stm/stmState.js +5 -3
  298. package/dist/esm/internal/stm/stm/stmState.js.map +1 -1
  299. package/dist/esm/internal/stm/stm/tExit.js +6 -5
  300. package/dist/esm/internal/stm/stm/tExit.js.map +1 -1
  301. package/dist/esm/internal/stm/stm.js +1 -0
  302. package/dist/esm/internal/stm/stm.js.map +1 -1
  303. package/dist/esm/internal/stream.js +49 -59
  304. package/dist/esm/internal/stream.js.map +1 -1
  305. package/dist/esm/internal/trie.js +1 -1
  306. package/dist/esm/internal/trie.js.map +1 -1
  307. package/dist/esm/internal/version.js +1 -1
  308. package/package.json +3 -2
  309. package/src/BigDecimal.ts +2 -1
  310. package/src/BigInt.ts +13 -0
  311. package/src/Brand.ts +4 -4
  312. package/src/Cause.ts +1 -1
  313. package/src/Channel.ts +17 -17
  314. package/src/Chunk.ts +5 -5
  315. package/src/Config.ts +4 -4
  316. package/src/Cron.ts +4 -3
  317. package/src/Differ.ts +2 -2
  318. package/src/Duration.ts +2 -2
  319. package/src/Effect.ts +68 -145
  320. package/src/Either.ts +215 -133
  321. package/src/Encoding.ts +3 -3
  322. package/src/Equal.ts +1 -1
  323. package/src/Exit.ts +2 -2
  324. package/src/Fiber.ts +2 -2
  325. package/src/FiberMap.ts +0 -1
  326. package/src/GroupBy.ts +16 -16
  327. package/src/Hash.ts +31 -0
  328. package/src/Layer.ts +32 -32
  329. package/src/List.ts +6 -5
  330. package/src/Logger.ts +4 -4
  331. package/src/Match.ts +3 -3
  332. package/src/MergeDecision.ts +1 -1
  333. package/src/MergeState.ts +8 -8
  334. package/src/Metric.ts +13 -13
  335. package/src/MetricPolling.ts +9 -9
  336. package/src/Number.ts +26 -0
  337. package/src/Option.ts +17 -17
  338. package/src/ReadonlyArray.ts +23 -15
  339. package/src/ReadonlyRecord.ts +421 -265
  340. package/src/Reloadable.ts +4 -4
  341. package/src/RequestResolver.ts +19 -19
  342. package/src/Resource.ts +3 -3
  343. package/src/STM.ts +166 -213
  344. package/src/Schedule.ts +331 -361
  345. package/src/SingleProducerAsyncInput.ts +1 -1
  346. package/src/Sink.ts +19 -19
  347. package/src/SortedMap.ts +5 -1
  348. package/src/SortedSet.ts +5 -1
  349. package/src/Stream.ts +449 -456
  350. package/src/Struct.ts +8 -5
  351. package/src/SubscriptionRef.ts +2 -2
  352. package/src/TArray.ts +2 -2
  353. package/src/TDeferred.ts +4 -4
  354. package/src/TMap.ts +10 -10
  355. package/src/TSet.ts +4 -4
  356. package/src/Take.ts +4 -4
  357. package/src/TestAnnotation.ts +7 -9
  358. package/src/Types.ts +11 -0
  359. package/src/internal/blockedRequests.ts +2 -2
  360. package/src/internal/cache.ts +2 -1
  361. package/src/internal/cause.ts +4 -3
  362. package/src/internal/channel/channelExecutor.ts +26 -26
  363. package/src/internal/channel/channelState.ts +13 -13
  364. package/src/internal/channel/mergeDecision.ts +1 -1
  365. package/src/internal/channel/mergeState.ts +6 -6
  366. package/src/internal/channel/singleProducerAsyncInput.ts +5 -5
  367. package/src/internal/channel.ts +43 -43
  368. package/src/internal/clock.ts +3 -4
  369. package/src/internal/config.ts +7 -7
  370. package/src/internal/configError.ts +1 -1
  371. package/src/internal/configProvider/pathPatch.ts +2 -2
  372. package/src/internal/configProvider.ts +1 -1
  373. package/src/internal/context.ts +1 -1
  374. package/src/internal/core-effect.ts +28 -43
  375. package/src/internal/core.ts +19 -44
  376. package/src/internal/data.ts +1 -1
  377. package/src/internal/dataSource.ts +26 -26
  378. package/src/internal/differ/orPatch.ts +7 -7
  379. package/src/internal/differ.ts +2 -2
  380. package/src/internal/effect/circular.ts +10 -11
  381. package/src/internal/effectable.ts +3 -3
  382. package/src/internal/either.ts +23 -20
  383. package/src/internal/encoding/base64.ts +1 -1
  384. package/src/internal/encoding/base64Url.ts +1 -1
  385. package/src/internal/encoding/hex.ts +1 -1
  386. package/src/internal/fiber.ts +2 -2
  387. package/src/internal/fiberId.ts +7 -13
  388. package/src/internal/fiberRuntime.ts +9 -9
  389. package/src/internal/fiberStatus.ts +7 -6
  390. package/src/internal/groupBy.ts +40 -40
  391. package/src/internal/hashMap.ts +2 -2
  392. package/src/internal/hashSet.ts +4 -1
  393. package/src/internal/keyedPool.ts +4 -2
  394. package/src/internal/layer/circular.ts +4 -4
  395. package/src/internal/layer.ts +52 -54
  396. package/src/internal/matcher.ts +5 -5
  397. package/src/internal/metric/keyType.ts +7 -5
  398. package/src/internal/metric/polling.ts +8 -8
  399. package/src/internal/metric/state.ts +11 -10
  400. package/src/internal/metric.ts +6 -6
  401. package/src/internal/option.ts +1 -1
  402. package/src/internal/pool.ts +2 -1
  403. package/src/internal/redBlackTree.ts +2 -2
  404. package/src/internal/reloadable.ts +4 -4
  405. package/src/internal/resource.ts +2 -2
  406. package/src/internal/runtime.ts +32 -19
  407. package/src/internal/schedule.ts +430 -500
  408. package/src/internal/secret.ts +2 -1
  409. package/src/internal/sink.ts +27 -29
  410. package/src/internal/stm/core.ts +24 -24
  411. package/src/internal/stm/stm/stmState.ts +16 -11
  412. package/src/internal/stm/stm/tExit.ts +15 -9
  413. package/src/internal/stm/stm.ts +158 -157
  414. package/src/internal/stm/tArray.ts +3 -3
  415. package/src/internal/stm/tDeferred.ts +5 -5
  416. package/src/internal/stm/tMap.ts +13 -13
  417. package/src/internal/stm/tSet.ts +4 -4
  418. package/src/internal/stream.ts +688 -723
  419. package/src/internal/subscriptionRef.ts +3 -3
  420. package/src/internal/take.ts +6 -6
  421. package/src/internal/trie.ts +2 -2
  422. package/src/internal/version.ts +1 -1
@@ -504,10 +504,10 @@ export const failCauseSync = <E>(evaluate: LazyArg<Cause.Cause<E>>): Layer.Layer
504
504
 
505
505
  /** @internal */
506
506
  export const flatMap = dual<
507
- <A, R2, E2, A2>(
507
+ <A, A2, E2, R2>(
508
508
  f: (context: Context.Context<A>) => Layer.Layer<A2, E2, R2>
509
- ) => <R, E>(self: Layer.Layer<A, E, R>) => Layer.Layer<A2, E | E2, R | R2>,
510
- <R, E, A, R2, E2, A2>(
509
+ ) => <E, R>(self: Layer.Layer<A, E, R>) => Layer.Layer<A2, E | E2, R | R2>,
510
+ <A, E, R, A2, E2, R2>(
511
511
  self: Layer.Layer<A, E, R>,
512
512
  f: (context: Context.Context<A>) => Layer.Layer<A2, E2, R2>
513
513
  ) => Layer.Layer<A2, E | E2, R | R2>
@@ -515,12 +515,12 @@ export const flatMap = dual<
515
515
 
516
516
  /** @internal */
517
517
  export const flatten = dual<
518
- <R2, E2, A, I>(
518
+ <I, A, E2, R2>(
519
519
  tag: Context.Tag<I, Layer.Layer<A, E2, R2>>
520
- ) => <R, E>(
520
+ ) => <E, R>(
521
521
  self: Layer.Layer<I, E, R>
522
522
  ) => Layer.Layer<A, E | E2, R | R2>,
523
- <R, E, A, R2, E2, I>(
523
+ <I, E, R, A, E2, R2>(
524
524
  self: Layer.Layer<I, E, R>,
525
525
  tag: Context.Tag<I, Layer.Layer<A, E2, R2>>
526
526
  ) => Layer.Layer<A, E | E2, R | R2>
@@ -553,7 +553,7 @@ export const fromEffect = dual<
553
553
  })
554
554
 
555
555
  /** @internal */
556
- export const fromEffectDiscard = <_, E, R>(effect: Effect.Effect<_, E, R>) =>
556
+ export const fromEffectDiscard = <X, E, R>(effect: Effect.Effect<X, E, R>) =>
557
557
  fromEffectContext(core.map(effect, () => Context.empty()))
558
558
 
559
559
  /** @internal */
@@ -569,7 +569,7 @@ export function fromEffectContext<A, E, R>(
569
569
  /** @internal */
570
570
  export const fiberRefLocally = dual<
571
571
  <X>(ref: FiberRef<X>, value: X) => <A, E, R>(self: Layer.Layer<A, E, R>) => Layer.Layer<A, E, R>,
572
- <R, E, A, X>(self: Layer.Layer<A, E, R>, ref: FiberRef<X>, value: X) => Layer.Layer<A, E, R>
572
+ <A, E, R, X>(self: Layer.Layer<A, E, R>, ref: FiberRef<X>, value: X) => Layer.Layer<A, E, R>
573
573
  >(3, (self, ref, value) => locallyEffect(self, core.fiberRefLocally(ref, value)))
574
574
 
575
575
  /** @internal */
@@ -592,7 +592,7 @@ export const locallyEffect = dual<
592
592
  /** @internal */
593
593
  export const fiberRefLocallyWith = dual<
594
594
  <X>(ref: FiberRef<X>, value: (_: X) => X) => <A, E, R>(self: Layer.Layer<A, E, R>) => Layer.Layer<A, E, R>,
595
- <R, E, A, X>(self: Layer.Layer<A, E, R>, ref: FiberRef<X>, value: (_: X) => X) => Layer.Layer<A, E, R>
595
+ <A, E, R, X>(self: Layer.Layer<A, E, R>, ref: FiberRef<X>, value: (_: X) => X) => Layer.Layer<A, E, R>
596
596
  >(3, (self, ref, value) => locallyEffect(self, core.fiberRefLocallyWith(ref, value)))
597
597
 
598
598
  /** @internal */
@@ -624,8 +624,8 @@ export const launch = <RIn, E, ROut>(self: Layer.Layer<ROut, E, RIn>): Effect.Ef
624
624
  export const map = dual<
625
625
  <A, B>(
626
626
  f: (context: Context.Context<A>) => Context.Context<B>
627
- ) => <R, E>(self: Layer.Layer<A, E, R>) => Layer.Layer<B, E, R>,
628
- <R, E, A, B>(
627
+ ) => <E, R>(self: Layer.Layer<A, E, R>) => Layer.Layer<B, E, R>,
628
+ <A, E, R, B>(
629
629
  self: Layer.Layer<A, E, R>,
630
630
  f: (context: Context.Context<A>) => Context.Context<B>
631
631
  ) => Layer.Layer<B, E, R>
@@ -633,19 +633,19 @@ export const map = dual<
633
633
 
634
634
  /** @internal */
635
635
  export const mapError = dual<
636
- <E, E2>(f: (error: E) => E2) => <R, A>(self: Layer.Layer<A, E, R>) => Layer.Layer<A, E2, R>,
637
- <R, E, A, E2>(self: Layer.Layer<A, E, R>, f: (error: E) => E2) => Layer.Layer<A, E2, R>
636
+ <E, E2>(f: (error: E) => E2) => <A, R>(self: Layer.Layer<A, E, R>) => Layer.Layer<A, E2, R>,
637
+ <A, E, R, E2>(self: Layer.Layer<A, E, R>, f: (error: E) => E2) => Layer.Layer<A, E2, R>
638
638
  >(2, (self, f) => catchAll(self, (error) => failSync(() => f(error))))
639
639
 
640
640
  /** @internal */
641
641
  export const matchCause = dual<
642
- <E, A, R2, E2, A2, R3, E3, A3>(
642
+ <E, A2, E2, R2, A, A3, E3, R3>(
643
643
  options: {
644
644
  readonly onFailure: (cause: Cause.Cause<E>) => Layer.Layer<A2, E2, R2>
645
645
  readonly onSuccess: (context: Context.Context<A>) => Layer.Layer<A3, E3, R3>
646
646
  }
647
647
  ) => <R>(self: Layer.Layer<A, E, R>) => Layer.Layer<A2 & A3, E2 | E3, R | R2 | R3>,
648
- <R, E, A, R2, E2, A2, R3, E3, A3>(
648
+ <A, E, R, A2, E2, R2, A3, E3, R3>(
649
649
  self: Layer.Layer<A, E, R>,
650
650
  options: {
651
651
  readonly onFailure: (cause: Cause.Cause<E>) => Layer.Layer<A2, E2, R2>
@@ -663,13 +663,13 @@ export const matchCause = dual<
663
663
 
664
664
  /** @internal */
665
665
  export const match = dual<
666
- <E, R2, E2, A2, A, R3, E3, A3>(
666
+ <E, A2, E2, R2, A, A3, E3, R3>(
667
667
  options: {
668
668
  readonly onFailure: (error: E) => Layer.Layer<A2, E2, R2>
669
669
  readonly onSuccess: (context: Context.Context<A>) => Layer.Layer<A3, E3, R3>
670
670
  }
671
671
  ) => <R>(self: Layer.Layer<A, E, R>) => Layer.Layer<A2 & A3, E2 | E3, R | R2 | R3>,
672
- <R, E, A, R2, E2, A2, R3, E3, A3>(
672
+ <A, E, R, A2, E2, R2, A3, E3, R3>(
673
673
  self: Layer.Layer<A, E, R>,
674
674
  options: {
675
675
  readonly onFailure: (error: E) => Layer.Layer<A2, E2, R2>
@@ -740,10 +740,10 @@ export const orDie = <A, E, R>(self: Layer.Layer<A, E, R>): Layer.Layer<A, never
740
740
 
741
741
  /** @internal */
742
742
  export const orElse = dual<
743
- <R2, E2, A2>(
743
+ <A2, E2, R2>(
744
744
  that: LazyArg<Layer.Layer<A2, E2, R2>>
745
745
  ) => <A, E, R>(self: Layer.Layer<A, E, R>) => Layer.Layer<A & A2, E | E2, R | R2>,
746
- <R, E, A, R2, E2, A2>(
746
+ <A, E, R, A2, E2, R2>(
747
747
  self: Layer.Layer<A, E, R>,
748
748
  that: LazyArg<Layer.Layer<A2, E2, R2>>
749
749
  ) => Layer.Layer<A & A2, E | E2, R | R2>
@@ -770,14 +770,14 @@ export const project = dual<
770
770
 
771
771
  /** @internal */
772
772
  export const retry = dual<
773
- <RIn2, E, X>(
774
- schedule: Schedule.Schedule<RIn2, E, X>
775
- ) => <RIn, ROut>(
773
+ <X, E, RIn2>(
774
+ schedule: Schedule.Schedule<X, E, RIn2>
775
+ ) => <ROut, RIn>(
776
776
  self: Layer.Layer<ROut, E, RIn>
777
777
  ) => Layer.Layer<ROut, E, RIn | RIn2>,
778
- <RIn, E, ROut, RIn2, X>(
778
+ <ROut, E, RIn, X, RIn2>(
779
779
  self: Layer.Layer<ROut, E, RIn>,
780
- schedule: Schedule.Schedule<RIn2, E, X>
780
+ schedule: Schedule.Schedule<X, E, RIn2>
781
781
  ) => Layer.Layer<ROut, E, RIn | RIn2>
782
782
  >(2, (self, schedule) =>
783
783
  suspend(() => {
@@ -790,10 +790,9 @@ export const retry = dual<
790
790
  )
791
791
  }))
792
792
 
793
- /** @internal */
794
- const retryLoop = <RIn, E, ROut, RIn2, X>(
793
+ const retryLoop = <ROut, E, RIn, X, RIn2>(
795
794
  self: Layer.Layer<ROut, E, RIn>,
796
- schedule: Schedule.Schedule<RIn2, E, X>,
795
+ schedule: Schedule.Schedule<X, E, RIn2>,
797
796
  stateTag: Context.Tag<{ state: unknown }, { state: unknown }>,
798
797
  state: unknown
799
798
  ): Layer.Layer<ROut, E, RIn | RIn2> => {
@@ -808,9 +807,8 @@ const retryLoop = <RIn, E, ROut, RIn2, X>(
808
807
  )
809
808
  }
810
809
 
811
- /** @internal */
812
- const retryUpdate = <RIn, E, X>(
813
- schedule: Schedule.Schedule<RIn, E, X>,
810
+ const retryUpdate = <X, E, RIn>(
811
+ schedule: Schedule.Schedule<X, E, RIn>,
814
812
  stateTag: Context.Tag<{ state: unknown }, { state: unknown }>,
815
813
  error: E,
816
814
  state: unknown
@@ -840,10 +838,10 @@ const retryUpdate = <RIn, E, X>(
840
838
  export const scoped = dual<
841
839
  <T extends Context.Tag<any, any>>(
842
840
  tag: T
843
- ) => <R, E>(
841
+ ) => <E, R>(
844
842
  effect: Effect.Effect<Context.Tag.Service<T>, E, R>
845
843
  ) => Layer.Layer<Context.Tag.Identifier<T>, E, Exclude<R, Scope.Scope>>,
846
- <T extends Context.Tag<any, any>, R, E>(
844
+ <T extends Context.Tag<any, any>, E, R>(
847
845
  tag: T,
848
846
  effect: Effect.Effect<Context.Tag.Service<T>, E, R>
849
847
  ) => Layer.Layer<Context.Tag.Identifier<T>, E, Exclude<R, Scope.Scope>>
@@ -855,8 +853,8 @@ export const scoped = dual<
855
853
  })
856
854
 
857
855
  /** @internal */
858
- export const scopedDiscard = <_, E, R>(
859
- effect: Effect.Effect<_, E, R>
856
+ export const scopedDiscard = <X, E, R>(
857
+ effect: Effect.Effect<X, E, R>
860
858
  ): Layer.Layer<never, E, Exclude<R, Scope.Scope>> => scopedContext(pipe(effect, core.as(Context.empty())))
861
859
 
862
860
  /** @internal */
@@ -1054,11 +1052,11 @@ export const provideMerge = dual<
1054
1052
 
1055
1053
  /** @internal */
1056
1054
  export const zipWith = dual<
1057
- <R2, E2, B, A, C>(
1055
+ <B, E2, R2, A, C>(
1058
1056
  that: Layer.Layer<B, E2, R2>,
1059
1057
  f: (a: Context.Context<A>, b: Context.Context<B>) => Context.Context<C>
1060
- ) => <R, E>(self: Layer.Layer<A, E, R>) => Layer.Layer<C, E | E2, R | R2>,
1061
- <R, E, R2, E2, B, A, C>(
1058
+ ) => <E, R>(self: Layer.Layer<A, E, R>) => Layer.Layer<C, E | E2, R | R2>,
1059
+ <A, E, R, B, E2, R2, C>(
1062
1060
  self: Layer.Layer<A, E, R>,
1063
1061
  that: Layer.Layer<B, E2, R2>,
1064
1062
  f: (a: Context.Context<A>, b: Context.Context<B>) => Context.Context<C>
@@ -1074,7 +1072,7 @@ export const zipWith = dual<
1074
1072
  }))
1075
1073
 
1076
1074
  /** @internal */
1077
- export const unwrapEffect = <R, E, R1, E1, A>(
1075
+ export const unwrapEffect = <A, E1, R1, E, R>(
1078
1076
  self: Effect.Effect<Layer.Layer<A, E1, R1>, E, R>
1079
1077
  ): Layer.Layer<A, E | E1, R | R1> => {
1080
1078
  const tag = Context.GenericTag<Layer.Layer<A, E1, R1>>("effect/Layer/unwrapEffect/Layer.Layer<R1, E1, A>")
@@ -1082,7 +1080,7 @@ export const unwrapEffect = <R, E, R1, E1, A>(
1082
1080
  }
1083
1081
 
1084
1082
  /** @internal */
1085
- export const unwrapScoped = <R, E, R1, E1, A>(
1083
+ export const unwrapScoped = <A, E1, R1, E, R>(
1086
1084
  self: Effect.Effect<Layer.Layer<A, E1, R1>, E, R>
1087
1085
  ): Layer.Layer<A, E | E1, R1 | Exclude<R, Scope.Scope>> => {
1088
1086
  const tag = Context.GenericTag<Layer.Layer<A, E1, R1>>("effect/Layer/unwrapScoped/Layer.Layer<R1, E1, A>")
@@ -1139,10 +1137,10 @@ export const withParentSpan = dual<
1139
1137
  // circular with Effect
1140
1138
 
1141
1139
  const provideSomeLayer = dual<
1142
- <R2, E2, A2>(
1140
+ <A2, E2, R2>(
1143
1141
  layer: Layer.Layer<A2, E2, R2>
1144
1142
  ) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E | E2, R2 | Exclude<R, A2>>,
1145
- <R, E, A, R2, E2, A2>(
1143
+ <A, E, R, A2, E2, R2>(
1146
1144
  self: Effect.Effect<A, E, R>,
1147
1145
  layer: Layer.Layer<A2, E2, R2>
1148
1146
  ) => Effect.Effect<A, E | E2, R2 | Exclude<R, A2>>
@@ -1188,9 +1186,9 @@ const provideSomeRuntime = dual<
1188
1186
  /** @internal */
1189
1187
  export const effect_provide = dual<
1190
1188
  {
1191
- <R2, E2, R3>(
1192
- layer: Layer.Layer<R3, E2, R2>
1193
- ): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E | E2, R2 | Exclude<R, R3>>
1189
+ <ROut, E2, RIn>(
1190
+ layer: Layer.Layer<ROut, E2, RIn>
1191
+ ): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E | E2, RIn | Exclude<R, ROut>>
1194
1192
  <R2>(
1195
1193
  context: Context.Context<R2>
1196
1194
  ): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, R2>>
@@ -1199,28 +1197,28 @@ export const effect_provide = dual<
1199
1197
  ): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, R2>>
1200
1198
  },
1201
1199
  {
1202
- <A, E, R, R2, E2, R3>(
1200
+ <A, E, R, ROut, E2, RIn>(
1203
1201
  self: Effect.Effect<A, E, R>,
1204
- layer: Layer.Layer<R3, E2, R2>
1205
- ): Effect.Effect<A, E | E2, R2 | Exclude<R, R3>>
1206
- <R, E, A, R2>(
1202
+ layer: Layer.Layer<ROut, E2, RIn>
1203
+ ): Effect.Effect<A, E | E2, RIn | Exclude<R, ROut>>
1204
+ <A, E, R, R2>(
1207
1205
  self: Effect.Effect<A, E, R>,
1208
1206
  context: Context.Context<R2>
1209
1207
  ): Effect.Effect<A, E, Exclude<R, R2>>
1210
- <R, E, A, R2>(
1208
+ <A, E, R, R2>(
1211
1209
  self: Effect.Effect<A, E, R>,
1212
1210
  runtime: Runtime.Runtime<R2>
1213
1211
  ): Effect.Effect<A, E, Exclude<R, R2>>
1214
1212
  }
1215
1213
  >(
1216
1214
  2,
1217
- <A, E, R, R2>(
1215
+ <A, E, R, ROut>(
1218
1216
  self: Effect.Effect<A, E, R>,
1219
- source: Layer.Layer<R2, any, any> | Context.Context<R2> | Runtime.Runtime<R2>
1220
- ): Effect.Effect<any, any, Exclude<R, R2>> =>
1217
+ source: Layer.Layer<ROut, any, any> | Context.Context<ROut> | Runtime.Runtime<ROut>
1218
+ ): Effect.Effect<any, any, Exclude<R, ROut>> =>
1221
1219
  isLayer(source)
1222
- ? provideSomeLayer(self, source as Layer.Layer<R2, any, any>)
1220
+ ? provideSomeLayer(self, source as Layer.Layer<ROut, any, any>)
1223
1221
  : Context.isContext(source)
1224
1222
  ? core.provideSomeContext(self, source)
1225
- : provideSomeRuntime(self, source as Runtime.Runtime<R2>)
1223
+ : provideSomeRuntime(self, source as Runtime.Runtime<ROut>)
1226
1224
  )
@@ -87,7 +87,7 @@ const ValueMatcherProto: Omit<
87
87
 
88
88
  function makeValueMatcher<I, R, RA, A, Pr>(
89
89
  provided: Pr,
90
- value: Either.Either<RA, Pr>
90
+ value: Either.Either<Pr, RA>
91
91
  ): ValueMatcher<I, R, RA, A, Pr> {
92
92
  const matcher = Object.create(ValueMatcherProto)
93
93
  matcher.provided = provided
@@ -514,8 +514,8 @@ export const orElseAbsurd = <I, R, RA, A, Pr>(
514
514
  /** @internal */
515
515
  export const either: <I, F, R, A, Pr>(
516
516
  self: Matcher<I, F, R, A, Pr>
517
- ) => [Pr] extends [never] ? (input: I) => Either.Either<R, Unify<A>>
518
- : Either.Either<R, Unify<A>> = (<I, R, RA, A>(self: Matcher<I, R, RA, A, I>) => {
517
+ ) => [Pr] extends [never] ? (input: I) => Either.Either<Unify<A>, R>
518
+ : Either.Either<Unify<A>, R> = (<I, R, RA, A>(self: Matcher<I, R, RA, A, I>) => {
519
519
  if (self._tag === "ValueMatcher") {
520
520
  return self.value
521
521
  }
@@ -523,7 +523,7 @@ export const either: <I, F, R, A, Pr>(
523
523
  const len = self.cases.length
524
524
  if (len === 1) {
525
525
  const _case = self.cases[0]
526
- return (input: I): Either.Either<RA, A> => {
526
+ return (input: I): Either.Either<A, RA> => {
527
527
  if (_case._tag === "When" && _case.guard(input) === true) {
528
528
  return Either.right(_case.evaluate(input))
529
529
  } else if (_case._tag === "Not" && _case.guard(input) === false) {
@@ -532,7 +532,7 @@ export const either: <I, F, R, A, Pr>(
532
532
  return Either.left(input as any)
533
533
  }
534
534
  }
535
- return (input: I): Either.Either<RA, A> => {
535
+ return (input: I): Either.Either<A, RA> => {
536
536
  for (let i = 0; i < len; i++) {
537
537
  const _case = self.cases[i]
538
538
  if (_case._tag === "When" && _case.guard(input) === true) {
@@ -81,13 +81,14 @@ class CounterKeyType<A extends (number | bigint)> implements MetricKeyType.Metri
81
81
  }
82
82
  }
83
83
 
84
+ const FrequencyKeyTypeHash = Hash.string(FrequencyKeyTypeSymbolKey)
85
+
84
86
  /** @internal */
85
87
  class FrequencyKeyType implements MetricKeyType.MetricKeyType.Frequency {
86
88
  readonly [MetricKeyTypeTypeId] = metricKeyTypeVariance
87
- readonly [FrequencyKeyTypeTypeId]: MetricKeyType.FrequencyKeyTypeTypeId = FrequencyKeyTypeTypeId
88
- readonly _hash = Hash.string(FrequencyKeyTypeSymbolKey);
89
+ readonly [FrequencyKeyTypeTypeId]: MetricKeyType.FrequencyKeyTypeTypeId = FrequencyKeyTypeTypeId;
89
90
  [Hash.symbol](): number {
90
- return this._hash
91
+ return FrequencyKeyTypeHash
91
92
  }
92
93
  [Equal.symbol](that: unknown): boolean {
93
94
  return isFrequencyKey(that)
@@ -97,14 +98,15 @@ class FrequencyKeyType implements MetricKeyType.MetricKeyType.Frequency {
97
98
  }
98
99
  }
99
100
 
101
+ const GaugeKeyTypeHash = Hash.string(GaugeKeyTypeSymbolKey)
102
+
100
103
  /** @internal */
101
104
  class GaugeKeyType<A extends (number | bigint)> implements MetricKeyType.MetricKeyType.Gauge<A> {
102
105
  readonly [MetricKeyTypeTypeId] = metricKeyTypeVariance
103
106
  readonly [GaugeKeyTypeTypeId]: MetricKeyType.GaugeKeyTypeTypeId = GaugeKeyTypeTypeId
104
107
  constructor(readonly bigint: boolean) {}
105
- readonly _hash = Hash.string(GaugeKeyTypeSymbolKey);
106
108
  [Hash.symbol](): number {
107
- return this._hash
109
+ return GaugeKeyTypeHash
108
110
  }
109
111
  [Equal.symbol](that: unknown): boolean {
110
112
  return isGaugeKey(that)
@@ -64,14 +64,14 @@ export const collectAll = <R, E, Out>(
64
64
 
65
65
  /** @internal */
66
66
  export const launch = dual<
67
- <R2, A2>(
68
- schedule: Schedule.Schedule<R2, unknown, A2>
67
+ <A2, R2>(
68
+ schedule: Schedule.Schedule<A2, unknown, R2>
69
69
  ) => <Type, In, R, E, Out>(
70
70
  self: MetricPolling.MetricPolling<Type, In, R, E, Out>
71
71
  ) => Effect.Effect<Fiber.Fiber<A2, E>, never, R | R2 | Scope.Scope>,
72
- <Type, In, R, E, Out, R2, A2>(
72
+ <Type, In, R, E, Out, A2, R2>(
73
73
  self: MetricPolling.MetricPolling<Type, In, R, E, Out>,
74
- schedule: Schedule.Schedule<R2, unknown, A2>
74
+ schedule: Schedule.Schedule<A2, unknown, R2>
75
75
  ) => Effect.Effect<Fiber.Fiber<A2, E>, never, R | R2 | Scope.Scope>
76
76
  >(2, (self, schedule) =>
77
77
  pipe(
@@ -92,14 +92,14 @@ export const pollAndUpdate = <Type, In, R, E, Out>(
92
92
 
93
93
  /** @internal */
94
94
  export const retry = dual<
95
- <R2, E, _>(
96
- policy: Schedule.Schedule<R2, E, _>
95
+ <X, E, R2>(
96
+ policy: Schedule.Schedule<X, E, R2>
97
97
  ) => <Type, In, R, Out>(
98
98
  self: MetricPolling.MetricPolling<Type, In, R, E, Out>
99
99
  ) => MetricPolling.MetricPolling<Type, In, R | R2, E, Out>,
100
- <Type, In, R, Out, R2, E, _>(
100
+ <Type, In, R, E, Out, X, R2>(
101
101
  self: MetricPolling.MetricPolling<Type, In, R, E, Out>,
102
- policy: Schedule.Schedule<R2, E, _>
102
+ policy: Schedule.Schedule<X, E, R2>
103
103
  ) => MetricPolling.MetricPolling<Type, In, R | R2, E, Out>
104
104
  >(2, (self, policy) => ({
105
105
  [MetricPollingTypeId]: MetricPollingTypeId,
@@ -68,7 +68,8 @@ class CounterState<A extends (number | bigint)> implements MetricState.MetricSta
68
68
  [Hash.symbol](): number {
69
69
  return pipe(
70
70
  Hash.hash(CounterStateSymbolKey),
71
- Hash.combine(Hash.hash(this.count))
71
+ Hash.combine(Hash.hash(this.count)),
72
+ Hash.cached(this)
72
73
  )
73
74
  }
74
75
  [Equal.symbol](that: unknown): boolean {
@@ -88,14 +89,11 @@ class FrequencyState implements MetricState.MetricState.Frequency {
88
89
  constructor(readonly occurrences: ReadonlyMap<string, number>) {}
89
90
  _hash: number | undefined;
90
91
  [Hash.symbol](): number {
91
- if (this._hash !== undefined) {
92
- return this._hash
93
- }
94
- this._hash = pipe(
92
+ return pipe(
95
93
  Hash.string(FrequencyStateSymbolKey),
96
- Hash.combine(Hash.array(ReadonlyArray.fromIterable(this.occurrences.entries())))
94
+ Hash.combine(Hash.array(ReadonlyArray.fromIterable(this.occurrences.entries()))),
95
+ Hash.cached(this)
97
96
  )
98
- return this._hash
99
97
  }
100
98
  [Equal.symbol](that: unknown): boolean {
101
99
  return isFrequencyState(that) && arrayEquals(
@@ -116,7 +114,8 @@ class GaugeState<A extends (number | bigint)> implements MetricState.MetricState
116
114
  [Hash.symbol](): number {
117
115
  return pipe(
118
116
  Hash.hash(GaugeStateSymbolKey),
119
- Hash.combine(Hash.hash(this.value))
117
+ Hash.combine(Hash.hash(this.value)),
118
+ Hash.cached(this)
120
119
  )
121
120
  }
122
121
  [Equal.symbol](u: unknown): boolean {
@@ -145,7 +144,8 @@ export class HistogramState implements MetricState.MetricState.Histogram {
145
144
  Hash.combine(Hash.hash(this.count)),
146
145
  Hash.combine(Hash.hash(this.min)),
147
146
  Hash.combine(Hash.hash(this.max)),
148
- Hash.combine(Hash.hash(this.sum))
147
+ Hash.combine(Hash.hash(this.sum)),
148
+ Hash.cached(this)
149
149
  )
150
150
  }
151
151
  [Equal.symbol](that: unknown): boolean {
@@ -181,7 +181,8 @@ export class SummaryState implements MetricState.MetricState.Summary {
181
181
  Hash.combine(Hash.hash(this.count)),
182
182
  Hash.combine(Hash.hash(this.min)),
183
183
  Hash.combine(Hash.hash(this.max)),
184
- Hash.combine(Hash.hash(this.sum))
184
+ Hash.combine(Hash.hash(this.sum)),
185
+ Hash.cached(this)
185
186
  )
186
187
  }
187
188
  [Equal.symbol](that: unknown): boolean {
@@ -425,12 +425,12 @@ export const trackDurationWith = dual<
425
425
  export const trackError = dual<
426
426
  <Type, In, Out>(
427
427
  metric: Metric.Metric<Type, In, Out>
428
- ) => <R, E extends In, A>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
429
- <R, E extends In, A, Type, In, Out>(
428
+ ) => <A, E extends In, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
429
+ <A, E extends In, R, Type, In, Out>(
430
430
  self: Effect.Effect<A, E, R>,
431
431
  metric: Metric.Metric<Type, In, Out>
432
432
  ) => Effect.Effect<A, E, R>
433
- >(2, <R, E extends In, A, Type, In, Out>(
433
+ >(2, <A, E extends In, R, Type, In, Out>(
434
434
  self: Effect.Effect<A, E, R>,
435
435
  metric: Metric.Metric<Type, In, Out>
436
436
  ) => trackErrorWith(self, metric, (a: In) => a))
@@ -440,13 +440,13 @@ export const trackErrorWith = dual<
440
440
  <Type, In, Out, In2>(
441
441
  metric: Metric.Metric<Type, In, Out>,
442
442
  f: (error: In2) => In
443
- ) => <R, E extends In2, A>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
444
- <R, E extends In2, A, Type, In, Out, In2>(
443
+ ) => <A, E extends In2, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
444
+ <A, E extends In2, R, Type, In, Out, In2>(
445
445
  self: Effect.Effect<A, E, R>,
446
446
  metric: Metric.Metric<Type, In, Out>,
447
447
  f: (error: In2) => In
448
448
  ) => Effect.Effect<A, E, R>
449
- >(3, <R, E extends In2, A, Type, In, Out, In2>(
449
+ >(3, <A, E extends In2, R, Type, In, Out, In2>(
450
450
  self: Effect.Effect<A, E, R>,
451
451
  metric: Metric.Metric<Type, In, Out>,
452
452
  f: (error: In2) => In
@@ -31,7 +31,7 @@ const SomeProto = Object.assign(Object.create(CommonProto), {
31
31
  return isOption(that) && isSome(that) && Equal.equals(that.value, this.value)
32
32
  },
33
33
  [Hash.symbol]<A>(this: Option.Some<A>) {
34
- return Hash.combine(Hash.hash(this._tag))(Hash.hash(this.value))
34
+ return Hash.cached(this, Hash.combine(Hash.hash(this._tag))(Hash.hash(this.value)))
35
35
  },
36
36
  toJSON<A>(this: Option.Some<A>) {
37
37
  return {
@@ -155,7 +155,8 @@ class PoolImpl<in out A, in out E> implements Pool.Pool<A, E> {
155
155
  Hash.combine(Hash.hash(this.state)),
156
156
  Hash.combine(Hash.hash(this.items)),
157
157
  Hash.combine(Hash.hash(this.invalidated)),
158
- Hash.combine(Hash.hash(this.track))
158
+ Hash.combine(Hash.hash(this.track)),
159
+ Hash.cached(this)
159
160
  )
160
161
  }
161
162
 
@@ -33,12 +33,12 @@ const redBlackTreeVariance = {
33
33
 
34
34
  const RedBlackTreeProto: RBT.RedBlackTree<unknown, unknown> = {
35
35
  [RedBlackTreeTypeId]: redBlackTreeVariance,
36
- [Hash.symbol](): number {
36
+ [Hash.symbol](this: RBT.RedBlackTree<unknown, unknown>): number {
37
37
  let hash = Hash.hash(RedBlackTreeSymbolKey)
38
38
  for (const item of this) {
39
39
  hash ^= pipe(Hash.hash(item[0]), Hash.combine(Hash.hash(item[1])))
40
40
  }
41
- return hash
41
+ return Hash.cached(this, hash)
42
42
  },
43
43
  [Equal.symbol]<K, V>(this: RedBlackTreeImpl<K, V>, that: unknown): boolean {
44
44
  if (isRedBlackTree(that)) {
@@ -25,11 +25,11 @@ const reloadableVariance = {
25
25
  }
26
26
 
27
27
  /** @internal */
28
- export const auto = <Out extends Context.Tag<any, any>, In, E, R>(
28
+ export const auto = <Out extends Context.Tag<any, any>, E, In, R>(
29
29
  tag: Out,
30
30
  options: {
31
31
  readonly layer: Layer.Layer<Context.Tag.Identifier<Out>, E, In>
32
- readonly schedule: Schedule.Schedule<R, unknown, unknown>
32
+ readonly schedule: Schedule.Schedule<unknown, unknown, R>
33
33
  }
34
34
  ): Layer.Layer<Reloadable.Reloadable<Context.Tag.Identifier<Out>>, E, R | In> =>
35
35
  _layer.scoped(
@@ -52,11 +52,11 @@ export const auto = <Out extends Context.Tag<any, any>, In, E, R>(
52
52
  )
53
53
 
54
54
  /** @internal */
55
- export const autoFromConfig = <Out extends Context.Tag<any, any>, In, E, R>(
55
+ export const autoFromConfig = <Out extends Context.Tag<any, any>, E, In, R>(
56
56
  tag: Out,
57
57
  options: {
58
58
  readonly layer: Layer.Layer<Context.Tag.Identifier<Out>, E, In>
59
- readonly scheduleFromConfig: (context: Context.Context<In>) => Schedule.Schedule<R, unknown, unknown>
59
+ readonly scheduleFromConfig: (context: Context.Context<In>) => Schedule.Schedule<unknown, unknown, R>
60
60
  }
61
61
  ): Layer.Layer<Reloadable.Reloadable<Context.Tag.Identifier<Out>>, E, R | In> =>
62
62
  _layer.scoped(
@@ -24,9 +24,9 @@ const resourceVariance = {
24
24
  }
25
25
 
26
26
  /** @internal */
27
- export const auto = <A, E, R, R2, Out>(
27
+ export const auto = <A, E, R, Out, R2>(
28
28
  acquire: Effect.Effect<A, E, R>,
29
- policy: Schedule.Schedule<R2, unknown, Out>
29
+ policy: Schedule.Schedule<Out, unknown, R2>
30
30
  ): Effect.Effect<Resource.Resource<A, E>, never, R | R2 | Scope.Scope> =>
31
31
  core.tap(manual(acquire), (manual) =>
32
32
  fiberRuntime.acquireRelease(
@@ -22,6 +22,7 @@ import * as core from "./core.js"
22
22
  import * as executionStrategy from "./executionStrategy.js"
23
23
  import * as FiberRuntime from "./fiberRuntime.js"
24
24
  import * as fiberScope from "./fiberScope.js"
25
+ import { internalize } from "./internalize.js"
25
26
  import * as OpCodes from "./opCodes/effect.js"
26
27
  import * as runtimeFlags from "./runtimeFlags.js"
27
28
  import * as _supervisor from "./supervisor.js"
@@ -450,22 +451,34 @@ export const unsafeRunSyncExitEffect = unsafeRunSyncExit(defaultRuntime)
450
451
  // circular with Effect
451
452
 
452
453
  /** @internal */
453
- export const asyncEffect = <A, E, R, X, E2, R2>(
454
- register: (callback: (_: Effect.Effect<A, E, R>) => void) => Effect.Effect<X, E2, R2>
455
- ): Effect.Effect<A, E | E2, R | R2> =>
456
- core.flatMap(
457
- core.deferredMake<A, E | E2>(),
458
- (deferred) =>
459
- core.flatMap(runtime<R | R2>(), (runtime) =>
460
- core.uninterruptibleMask((restore) =>
461
- core.zipRight(
462
- FiberRuntime.fork(restore(
463
- core.catchAllCause(
464
- register((cb) => unsafeRunCallback(runtime)(core.intoDeferred(cb, deferred))),
465
- (cause) => core.deferredFailCause(deferred, cause)
466
- )
467
- )),
468
- restore(core.deferredAwait(deferred))
469
- )
470
- ))
471
- )
454
+ export const asyncEffect = <A, E, R, R3, E2, R2>(
455
+ register: (
456
+ callback: (_: Effect.Effect<A, E, R>) => void
457
+ ) => Effect.Effect<Effect.Effect<void, never, R3> | void, E2, R2>
458
+ ): Effect.Effect<A, E | E2, R | R2 | R3> =>
459
+ core.suspend(() => {
460
+ internalize(register)
461
+ let cleanup: Effect.Effect<void, never, R3> | void = undefined
462
+ return core.flatMap(
463
+ core.deferredMake<A, E | E2>(),
464
+ (deferred) =>
465
+ core.flatMap(runtime<R | R2 | R3>(), (runtime) =>
466
+ core.uninterruptibleMask((restore) =>
467
+ core.zipRight(
468
+ FiberRuntime.fork(restore(
469
+ core.matchCauseEffect(
470
+ register((cb) => unsafeRunCallback(runtime)(core.intoDeferred(cb, deferred))),
471
+ {
472
+ onFailure: (cause) => core.deferredFailCause(deferred, cause),
473
+ onSuccess: (cleanup_) => {
474
+ cleanup = cleanup_
475
+ return core.unit
476
+ }
477
+ }
478
+ )
479
+ )),
480
+ restore(core.onInterrupt(core.deferredAwait(deferred), () => cleanup ?? core.unit))
481
+ )
482
+ ))
483
+ )
484
+ })