effect 3.10.18 → 3.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (448) hide show
  1. package/dist/cjs/Array.js +206 -0
  2. package/dist/cjs/Array.js.map +1 -1
  3. package/dist/cjs/BigDecimal.js +181 -24
  4. package/dist/cjs/BigDecimal.js.map +1 -1
  5. package/dist/cjs/BigInt.js +54 -0
  6. package/dist/cjs/BigInt.js.map +1 -1
  7. package/dist/cjs/Boolean.js +24 -0
  8. package/dist/cjs/Boolean.js.map +1 -1
  9. package/dist/cjs/Brand.js +4 -0
  10. package/dist/cjs/Brand.js.map +1 -1
  11. package/dist/cjs/Channel.js +44 -4
  12. package/dist/cjs/Channel.js.map +1 -1
  13. package/dist/cjs/Chunk.js +8 -0
  14. package/dist/cjs/Chunk.js.map +1 -1
  15. package/dist/cjs/Config.js +10 -1
  16. package/dist/cjs/Config.js.map +1 -1
  17. package/dist/cjs/Context.js +50 -1
  18. package/dist/cjs/Context.js.map +1 -1
  19. package/dist/cjs/Cron.js +81 -67
  20. package/dist/cjs/Cron.js.map +1 -1
  21. package/dist/cjs/Data.js +14 -0
  22. package/dist/cjs/Data.js.map +1 -1
  23. package/dist/cjs/DateTime.js +178 -664
  24. package/dist/cjs/DateTime.js.map +1 -1
  25. package/dist/cjs/Duration.js +2 -0
  26. package/dist/cjs/Duration.js.map +1 -1
  27. package/dist/cjs/Effect.js +296 -4
  28. package/dist/cjs/Effect.js.map +1 -1
  29. package/dist/cjs/Either.js +38 -2
  30. package/dist/cjs/Either.js.map +1 -1
  31. package/dist/cjs/FiberHandle.js +6 -0
  32. package/dist/cjs/FiberHandle.js.map +1 -1
  33. package/dist/cjs/FiberMap.js +6 -0
  34. package/dist/cjs/FiberMap.js.map +1 -1
  35. package/dist/cjs/FiberSet.js +6 -0
  36. package/dist/cjs/FiberSet.js.map +1 -1
  37. package/dist/cjs/Function.js +34 -0
  38. package/dist/cjs/Function.js.map +1 -1
  39. package/dist/cjs/GlobalValue.js +2 -0
  40. package/dist/cjs/GlobalValue.js.map +1 -1
  41. package/dist/cjs/HashMap.js.map +1 -1
  42. package/dist/cjs/Inspectable.js +8 -4
  43. package/dist/cjs/Inspectable.js.map +1 -1
  44. package/dist/cjs/Iterable.js +18 -0
  45. package/dist/cjs/Iterable.js.map +1 -1
  46. package/dist/cjs/JSONSchema.js.map +1 -1
  47. package/dist/cjs/List.js +4 -0
  48. package/dist/cjs/List.js.map +1 -1
  49. package/dist/cjs/Logger.js +26 -0
  50. package/dist/cjs/Logger.js.map +1 -1
  51. package/dist/cjs/Mailbox.js +2 -0
  52. package/dist/cjs/Mailbox.js.map +1 -1
  53. package/dist/cjs/ManagedRuntime.js +2 -0
  54. package/dist/cjs/ManagedRuntime.js.map +1 -1
  55. package/dist/cjs/Metric.js +10 -0
  56. package/dist/cjs/Metric.js.map +1 -1
  57. package/dist/cjs/Micro.js +1104 -1069
  58. package/dist/cjs/Micro.js.map +1 -1
  59. package/dist/cjs/Number.js +44 -0
  60. package/dist/cjs/Number.js.map +1 -1
  61. package/dist/cjs/Option.js +70 -0
  62. package/dist/cjs/Option.js.map +1 -1
  63. package/dist/cjs/Order.js +2 -0
  64. package/dist/cjs/Order.js.map +1 -1
  65. package/dist/cjs/Ordering.js +4 -0
  66. package/dist/cjs/Ordering.js.map +1 -1
  67. package/dist/cjs/Predicate.js +68 -0
  68. package/dist/cjs/Predicate.js.map +1 -1
  69. package/dist/cjs/Random.js +4 -0
  70. package/dist/cjs/Random.js.map +1 -1
  71. package/dist/cjs/RateLimiter.js +4 -0
  72. package/dist/cjs/RateLimiter.js.map +1 -1
  73. package/dist/cjs/RcMap.js +2 -0
  74. package/dist/cjs/RcMap.js.map +1 -1
  75. package/dist/cjs/RcRef.js +2 -0
  76. package/dist/cjs/RcRef.js.map +1 -1
  77. package/dist/cjs/Record.js +56 -0
  78. package/dist/cjs/Record.js.map +1 -1
  79. package/dist/cjs/Redacted.js +8 -0
  80. package/dist/cjs/Redacted.js.map +1 -1
  81. package/dist/cjs/RegExp.js +4 -0
  82. package/dist/cjs/RegExp.js.map +1 -1
  83. package/dist/cjs/Request.js +4 -0
  84. package/dist/cjs/Request.js.map +1 -1
  85. package/dist/cjs/RequestResolver.js +2 -0
  86. package/dist/cjs/RequestResolver.js.map +1 -1
  87. package/dist/cjs/Runtime.js +6 -0
  88. package/dist/cjs/Runtime.js.map +1 -1
  89. package/dist/cjs/STM.js.map +1 -1
  90. package/dist/cjs/Schema.js +91 -8
  91. package/dist/cjs/Schema.js.map +1 -1
  92. package/dist/cjs/Sink.js +9 -1
  93. package/dist/cjs/Sink.js.map +1 -1
  94. package/dist/cjs/Stream.js +179 -7
  95. package/dist/cjs/Stream.js.map +1 -1
  96. package/dist/cjs/String.js +62 -0
  97. package/dist/cjs/String.js.map +1 -1
  98. package/dist/cjs/Struct.js +12 -0
  99. package/dist/cjs/Struct.js.map +1 -1
  100. package/dist/cjs/Symbol.js +2 -0
  101. package/dist/cjs/Symbol.js.map +1 -1
  102. package/dist/cjs/Trie.js +56 -0
  103. package/dist/cjs/Trie.js.map +1 -1
  104. package/dist/cjs/Tuple.js +18 -0
  105. package/dist/cjs/Tuple.js.map +1 -1
  106. package/dist/cjs/Utils.js +7 -1
  107. package/dist/cjs/Utils.js.map +1 -1
  108. package/dist/cjs/internal/channel/channelExecutor.js +5 -9
  109. package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
  110. package/dist/cjs/internal/channel.js +156 -130
  111. package/dist/cjs/internal/channel.js.map +1 -1
  112. package/dist/cjs/internal/config.js +13 -4
  113. package/dist/cjs/internal/config.js.map +1 -1
  114. package/dist/cjs/internal/context.js +46 -3
  115. package/dist/cjs/internal/context.js.map +1 -1
  116. package/dist/cjs/internal/dateTime.js +747 -0
  117. package/dist/cjs/internal/dateTime.js.map +1 -0
  118. package/dist/cjs/internal/fiberRuntime.js +34 -11
  119. package/dist/cjs/internal/fiberRuntime.js.map +1 -1
  120. package/dist/cjs/internal/groupBy.js +9 -3
  121. package/dist/cjs/internal/groupBy.js.map +1 -1
  122. package/dist/cjs/internal/layer.js +1 -1
  123. package/dist/cjs/internal/layer.js.map +1 -1
  124. package/dist/cjs/internal/mailbox.js +1 -1
  125. package/dist/cjs/internal/mailbox.js.map +1 -1
  126. package/dist/cjs/internal/sink.js +25 -21
  127. package/dist/cjs/internal/sink.js.map +1 -1
  128. package/dist/cjs/internal/stream.js +70 -71
  129. package/dist/cjs/internal/stream.js.map +1 -1
  130. package/dist/cjs/internal/version.js +1 -1
  131. package/dist/cjs/internal/version.js.map +1 -1
  132. package/dist/dts/Array.d.ts +534 -0
  133. package/dist/dts/Array.d.ts.map +1 -1
  134. package/dist/dts/BigDecimal.d.ts +172 -1
  135. package/dist/dts/BigDecimal.d.ts.map +1 -1
  136. package/dist/dts/BigInt.d.ts +114 -0
  137. package/dist/dts/BigInt.d.ts.map +1 -1
  138. package/dist/dts/Boolean.d.ts +56 -0
  139. package/dist/dts/Boolean.d.ts.map +1 -1
  140. package/dist/dts/Brand.d.ts +6 -0
  141. package/dist/dts/Brand.d.ts.map +1 -1
  142. package/dist/dts/Channel.d.ts +66 -5
  143. package/dist/dts/Channel.d.ts.map +1 -1
  144. package/dist/dts/Chunk.d.ts +30 -0
  145. package/dist/dts/Chunk.d.ts.map +1 -1
  146. package/dist/dts/Config.d.ts +25 -1
  147. package/dist/dts/Config.d.ts.map +1 -1
  148. package/dist/dts/Context.d.ts +155 -0
  149. package/dist/dts/Context.d.ts.map +1 -1
  150. package/dist/dts/Cron.d.ts +21 -6
  151. package/dist/dts/Cron.d.ts.map +1 -1
  152. package/dist/dts/Data.d.ts +26 -0
  153. package/dist/dts/Data.d.ts.map +1 -1
  154. package/dist/dts/DateTime.d.ts +192 -49
  155. package/dist/dts/DateTime.d.ts.map +1 -1
  156. package/dist/dts/Duration.d.ts +2 -0
  157. package/dist/dts/Duration.d.ts.map +1 -1
  158. package/dist/dts/Effect.d.ts +658 -1
  159. package/dist/dts/Effect.d.ts.map +1 -1
  160. package/dist/dts/Either.d.ts +84 -2
  161. package/dist/dts/Either.d.ts.map +1 -1
  162. package/dist/dts/FiberHandle.d.ts +6 -0
  163. package/dist/dts/FiberHandle.d.ts.map +1 -1
  164. package/dist/dts/FiberMap.d.ts +6 -0
  165. package/dist/dts/FiberMap.d.ts.map +1 -1
  166. package/dist/dts/FiberSet.d.ts +6 -0
  167. package/dist/dts/FiberSet.d.ts.map +1 -1
  168. package/dist/dts/Function.d.ts +50 -0
  169. package/dist/dts/Function.d.ts.map +1 -1
  170. package/dist/dts/GlobalValue.d.ts +2 -0
  171. package/dist/dts/GlobalValue.d.ts.map +1 -1
  172. package/dist/dts/HashMap.d.ts +6 -0
  173. package/dist/dts/HashMap.d.ts.map +1 -1
  174. package/dist/dts/Inspectable.d.ts.map +1 -1
  175. package/dist/dts/Iterable.d.ts +26 -0
  176. package/dist/dts/Iterable.d.ts.map +1 -1
  177. package/dist/dts/JSONSchema.d.ts +1 -0
  178. package/dist/dts/JSONSchema.d.ts.map +1 -1
  179. package/dist/dts/List.d.ts +20 -0
  180. package/dist/dts/List.d.ts.map +1 -1
  181. package/dist/dts/Logger.d.ts +34 -0
  182. package/dist/dts/Logger.d.ts.map +1 -1
  183. package/dist/dts/Mailbox.d.ts +2 -0
  184. package/dist/dts/Mailbox.d.ts.map +1 -1
  185. package/dist/dts/ManagedRuntime.d.ts +2 -0
  186. package/dist/dts/ManagedRuntime.d.ts.map +1 -1
  187. package/dist/dts/Metric.d.ts +18 -0
  188. package/dist/dts/Metric.d.ts.map +1 -1
  189. package/dist/dts/Micro.d.ts +880 -863
  190. package/dist/dts/Micro.d.ts.map +1 -1
  191. package/dist/dts/Number.d.ts +104 -0
  192. package/dist/dts/Number.d.ts.map +1 -1
  193. package/dist/dts/Option.d.ts +142 -0
  194. package/dist/dts/Option.d.ts.map +1 -1
  195. package/dist/dts/Order.d.ts +2 -0
  196. package/dist/dts/Order.d.ts.map +1 -1
  197. package/dist/dts/Ordering.d.ts +8 -0
  198. package/dist/dts/Ordering.d.ts.map +1 -1
  199. package/dist/dts/Predicate.d.ts +104 -0
  200. package/dist/dts/Predicate.d.ts.map +1 -1
  201. package/dist/dts/Random.d.ts +4 -0
  202. package/dist/dts/Random.d.ts.map +1 -1
  203. package/dist/dts/RateLimiter.d.ts +4 -0
  204. package/dist/dts/RateLimiter.d.ts.map +1 -1
  205. package/dist/dts/RcMap.d.ts +6 -0
  206. package/dist/dts/RcMap.d.ts.map +1 -1
  207. package/dist/dts/RcRef.d.ts +2 -0
  208. package/dist/dts/RcRef.d.ts.map +1 -1
  209. package/dist/dts/Record.d.ts +136 -0
  210. package/dist/dts/Record.d.ts.map +1 -1
  211. package/dist/dts/Redacted.d.ts +8 -0
  212. package/dist/dts/Redacted.d.ts.map +1 -1
  213. package/dist/dts/RegExp.d.ts +4 -0
  214. package/dist/dts/RegExp.d.ts.map +1 -1
  215. package/dist/dts/Request.d.ts +4 -0
  216. package/dist/dts/Request.d.ts.map +1 -1
  217. package/dist/dts/RequestResolver.d.ts +6 -0
  218. package/dist/dts/RequestResolver.d.ts.map +1 -1
  219. package/dist/dts/Runtime.d.ts +18 -0
  220. package/dist/dts/Runtime.d.ts.map +1 -1
  221. package/dist/dts/STM.d.ts +2 -0
  222. package/dist/dts/STM.d.ts.map +1 -1
  223. package/dist/dts/Schema.d.ts +90 -0
  224. package/dist/dts/Schema.d.ts.map +1 -1
  225. package/dist/dts/Sink.d.ts +8 -0
  226. package/dist/dts/Sink.d.ts.map +1 -1
  227. package/dist/dts/Stream.d.ts +394 -32
  228. package/dist/dts/Stream.d.ts.map +1 -1
  229. package/dist/dts/String.d.ts +94 -0
  230. package/dist/dts/String.d.ts.map +1 -1
  231. package/dist/dts/Struct.d.ts +24 -0
  232. package/dist/dts/Struct.d.ts.map +1 -1
  233. package/dist/dts/Symbol.d.ts +2 -0
  234. package/dist/dts/Symbol.d.ts.map +1 -1
  235. package/dist/dts/Trie.d.ts +132 -0
  236. package/dist/dts/Trie.d.ts.map +1 -1
  237. package/dist/dts/Tuple.d.ts +42 -0
  238. package/dist/dts/Tuple.d.ts.map +1 -1
  239. package/dist/dts/Types.d.ts +24 -0
  240. package/dist/dts/Types.d.ts.map +1 -1
  241. package/dist/dts/Utils.d.ts +4 -0
  242. package/dist/dts/Utils.d.ts.map +1 -1
  243. package/dist/dts/internal/context.d.ts +1 -1
  244. package/dist/dts/internal/context.d.ts.map +1 -1
  245. package/dist/dts/internal/dateTime.d.ts +2 -0
  246. package/dist/dts/internal/dateTime.d.ts.map +1 -0
  247. package/dist/dts/internal/fiberRuntime.d.ts.map +1 -1
  248. package/dist/dts/internal/stream.d.ts.map +1 -1
  249. package/dist/esm/Array.js +208 -0
  250. package/dist/esm/Array.js.map +1 -1
  251. package/dist/esm/BigDecimal.js +175 -20
  252. package/dist/esm/BigDecimal.js.map +1 -1
  253. package/dist/esm/BigInt.js +54 -0
  254. package/dist/esm/BigInt.js.map +1 -1
  255. package/dist/esm/Boolean.js +24 -0
  256. package/dist/esm/Boolean.js.map +1 -1
  257. package/dist/esm/Brand.js +4 -0
  258. package/dist/esm/Brand.js.map +1 -1
  259. package/dist/esm/Channel.js +42 -2
  260. package/dist/esm/Channel.js.map +1 -1
  261. package/dist/esm/Chunk.js +8 -0
  262. package/dist/esm/Chunk.js.map +1 -1
  263. package/dist/esm/Config.js +9 -0
  264. package/dist/esm/Config.js.map +1 -1
  265. package/dist/esm/Context.js +49 -0
  266. package/dist/esm/Context.js.map +1 -1
  267. package/dist/esm/Cron.js +81 -67
  268. package/dist/esm/Cron.js.map +1 -1
  269. package/dist/esm/Data.js +16 -0
  270. package/dist/esm/Data.js.map +1 -1
  271. package/dist/esm/DateTime.js +176 -627
  272. package/dist/esm/DateTime.js.map +1 -1
  273. package/dist/esm/Duration.js +2 -0
  274. package/dist/esm/Duration.js.map +1 -1
  275. package/dist/esm/Effect.js +297 -0
  276. package/dist/esm/Effect.js.map +1 -1
  277. package/dist/esm/Either.js +40 -2
  278. package/dist/esm/Either.js.map +1 -1
  279. package/dist/esm/FiberHandle.js +6 -0
  280. package/dist/esm/FiberHandle.js.map +1 -1
  281. package/dist/esm/FiberMap.js +6 -0
  282. package/dist/esm/FiberMap.js.map +1 -1
  283. package/dist/esm/FiberSet.js +6 -0
  284. package/dist/esm/FiberSet.js.map +1 -1
  285. package/dist/esm/Function.js +34 -0
  286. package/dist/esm/Function.js.map +1 -1
  287. package/dist/esm/GlobalValue.js +2 -0
  288. package/dist/esm/GlobalValue.js.map +1 -1
  289. package/dist/esm/HashMap.js.map +1 -1
  290. package/dist/esm/Inspectable.js +8 -4
  291. package/dist/esm/Inspectable.js.map +1 -1
  292. package/dist/esm/Iterable.js +18 -0
  293. package/dist/esm/Iterable.js.map +1 -1
  294. package/dist/esm/JSONSchema.js.map +1 -1
  295. package/dist/esm/List.js +4 -0
  296. package/dist/esm/List.js.map +1 -1
  297. package/dist/esm/Logger.js +26 -0
  298. package/dist/esm/Logger.js.map +1 -1
  299. package/dist/esm/Mailbox.js +2 -0
  300. package/dist/esm/Mailbox.js.map +1 -1
  301. package/dist/esm/ManagedRuntime.js +2 -0
  302. package/dist/esm/ManagedRuntime.js.map +1 -1
  303. package/dist/esm/Metric.js +10 -0
  304. package/dist/esm/Metric.js.map +1 -1
  305. package/dist/esm/Micro.js +1077 -1037
  306. package/dist/esm/Micro.js.map +1 -1
  307. package/dist/esm/Number.js +44 -0
  308. package/dist/esm/Number.js.map +1 -1
  309. package/dist/esm/Option.js +72 -0
  310. package/dist/esm/Option.js.map +1 -1
  311. package/dist/esm/Order.js +2 -0
  312. package/dist/esm/Order.js.map +1 -1
  313. package/dist/esm/Ordering.js +4 -0
  314. package/dist/esm/Ordering.js.map +1 -1
  315. package/dist/esm/Predicate.js +68 -0
  316. package/dist/esm/Predicate.js.map +1 -1
  317. package/dist/esm/Random.js +4 -0
  318. package/dist/esm/Random.js.map +1 -1
  319. package/dist/esm/RateLimiter.js +4 -0
  320. package/dist/esm/RateLimiter.js.map +1 -1
  321. package/dist/esm/RcMap.js +2 -0
  322. package/dist/esm/RcMap.js.map +1 -1
  323. package/dist/esm/RcRef.js +2 -0
  324. package/dist/esm/RcRef.js.map +1 -1
  325. package/dist/esm/Record.js +56 -0
  326. package/dist/esm/Record.js.map +1 -1
  327. package/dist/esm/Redacted.js +8 -0
  328. package/dist/esm/Redacted.js.map +1 -1
  329. package/dist/esm/RegExp.js +4 -0
  330. package/dist/esm/RegExp.js.map +1 -1
  331. package/dist/esm/Request.js +4 -0
  332. package/dist/esm/Request.js.map +1 -1
  333. package/dist/esm/RequestResolver.js +2 -0
  334. package/dist/esm/RequestResolver.js.map +1 -1
  335. package/dist/esm/Runtime.js +6 -0
  336. package/dist/esm/Runtime.js.map +1 -1
  337. package/dist/esm/STM.js.map +1 -1
  338. package/dist/esm/Schema.js +88 -0
  339. package/dist/esm/Schema.js.map +1 -1
  340. package/dist/esm/Sink.js +8 -0
  341. package/dist/esm/Sink.js.map +1 -1
  342. package/dist/esm/Stream.js +183 -5
  343. package/dist/esm/Stream.js.map +1 -1
  344. package/dist/esm/String.js +62 -0
  345. package/dist/esm/String.js.map +1 -1
  346. package/dist/esm/Struct.js +12 -0
  347. package/dist/esm/Struct.js.map +1 -1
  348. package/dist/esm/Symbol.js +2 -0
  349. package/dist/esm/Symbol.js.map +1 -1
  350. package/dist/esm/Trie.js +56 -0
  351. package/dist/esm/Trie.js.map +1 -1
  352. package/dist/esm/Tuple.js +22 -0
  353. package/dist/esm/Tuple.js.map +1 -1
  354. package/dist/esm/Utils.js +5 -0
  355. package/dist/esm/Utils.js.map +1 -1
  356. package/dist/esm/internal/channel/channelExecutor.js +5 -7
  357. package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
  358. package/dist/esm/internal/channel.js +152 -129
  359. package/dist/esm/internal/channel.js.map +1 -1
  360. package/dist/esm/internal/config.js +11 -3
  361. package/dist/esm/internal/config.js.map +1 -1
  362. package/dist/esm/internal/context.js +42 -2
  363. package/dist/esm/internal/context.js.map +1 -1
  364. package/dist/esm/internal/dateTime.js +704 -0
  365. package/dist/esm/internal/dateTime.js.map +1 -0
  366. package/dist/esm/internal/fiberRuntime.js +31 -9
  367. package/dist/esm/internal/fiberRuntime.js.map +1 -1
  368. package/dist/esm/internal/groupBy.js +9 -3
  369. package/dist/esm/internal/groupBy.js.map +1 -1
  370. package/dist/esm/internal/layer.js +1 -1
  371. package/dist/esm/internal/layer.js.map +1 -1
  372. package/dist/esm/internal/mailbox.js +1 -1
  373. package/dist/esm/internal/mailbox.js.map +1 -1
  374. package/dist/esm/internal/sink.js +23 -20
  375. package/dist/esm/internal/sink.js.map +1 -1
  376. package/dist/esm/internal/stream.js +66 -69
  377. package/dist/esm/internal/stream.js.map +1 -1
  378. package/dist/esm/internal/version.js +1 -1
  379. package/dist/esm/internal/version.js.map +1 -1
  380. package/package.json +1 -1
  381. package/src/Array.ts +534 -0
  382. package/src/BigDecimal.ts +247 -21
  383. package/src/BigInt.ts +114 -0
  384. package/src/Boolean.ts +56 -0
  385. package/src/Brand.ts +6 -0
  386. package/src/Channel.ts +81 -5
  387. package/src/Chunk.ts +32 -0
  388. package/src/Config.ts +26 -1
  389. package/src/Context.ts +163 -0
  390. package/src/Cron.ts +91 -68
  391. package/src/Data.ts +26 -0
  392. package/src/DateTime.ts +307 -757
  393. package/src/Duration.ts +2 -0
  394. package/src/Effect.ts +910 -1
  395. package/src/Either.ts +84 -2
  396. package/src/FiberHandle.ts +6 -0
  397. package/src/FiberMap.ts +6 -0
  398. package/src/FiberSet.ts +6 -0
  399. package/src/Function.ts +50 -0
  400. package/src/GlobalValue.ts +2 -0
  401. package/src/HashMap.ts +6 -0
  402. package/src/Inspectable.ts +11 -7
  403. package/src/Iterable.ts +26 -0
  404. package/src/JSONSchema.ts +1 -0
  405. package/src/List.ts +24 -0
  406. package/src/Logger.ts +34 -0
  407. package/src/Mailbox.ts +2 -0
  408. package/src/ManagedRuntime.ts +2 -0
  409. package/src/Metric.ts +18 -0
  410. package/src/Micro.ts +2007 -1745
  411. package/src/Number.ts +104 -0
  412. package/src/Option.ts +142 -0
  413. package/src/Order.ts +2 -0
  414. package/src/Ordering.ts +8 -0
  415. package/src/Predicate.ts +104 -0
  416. package/src/Random.ts +4 -0
  417. package/src/RateLimiter.ts +4 -0
  418. package/src/RcMap.ts +6 -0
  419. package/src/RcRef.ts +2 -0
  420. package/src/Record.ts +136 -0
  421. package/src/Redacted.ts +8 -0
  422. package/src/RegExp.ts +4 -0
  423. package/src/Request.ts +4 -0
  424. package/src/RequestResolver.ts +6 -0
  425. package/src/Runtime.ts +18 -0
  426. package/src/STM.ts +2 -0
  427. package/src/Schema.ts +124 -0
  428. package/src/Sink.ts +11 -0
  429. package/src/Stream.ts +399 -44
  430. package/src/String.ts +94 -0
  431. package/src/Struct.ts +24 -0
  432. package/src/Symbol.ts +2 -0
  433. package/src/Trie.ts +132 -0
  434. package/src/Tuple.ts +42 -0
  435. package/src/Types.ts +24 -0
  436. package/src/Utils.ts +8 -0
  437. package/src/internal/channel/channelExecutor.ts +37 -33
  438. package/src/internal/channel.ts +504 -467
  439. package/src/internal/config.ts +18 -6
  440. package/src/internal/context.ts +56 -4
  441. package/src/internal/dateTime.ts +1126 -0
  442. package/src/internal/fiberRuntime.ts +35 -16
  443. package/src/internal/groupBy.ts +13 -22
  444. package/src/internal/layer.ts +5 -8
  445. package/src/internal/mailbox.ts +6 -4
  446. package/src/internal/sink.ts +55 -35
  447. package/src/internal/stream.ts +299 -299
  448. package/src/internal/version.ts +1 -1
