@fncts/io 0.0.50 → 0.0.51

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 (508) hide show
  1. package/Channel/internal/SingleProducerAsyncInput.d.ts +1 -1
  2. package/CountdownLatch.d.ts +5 -5
  3. package/Fiber/FiberRuntime.d.ts +1 -1
  4. package/Hub/api.d.ts +7 -7
  5. package/IO/api.d.ts +1 -1
  6. package/Push/Operator/IOLoopOperator.d.ts +1 -1
  7. package/Push/Producer/SyncProducer.d.ts +1 -1
  8. package/Push/api.d.ts +8 -8
  9. package/Queue/api/dimapIO.d.ts +12 -12
  10. package/STM/api.d.ts +1 -1
  11. package/Semaphore/definition.d.ts +1 -1
  12. package/Subject/Atomic.d.ts +2 -2
  13. package/Subject/RefSubject/Atomic.d.ts +8 -6
  14. package/Subject/RefSubject/Derived.d.ts +2 -2
  15. package/Subject/RefSubject/RefSubject.d.ts +10 -0
  16. package/Subject/RefSubject/constructors.d.ts +15 -0
  17. package/Subject/RefSubject.d.ts +4 -0
  18. package/Subject.d.ts +1 -0
  19. package/Supervisor/definition.d.ts +1 -1
  20. package/_cjs/Cached/api.cjs +8 -2
  21. package/_cjs/Cached/api.cjs.map +1 -1
  22. package/_cjs/Cached/definition.cjs +2 -6
  23. package/_cjs/Cached/definition.cjs.map +1 -1
  24. package/_cjs/CancellerState.cjs +4 -7
  25. package/_cjs/CancellerState.cjs.map +1 -1
  26. package/_cjs/Channel/UpstreamPullRequest/definition.cjs +4 -2
  27. package/_cjs/Channel/UpstreamPullRequest/definition.cjs.map +1 -1
  28. package/_cjs/Channel/api.cjs +2 -3
  29. package/_cjs/Channel/api.cjs.map +1 -1
  30. package/_cjs/Channel/definition.cjs +22 -16
  31. package/_cjs/Channel/definition.cjs.map +1 -1
  32. package/_cjs/Channel/internal/ChannelExecutor.cjs +35 -11
  33. package/_cjs/Channel/internal/ChannelExecutor.cjs.map +1 -1
  34. package/_cjs/Channel/internal/ChannelState.cjs +15 -8
  35. package/_cjs/Channel/internal/ChannelState.cjs.map +1 -1
  36. package/_cjs/Channel/internal/MergeDecision.cjs +6 -8
  37. package/_cjs/Channel/internal/MergeDecision.cjs.map +1 -1
  38. package/_cjs/Channel/internal/MergeState.cjs +7 -3
  39. package/_cjs/Channel/internal/MergeState.cjs.map +1 -1
  40. package/_cjs/Channel/internal/SingleProducerAsyncInput.cjs +49 -42
  41. package/_cjs/Channel/internal/SingleProducerAsyncInput.cjs.map +1 -1
  42. package/_cjs/Clock/live.cjs +1 -4
  43. package/_cjs/Clock/live.cjs.map +1 -1
  44. package/_cjs/CountdownLatch.cjs +22 -12
  45. package/_cjs/CountdownLatch.cjs.map +1 -1
  46. package/_cjs/Differ/api.cjs +3 -12
  47. package/_cjs/Differ/api.cjs.map +1 -1
  48. package/_cjs/Differ/definition.cjs +1 -5
  49. package/_cjs/Differ/definition.cjs.map +1 -1
  50. package/_cjs/Fiber/FiberMessage.cjs +6 -3
  51. package/_cjs/Fiber/FiberMessage.cjs.map +1 -1
  52. package/_cjs/Fiber/FiberRuntime.cjs +66 -61
  53. package/_cjs/Fiber/FiberRuntime.cjs.map +1 -1
  54. package/_cjs/Fiber/definition.cjs +10 -6
  55. package/_cjs/Fiber/definition.cjs.map +1 -1
  56. package/_cjs/FiberDescriptor.cjs +3 -0
  57. package/_cjs/FiberDescriptor.cjs.map +1 -1
  58. package/_cjs/FiberRef/definition.cjs +9 -6
  59. package/_cjs/FiberRef/definition.cjs.map +1 -1
  60. package/_cjs/FiberRefs/Patch.cjs +13 -13
  61. package/_cjs/FiberRefs/Patch.cjs.map +1 -1
  62. package/_cjs/FiberScope/definition.cjs +2 -0
  63. package/_cjs/FiberScope/definition.cjs.map +1 -1
  64. package/_cjs/FiberSet.cjs +4 -3
  65. package/_cjs/FiberSet.cjs.map +1 -1
  66. package/_cjs/FiberStatus/definition.cjs +12 -9
  67. package/_cjs/FiberStatus/definition.cjs.map +1 -1
  68. package/_cjs/Future/State.cjs +8 -7
  69. package/_cjs/Future/State.cjs.map +1 -1
  70. package/_cjs/Future/definition.cjs +3 -3
  71. package/_cjs/Future/definition.cjs.map +1 -1
  72. package/_cjs/Hub/api.cjs +61 -44
  73. package/_cjs/Hub/api.cjs.map +1 -1
  74. package/_cjs/Hub/definition.cjs +4 -8
  75. package/_cjs/Hub/definition.cjs.map +1 -1
  76. package/_cjs/Hub/internal.cjs +130 -110
  77. package/_cjs/Hub/internal.cjs.map +1 -1
  78. package/_cjs/IO/api/transplant.cjs +8 -7
  79. package/_cjs/IO/api/transplant.cjs.map +1 -1
  80. package/_cjs/IO/api.cjs +9 -4
  81. package/_cjs/IO/api.cjs.map +1 -1
  82. package/_cjs/IO/definition.cjs +8 -12
  83. package/_cjs/IO/definition.cjs.map +1 -1
  84. package/_cjs/IO/runtime.cjs +64 -61
  85. package/_cjs/IO/runtime.cjs.map +1 -1
  86. package/_cjs/InterruptStatus/definition.cjs +1 -0
  87. package/_cjs/InterruptStatus/definition.cjs.map +1 -1
  88. package/_cjs/Layer/MemoMap.cjs +25 -24
  89. package/_cjs/Layer/MemoMap.cjs.map +1 -1
  90. package/_cjs/Layer/definition.cjs +30 -13
  91. package/_cjs/Layer/definition.cjs.map +1 -1
  92. package/_cjs/LogLevel.cjs +3 -0
  93. package/_cjs/LogLevel.cjs.map +1 -1
  94. package/_cjs/LogSpan.cjs +2 -0
  95. package/_cjs/LogSpan.cjs.map +1 -1
  96. package/_cjs/Logger/definition.cjs +1 -0
  97. package/_cjs/Logger/definition.cjs.map +1 -1
  98. package/_cjs/MVar/definition.cjs +3 -4
  99. package/_cjs/MVar/definition.cjs.map +1 -1
  100. package/_cjs/Push/FlattenStrategy.cjs +1 -0
  101. package/_cjs/Push/FlattenStrategy.cjs.map +1 -1
  102. package/_cjs/Push/IndexedBuffer.cjs +5 -1
  103. package/_cjs/Push/IndexedBuffer.cjs.map +1 -1
  104. package/_cjs/Push/MergeStrategy.cjs +2 -0
  105. package/_cjs/Push/MergeStrategy.cjs.map +1 -1
  106. package/_cjs/Push/Producer/IOProducer.cjs +8 -3
  107. package/_cjs/Push/Producer/IOProducer.cjs.map +1 -1
  108. package/_cjs/Push/Producer/SyncProducer.cjs +8 -4
  109. package/_cjs/Push/Producer/SyncProducer.cjs.map +1 -1
  110. package/_cjs/Push/Sink.cjs +24 -5
  111. package/_cjs/Push/Sink.cjs.map +1 -1
  112. package/_cjs/Push/api.cjs +67 -41
  113. package/_cjs/Push/api.cjs.map +1 -1
  114. package/_cjs/Push/definition.cjs +10 -11
  115. package/_cjs/Push/definition.cjs.map +1 -1
  116. package/_cjs/Queue/api/dimapIO.cjs +74 -32
  117. package/_cjs/Queue/api/dimapIO.cjs.map +1 -1
  118. package/_cjs/Queue/api/filterInputIO.cjs +51 -25
  119. package/_cjs/Queue/api/filterInputIO.cjs.map +1 -1
  120. package/_cjs/Queue/api/filterOutputIO.cjs +60 -30
  121. package/_cjs/Queue/api/filterOutputIO.cjs.map +1 -1
  122. package/_cjs/Queue/api/zipWithIO.cjs +27 -10
  123. package/_cjs/Queue/api/zipWithIO.cjs.map +1 -1
  124. package/_cjs/Queue/definition.cjs +3 -7
  125. package/_cjs/Queue/definition.cjs.map +1 -1
  126. package/_cjs/Queue/internal.cjs +73 -62
  127. package/_cjs/Queue/internal.cjs.map +1 -1
  128. package/_cjs/Queue/strategy.cjs +1 -3
  129. package/_cjs/Queue/strategy.cjs.map +1 -1
  130. package/_cjs/Random/live.cjs +4 -3
  131. package/_cjs/Random/live.cjs.map +1 -1
  132. package/_cjs/Ref/Atomic.cjs +2 -3
  133. package/_cjs/Ref/Atomic.cjs.map +1 -1
  134. package/_cjs/Ref/Derived.cjs +2 -3
  135. package/_cjs/Ref/Derived.cjs.map +1 -1
  136. package/_cjs/Ref/DerivedAll.cjs +2 -3
  137. package/_cjs/Ref/DerivedAll.cjs.map +1 -1
  138. package/_cjs/Ref/Synchronized/definition.cjs +5 -4
  139. package/_cjs/Ref/Synchronized/definition.cjs.map +1 -1
  140. package/_cjs/Ref/definition.cjs +2 -6
  141. package/_cjs/Ref/definition.cjs.map +1 -1
  142. package/_cjs/Reloadable/definition.cjs +2 -0
  143. package/_cjs/Reloadable/definition.cjs.map +1 -1
  144. package/_cjs/STM/definition.cjs +30 -25
  145. package/_cjs/STM/definition.cjs.map +1 -1
  146. package/_cjs/STM/driver.cjs +5 -0
  147. package/_cjs/STM/driver.cjs.map +1 -1
  148. package/_cjs/STM/internal/Entry.cjs +9 -6
  149. package/_cjs/STM/internal/Entry.cjs.map +1 -1
  150. package/_cjs/STM/internal/TryCommit.cjs +6 -7
  151. package/_cjs/STM/internal/TryCommit.cjs.map +1 -1
  152. package/_cjs/STM/internal/Versioned.cjs +2 -3
  153. package/_cjs/STM/internal/Versioned.cjs.map +1 -1
  154. package/_cjs/Schedule/Decision.cjs +3 -4
  155. package/_cjs/Schedule/Decision.cjs.map +1 -1
  156. package/_cjs/Schedule/Driver.cjs +4 -0
  157. package/_cjs/Schedule/Driver.cjs.map +1 -1
  158. package/_cjs/Schedule/api.cjs +2 -5
  159. package/_cjs/Schedule/api.cjs.map +1 -1
  160. package/_cjs/Schedule/definition.cjs +3 -1
  161. package/_cjs/Schedule/definition.cjs.map +1 -1
  162. package/_cjs/Scope/ReleaseMap/definition.cjs +8 -2
  163. package/_cjs/Scope/ReleaseMap/definition.cjs.map +1 -1
  164. package/_cjs/Scope/api.cjs +1 -4
  165. package/_cjs/Scope/api.cjs.map +1 -1
  166. package/_cjs/Scope/definition.cjs +3 -7
  167. package/_cjs/Scope/definition.cjs.map +1 -1
  168. package/_cjs/ScopedRef/api.cjs +8 -3
  169. package/_cjs/ScopedRef/api.cjs.map +1 -1
  170. package/_cjs/ScopedRef/definition.cjs +1 -5
  171. package/_cjs/ScopedRef/definition.cjs.map +1 -1
  172. package/_cjs/Semaphore/Reservation.cjs +2 -0
  173. package/_cjs/Semaphore/Reservation.cjs.map +1 -1
  174. package/_cjs/Semaphore/definition.cjs +42 -38
  175. package/_cjs/Semaphore/definition.cjs.map +1 -1
  176. package/_cjs/Sink/definition.cjs +1 -0
  177. package/_cjs/Sink/definition.cjs.map +1 -1
  178. package/_cjs/State/api.cjs +1 -4
  179. package/_cjs/State/api.cjs.map +1 -1
  180. package/_cjs/State/definition.cjs +2 -6
  181. package/_cjs/State/definition.cjs.map +1 -1
  182. package/_cjs/State/internal.cjs +1 -5
  183. package/_cjs/State/internal.cjs.map +1 -1
  184. package/_cjs/Stream/api/zipAllWith.cjs +7 -11
  185. package/_cjs/Stream/api/zipAllWith.cjs.map +1 -1
  186. package/_cjs/Stream/api/zipWithChunks.cjs +5 -5
  187. package/_cjs/Stream/api/zipWithChunks.cjs.map +1 -1
  188. package/_cjs/Stream/api.cjs +8 -7
  189. package/_cjs/Stream/api.cjs.map +1 -1
  190. package/_cjs/Stream/definition.cjs +3 -4
  191. package/_cjs/Stream/definition.cjs.map +1 -1
  192. package/_cjs/Stream/internal/DebounceState.cjs +5 -5
  193. package/_cjs/Stream/internal/DebounceState.cjs.map +1 -1
  194. package/_cjs/Stream/internal/Handoff.cjs +18 -17
  195. package/_cjs/Stream/internal/Handoff.cjs.map +1 -1
  196. package/_cjs/Stream/internal/SinkEndReason.cjs +5 -12
  197. package/_cjs/Stream/internal/SinkEndReason.cjs.map +1 -1
  198. package/_cjs/Stream/internal/Take.cjs +3 -0
  199. package/_cjs/Stream/internal/Take.cjs.map +1 -1
  200. package/_cjs/Subject/Atomic.cjs +5 -10
  201. package/_cjs/Subject/Atomic.cjs.map +1 -1
  202. package/_cjs/Subject/DeferredRef.cjs +12 -9
  203. package/_cjs/Subject/DeferredRef.cjs.map +1 -1
  204. package/_cjs/Subject/Hold.cjs +2 -5
  205. package/_cjs/Subject/Hold.cjs.map +1 -1
  206. package/_cjs/Subject/RefSubject/Atomic.cjs +91 -50
  207. package/_cjs/Subject/RefSubject/Atomic.cjs.map +1 -1
  208. package/_cjs/Subject/RefSubject/Derived.cjs +19 -14
  209. package/_cjs/Subject/RefSubject/Derived.cjs.map +1 -1
  210. package/_cjs/Subject/RefSubject/RefSubject.cjs +6 -7
  211. package/_cjs/Subject/RefSubject/RefSubject.cjs.map +1 -1
  212. package/_cjs/Subject/RefSubject/constructors.cjs +30 -0
  213. package/_cjs/Subject/RefSubject/constructors.cjs.map +1 -0
  214. package/_cjs/Subject/RefSubject.cjs +2 -0
  215. package/_cjs/Subject/RefSubject.cjs.map +1 -0
  216. package/_cjs/Subject/definition.cjs +3 -8
  217. package/_cjs/Subject/definition.cjs.map +1 -1
  218. package/_cjs/Subject.cjs +11 -0
  219. package/_cjs/Subject.cjs.map +1 -1
  220. package/_cjs/SubscriptionRef.cjs +4 -4
  221. package/_cjs/SubscriptionRef.cjs.map +1 -1
  222. package/_cjs/Supervisor/constructors.cjs +3 -11
  223. package/_cjs/Supervisor/constructors.cjs.map +1 -1
  224. package/_cjs/Supervisor/definition.cjs +10 -4
  225. package/_cjs/Supervisor/definition.cjs.map +1 -1
  226. package/_cjs/SupervisorPatch.cjs +9 -12
  227. package/_cjs/SupervisorPatch.cjs.map +1 -1
  228. package/_cjs/TExit/definition.cjs +19 -18
  229. package/_cjs/TExit/definition.cjs.map +1 -1
  230. package/_cjs/TReentrantLock/definition.cjs +8 -3
  231. package/_cjs/TReentrantLock/definition.cjs.map +1 -1
  232. package/_cjs/TRef/definition.cjs +6 -6
  233. package/_cjs/TRef/definition.cjs.map +1 -1
  234. package/_cjs/internal/BackgroundScheduler.cjs +16 -16
  235. package/_cjs/internal/BackgroundScheduler.cjs.map +1 -1
  236. package/_cjs/internal/HashedPair.cjs +2 -0
  237. package/_cjs/internal/HashedPair.cjs.map +1 -1
  238. package/_cjs/internal/Hub.cjs +39 -15
  239. package/_cjs/internal/Hub.cjs.map +1 -1
  240. package/_cjs/internal/IsFatal.cjs +7 -11
  241. package/_cjs/internal/IsFatal.cjs.map +1 -1
  242. package/_cjs/internal/MutableQueue.cjs +14 -11
  243. package/_cjs/internal/MutableQueue.cjs.map +1 -1
  244. package/_cjs/internal/Scheduler.cjs +4 -8
  245. package/_cjs/internal/Scheduler.cjs.map +1 -1
  246. package/_cjs/internal/StackTraceBuilder.cjs +2 -4
  247. package/_cjs/internal/StackTraceBuilder.cjs.map +1 -1
  248. package/_mjs/Cached/api.mjs +8 -2
  249. package/_mjs/Cached/api.mjs.map +1 -1
  250. package/_mjs/Cached/definition.mjs +1 -5
  251. package/_mjs/Cached/definition.mjs.map +1 -1
  252. package/_mjs/CancellerState.mjs +4 -7
  253. package/_mjs/CancellerState.mjs.map +1 -1
  254. package/_mjs/Channel/UpstreamPullRequest/definition.mjs +4 -2
  255. package/_mjs/Channel/UpstreamPullRequest/definition.mjs.map +1 -1
  256. package/_mjs/Channel/api.mjs +2 -3
  257. package/_mjs/Channel/api.mjs.map +1 -1
  258. package/_mjs/Channel/definition.mjs +21 -15
  259. package/_mjs/Channel/definition.mjs.map +1 -1
  260. package/_mjs/Channel/internal/ChannelExecutor.mjs +35 -11
  261. package/_mjs/Channel/internal/ChannelExecutor.mjs.map +1 -1
  262. package/_mjs/Channel/internal/ChannelState.mjs +15 -8
  263. package/_mjs/Channel/internal/ChannelState.mjs.map +1 -1
  264. package/_mjs/Channel/internal/MergeDecision.mjs +5 -7
  265. package/_mjs/Channel/internal/MergeDecision.mjs.map +1 -1
  266. package/_mjs/Channel/internal/MergeState.mjs +7 -3
  267. package/_mjs/Channel/internal/MergeState.mjs.map +1 -1
  268. package/_mjs/Channel/internal/SingleProducerAsyncInput.mjs +49 -42
  269. package/_mjs/Channel/internal/SingleProducerAsyncInput.mjs.map +1 -1
  270. package/_mjs/Clock/live.mjs +1 -4
  271. package/_mjs/Clock/live.mjs.map +1 -1
  272. package/_mjs/CountdownLatch.mjs +21 -11
  273. package/_mjs/CountdownLatch.mjs.map +1 -1
  274. package/_mjs/Differ/api.mjs +3 -12
  275. package/_mjs/Differ/api.mjs.map +1 -1
  276. package/_mjs/Differ/definition.mjs +1 -5
  277. package/_mjs/Differ/definition.mjs.map +1 -1
  278. package/_mjs/Fiber/FiberMessage.mjs +6 -3
  279. package/_mjs/Fiber/FiberMessage.mjs.map +1 -1
  280. package/_mjs/Fiber/FiberRuntime.mjs +66 -61
  281. package/_mjs/Fiber/FiberRuntime.mjs.map +1 -1
  282. package/_mjs/Fiber/definition.mjs +9 -5
  283. package/_mjs/Fiber/definition.mjs.map +1 -1
  284. package/_mjs/FiberDescriptor.mjs +3 -0
  285. package/_mjs/FiberDescriptor.mjs.map +1 -1
  286. package/_mjs/FiberRef/definition.mjs +9 -6
  287. package/_mjs/FiberRef/definition.mjs.map +1 -1
  288. package/_mjs/FiberRefs/Patch.mjs +13 -13
  289. package/_mjs/FiberRefs/Patch.mjs.map +1 -1
  290. package/_mjs/FiberScope/definition.mjs +2 -0
  291. package/_mjs/FiberScope/definition.mjs.map +1 -1
  292. package/_mjs/FiberSet.mjs +4 -3
  293. package/_mjs/FiberSet.mjs.map +1 -1
  294. package/_mjs/FiberStatus/definition.mjs +12 -9
  295. package/_mjs/FiberStatus/definition.mjs.map +1 -1
  296. package/_mjs/Future/State.mjs +8 -7
  297. package/_mjs/Future/State.mjs.map +1 -1
  298. package/_mjs/Future/definition.mjs +3 -3
  299. package/_mjs/Future/definition.mjs.map +1 -1
  300. package/_mjs/Hub/api.mjs +61 -44
  301. package/_mjs/Hub/api.mjs.map +1 -1
  302. package/_mjs/Hub/definition.mjs +3 -7
  303. package/_mjs/Hub/definition.mjs.map +1 -1
  304. package/_mjs/Hub/internal.mjs +130 -110
  305. package/_mjs/Hub/internal.mjs.map +1 -1
  306. package/_mjs/IO/api/transplant.mjs +8 -7
  307. package/_mjs/IO/api/transplant.mjs.map +1 -1
  308. package/_mjs/IO/api.mjs +9 -4
  309. package/_mjs/IO/api.mjs.map +1 -1
  310. package/_mjs/IO/definition.mjs +7 -11
  311. package/_mjs/IO/definition.mjs.map +1 -1
  312. package/_mjs/IO/runtime.mjs +64 -61
  313. package/_mjs/IO/runtime.mjs.map +1 -1
  314. package/_mjs/InterruptStatus/definition.mjs +1 -0
  315. package/_mjs/InterruptStatus/definition.mjs.map +1 -1
  316. package/_mjs/Layer/MemoMap.mjs +25 -24
  317. package/_mjs/Layer/MemoMap.mjs.map +1 -1
  318. package/_mjs/Layer/definition.mjs +29 -12
  319. package/_mjs/Layer/definition.mjs.map +1 -1
  320. package/_mjs/LogLevel.mjs +3 -0
  321. package/_mjs/LogLevel.mjs.map +1 -1
  322. package/_mjs/LogSpan.mjs +2 -0
  323. package/_mjs/LogSpan.mjs.map +1 -1
  324. package/_mjs/Logger/definition.mjs +1 -0
  325. package/_mjs/Logger/definition.mjs.map +1 -1
  326. package/_mjs/MVar/definition.mjs +2 -3
  327. package/_mjs/MVar/definition.mjs.map +1 -1
  328. package/_mjs/Push/FlattenStrategy.mjs +1 -0
  329. package/_mjs/Push/FlattenStrategy.mjs.map +1 -1
  330. package/_mjs/Push/IndexedBuffer.mjs +5 -1
  331. package/_mjs/Push/IndexedBuffer.mjs.map +1 -1
  332. package/_mjs/Push/MergeStrategy.mjs +2 -0
  333. package/_mjs/Push/MergeStrategy.mjs.map +1 -1
  334. package/_mjs/Push/Producer/IOProducer.mjs +8 -3
  335. package/_mjs/Push/Producer/IOProducer.mjs.map +1 -1
  336. package/_mjs/Push/Producer/SyncProducer.mjs +8 -4
  337. package/_mjs/Push/Producer/SyncProducer.mjs.map +1 -1
  338. package/_mjs/Push/Sink.mjs +24 -5
  339. package/_mjs/Push/Sink.mjs.map +1 -1
  340. package/_mjs/Push/api.mjs +44 -19
  341. package/_mjs/Push/api.mjs.map +1 -1
  342. package/_mjs/Push/definition.mjs +9 -10
  343. package/_mjs/Push/definition.mjs.map +1 -1
  344. package/_mjs/Queue/api/dimapIO.mjs +74 -32
  345. package/_mjs/Queue/api/dimapIO.mjs.map +1 -1
  346. package/_mjs/Queue/api/filterInputIO.mjs +51 -25
  347. package/_mjs/Queue/api/filterInputIO.mjs.map +1 -1
  348. package/_mjs/Queue/api/filterOutputIO.mjs +60 -30
  349. package/_mjs/Queue/api/filterOutputIO.mjs.map +1 -1
  350. package/_mjs/Queue/api/zipWithIO.mjs +27 -10
  351. package/_mjs/Queue/api/zipWithIO.mjs.map +1 -1
  352. package/_mjs/Queue/definition.mjs +3 -7
  353. package/_mjs/Queue/definition.mjs.map +1 -1
  354. package/_mjs/Queue/internal.mjs +73 -62
  355. package/_mjs/Queue/internal.mjs.map +1 -1
  356. package/_mjs/Queue/strategy.mjs +1 -3
  357. package/_mjs/Queue/strategy.mjs.map +1 -1
  358. package/_mjs/Random/live.mjs +4 -3
  359. package/_mjs/Random/live.mjs.map +1 -1
  360. package/_mjs/Ref/Atomic.mjs +2 -3
  361. package/_mjs/Ref/Atomic.mjs.map +1 -1
  362. package/_mjs/Ref/Derived.mjs +2 -3
  363. package/_mjs/Ref/Derived.mjs.map +1 -1
  364. package/_mjs/Ref/DerivedAll.mjs +2 -3
  365. package/_mjs/Ref/DerivedAll.mjs.map +1 -1
  366. package/_mjs/Ref/Synchronized/definition.mjs +4 -3
  367. package/_mjs/Ref/Synchronized/definition.mjs.map +1 -1
  368. package/_mjs/Ref/definition.mjs +1 -5
  369. package/_mjs/Ref/definition.mjs.map +1 -1
  370. package/_mjs/Reloadable/definition.mjs +2 -0
  371. package/_mjs/Reloadable/definition.mjs.map +1 -1
  372. package/_mjs/STM/definition.mjs +29 -24
  373. package/_mjs/STM/definition.mjs.map +1 -1
  374. package/_mjs/STM/driver.mjs +5 -0
  375. package/_mjs/STM/driver.mjs.map +1 -1
  376. package/_mjs/STM/internal/Entry.mjs +8 -5
  377. package/_mjs/STM/internal/Entry.mjs.map +1 -1
  378. package/_mjs/STM/internal/TryCommit.mjs +6 -7
  379. package/_mjs/STM/internal/TryCommit.mjs.map +1 -1
  380. package/_mjs/STM/internal/Versioned.mjs +2 -3
  381. package/_mjs/STM/internal/Versioned.mjs.map +1 -1
  382. package/_mjs/Schedule/Decision.mjs +3 -4
  383. package/_mjs/Schedule/Decision.mjs.map +1 -1
  384. package/_mjs/Schedule/Driver.mjs +4 -0
  385. package/_mjs/Schedule/Driver.mjs.map +1 -1
  386. package/_mjs/Schedule/api.mjs +2 -5
  387. package/_mjs/Schedule/api.mjs.map +1 -1
  388. package/_mjs/Schedule/definition.mjs +3 -1
  389. package/_mjs/Schedule/definition.mjs.map +1 -1
  390. package/_mjs/Scope/ReleaseMap/definition.mjs +8 -2
  391. package/_mjs/Scope/ReleaseMap/definition.mjs.map +1 -1
  392. package/_mjs/Scope/api.mjs +1 -4
  393. package/_mjs/Scope/api.mjs.map +1 -1
  394. package/_mjs/Scope/definition.mjs +2 -6
  395. package/_mjs/Scope/definition.mjs.map +1 -1
  396. package/_mjs/ScopedRef/api.mjs +8 -3
  397. package/_mjs/ScopedRef/api.mjs.map +1 -1
  398. package/_mjs/ScopedRef/definition.mjs +1 -5
  399. package/_mjs/ScopedRef/definition.mjs.map +1 -1
  400. package/_mjs/Semaphore/Reservation.mjs +2 -0
  401. package/_mjs/Semaphore/Reservation.mjs.map +1 -1
  402. package/_mjs/Semaphore/definition.mjs +42 -38
  403. package/_mjs/Semaphore/definition.mjs.map +1 -1
  404. package/_mjs/Sink/definition.mjs +1 -0
  405. package/_mjs/Sink/definition.mjs.map +1 -1
  406. package/_mjs/State/api.mjs +1 -4
  407. package/_mjs/State/api.mjs.map +1 -1
  408. package/_mjs/State/definition.mjs +1 -5
  409. package/_mjs/State/definition.mjs.map +1 -1
  410. package/_mjs/State/internal.mjs +1 -5
  411. package/_mjs/State/internal.mjs.map +1 -1
  412. package/_mjs/Stream/api/zipAllWith.mjs +7 -11
  413. package/_mjs/Stream/api/zipAllWith.mjs.map +1 -1
  414. package/_mjs/Stream/api/zipWithChunks.mjs +5 -5
  415. package/_mjs/Stream/api/zipWithChunks.mjs.map +1 -1
  416. package/_mjs/Stream/api.mjs +8 -7
  417. package/_mjs/Stream/api.mjs.map +1 -1
  418. package/_mjs/Stream/definition.mjs +2 -3
  419. package/_mjs/Stream/definition.mjs.map +1 -1
  420. package/_mjs/Stream/internal/DebounceState.mjs +5 -5
  421. package/_mjs/Stream/internal/DebounceState.mjs.map +1 -1
  422. package/_mjs/Stream/internal/Handoff.mjs +17 -16
  423. package/_mjs/Stream/internal/Handoff.mjs.map +1 -1
  424. package/_mjs/Stream/internal/SinkEndReason.mjs +4 -11
  425. package/_mjs/Stream/internal/SinkEndReason.mjs.map +1 -1
  426. package/_mjs/Stream/internal/Take.mjs +3 -0
  427. package/_mjs/Stream/internal/Take.mjs.map +1 -1
  428. package/_mjs/Subject/Atomic.mjs +5 -10
  429. package/_mjs/Subject/Atomic.mjs.map +1 -1
  430. package/_mjs/Subject/DeferredRef.mjs +12 -9
  431. package/_mjs/Subject/DeferredRef.mjs.map +1 -1
  432. package/_mjs/Subject/Hold.mjs +2 -5
  433. package/_mjs/Subject/Hold.mjs.map +1 -1
  434. package/_mjs/Subject/RefSubject/Atomic.mjs +90 -49
  435. package/_mjs/Subject/RefSubject/Atomic.mjs.map +1 -1
  436. package/_mjs/Subject/RefSubject/Derived.mjs +19 -14
  437. package/_mjs/Subject/RefSubject/Derived.mjs.map +1 -1
  438. package/_mjs/Subject/RefSubject/RefSubject.mjs +6 -7
  439. package/_mjs/Subject/RefSubject/RefSubject.mjs.map +1 -1
  440. package/_mjs/Subject/RefSubject/constructors.mjs +23 -0
  441. package/_mjs/Subject/RefSubject/constructors.mjs.map +1 -0
  442. package/_mjs/Subject/RefSubject.mjs +2 -0
  443. package/_mjs/Subject/RefSubject.mjs.map +1 -0
  444. package/_mjs/Subject/definition.mjs +3 -8
  445. package/_mjs/Subject/definition.mjs.map +1 -1
  446. package/_mjs/Subject.mjs +1 -0
  447. package/_mjs/Subject.mjs.map +1 -1
  448. package/_mjs/SubscriptionRef.mjs +4 -4
  449. package/_mjs/SubscriptionRef.mjs.map +1 -1
  450. package/_mjs/Supervisor/constructors.mjs +3 -11
  451. package/_mjs/Supervisor/constructors.mjs.map +1 -1
  452. package/_mjs/Supervisor/definition.mjs +10 -4
  453. package/_mjs/Supervisor/definition.mjs.map +1 -1
  454. package/_mjs/SupervisorPatch.mjs +9 -12
  455. package/_mjs/SupervisorPatch.mjs.map +1 -1
  456. package/_mjs/TExit/definition.mjs +19 -18
  457. package/_mjs/TExit/definition.mjs.map +1 -1
  458. package/_mjs/TReentrantLock/definition.mjs +8 -3
  459. package/_mjs/TReentrantLock/definition.mjs.map +1 -1
  460. package/_mjs/TRef/definition.mjs +6 -6
  461. package/_mjs/TRef/definition.mjs.map +1 -1
  462. package/_mjs/internal/BackgroundScheduler.mjs +16 -16
  463. package/_mjs/internal/BackgroundScheduler.mjs.map +1 -1
  464. package/_mjs/internal/HashedPair.mjs +2 -0
  465. package/_mjs/internal/HashedPair.mjs.map +1 -1
  466. package/_mjs/internal/Hub.mjs +39 -15
  467. package/_mjs/internal/Hub.mjs.map +1 -1
  468. package/_mjs/internal/IsFatal.mjs +7 -11
  469. package/_mjs/internal/IsFatal.mjs.map +1 -1
  470. package/_mjs/internal/MutableQueue.mjs +14 -11
  471. package/_mjs/internal/MutableQueue.mjs.map +1 -1
  472. package/_mjs/internal/Scheduler.mjs +4 -8
  473. package/_mjs/internal/Scheduler.mjs.map +1 -1
  474. package/_mjs/internal/StackTraceBuilder.mjs +2 -4
  475. package/_mjs/internal/StackTraceBuilder.mjs.map +1 -1
  476. package/_src/Cached/api.ts +8 -2
  477. package/_src/Channel/internal/SingleProducerAsyncInput.ts +6 -4
  478. package/_src/CountdownLatch.ts +24 -13
  479. package/_src/Fiber/FiberRuntime.ts +4 -2
  480. package/_src/FiberRef/definition.ts +1 -1
  481. package/_src/Hub/api.ts +85 -54
  482. package/_src/Hub/internal.ts +36 -20
  483. package/_src/IO/api.ts +0 -5
  484. package/_src/Push/Producer/SyncProducer.ts +1 -1
  485. package/_src/Push/api.ts +17 -17
  486. package/_src/Queue/api/dimapIO.ts +57 -19
  487. package/_src/Queue/api/filterInputIO.ts +36 -12
  488. package/_src/Queue/api/filterOutputIO.ts +42 -18
  489. package/_src/Queue/api/zipWithIO.ts +23 -11
  490. package/_src/Queue/internal.ts +9 -3
  491. package/_src/Schedule/api.ts +1 -1
  492. package/_src/ScopedRef/api.ts +6 -2
  493. package/_src/Semaphore/definition.ts +4 -2
  494. package/_src/Stream/api.ts +0 -2
  495. package/_src/Subject/RefSubject/Atomic.ts +47 -7
  496. package/_src/Subject/RefSubject/Derived.ts +7 -2
  497. package/_src/Subject/RefSubject/RefSubject.ts +10 -0
  498. package/_src/Subject/RefSubject/constructors.ts +27 -0
  499. package/_src/Subject/RefSubject.ts +7 -0
  500. package/_src/Subject.ts +1 -0
  501. package/_src/Supervisor/constructors.ts +0 -2
  502. package/_src/Supervisor/definition.ts +2 -1
  503. package/_src/TReentrantLock/api.ts +1 -1
  504. package/_src/global.ts +8 -0
  505. package/_src/internal/MutableQueue.ts +5 -3
  506. package/global.d.ts +8 -0
  507. package/internal/MutableQueue.d.ts +2 -2
  508. package/package.json +4 -4
package/_src/Push/api.ts CHANGED
@@ -2,14 +2,25 @@ import type { MergeStrategy } from "./MergeStrategy.js";
2
2
  import type { UnsafeSink } from "@fncts/io/Push/Sink";
3
3
 
4
4
  import { IO, IOTag } from "@fncts/io/IO";
5
- import { FlattenStrategy, UnboundedStrategy } from "@fncts/io/Push";
6
- import { Push, PushPrimitive, PushTag } from "@fncts/io/Push";
5
+ import { Push, PushPrimitive, PushTag } from "@fncts/io/Push/definition";
6
+ import { FlattenStrategy, UnboundedStrategy } from "@fncts/io/Push/FlattenStrategy";
7
7
  import { SyncProducer } from "@fncts/io/Push/Producer/SyncProducer";
8
8
  import { Sink } from "@fncts/io/Push/Sink";
9
9
  import { Scope } from "@fncts/io/Scope";
10
10
 
11
11
  import { FromIO, FromScheduled, type IOProducer, Scheduled } from "./Producer/IOProducer.js";
12
12
 
13
+ /**
14
+ * @tsplus static fncts.io.PushOps bracketExit
15
+ */
16
+ export function bracketExit<R, E, A, R1, E1, B, R2, E2, C>(
17
+ acquire: IO<R, E, A>,
18
+ use: (a: A) => Push<R1, E1, B>,
19
+ release: (a: A, exit: Exit<unknown, unknown>) => IO<R2, E2, C>,
20
+ ): Push<R | R1 | R2, E | E1 | E2, B> {
21
+ return new BracketExit(acquire, use, release);
22
+ }
23
+
13
24
  class BracketExit<R, E, A, R1, E1, B, R2, E2, C> extends Push<R | R1 | R2, E | E1 | E2, B> {
14
25
  constructor(
15
26
  readonly acquire: IO<R, E, A>,
@@ -29,14 +40,10 @@ class BracketExit<R, E, A, R1, E1, B, R2, E2, C> extends Push<R | R1 | R2, E | E
29
40
  }
30
41
 
31
42
  /**
32
- * @tsplus static fncts.io.PushOps bracketExit
43
+ * @tsplus static fncts.io.PushOps defer
33
44
  */
34
- export function bracketExit<R, E, A, R1, E1, B, R2, E2, C>(
35
- acquire: IO<R, E, A>,
36
- use: (a: A) => Push<R1, E1, B>,
37
- release: (a: A, exit: Exit<unknown, unknown>) => IO<R2, E2, C>,
38
- ): Push<R | R1 | R2, E | E1 | E2, B> {
39
- return new BracketExit(acquire, use, release);
45
+ export function defer<R, E, A>(self: Lazy<Push<R, E, A>>): Push<R, E, A> {
46
+ return new Defer(self);
40
47
  }
41
48
 
42
49
  class CombineLatest<R, E, A> extends Push<R | Scope, E, ReadonlyArray<A>> {
@@ -88,11 +95,11 @@ class CombineLatest<R, E, A> extends Push<R | Scope, E, ReadonlyArray<A>> {
88
95
  export function combineLatest<A extends ReadonlyArray<Push<any, any, any>>>(
89
96
  streams: [...A],
90
97
  ): Push<Push.EnvironmentOf<A[number]> | Scope, Push.ErrorOf<A[number]>, { [K in keyof A]: Push.ValueOf<A[K]> }>;
91
-
92
98
  export function combineLatest<R, E, A>(streams: Iterable<Push<R, E, A>>): Push<R | Scope, E, ReadonlyArray<A>>;
93
99
  export function combineLatest<R, E, A>(streams: Iterable<Push<R, E, A>>): Push<R | Scope, E, ReadonlyArray<A>> {
94
100
  return new CombineLatest(streams);
95
101
  }
102
+
96
103
  class ContramapEnvironment<R, E, A, R1> extends Push<R1, E, A> {
97
104
  constructor(
98
105
  readonly self: Push<R, E, A>,
@@ -122,13 +129,6 @@ class Defer<R, E, A> extends Push<R, E, A> {
122
129
  }
123
130
  }
124
131
 
125
- /**
126
- * @tsplus static fncts.io.PushOps defer
127
- */
128
- export function defer<R, E, A>(self: Lazy<Push<R, E, A>>): Push<R, E, A> {
129
- return new Defer(self);
130
- }
131
-
132
132
  /**
133
133
  * @tsplus static fncts.io.PushOps failCause
134
134
  */
@@ -27,11 +27,17 @@ class DimapIO<RA, RB, EA, EB, A, B, RC, EC, C, RD, ED, D> extends QueueInternal<
27
27
  super();
28
28
  }
29
29
 
30
- awaitShutdown: UIO<void> = this.queue.awaitShutdown;
30
+ get awaitShutdown(): UIO<void> {
31
+ return this.queue.awaitShutdown;
32
+ }
31
33
 
32
- capacity: number = this.queue.capacity;
34
+ get capacity(): number {
35
+ return this.queue.capacity;
36
+ }
33
37
 
34
- isShutdown: UIO<boolean> = this.queue.isShutdown;
38
+ get isShutdown(): UIO<boolean> {
39
+ return this.queue.isShutdown;
40
+ }
35
41
 
36
42
  get unsafeSize(): Maybe<number> {
37
43
  return this.queue.unsafeSize;
@@ -49,13 +55,21 @@ class DimapIO<RA, RB, EA, EB, A, B, RC, EC, C, RD, ED, D> extends QueueInternal<
49
55
  return IO.foreach(cs, this.f).flatMap((as) => this.queue.offerAll(as));
50
56
  }
51
57
 
52
- shutdown: UIO<void> = this.queue.shutdown;
58
+ get shutdown(): UIO<void> {
59
+ return this.queue.shutdown;
60
+ }
53
61
 
54
- size: UIO<number> = this.queue.size;
62
+ get size(): UIO<number> {
63
+ return this.queue.size;
64
+ }
55
65
 
56
- take: IO<RD | RB, ED | EB, D> = this.queue.take.flatMap(this.g);
66
+ get take(): IO<RD | RB, ED | EB, D> {
67
+ return this.queue.take.flatMap(this.g);
68
+ }
57
69
 
58
- takeAll: IO<RD | RB, ED | EB, Conc<D>> = this.queue.takeAll.flatMap((bs) => IO.foreach(bs, this.g));
70
+ get takeAll(): IO<RD | RB, ED | EB, Conc<D>> {
71
+ return this.queue.takeAll.flatMap((bs) => IO.foreach(bs, this.g));
72
+ }
59
73
 
60
74
  takeUpTo(n: number): IO<RD | RB, ED | EB, Conc<D>> {
61
75
  return this.queue.takeUpTo(n).flatMap((bs) => IO.foreach(bs, this.g));
@@ -154,11 +168,17 @@ class ContramapIO<RA, RB, EA, EB, A, B, RC, EC, C> implements PEnqueueInternal<R
154
168
  readonly f: (c: C) => IO<RC, EC, A>,
155
169
  ) {}
156
170
 
157
- awaitShutdown: UIO<void> = this.queue.awaitShutdown;
171
+ get awaitShutdown(): UIO<void> {
172
+ return this.queue.awaitShutdown;
173
+ }
158
174
 
159
- capacity: number = this.queue.capacity;
175
+ get capacity(): number {
176
+ return this.queue.capacity;
177
+ }
160
178
 
161
- isShutdown: UIO<boolean> = this.queue.isShutdown;
179
+ get isShutdown(): UIO<boolean> {
180
+ return this.queue.isShutdown;
181
+ }
162
182
 
163
183
  get unsafeSize(): Maybe<number> {
164
184
  return this.queue.unsafeSize;
@@ -176,9 +196,13 @@ class ContramapIO<RA, RB, EA, EB, A, B, RC, EC, C> implements PEnqueueInternal<R
176
196
  return IO.foreach(cs, this.f).flatMap((as) => this.queue.offerAll(as));
177
197
  }
178
198
 
179
- shutdown: UIO<void> = this.queue.shutdown;
199
+ get shutdown(): UIO<void> {
200
+ return this.queue.shutdown;
201
+ }
180
202
 
181
- size: UIO<number> = this.queue.size;
203
+ get size(): UIO<number> {
204
+ return this.queue.size;
205
+ }
182
206
  }
183
207
 
184
208
  /**
@@ -209,15 +233,25 @@ class MapIO<RA, RB, EA, EB, A, B, RC, EC, C> implements PDequeueInternal<RA, RB
209
233
  readonly f: (b: B) => IO<RC, EC, C>,
210
234
  ) {}
211
235
 
212
- awaitShutdown: UIO<void> = this.queue.awaitShutdown;
236
+ get awaitShutdown(): UIO<void> {
237
+ return this.queue.awaitShutdown;
238
+ }
213
239
 
214
- capacity: number = this.queue.capacity;
240
+ get capacity(): number {
241
+ return this.queue.capacity;
242
+ }
215
243
 
216
- isShutdown: UIO<boolean> = this.queue.isShutdown;
244
+ get isShutdown(): UIO<boolean> {
245
+ return this.queue.isShutdown;
246
+ }
217
247
 
218
- shutdown: UIO<void> = this.queue.shutdown;
248
+ get shutdown(): UIO<void> {
249
+ return this.queue.shutdown;
250
+ }
219
251
 
220
- size: UIO<number> = this.queue.size;
252
+ get size(): UIO<number> {
253
+ return this.queue.size;
254
+ }
221
255
 
222
256
  get unsafeSize(): Maybe<number> {
223
257
  return this.queue.unsafeSize;
@@ -227,9 +261,13 @@ class MapIO<RA, RB, EA, EB, A, B, RC, EC, C> implements PDequeueInternal<RA, RB
227
261
  throw new Error("Cannot unsafely offer to an effectful Queue");
228
262
  }
229
263
 
230
- take: IO<RB | RC, EB | EC, C> = this.queue.take.flatMap(this.f);
264
+ get take(): IO<RB | RC, EB | EC, C> {
265
+ return this.queue.take.flatMap(this.f);
266
+ }
231
267
 
232
- takeAll: IO<RB | RC, EB | EC, Conc<C>> = this.queue.takeAll.flatMap((bs) => IO.foreach(bs, this.f));
268
+ get takeAll(): IO<RB | RC, EB | EC, Conc<C>> {
269
+ return this.queue.takeAll.flatMap((bs) => IO.foreach(bs, this.f));
270
+ }
233
271
 
234
272
  takeUpTo(n: number): IO<RB | RC, EB | EC, Conc<C>> {
235
273
  return this.queue.takeUpTo(n).flatMap((bs) => IO.foreach(bs, this.f));
@@ -10,11 +10,17 @@ class FilterInputIO<RA, RB, EA, EB, B, A, A1 extends A, R2, E2> extends QueueInt
10
10
  super();
11
11
  }
12
12
 
13
- awaitShutdown: UIO<void> = this.queue.awaitShutdown;
13
+ get awaitShutdown(): UIO<void> {
14
+ return this.queue.awaitShutdown;
15
+ }
14
16
 
15
- capacity: number = this.queue.capacity;
17
+ get capacity(): number {
18
+ return this.queue.capacity;
19
+ }
16
20
 
17
- isShutdown: UIO<boolean> = this.queue.isShutdown;
21
+ get isShutdown(): UIO<boolean> {
22
+ return this.queue.isShutdown;
23
+ }
18
24
 
19
25
  get unsafeSize(): Maybe<number> {
20
26
  return this.queue.unsafeSize;
@@ -39,13 +45,21 @@ class FilterInputIO<RA, RB, EA, EB, B, A, A1 extends A, R2, E2> extends QueueInt
39
45
  });
40
46
  }
41
47
 
42
- shutdown: UIO<void> = this.queue.shutdown;
48
+ get shutdown(): UIO<void> {
49
+ return this.queue.shutdown;
50
+ }
43
51
 
44
- size: UIO<number> = this.queue.size;
52
+ get size(): UIO<number> {
53
+ return this.queue.size;
54
+ }
45
55
 
46
- take: IO<RB, EB, B> = this.queue.take;
56
+ get take(): IO<RB, EB, B> {
57
+ return this.queue.take;
58
+ }
47
59
 
48
- takeAll: IO<RB, EB, Conc<B>> = this.queue.takeAll;
60
+ get takeAll(): IO<RB, EB, Conc<B>> {
61
+ return this.queue.takeAll;
62
+ }
49
63
 
50
64
  takeUpTo(max: number): IO<RB, EB, Conc<B>> {
51
65
  return this.queue.takeUpTo(max);
@@ -94,11 +108,17 @@ class FilterInputEnqueueIO<RA, RB, EA, EB, B, A, A1 extends A, R2, E2>
94
108
  readonly f: (_: A1) => IO<R2, E2, boolean>,
95
109
  ) {}
96
110
 
97
- awaitShutdown: UIO<void> = this.queue.awaitShutdown;
111
+ get awaitShutdown(): UIO<void> {
112
+ return this.queue.awaitShutdown;
113
+ }
98
114
 
99
- capacity: number = this.queue.capacity;
115
+ get capacity(): number {
116
+ return this.queue.capacity;
117
+ }
100
118
 
101
- isShutdown: UIO<boolean> = this.queue.isShutdown;
119
+ get isShutdown(): UIO<boolean> {
120
+ return this.queue.isShutdown;
121
+ }
102
122
 
103
123
  get unsafeSize(): Maybe<number> {
104
124
  return this.queue.unsafeSize;
@@ -123,9 +143,13 @@ class FilterInputEnqueueIO<RA, RB, EA, EB, B, A, A1 extends A, R2, E2>
123
143
  });
124
144
  }
125
145
 
126
- shutdown: UIO<void> = this.queue.shutdown;
146
+ get shutdown(): UIO<void> {
147
+ return this.queue.shutdown;
148
+ }
127
149
 
128
- size: UIO<number> = this.queue.size;
150
+ get size(): UIO<number> {
151
+ return this.queue.size;
152
+ }
129
153
  }
130
154
 
131
155
  /**
@@ -10,11 +10,17 @@ class FilterOutputIO<RA, RB, EA, EB, A, B, RB1, EB1> extends QueueInternal<RA, R
10
10
  super();
11
11
  }
12
12
 
13
- awaitShutdown: UIO<void> = this.queue.awaitShutdown;
13
+ get awaitShutdown(): UIO<void> {
14
+ return this.queue.awaitShutdown;
15
+ }
14
16
 
15
- capacity: number = this.queue.capacity;
17
+ get capacity(): number {
18
+ return this.queue.capacity;
19
+ }
16
20
 
17
- isShutdown: UIO<boolean> = this.queue.isShutdown;
21
+ get isShutdown(): UIO<boolean> {
22
+ return this.queue.isShutdown;
23
+ }
18
24
 
19
25
  get unsafeSize(): Maybe<number> {
20
26
  return this.queue.unsafeSize;
@@ -32,15 +38,21 @@ class FilterOutputIO<RA, RB, EA, EB, A, B, RB1, EB1> extends QueueInternal<RA, R
32
38
  return this.queue.offerAll(as);
33
39
  }
34
40
 
35
- shutdown: UIO<void> = this.queue.shutdown;
41
+ get shutdown(): UIO<void> {
42
+ return this.queue.shutdown;
43
+ }
36
44
 
37
- size: UIO<number> = this.queue.size;
45
+ get size(): UIO<number> {
46
+ return this.queue.size;
47
+ }
38
48
 
39
- take: IO<RB | RB1, EB1 | EB, B> = this.queue.take.flatMap((b) =>
40
- this.f(b).flatMap((p) => (p ? IO.succeedNow(b) : this.take)),
41
- );
49
+ get take(): IO<RB | RB1, EB1 | EB, B> {
50
+ return this.queue.take.flatMap((b) => this.f(b).flatMap((p) => (p ? IO.succeedNow(b) : this.take)));
51
+ }
42
52
 
43
- takeAll: IO<RB | RB1, EB | EB1, Conc<B>> = this.queue.takeAll.flatMap((bs) => IO.filter(bs, this.f));
53
+ get takeAll(): IO<RB | RB1, EB | EB1, Conc<B>> {
54
+ return this.queue.takeAll.flatMap((bs) => IO.filter(bs, this.f));
55
+ }
44
56
 
45
57
  loop(max: number, acc: Conc<B>): IO<RB | RB1, EB | EB1, Conc<B>> {
46
58
  return this.queue.takeUpTo(max).flatMap((bs) => {
@@ -102,15 +114,25 @@ class FilterOutputDequeueIO<RA, RB, EA, EB, A, B, RB1, EB1>
102
114
  readonly f: (b: B) => IO<RB1, EB1, boolean>,
103
115
  ) {}
104
116
 
105
- awaitShutdown: UIO<void> = this.queue.awaitShutdown;
117
+ get awaitShutdown(): UIO<void> {
118
+ return this.queue.awaitShutdown;
119
+ }
106
120
 
107
- capacity: number = this.queue.capacity;
121
+ get capacity(): number {
122
+ return this.queue.capacity;
123
+ }
108
124
 
109
- isShutdown: UIO<boolean> = this.queue.isShutdown;
125
+ get isShutdown(): UIO<boolean> {
126
+ return this.queue.isShutdown;
127
+ }
110
128
 
111
- shutdown: UIO<void> = this.queue.shutdown;
129
+ get shutdown(): UIO<void> {
130
+ return this.queue.shutdown;
131
+ }
112
132
 
113
- size: UIO<number> = this.queue.size;
133
+ get size(): UIO<number> {
134
+ return this.queue.size;
135
+ }
114
136
 
115
137
  get unsafeSize(): Maybe<number> {
116
138
  return this.queue.unsafeSize;
@@ -120,11 +142,13 @@ class FilterOutputDequeueIO<RA, RB, EA, EB, A, B, RB1, EB1>
120
142
  throw new Error("Cannot unsafely offer to an effectful Queue");
121
143
  }
122
144
 
123
- take: IO<RB | RB1, EB1 | EB, B> = this.queue.take.flatMap((b) =>
124
- this.f(b).flatMap((p) => (p ? IO.succeedNow(b) : this.take)),
125
- );
145
+ get take(): IO<RB | RB1, EB1 | EB, B> {
146
+ return this.queue.take.flatMap((b) => this.f(b).flatMap((p) => (p ? IO.succeedNow(b) : this.take)));
147
+ }
126
148
 
127
- takeAll: IO<RB | RB1, EB | EB1, Conc<B>> = this.queue.takeAll.flatMap((bs) => IO.filter(bs, this.f));
149
+ get takeAll(): IO<RB | RB1, EB | EB1, Conc<B>> {
150
+ return this.queue.takeAll.flatMap((bs) => IO.filter(bs, this.f));
151
+ }
128
152
 
129
153
  loop(max: number, acc: Conc<B>): IO<RB | RB1, EB | EB1, Conc<B>> {
130
154
  return this.queue.takeUpTo(max).flatMap((bs) => {
@@ -17,11 +17,17 @@ class ZipWithIO<RA, RB, EA, EB, A, B, RA1, RB1, EA1, EB1, A1 extends A, B1, R3,
17
17
  super();
18
18
  }
19
19
 
20
- awaitShutdown: UIO<void> = this.fa.awaitShutdown.flatMap(() => this.fb.awaitShutdown);
20
+ get awaitShutdown(): UIO<void> {
21
+ return this.fa.awaitShutdown.flatMap(() => this.fb.awaitShutdown);
22
+ }
21
23
 
22
- capacity: number = Math.min(this.fa.capacity, this.fb.capacity);
24
+ get capacity(): number {
25
+ return Math.min(this.fa.capacity, this.fb.capacity);
26
+ }
23
27
 
24
- isShutdown: UIO<boolean> = this.fa.isShutdown;
28
+ get isShutdown(): UIO<boolean> {
29
+ return this.fa.isShutdown;
30
+ }
25
31
 
26
32
  get unsafeSize(): Maybe<number> {
27
33
  return this.fa.unsafeSize.zipWith(this.fb.unsafeSize, (a, b) => Math.max(a, b));
@@ -39,17 +45,23 @@ class ZipWithIO<RA, RB, EA, EB, A, B, RA1, RB1, EA1, EB1, A1 extends A, B1, R3,
39
45
  return this.fa.offerAll(as).zipWithConcurrent(this.fb.offerAll(as), (x, y) => x && y);
40
46
  }
41
47
 
42
- shutdown: UIO<void> = this.fa.shutdown.zipWithConcurrent(this.fb.shutdown, () => undefined);
48
+ get shutdown(): UIO<void> {
49
+ return this.fa.shutdown.zipWithConcurrent(this.fb.shutdown, () => undefined);
50
+ }
43
51
 
44
- size: UIO<number> = this.fa.size.zipWithConcurrent(this.fb.size, (x, y) => Math.max(x, y));
52
+ get size(): UIO<number> {
53
+ return this.fa.size.zipWithConcurrent(this.fb.size, (x, y) => Math.max(x, y));
54
+ }
45
55
 
46
- take: IO<RB | RB1 | R3, E3 | EB | EB1, C> = this.fa.take
47
- .zipConcurrent(this.fb.take)
48
- .flatMap(([b, c]) => this.f(b, c));
56
+ get take(): IO<RB | RB1 | R3, E3 | EB | EB1, C> {
57
+ return this.fa.take.zipConcurrent(this.fb.take).flatMap(([b, c]) => this.f(b, c));
58
+ }
49
59
 
50
- takeAll: IO<RB | RB1 | R3, E3 | EB | EB1, Conc<C>> = this.fa.takeAll
51
- .zipConcurrent(this.fb.takeAll)
52
- .flatMap(([bs, cs]) => IO.foreach(bs.zip(cs), ([b, c]) => this.f(b, c)));
60
+ get takeAll(): IO<RB | RB1 | R3, E3 | EB | EB1, Conc<C>> {
61
+ return this.fa.takeAll
62
+ .zipConcurrent(this.fb.takeAll)
63
+ .flatMap(([bs, cs]) => IO.foreach(bs.zip(cs), ([b, c]) => this.f(b, c)));
64
+ }
53
65
 
54
66
  takeUpTo(max: number): IO<RB | RB1 | R3, E3 | EB | EB1, Conc<C>> {
55
67
  return this.fa
@@ -16,11 +16,17 @@ class UnsafeQueue<A> extends QueueInternal<never, never, never, never, A, A> {
16
16
  super();
17
17
  }
18
18
 
19
- awaitShutdown: UIO<void> = this.shutdownHook.await;
19
+ get awaitShutdown(): UIO<void> {
20
+ return this.shutdownHook.await;
21
+ }
20
22
 
21
- capacity: number = this.queue.capacity;
23
+ get capacity(): number {
24
+ return this.queue.capacity;
25
+ }
22
26
 
23
- isShutdown: UIO<boolean> = IO.succeed(this.shutdownFlag.get);
27
+ get isShutdown(): UIO<boolean> {
28
+ return IO.succeed(this.shutdownFlag.get);
29
+ }
24
30
 
25
31
  get unsafeSize(): Maybe<number> {
26
32
  if (this.shutdownFlag.get) {
@@ -9,7 +9,7 @@ export function make<State, Env, In, Out>(
9
9
  __tsplusTrace?: string,
10
10
  ): Schedule.WithState<State, Env, In, Out> {
11
11
  return new (class extends Schedule<Env, In, Out> {
12
- readonly _State!: State;
12
+ declare readonly _State: State;
13
13
  initial = initial;
14
14
  step = step;
15
15
  })();
@@ -20,7 +20,9 @@ class Synch<A> extends ScopedRef<A> {
20
20
  constructor(readonly ref: Ref.Synchronized<readonly [Scope.Closeable, A]>) {
21
21
  super();
22
22
  }
23
- close: UIO<void> = this.ref.get.flatMap(([scope, _]) => scope.close(Exit.unit));
23
+ get close(): UIO<void> {
24
+ return this.ref.get.flatMap(([scope, _]) => scope.close(Exit.unit));
25
+ }
24
26
  set<R, E>(acquire: IO<R, E, A>, __tsplusTrace?: string): IO<Exclude<R, Scope>, E, void> {
25
27
  return this.ref.modifyIO(([oldScope, a]) =>
26
28
  IO.uninterruptibleMask((restore) =>
@@ -39,5 +41,7 @@ class Synch<A> extends ScopedRef<A> {
39
41
  ),
40
42
  ).flatten;
41
43
  }
42
- get: UIO<A> = this.ref.get.map(([_, a]) => a);
44
+ get get(): UIO<A> {
45
+ return this.ref.get.map(([_, a]) => a);
46
+ }
43
47
  }
@@ -7,9 +7,11 @@ import { Reservation } from "@fncts/io/Semaphore/Reservation";
7
7
  * @tsplus companion fncts.io.SemaphoreOps
8
8
  */
9
9
  export class Semaphore {
10
- constructor(readonly permits: number) {}
10
+ readonly ref: Ref<Either<ImmutableQueue<[Future<never, void>, number]>, number>>;
11
11
 
12
- ref = Ref.unsafeMake<Either<ImmutableQueue<[Future<never, void>, number]>, number>>(Either.right(this.permits));
12
+ constructor(readonly permits: number) {
13
+ this.ref = Ref.unsafeMake(Either.right(this.permits));
14
+ }
13
15
 
14
16
  available(__tsplusTrace?: string): UIO<number> {
15
17
  return this.ref.get.map((_) =>
@@ -1367,9 +1367,7 @@ export function failNow<E>(error: E, __tsplusTrace?: string): Stream<never, E, n
1367
1367
  * @tsplus pipeable fncts.io.Stream filter
1368
1368
  */
1369
1369
  export function filter<A, B extends A>(refinement: Refinement<A, B>): <R, E>(fa: Stream<R, E, A>) => Stream<R, E, B>;
1370
-
1371
1370
  export function filter<A>(predicate: Predicate<A>): <R, E>(fa: Stream<R, E, A>) => Stream<R, E, A>;
1372
-
1373
1371
  export function filter<A>(predicate: Predicate<A>, __tsplusTrace?: string) {
1374
1372
  return <R, E>(fa: Stream<R, E, A>): Stream<R, E, A> => {
1375
1373
  return fa.mapChunks((chunk) => chunk.filter(predicate));
@@ -2,7 +2,9 @@ import type { Runtime } from "@fncts/io/IO/runtime";
2
2
  import type { UnsafeSink } from "@fncts/io/Push/Sink";
3
3
  import type { Scope } from "@fncts/io/Scope";
4
4
 
5
- import { IO } from "@fncts/io/IO";
5
+ import { EitherTag } from "@fncts/base/data/Either";
6
+ import { ExitTag } from "@fncts/base/data/Exit";
7
+ import { IO, IOTag } from "@fncts/io/IO";
6
8
  import { PSynchronizedInternal } from "@fncts/io/Ref/Synchronized/definition";
7
9
 
8
10
  import { FutureRef } from "../DeferredRef.js";
@@ -11,19 +13,57 @@ import { Derived } from "./Derived.js";
11
13
  import { PRefSubject } from "./RefSubject.js";
12
14
 
13
15
  export class Atomic<R, E, A> extends PRefSubject<never, never, E, E, E, A, A> {
16
+ private futureRef: FutureRef<E, A>;
17
+
18
+ private subject = new HoldSubject<E, A>();
19
+ private fiber: Fiber<E, A> | null = null;
20
+
21
+ readonly semaphore = Semaphore.unsafeMake(1);
22
+
14
23
  constructor(
15
24
  readonly fiberId: FiberId,
16
25
  readonly initial: IO<R, E, A>,
17
- readonly runtime: Runtime<R>,
26
+ readonly runtime: Runtime<R | Scope>,
18
27
  readonly scope: Scope.Closeable,
19
28
  ) {
20
29
  super();
21
- }
22
30
 
23
- readonly semaphore = Semaphore.unsafeMake(1);
24
- private subject = new HoldSubject<E, A>();
25
- private futureRef = new FutureRef(this.fiberId, this.subject.value);
26
- private fiber: Fiber<E, A> | null = null;
31
+ this.futureRef = new FutureRef(this.fiberId, this.subject.value);
32
+
33
+ const onSuccess = (a: A) => this.futureRef.done(Exit.succeed(a));
34
+ const onCause = (cause: Cause<E>) => this.futureRef.done(Exit.failCause(cause));
35
+ const onError = (e: E) => onCause(Cause.fail(e));
36
+ const io = IO.concrete(initial);
37
+
38
+ switch (io._ioOpCode) {
39
+ case IOTag.SucceedNow:
40
+ onSuccess(io.i0);
41
+ break;
42
+ case null: {
43
+ switch (io._tag) {
44
+ case MaybeTag.Just:
45
+ onSuccess(io.value);
46
+ break;
47
+ case MaybeTag.Nothing:
48
+ onError(new NoSuchElementError() as E);
49
+ break;
50
+ case EitherTag.Right:
51
+ onSuccess(io.right);
52
+ break;
53
+ case EitherTag.Left:
54
+ onError(io.left);
55
+ break;
56
+ case ExitTag.Success:
57
+ onSuccess(io.value);
58
+ break;
59
+ case ExitTag.Failure:
60
+ onCause(io.cause);
61
+ break;
62
+ }
63
+ break;
64
+ }
65
+ }
66
+ }
27
67
 
28
68
  readonly interrupt = IO.fiberIdWith((fiberId) => {
29
69
  this.futureRef.reset();
@@ -36,8 +36,13 @@ export class Derived<EnvIn, EnvOut, ErrIn, ErrOut, ErrInRef, In, Out> extends PR
36
36
  super();
37
37
  }
38
38
 
39
- subscribers = this.use(({ ref }) => ref.subscribers);
40
- interrupt = this.use(({ ref }) => ref.interrupt);
39
+ get subscribers() {
40
+ return this.use(({ ref }) => ref.subscribers);
41
+ }
42
+
43
+ get interrupt() {
44
+ return this.use(({ ref }) => ref.interrupt);
45
+ }
41
46
 
42
47
  onSuccess(value: In): IO<EnvIn, never, void> {
43
48
  return this.use(({ ref, mapSetErrorInput, mapSet }) =>
@@ -12,6 +12,16 @@ import type { IO } from "@fncts/io/IO";
12
12
  import { RefTypeId, RefVariance, SynchronizedTypeId } from "../../Ref.js";
13
13
  import { PSubject } from "../definition.js";
14
14
 
15
+ /**
16
+ * @tsplus type fncts.io.RefSubject.RefSubject
17
+ * @tsplus companion fncts.io.RefSubject.RefSubjectOps
18
+ */
19
+ export interface RefSubject<R, E, A> extends PRefSubject<R, R, E, E, E, A, A> {}
20
+
21
+ /**
22
+ * @tsplus type fncts.io.RefSubject.PRefSubject
23
+ * @tsplus companion fncts.io.RefSubject.PRefSubjectOps
24
+ */
15
25
  export abstract class PRefSubject<EnvIn, EnvOut, ErrIn, ErrOut, ErrInRef, In, Out>
16
26
  extends PSubject<EnvIn, EnvOut, ErrIn, ErrOut, In, Out>
17
27
  implements
@@ -0,0 +1,27 @@
1
+ import type { RefSubject } from "@fncts/io/Subject/RefSubject/RefSubject";
2
+
3
+ import { Atomic } from "@fncts/io/Subject/RefSubject/Atomic";
4
+
5
+ export interface RefSubjectOptions<A> {
6
+ executionStrategy?: ExecutionStrategy;
7
+ eq?: Eq<A>;
8
+ }
9
+
10
+ /**
11
+ * @tsplus static fncts.io.RefSubject.PRefSubjectOps fromIO
12
+ * @tsplus static fncts.io.RefSubject.RefSubjectOps fromIO
13
+ */
14
+ export function fromIO<R, E, A>(
15
+ initial: IO<R, E, A>,
16
+ options?: RefSubjectOptions<A>,
17
+ ): IO<Scope | R, never, RefSubject<never, E, A>> {
18
+ return Do((Δ) => {
19
+ const runtime = Δ(IO.runtime<R | Scope>());
20
+ const executionStrategy = options?.executionStrategy ?? ExecutionStrategy.concurrent;
21
+ const scope = Δ(runtime.environment.get(Scope.Tag).forkWith(executionStrategy));
22
+ const fiberId = Δ(IO.fiberId);
23
+ const refSubject = new Atomic(fiberId, initial, runtime, scope);
24
+ Δ(scope.addFinalizer(refSubject.interrupt.provideEnvironment(runtime.environment)));
25
+ return refSubject;
26
+ });
27
+ }
@@ -0,0 +1,7 @@
1
+ /* eslint-disable simple-import-sort/exports */
2
+ // codegen:start { preset: type-barrel, include: ./RefSubject/*.ts }
3
+ export type {} from "./RefSubject/constructors.js";
4
+ export type {} from "./RefSubject/RefSubject.js";
5
+ export type {} from "./RefSubject/Derived.js";
6
+ export type {} from "./RefSubject/Atomic.js";
7
+ // codegen:end
package/_src/Subject.ts CHANGED
@@ -4,4 +4,5 @@ export * from "./Subject/Atomic.js"
4
4
  export * from "./Subject/DeferredRef.js"
5
5
  export * from "./Subject/definition.js"
6
6
  export * from "./Subject/Hold.js"
7
+ export * from "./Subject/RefSubject.js"
7
8
  // codegen:end