package/src/Tuple.ts CHANGED
@@ -23,9 +23,11 @@ export interface TupleTypeLambda extends TypeLambda {
23
23
  * @param elements - The list of elements to create the tuple from.
24
24
  *
25
25
  * @example
26
+ * ```ts
26
27
  * import { make } from "effect/Tuple"
27
28
  *
28
29
  * assert.deepStrictEqual(make(1, 'hello', true), [1, 'hello', true])
30
+ * ```
29
31
  *
30
32
  * @category constructors
31
33
  * @since 2.0.0
@@ -38,9 +40,11 @@ export const make = <A extends ReadonlyArray<any>>(...elements: A): A => element
38
40
  * @param self - A tuple of length `2`.
39
41
  *
40
42
  * @example
43
+ * ```ts
41
44
  * import { getFirst } from "effect/Tuple"
42
45
  *
43
46
  * assert.deepStrictEqual(getFirst(["hello", 42]), "hello")
47
+ * ```
44
48
  *
45
49
  * @category getters
46
50
  * @since 2.0.0
@@ -53,9 +57,11 @@ export const getFirst = <L, R>(self: readonly [L, R]): L => self[0]
53
57
  * @param self - A tuple of length `2`.
54
58
  *
55
59
  * @example
60
+ * ```ts
56
61
  * import { getSecond } from "effect/Tuple"
57
62
  *
58
63
  * assert.deepStrictEqual(getSecond(["hello", 42]), 42)
64
+ * ```
59
65
  *
60
66
  * @category getters
61
67
  * @since 2.0.0
@@ -69,6 +75,7 @@ export const getSecond = <L, R>(self: readonly [L, R]): R => self[1]
69
75
  * @param f - The function to transform elements of the tuple.
70
76
  *
71
77
  * @example
78
+ * ```ts
72
79
  * import { pipe, Tuple } from "effect"
73
80
  *
74
81
  * const result = pipe(
@@ -76,6 +83,7 @@ export const getSecond = <L, R>(self: readonly [L, R]): R => self[1]
76
83
  * Tuple.map((el) => el.toString().toUpperCase())
77
84
  * )
78
85
  * assert.deepStrictEqual(result, ['A', '1', 'FALSE'])
86
+ * ```
79
87
  *
80
88
  * @category mapping
81
89
  * @since 3.9.0
@@ -88,6 +96,7 @@ export const map: {
88
96
  * @param f - The function to transform elements of the tuple.
89
97
  *
90
98
  * @example
99
+ * ```ts
91
100
  * import { pipe, Tuple } from "effect"
92
101
  *
93
102
  * const result = pipe(
@@ -95,6 +104,7 @@ export const map: {
95
104
  * Tuple.map((el) => el.toString().toUpperCase())
96
105
  * )
97
106
  * assert.deepStrictEqual(result, ['A', '1', 'FALSE'])
107
+ * ```
98
108
  *
99
109
  * @category mapping
100
110
  * @since 3.9.0
@@ -107,6 +117,7 @@ export const map: {
107
117
  * @param f - The function to transform elements of the tuple.
108
118
  *
109
119
  * @example
120
+ * ```ts
110
121
  * import { pipe, Tuple } from "effect"
111
122
  *
112
123
  * const result = pipe(
@@ -114,6 +125,7 @@ export const map: {
114
125
  * Tuple.map((el) => el.toString().toUpperCase())
115
126
  * )
116
127
  * assert.deepStrictEqual(result, ['A', '1', 'FALSE'])
128
+ * ```
117
129
  *
118
130
  * @category mapping
119
131
  * @since 3.9.0
@@ -135,12 +147,14 @@ export const map: {
135
147
  * @param g - The function to transform the second element of the tuple.
136
148
  *
137
149
  * @example
150
+ * ```ts
138
151
  * import { mapBoth } from "effect/Tuple"
139
152
  *
140
153
  * assert.deepStrictEqual(
141
154
  * mapBoth(["hello", 42], { onFirst: s => s.toUpperCase(), onSecond: n => n.toString() }),
142
155
  * ["HELLO", "42"]
143
156
  * )
157
+ * ```
144
158
  *
145
159
  * @category mapping
146
160
  * @since 2.0.0
@@ -154,12 +168,14 @@ export const mapBoth: {
154
168
  * @param g - The function to transform the second element of the tuple.
155
169
  *
156
170
  * @example
171
+ * ```ts
157
172
  * import { mapBoth } from "effect/Tuple"
158
173
  *
159
174
  * assert.deepStrictEqual(
160
175
  * mapBoth(["hello", 42], { onFirst: s => s.toUpperCase(), onSecond: n => n.toString() }),
161
176
  * ["HELLO", "42"]
162
177
  * )
178
+ * ```
163
179
  *
164
180
  * @category mapping
165
181
  * @since 2.0.0
@@ -178,12 +194,14 @@ export const mapBoth: {
178
194
  * @param g - The function to transform the second element of the tuple.
179
195
  *
180
196
  * @example
197
+ * ```ts
181
198
  * import { mapBoth } from "effect/Tuple"
182
199
  *
183
200
  * assert.deepStrictEqual(
184
201
  * mapBoth(["hello", 42], { onFirst: s => s.toUpperCase(), onSecond: n => n.toString() }),
185
202
  * ["HELLO", "42"]
186
203
  * )
204
+ * ```
187
205
  *
188
206
  * @category mapping
189
207
  * @since 2.0.0
@@ -213,12 +231,14 @@ export const mapBoth: {
213
231
  * @param f - The function to transform the first element of the tuple.
214
232
  *
215
233
  * @example
234
+ * ```ts
216
235
  * import { mapFirst } from "effect/Tuple"
217
236
  *
218
237
  * assert.deepStrictEqual(
219
238
  * mapFirst(["hello", 42], s => s.toUpperCase()),
220
239
  * ["HELLO", 42]
221
240
  * )
241
+ * ```
222
242
  *
223
243
  * @category mapping
224
244
  * @since 2.0.0
@@ -231,12 +251,14 @@ export const mapFirst: {
231
251
  * @param f - The function to transform the first element of the tuple.
232
252
  *
233
253
  * @example
254
+ * ```ts
234
255
  * import { mapFirst } from "effect/Tuple"
235
256
  *
236
257
  * assert.deepStrictEqual(
237
258
  * mapFirst(["hello", 42], s => s.toUpperCase()),
238
259
  * ["HELLO", 42]
239
260
  * )
261
+ * ```
240
262
  *
241
263
  * @category mapping
242
264
  * @since 2.0.0
@@ -249,12 +271,14 @@ export const mapFirst: {
249
271
  * @param f - The function to transform the first element of the tuple.
250
272
  *
251
273
  * @example
274
+ * ```ts
252
275
  * import { mapFirst } from "effect/Tuple"
253
276
  *
254
277
  * assert.deepStrictEqual(
255
278
  * mapFirst(["hello", 42], s => s.toUpperCase()),
256
279
  * ["HELLO", 42]
257
280
  * )
281
+ * ```
258
282
  *
259
283
  * @category mapping
260
284
  * @since 2.0.0
@@ -269,12 +293,14 @@ export const mapFirst: {
269
293
  * @param f - The function to transform the second element of the tuple.
270
294
  *
271
295
  * @example
296
+ * ```ts
272
297
  * import { mapSecond } from "effect/Tuple"
273
298
  *
274
299
  * assert.deepStrictEqual(
275
300
  * mapSecond(["hello", 42], n => n.toString()),
276
301
  * ["hello", "42"]
277
302
  * )
303
+ * ```
278
304
  *
279
305
  * @category mapping
280
306
  * @since 2.0.0
@@ -287,12 +313,14 @@ export const mapSecond: {
287
313
  * @param f - The function to transform the second element of the tuple.
288
314
  *
289
315
  * @example
316
+ * ```ts
290
317
  * import { mapSecond } from "effect/Tuple"
291
318
  *
292
319
  * assert.deepStrictEqual(
293
320
  * mapSecond(["hello", 42], n => n.toString()),
294
321
  * ["hello", "42"]
295
322
  * )
323
+ * ```
296
324
  *
297
325
  * @category mapping
298
326
  * @since 2.0.0
@@ -305,12 +333,14 @@ export const mapSecond: {
305
333
  * @param f - The function to transform the second element of the tuple.
306
334
  *
307
335
  * @example
336
+ * ```ts
308
337
  * import { mapSecond } from "effect/Tuple"
309
338
  *
310
339
  * assert.deepStrictEqual(
311
340
  * mapSecond(["hello", 42], n => n.toString()),
312
341
  * ["hello", "42"]
313
342
  * )
343
+ * ```
314
344
  *
315
345
  * @category mapping
316
346
  * @since 2.0.0
@@ -324,9 +354,11 @@ export const mapSecond: {
324
354
  * @param self - A tuple of length `2`.
325
355
  *
326
356
  * @example
357
+ * ```ts
327
358
  * import { swap } from "effect/Tuple"
328
359
  *
329
360
  * assert.deepStrictEqual(swap(["hello", 42]), [42, "hello"])
361
+ * ```
330
362
  *
331
363
  * @since 2.0.0
332
364
  */
@@ -388,9 +420,11 @@ export const appendElement: {
388
420
  * @param index - The index of the element to retrieve.
389
421
  *
390
422
  * @example
423
+ * ```ts
391
424
  * import { Tuple } from "effect"
392
425
  *
393
426
  * assert.deepStrictEqual(Tuple.at([1, 'hello', true], 1), 'hello')
427
+ * ```
394
428
  *
395
429
  * @category getters
396
430
  * @since 3.4.0
@@ -403,9 +437,11 @@ export const at: {
403
437
  * @param index - The index of the element to retrieve.
404
438
  *
405
439
  * @example
440
+ * ```ts
406
441
  * import { Tuple } from "effect"
407
442
  *
408
443
  * assert.deepStrictEqual(Tuple.at([1, 'hello', true], 1), 'hello')
444
+ * ```
409
445
  *
410
446
  * @category getters
411
447
  * @since 3.4.0
@@ -418,9 +454,11 @@ export const at: {
418
454
  * @param index - The index of the element to retrieve.
419
455
  *
420
456
  * @example
457
+ * ```ts
421
458
  * import { Tuple } from "effect"
422
459
  *
423
460
  * assert.deepStrictEqual(Tuple.at([1, 'hello', true], 1), 'hello')
461
+ * ```
424
462
  *
425
463
  * @category getters
426
464
  * @since 3.4.0
@@ -438,6 +476,7 @@ export {
438
476
  * @param n - The exact number of elements that the `Array` should have to be considered a `TupleOf`.
439
477
  *
440
478
  * @example
479
+ * ```ts
441
480
  * import { isTupleOf } from "effect/Tuple"
442
481
  *
443
482
  * assert.deepStrictEqual(isTupleOf([1, 2, 3], 3), true);
@@ -450,6 +489,7 @@ export {
450
489
  * // ^? [number, number, number]
451
490
  * }
452
491
  *
492
+ * ```
453
493
  * @category guards
454
494
  * @since 3.3.0
455
495
  */
@@ -463,6 +503,7 @@ export {
463
503
  * @param n - The minimum number of elements that the `Array` should have to be considered a `TupleOfAtLeast`.
464
504
  *
465
505
  * @example
506
+ * ```ts
466
507
  * import { isTupleOfAtLeast } from "effect/Tuple"
467
508
  *
468
509
  * assert.deepStrictEqual(isTupleOfAtLeast([1, 2, 3], 3), true);
@@ -475,6 +516,7 @@ export {
475
516
  * // ^? [number, number, number, ...number[]]
476
517
  * }
477
518
  *
519
+ * ```
478
520
  * @category guards
479
521
  * @since 3.3.0
480
522
  */
package/src/Types.ts CHANGED
@@ -15,6 +15,7 @@ type _TupleOf<T, N extends number, R extends Array<unknown>> = R["length"] exten
15
15
  * @typeParam T - The type of elements in the tuple.
16
16
  *
17
17
  * @example
18
+ * ```ts
18
19
  * import { TupleOf } from "effect/Types"
19
20
  *
20
21
  * // A tuple with exactly 3 numbers
@@ -23,6 +24,7 @@ type _TupleOf<T, N extends number, R extends Array<unknown>> = R["length"] exten
23
24
  * const example2: TupleOf<3, number> = [1, 2]; // invalid
24
25
  * // @ts-expect-error
25
26
  * const example3: TupleOf<3, number> = [1, 2, 3, 4]; // invalid
27
+ * ```
26
28
  *
27
29
  * @category tuples
28
30
  * @since 3.3.0
@@ -39,6 +41,7 @@ export type TupleOf<N extends number, T> = N extends N ? number extends N ? Arra
39
41
  * @typeParam T - The type of elements in the tuple.
40
42
  *
41
43
  * @example
44
+ * ```ts
42
45
  * import { TupleOfAtLeast } from "effect/Types"
43
46
  *
44
47
  * // A tuple with at least 3 numbers
@@ -46,6 +49,7 @@ export type TupleOf<N extends number, T> = N extends N ? number extends N ? Arra
46
49
  * const example2: TupleOfAtLeast<3, number> = [1, 2, 3, 4, 5]; // valid
47
50
  * // @ts-expect-error
48
51
  * const example3: TupleOfAtLeast<3, number> = [1, 2]; // invalid
52
+ * ```
49
53
  *
50
54
  * @category tuples
51
55
  * @since 3.3.0
@@ -55,9 +59,11 @@ export type TupleOfAtLeast<N extends number, T> = [...TupleOf<N, T>, ...Array<T>
55
59
  /**
56
60
  * Returns the tags in a type.
57
61
  * @example
62
+ * ```ts
58
63
  * import type { Types } from "effect"
59
64
  *
60
65
  * type Res = Types.Tags<string | { _tag: "a" } | { _tag: "b" } > // "a" | "b"
66
+ * ```
61
67
  *
62
68
  * @category types
63
69
  * @since 2.0.0
@@ -67,9 +73,11 @@ export type Tags<E> = E extends { _tag: string } ? E["_tag"] : never
67
73
  /**
68
74
  * Excludes the tagged object from the type.
69
75
  * @example
76
+ * ```ts
70
77
  * import type { Types } from "effect"
71
78
  *
72
79
  * type Res = Types.ExcludeTag<string | { _tag: "a" } | { _tag: "b" }, "a"> // string | { _tag: "b" }
80
+ * ```
73
81
  *
74
82
  * @category types
75
83
  * @since 2.0.0
@@ -80,9 +88,11 @@ export type ExcludeTag<E, K extends Tags<E>> = Exclude<E, { _tag: K }>
80
88
  * Extracts the type of the given tag.
81
89
  *
82
90
  * @example
91
+ * ```ts
83
92
  * import type { Types } from "effect"
84
93
  *
85
94
  * type Res = Types.ExtractTag<{ _tag: "a", a: number } | { _tag: "b", b: number }, "b"> // { _tag: "b", b: number }
95
+ * ```
86
96
  *
87
97
  * @category types
88
98
  * @since 2.0.0
@@ -102,9 +112,11 @@ export type UnionToIntersection<T> = (T extends any ? (x: T) => any : never) ext
102
112
  * Simplifies the type signature of a type.
103
113
  *
104
114
  * @example
115
+ * ```ts
105
116
  * import type { Types } from "effect"
106
117
  *
107
118
  * type Res = Types.Simplify<{ a: number } & { b: number }> // { a: number; b: number; }
119
+ * ```
108
120
  *
109
121
  * @since 2.0.0
110
122
  * @category types
@@ -117,10 +129,12 @@ export type Simplify<A> = {
117
129
  * Determines if two types are equal.
118
130
  *
119
131
  * @example
132
+ * ```ts
120
133
  * import type { Types } from "effect"
121
134
  *
122
135
  * type Res1 = Types.Equals<{ a: number }, { a: number }> // true
123
136
  * type Res2 = Types.Equals<{ a: number }, { b: number }> // false
137
+ * ```
124
138
  *
125
139
  * @since 2.0.0
126
140
  * @category models
@@ -134,10 +148,12 @@ export type Equals<X, Y> = (<T>() => T extends X ? 1 : 2) extends <
134
148
  * Determines if a record contains any of the given keys.
135
149
  *
136
150
  * @example
151
+ * ```ts
137
152
  * import type { Types } from "effect"
138
153
  *
139
154
  * type Res1 = Types.Has<{ a: number }, "a" | "b"> // true
140
155
  * type Res2 = Types.Has<{ c: number }, "a" | "b"> // false
156
+ * ```
141
157
  *
142
158
  * @since 2.0.0
143
159
  * @category models
@@ -150,8 +166,10 @@ export type Has<A, Key extends string> = (Key extends infer K ? K extends keyof
150
166
  * Merges two object where the keys of the left object take precedence in the case of a conflict.
151
167
  *
152
168
  * @example
169
+ * ```ts
153
170
  * import type { Types } from "effect"
154
171
  * type MergeLeft = Types.MergeLeft<{ a: number, b: number; }, { a: string }> // { a: number; b: number; }
172
+ * ```
155
173
  *
156
174
  * @since 2.0.0
157
175
  * @category models
@@ -162,8 +180,10 @@ export type MergeLeft<Source, Target> = MergeRight<Target, Source>
162
180
  * Merges two object where the keys of the right object take precedence in the case of a conflict.
163
181
  *
164
182
  * @example
183
+ * ```ts
165
184
  * import type { Types } from "effect"
166
185
  * type MergeRight = Types.MergeRight<{ a: number, b: number; }, { a: string }> // { a: string; b: number; }
186
+ * ```
167
187
  *
168
188
  * @since 2.0.0
169
189
  * @category models
@@ -193,6 +213,7 @@ export type Concurrency = number | "unbounded" | "inherit"
193
213
  * Make all properties in `T` mutable. Supports arrays, tuples, and records as well.
194
214
  *
195
215
  * @example
216
+ * ```ts
196
217
  * import type { Types } from "effect"
197
218
  *
198
219
  * type MutableStruct = Types.Mutable<{ readonly a: string; readonly b: number }> // { a: string; b: number; }
@@ -202,6 +223,7 @@ export type Concurrency = number | "unbounded" | "inherit"
202
223
  * type MutableTuple = Types.Mutable<readonly [string, number]> // [string, number]
203
224
  *
204
225
  * type MutableRecord = Types.Mutable<{ readonly [_: string]: number }> // { [x: string]: number; }
226
+ * ```
205
227
  *
206
228
  * @since 2.0.0
207
229
  * @category types
@@ -214,6 +236,7 @@ export type Mutable<T> = {
214
236
  * Like `Types.Mutable`, but works recursively.
215
237
  *
216
238
  * @example
239
+ * ```ts
217
240
  * import type { Types } from "effect"
218
241
  *
219
242
  * type DeepMutableStruct = Types.DeepMutable<{
@@ -221,6 +244,7 @@ export type Mutable<T> = {
221
244
  * readonly b: readonly string[]
222
245
  * }>
223
246
  * // { a: string; b: string[] }
247
+ * ```
224
248
  *
225
249
  * @since 3.1.0
226
250
  * @category types
package/src/Utils.ts CHANGED
@@ -791,3 +791,11 @@ const tracingFunction = (name: string) => {
791
791
  * @category tracing
792
792
  */
793
793
  export const internalCall = tracingFunction("effect_internal_function")
794
+
795
+ const genConstructor = (function*() {}).constructor
796
+
797
+ /**
798
+ * @since 3.11.0
799
+ */
800
+ export const isGeneratorFunction = (u: unknown): u is (...args: Array<any>) => Generator<any, any, any> =>
801
+ isObject(u) && u.constructor === genConstructor
@@ -7,7 +7,7 @@ import * as Effect from "../../Effect.js"
7
7
  import * as ExecutionStrategy from "../../ExecutionStrategy.js"
8
8
  import * as Exit from "../../Exit.js"
9
9
  import * as Fiber from "../../Fiber.js"
10
- import { identity, pipe } from "../../Function.js"
10
+ import { dual, identity, pipe } from "../../Function.js"
11
11
  import * as Option from "../../Option.js"
12
12
  import * as Scope from "../../Scope.js"
13
13
  import type * as UpstreamPullStrategy from "../../UpstreamPullStrategy.js"
@@ -1092,14 +1092,18 @@ export const readUpstream = <A, E2, R, E>(
1092
1092
  }
1093
1093
 
1094
1094
  /** @internal */
1095
- export const run = <Env, InErr, InDone, OutErr, OutDone>(
1096
- self: Channel.Channel<never, unknown, OutErr, InErr, OutDone, InDone, Env>
1097
- ): Effect.Effect<OutDone, OutErr, Exclude<Env, Scope.Scope>> => pipe(runScoped(self), Effect.scoped)
1098
-
1099
- /** @internal */
1100
- export const runScoped = <Env, InErr, InDone, OutErr, OutDone>(
1101
- self: Channel.Channel<never, unknown, OutErr, InErr, OutDone, InDone, Env>
1102
- ): Effect.Effect<OutDone, OutErr, Env | Scope.Scope> => {
1095
+ export const runIn = dual<
1096
+ (scope: Scope.Scope) => <Env, InErr, InDone, OutErr, OutDone>(
1097
+ self: Channel.Channel<never, unknown, OutErr, InErr, OutDone, InDone, Env>
1098
+ ) => Effect.Effect<OutDone, OutErr, Env>,
1099
+ <Env, InErr, InDone, OutErr, OutDone>(
1100
+ self: Channel.Channel<never, unknown, OutErr, InErr, OutDone, InDone, Env>,
1101
+ scope: Scope.Scope
1102
+ ) => Effect.Effect<OutDone, OutErr, Env>
1103
+ >(2, <Env, InErr, InDone, OutErr, OutDone>(
1104
+ self: Channel.Channel<never, unknown, OutErr, InErr, OutDone, InDone, Env>,
1105
+ scope: Scope.Scope
1106
+ ) => {
1103
1107
  const run = (
1104
1108
  channelDeferred: Deferred.Deferred<OutDone, OutErr>,
1105
1109
  scopeDeferred: Deferred.Deferred<void>,
@@ -1109,8 +1113,7 @@ export const runScoped = <Env, InErr, InDone, OutErr, OutDone>(
1109
1113
  Effect.sync(() => new ChannelExecutor(self, void 0, identity)),
1110
1114
  (exec) =>
1111
1115
  Effect.suspend(() =>
1112
- pipe(
1113
- runScopedInterpret(exec.run() as ChannelState.ChannelState<OutErr, Env>, exec),
1116
+ runScopedInterpret(exec.run() as ChannelState.ChannelState<OutErr, Env>, exec).pipe(
1114
1117
  Effect.intoDeferred(channelDeferred),
1115
1118
  Effect.zipRight(Deferred.await(channelDeferred)),
1116
1119
  Effect.zipLeft(Deferred.await(scopeDeferred))
@@ -1128,33 +1131,34 @@ export const runScoped = <Env, InErr, InDone, OutErr, OutDone>(
1128
1131
  }
1129
1132
  )
1130
1133
  return Effect.uninterruptibleMask((restore) =>
1131
- Effect.flatMap(Effect.scope, (parent) =>
1132
- pipe(
1133
- Effect.all([
1134
- Scope.fork(parent, ExecutionStrategy.sequential),
1135
- Deferred.make<OutDone, OutErr>(),
1136
- Deferred.make<void>()
1137
- ]),
1138
- Effect.flatMap(([child, channelDeferred, scopeDeferred]) =>
1139
- pipe(
1140
- Effect.forkScoped(restore(run(channelDeferred, scopeDeferred, child))),
1141
- Effect.flatMap((fiber) =>
1142
- pipe(
1143
- Scope.addFinalizer(
1144
- parent,
1145
- Deferred.succeed(scopeDeferred, void 0).pipe(
1146
- Effect.zipRight(Effect.yieldNow())
1134
+ Effect.all([
1135
+ Scope.fork(scope, ExecutionStrategy.sequential),
1136
+ Deferred.make<OutDone, OutErr>(),
1137
+ Deferred.make<void>()
1138
+ ]).pipe(Effect.flatMap(([child, channelDeferred, scopeDeferred]) =>
1139
+ restore(run(channelDeferred, scopeDeferred, child)).pipe(
1140
+ Effect.forkIn(scope),
1141
+ Effect.flatMap((fiber) =>
1142
+ scope.addFinalizer(() =>
1143
+ Deferred.isDone(channelDeferred).pipe(
1144
+ Effect.flatMap((isDone) =>
1145
+ isDone
1146
+ ? Deferred.succeed(scopeDeferred, void 0).pipe(
1147
+ Effect.zipRight(Fiber.await(fiber)),
1148
+ Effect.zipRight(Fiber.inheritAll(fiber))
1149
+ )
1150
+ : Deferred.succeed(scopeDeferred, void 0).pipe(
1151
+ Effect.zipRight(Fiber.interrupt(fiber)),
1152
+ Effect.zipRight(Fiber.inheritAll(fiber))
1147
1153
  )
1148
- ),
1149
- Effect.zipRight(restore(Deferred.await(channelDeferred))),
1150
- Effect.zipLeft(Fiber.inheritAll(fiber))
1151
1154
  )
1152
1155
  )
1153
- )
1156
+ ).pipe(Effect.zipRight(restore(Deferred.await(channelDeferred))))
1154
1157
  )
1155
- ))
1158
+ )
1159
+ ))
1156
1160
  )
1157
- }
1161
+ })
1158
1162
 
1159
1163
  /** @internal */
1160
1164
  const runScopedInterpret = <Env, InErr, InDone, OutErr, OutDone>(