@fncts/io 0.0.49 → 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 (635) 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/foreachExec.d.ts +18 -0
  6. package/IO/api.d.ts +1 -1
  7. package/Push/Bounds.d.ts +4 -0
  8. package/Push/FlattenStrategy.d.ts +47 -0
  9. package/Push/IndexedBuffer.d.ts +19 -0
  10. package/Push/MergeStrategy.d.ts +19 -0
  11. package/Push/Operator/IOLoopOperator.d.ts +61 -0
  12. package/Push/Operator/IOOperator.d.ts +63 -0
  13. package/Push/Operator/LoopOperator.d.ts +50 -0
  14. package/Push/Operator/SyncOperator.d.ts +41 -0
  15. package/Push/Operator.d.ts +4 -0
  16. package/Push/Producer/IOProducer.d.ts +41 -0
  17. package/Push/Producer/SyncProducer.d.ts +61 -0
  18. package/Push/Producer.d.ts +1 -0
  19. package/Push/Sink.d.ts +65 -0
  20. package/Push/api.d.ts +80 -163
  21. package/Push/definition.d.ts +92 -19
  22. package/Push/internal.d.ts +3 -0
  23. package/Push.d.ts +6 -0
  24. package/Queue/api/dimapIO.d.ts +12 -12
  25. package/Ref/Synchronized/definition.d.ts +32 -9
  26. package/Ref/definition.d.ts +12 -0
  27. package/STM/api.d.ts +1 -1
  28. package/Scope/api.d.ts +16 -1
  29. package/Semaphore/definition.d.ts +1 -1
  30. package/Sink/definition.d.ts +5 -6
  31. package/Subject/Atomic.d.ts +19 -9
  32. package/Subject/DeferredRef.d.ts +17 -0
  33. package/Subject/Hold.d.ts +19 -0
  34. package/Subject/RefSubject/Atomic.d.ts +43 -0
  35. package/Subject/RefSubject/Derived.d.ts +43 -0
  36. package/Subject/RefSubject/RefSubject.d.ts +37 -0
  37. package/Subject/RefSubject/constructors.d.ts +15 -0
  38. package/Subject/RefSubject.d.ts +4 -0
  39. package/Subject/definition.d.ts +14 -2
  40. package/Subject.d.ts +3 -0
  41. package/SubscriptionRef.d.ts +0 -1
  42. package/Supervisor/definition.d.ts +1 -1
  43. package/_cjs/Cached/api.cjs +8 -2
  44. package/_cjs/Cached/api.cjs.map +1 -1
  45. package/_cjs/Cached/definition.cjs +2 -6
  46. package/_cjs/Cached/definition.cjs.map +1 -1
  47. package/_cjs/CancellerState.cjs +4 -7
  48. package/_cjs/CancellerState.cjs.map +1 -1
  49. package/_cjs/Channel/UpstreamPullRequest/definition.cjs +4 -2
  50. package/_cjs/Channel/UpstreamPullRequest/definition.cjs.map +1 -1
  51. package/_cjs/Channel/api.cjs +2 -3
  52. package/_cjs/Channel/api.cjs.map +1 -1
  53. package/_cjs/Channel/definition.cjs +22 -16
  54. package/_cjs/Channel/definition.cjs.map +1 -1
  55. package/_cjs/Channel/internal/ChannelExecutor.cjs +35 -11
  56. package/_cjs/Channel/internal/ChannelExecutor.cjs.map +1 -1
  57. package/_cjs/Channel/internal/ChannelState.cjs +15 -8
  58. package/_cjs/Channel/internal/ChannelState.cjs.map +1 -1
  59. package/_cjs/Channel/internal/MergeDecision.cjs +6 -8
  60. package/_cjs/Channel/internal/MergeDecision.cjs.map +1 -1
  61. package/_cjs/Channel/internal/MergeState.cjs +7 -3
  62. package/_cjs/Channel/internal/MergeState.cjs.map +1 -1
  63. package/_cjs/Channel/internal/SingleProducerAsyncInput.cjs +49 -42
  64. package/_cjs/Channel/internal/SingleProducerAsyncInput.cjs.map +1 -1
  65. package/_cjs/Clock/live.cjs +1 -4
  66. package/_cjs/Clock/live.cjs.map +1 -1
  67. package/_cjs/CountdownLatch.cjs +22 -12
  68. package/_cjs/CountdownLatch.cjs.map +1 -1
  69. package/_cjs/Differ/api.cjs +3 -12
  70. package/_cjs/Differ/api.cjs.map +1 -1
  71. package/_cjs/Differ/definition.cjs +1 -5
  72. package/_cjs/Differ/definition.cjs.map +1 -1
  73. package/_cjs/Fiber/FiberMessage.cjs +6 -3
  74. package/_cjs/Fiber/FiberMessage.cjs.map +1 -1
  75. package/_cjs/Fiber/FiberRuntime.cjs +66 -61
  76. package/_cjs/Fiber/FiberRuntime.cjs.map +1 -1
  77. package/_cjs/Fiber/definition.cjs +10 -6
  78. package/_cjs/Fiber/definition.cjs.map +1 -1
  79. package/_cjs/FiberDescriptor.cjs +3 -0
  80. package/_cjs/FiberDescriptor.cjs.map +1 -1
  81. package/_cjs/FiberRef/definition.cjs +9 -6
  82. package/_cjs/FiberRef/definition.cjs.map +1 -1
  83. package/_cjs/FiberRefs/Patch.cjs +13 -13
  84. package/_cjs/FiberRefs/Patch.cjs.map +1 -1
  85. package/_cjs/FiberScope/definition.cjs +2 -0
  86. package/_cjs/FiberScope/definition.cjs.map +1 -1
  87. package/_cjs/FiberSet.cjs +4 -3
  88. package/_cjs/FiberSet.cjs.map +1 -1
  89. package/_cjs/FiberStatus/definition.cjs +12 -9
  90. package/_cjs/FiberStatus/definition.cjs.map +1 -1
  91. package/_cjs/Future/State.cjs +8 -7
  92. package/_cjs/Future/State.cjs.map +1 -1
  93. package/_cjs/Future/definition.cjs +3 -3
  94. package/_cjs/Future/definition.cjs.map +1 -1
  95. package/_cjs/Hub/api.cjs +61 -44
  96. package/_cjs/Hub/api.cjs.map +1 -1
  97. package/_cjs/Hub/definition.cjs +4 -8
  98. package/_cjs/Hub/definition.cjs.map +1 -1
  99. package/_cjs/Hub/internal.cjs +130 -110
  100. package/_cjs/Hub/internal.cjs.map +1 -1
  101. package/_cjs/IO/api/foreachExec.cjs +29 -4
  102. package/_cjs/IO/api/foreachExec.cjs.map +1 -1
  103. package/_cjs/IO/api/transplant.cjs +8 -7
  104. package/_cjs/IO/api/transplant.cjs.map +1 -1
  105. package/_cjs/IO/api.cjs +9 -4
  106. package/_cjs/IO/api.cjs.map +1 -1
  107. package/_cjs/IO/definition.cjs +8 -12
  108. package/_cjs/IO/definition.cjs.map +1 -1
  109. package/_cjs/IO/runtime.cjs +64 -61
  110. package/_cjs/IO/runtime.cjs.map +1 -1
  111. package/_cjs/InterruptStatus/definition.cjs +1 -0
  112. package/_cjs/InterruptStatus/definition.cjs.map +1 -1
  113. package/_cjs/Layer/MemoMap.cjs +25 -24
  114. package/_cjs/Layer/MemoMap.cjs.map +1 -1
  115. package/_cjs/Layer/definition.cjs +30 -13
  116. package/_cjs/Layer/definition.cjs.map +1 -1
  117. package/_cjs/LogLevel.cjs +3 -0
  118. package/_cjs/LogLevel.cjs.map +1 -1
  119. package/_cjs/LogSpan.cjs +2 -0
  120. package/_cjs/LogSpan.cjs.map +1 -1
  121. package/_cjs/Logger/definition.cjs +1 -0
  122. package/_cjs/Logger/definition.cjs.map +1 -1
  123. package/_cjs/MVar/definition.cjs +3 -4
  124. package/_cjs/MVar/definition.cjs.map +1 -1
  125. package/_cjs/Push/Bounds.cjs +2 -0
  126. package/_cjs/Push/Bounds.cjs.map +1 -0
  127. package/_cjs/Push/FlattenStrategy.cjs +96 -0
  128. package/_cjs/Push/FlattenStrategy.cjs.map +1 -0
  129. package/_cjs/Push/IndexedBuffer.cjs +74 -0
  130. package/_cjs/Push/IndexedBuffer.cjs.map +1 -0
  131. package/_cjs/Push/MergeStrategy.cjs +47 -0
  132. package/_cjs/Push/MergeStrategy.cjs.map +1 -0
  133. package/_cjs/Push/Operator/IOLoopOperator.cjs +225 -0
  134. package/_cjs/Push/Operator/IOLoopOperator.cjs.map +1 -0
  135. package/_cjs/Push/Operator/IOOperator.cjs +104 -0
  136. package/_cjs/Push/Operator/IOOperator.cjs.map +1 -0
  137. package/_cjs/Push/Operator/LoopOperator.cjs +165 -0
  138. package/_cjs/Push/Operator/LoopOperator.cjs.map +1 -0
  139. package/_cjs/Push/Operator/SyncOperator.cjs +78 -0
  140. package/_cjs/Push/Operator/SyncOperator.cjs.map +1 -0
  141. package/_cjs/Push/Operator.cjs +2 -0
  142. package/_cjs/Push/Operator.cjs.map +1 -0
  143. package/_cjs/Push/Producer/IOProducer.cjs +72 -0
  144. package/_cjs/Push/Producer/IOProducer.cjs.map +1 -0
  145. package/_cjs/Push/Producer/SyncProducer.cjs +111 -0
  146. package/_cjs/Push/Producer/SyncProducer.cjs.map +1 -0
  147. package/_cjs/Push/Producer.cjs +2 -0
  148. package/_cjs/Push/Producer.cjs.map +1 -0
  149. package/_cjs/Push/Sink.cjs +238 -0
  150. package/_cjs/Push/Sink.cjs.map +1 -0
  151. package/_cjs/Push/api.cjs +369 -387
  152. package/_cjs/Push/api.cjs.map +1 -1
  153. package/_cjs/Push/definition.cjs +82 -26
  154. package/_cjs/Push/definition.cjs.map +1 -1
  155. package/_cjs/Push/internal.cjs +31 -26
  156. package/_cjs/Push/internal.cjs.map +1 -1
  157. package/_cjs/Push.cjs +66 -0
  158. package/_cjs/Push.cjs.map +1 -1
  159. package/_cjs/Queue/api/dimapIO.cjs +74 -32
  160. package/_cjs/Queue/api/dimapIO.cjs.map +1 -1
  161. package/_cjs/Queue/api/filterInputIO.cjs +51 -25
  162. package/_cjs/Queue/api/filterInputIO.cjs.map +1 -1
  163. package/_cjs/Queue/api/filterOutputIO.cjs +60 -30
  164. package/_cjs/Queue/api/filterOutputIO.cjs.map +1 -1
  165. package/_cjs/Queue/api/zipWithIO.cjs +27 -10
  166. package/_cjs/Queue/api/zipWithIO.cjs.map +1 -1
  167. package/_cjs/Queue/definition.cjs +3 -7
  168. package/_cjs/Queue/definition.cjs.map +1 -1
  169. package/_cjs/Queue/internal.cjs +73 -62
  170. package/_cjs/Queue/internal.cjs.map +1 -1
  171. package/_cjs/Queue/strategy.cjs +1 -3
  172. package/_cjs/Queue/strategy.cjs.map +1 -1
  173. package/_cjs/Random/live.cjs +4 -3
  174. package/_cjs/Random/live.cjs.map +1 -1
  175. package/_cjs/Ref/Atomic.cjs +2 -3
  176. package/_cjs/Ref/Atomic.cjs.map +1 -1
  177. package/_cjs/Ref/Derived.cjs +2 -3
  178. package/_cjs/Ref/Derived.cjs.map +1 -1
  179. package/_cjs/Ref/DerivedAll.cjs +2 -3
  180. package/_cjs/Ref/DerivedAll.cjs.map +1 -1
  181. package/_cjs/Ref/Synchronized/definition.cjs +17 -16
  182. package/_cjs/Ref/Synchronized/definition.cjs.map +1 -1
  183. package/_cjs/Ref/definition.cjs +2 -6
  184. package/_cjs/Ref/definition.cjs.map +1 -1
  185. package/_cjs/Reloadable/definition.cjs +2 -0
  186. package/_cjs/Reloadable/definition.cjs.map +1 -1
  187. package/_cjs/STM/definition.cjs +30 -25
  188. package/_cjs/STM/definition.cjs.map +1 -1
  189. package/_cjs/STM/driver.cjs +5 -0
  190. package/_cjs/STM/driver.cjs.map +1 -1
  191. package/_cjs/STM/internal/Entry.cjs +9 -6
  192. package/_cjs/STM/internal/Entry.cjs.map +1 -1
  193. package/_cjs/STM/internal/TryCommit.cjs +6 -7
  194. package/_cjs/STM/internal/TryCommit.cjs.map +1 -1
  195. package/_cjs/STM/internal/Versioned.cjs +2 -3
  196. package/_cjs/STM/internal/Versioned.cjs.map +1 -1
  197. package/_cjs/Schedule/Decision.cjs +3 -4
  198. package/_cjs/Schedule/Decision.cjs.map +1 -1
  199. package/_cjs/Schedule/Driver.cjs +4 -0
  200. package/_cjs/Schedule/Driver.cjs.map +1 -1
  201. package/_cjs/Schedule/api.cjs +2 -5
  202. package/_cjs/Schedule/api.cjs.map +1 -1
  203. package/_cjs/Schedule/definition.cjs +3 -1
  204. package/_cjs/Schedule/definition.cjs.map +1 -1
  205. package/_cjs/Scope/ReleaseMap/definition.cjs +8 -2
  206. package/_cjs/Scope/ReleaseMap/definition.cjs.map +1 -1
  207. package/_cjs/Scope/api.cjs +29 -11
  208. package/_cjs/Scope/api.cjs.map +1 -1
  209. package/_cjs/Scope/definition.cjs +3 -7
  210. package/_cjs/Scope/definition.cjs.map +1 -1
  211. package/_cjs/ScopedRef/api.cjs +8 -3
  212. package/_cjs/ScopedRef/api.cjs.map +1 -1
  213. package/_cjs/ScopedRef/definition.cjs +1 -5
  214. package/_cjs/ScopedRef/definition.cjs.map +1 -1
  215. package/_cjs/Semaphore/Reservation.cjs +2 -0
  216. package/_cjs/Semaphore/Reservation.cjs.map +1 -1
  217. package/_cjs/Semaphore/definition.cjs +42 -38
  218. package/_cjs/Semaphore/definition.cjs.map +1 -1
  219. package/_cjs/Sink/definition.cjs +3 -3
  220. package/_cjs/Sink/definition.cjs.map +1 -1
  221. package/_cjs/State/api.cjs +1 -4
  222. package/_cjs/State/api.cjs.map +1 -1
  223. package/_cjs/State/definition.cjs +2 -6
  224. package/_cjs/State/definition.cjs.map +1 -1
  225. package/_cjs/State/internal.cjs +1 -5
  226. package/_cjs/State/internal.cjs.map +1 -1
  227. package/_cjs/Stream/api/zipAllWith.cjs +7 -11
  228. package/_cjs/Stream/api/zipAllWith.cjs.map +1 -1
  229. package/_cjs/Stream/api/zipWithChunks.cjs +5 -5
  230. package/_cjs/Stream/api/zipWithChunks.cjs.map +1 -1
  231. package/_cjs/Stream/api.cjs +8 -7
  232. package/_cjs/Stream/api.cjs.map +1 -1
  233. package/_cjs/Stream/definition.cjs +3 -4
  234. package/_cjs/Stream/definition.cjs.map +1 -1
  235. package/_cjs/Stream/internal/DebounceState.cjs +5 -5
  236. package/_cjs/Stream/internal/DebounceState.cjs.map +1 -1
  237. package/_cjs/Stream/internal/Handoff.cjs +18 -17
  238. package/_cjs/Stream/internal/Handoff.cjs.map +1 -1
  239. package/_cjs/Stream/internal/SinkEndReason.cjs +5 -12
  240. package/_cjs/Stream/internal/SinkEndReason.cjs.map +1 -1
  241. package/_cjs/Stream/internal/Take.cjs +3 -0
  242. package/_cjs/Stream/internal/Take.cjs.map +1 -1
  243. package/_cjs/Subject/Atomic.cjs +45 -15
  244. package/_cjs/Subject/Atomic.cjs.map +1 -1
  245. package/_cjs/Subject/DeferredRef.cjs +56 -0
  246. package/_cjs/Subject/DeferredRef.cjs.map +1 -0
  247. package/_cjs/Subject/Hold.cjs +38 -0
  248. package/_cjs/Subject/Hold.cjs.map +1 -0
  249. package/_cjs/Subject/RefSubject/Atomic.cjs +171 -0
  250. package/_cjs/Subject/RefSubject/Atomic.cjs.map +1 -0
  251. package/_cjs/Subject/RefSubject/Derived.cjs +103 -0
  252. package/_cjs/Subject/RefSubject/Derived.cjs.map +1 -0
  253. package/_cjs/Subject/RefSubject/RefSubject.cjs +18 -0
  254. package/_cjs/Subject/RefSubject/RefSubject.cjs.map +1 -0
  255. package/_cjs/Subject/RefSubject/constructors.cjs +30 -0
  256. package/_cjs/Subject/RefSubject/constructors.cjs.map +1 -0
  257. package/_cjs/Subject/RefSubject.cjs +2 -0
  258. package/_cjs/Subject/RefSubject.cjs.map +1 -0
  259. package/_cjs/Subject/definition.cjs +11 -1
  260. package/_cjs/Subject/definition.cjs.map +1 -1
  261. package/_cjs/Subject.cjs +33 -0
  262. package/_cjs/Subject.cjs.map +1 -1
  263. package/_cjs/SubscriptionRef.cjs +4 -5
  264. package/_cjs/SubscriptionRef.cjs.map +1 -1
  265. package/_cjs/Supervisor/constructors.cjs +3 -11
  266. package/_cjs/Supervisor/constructors.cjs.map +1 -1
  267. package/_cjs/Supervisor/definition.cjs +10 -4
  268. package/_cjs/Supervisor/definition.cjs.map +1 -1
  269. package/_cjs/SupervisorPatch.cjs +9 -12
  270. package/_cjs/SupervisorPatch.cjs.map +1 -1
  271. package/_cjs/TExit/definition.cjs +19 -18
  272. package/_cjs/TExit/definition.cjs.map +1 -1
  273. package/_cjs/TReentrantLock/definition.cjs +8 -3
  274. package/_cjs/TReentrantLock/definition.cjs.map +1 -1
  275. package/_cjs/TRef/definition.cjs +6 -6
  276. package/_cjs/TRef/definition.cjs.map +1 -1
  277. package/_cjs/internal/BackgroundScheduler.cjs +16 -16
  278. package/_cjs/internal/BackgroundScheduler.cjs.map +1 -1
  279. package/_cjs/internal/HashedPair.cjs +2 -0
  280. package/_cjs/internal/HashedPair.cjs.map +1 -1
  281. package/_cjs/internal/Hub.cjs +39 -15
  282. package/_cjs/internal/Hub.cjs.map +1 -1
  283. package/_cjs/internal/IsFatal.cjs +7 -11
  284. package/_cjs/internal/IsFatal.cjs.map +1 -1
  285. package/_cjs/internal/MutableQueue.cjs +14 -11
  286. package/_cjs/internal/MutableQueue.cjs.map +1 -1
  287. package/_cjs/internal/Scheduler.cjs +4 -8
  288. package/_cjs/internal/Scheduler.cjs.map +1 -1
  289. package/_cjs/internal/StackTraceBuilder.cjs +2 -4
  290. package/_cjs/internal/StackTraceBuilder.cjs.map +1 -1
  291. package/_mjs/Cached/api.mjs +8 -2
  292. package/_mjs/Cached/api.mjs.map +1 -1
  293. package/_mjs/Cached/definition.mjs +1 -5
  294. package/_mjs/Cached/definition.mjs.map +1 -1
  295. package/_mjs/CancellerState.mjs +4 -7
  296. package/_mjs/CancellerState.mjs.map +1 -1
  297. package/_mjs/Channel/UpstreamPullRequest/definition.mjs +4 -2
  298. package/_mjs/Channel/UpstreamPullRequest/definition.mjs.map +1 -1
  299. package/_mjs/Channel/api.mjs +2 -3
  300. package/_mjs/Channel/api.mjs.map +1 -1
  301. package/_mjs/Channel/definition.mjs +21 -15
  302. package/_mjs/Channel/definition.mjs.map +1 -1
  303. package/_mjs/Channel/internal/ChannelExecutor.mjs +35 -11
  304. package/_mjs/Channel/internal/ChannelExecutor.mjs.map +1 -1
  305. package/_mjs/Channel/internal/ChannelState.mjs +15 -8
  306. package/_mjs/Channel/internal/ChannelState.mjs.map +1 -1
  307. package/_mjs/Channel/internal/MergeDecision.mjs +5 -7
  308. package/_mjs/Channel/internal/MergeDecision.mjs.map +1 -1
  309. package/_mjs/Channel/internal/MergeState.mjs +7 -3
  310. package/_mjs/Channel/internal/MergeState.mjs.map +1 -1
  311. package/_mjs/Channel/internal/SingleProducerAsyncInput.mjs +49 -42
  312. package/_mjs/Channel/internal/SingleProducerAsyncInput.mjs.map +1 -1
  313. package/_mjs/Clock/live.mjs +1 -4
  314. package/_mjs/Clock/live.mjs.map +1 -1
  315. package/_mjs/CountdownLatch.mjs +21 -11
  316. package/_mjs/CountdownLatch.mjs.map +1 -1
  317. package/_mjs/Differ/api.mjs +3 -12
  318. package/_mjs/Differ/api.mjs.map +1 -1
  319. package/_mjs/Differ/definition.mjs +1 -5
  320. package/_mjs/Differ/definition.mjs.map +1 -1
  321. package/_mjs/Fiber/FiberMessage.mjs +6 -3
  322. package/_mjs/Fiber/FiberMessage.mjs.map +1 -1
  323. package/_mjs/Fiber/FiberRuntime.mjs +66 -61
  324. package/_mjs/Fiber/FiberRuntime.mjs.map +1 -1
  325. package/_mjs/Fiber/definition.mjs +9 -5
  326. package/_mjs/Fiber/definition.mjs.map +1 -1
  327. package/_mjs/FiberDescriptor.mjs +3 -0
  328. package/_mjs/FiberDescriptor.mjs.map +1 -1
  329. package/_mjs/FiberRef/definition.mjs +9 -6
  330. package/_mjs/FiberRef/definition.mjs.map +1 -1
  331. package/_mjs/FiberRefs/Patch.mjs +13 -13
  332. package/_mjs/FiberRefs/Patch.mjs.map +1 -1
  333. package/_mjs/FiberScope/definition.mjs +2 -0
  334. package/_mjs/FiberScope/definition.mjs.map +1 -1
  335. package/_mjs/FiberSet.mjs +4 -3
  336. package/_mjs/FiberSet.mjs.map +1 -1
  337. package/_mjs/FiberStatus/definition.mjs +12 -9
  338. package/_mjs/FiberStatus/definition.mjs.map +1 -1
  339. package/_mjs/Future/State.mjs +8 -7
  340. package/_mjs/Future/State.mjs.map +1 -1
  341. package/_mjs/Future/definition.mjs +3 -3
  342. package/_mjs/Future/definition.mjs.map +1 -1
  343. package/_mjs/Hub/api.mjs +61 -44
  344. package/_mjs/Hub/api.mjs.map +1 -1
  345. package/_mjs/Hub/definition.mjs +3 -7
  346. package/_mjs/Hub/definition.mjs.map +1 -1
  347. package/_mjs/Hub/internal.mjs +130 -110
  348. package/_mjs/Hub/internal.mjs.map +1 -1
  349. package/_mjs/IO/api/foreachExec.mjs +27 -4
  350. package/_mjs/IO/api/foreachExec.mjs.map +1 -1
  351. package/_mjs/IO/api/transplant.mjs +8 -7
  352. package/_mjs/IO/api/transplant.mjs.map +1 -1
  353. package/_mjs/IO/api.mjs +9 -4
  354. package/_mjs/IO/api.mjs.map +1 -1
  355. package/_mjs/IO/definition.mjs +7 -11
  356. package/_mjs/IO/definition.mjs.map +1 -1
  357. package/_mjs/IO/runtime.mjs +64 -61
  358. package/_mjs/IO/runtime.mjs.map +1 -1
  359. package/_mjs/InterruptStatus/definition.mjs +1 -0
  360. package/_mjs/InterruptStatus/definition.mjs.map +1 -1
  361. package/_mjs/Layer/MemoMap.mjs +25 -24
  362. package/_mjs/Layer/MemoMap.mjs.map +1 -1
  363. package/_mjs/Layer/definition.mjs +29 -12
  364. package/_mjs/Layer/definition.mjs.map +1 -1
  365. package/_mjs/LogLevel.mjs +3 -0
  366. package/_mjs/LogLevel.mjs.map +1 -1
  367. package/_mjs/LogSpan.mjs +2 -0
  368. package/_mjs/LogSpan.mjs.map +1 -1
  369. package/_mjs/Logger/definition.mjs +1 -0
  370. package/_mjs/Logger/definition.mjs.map +1 -1
  371. package/_mjs/MVar/definition.mjs +2 -3
  372. package/_mjs/MVar/definition.mjs.map +1 -1
  373. package/_mjs/Push/Bounds.mjs +2 -0
  374. package/_mjs/Push/Bounds.mjs.map +1 -0
  375. package/_mjs/Push/FlattenStrategy.mjs +87 -0
  376. package/_mjs/Push/FlattenStrategy.mjs.map +1 -0
  377. package/_mjs/Push/IndexedBuffer.mjs +65 -0
  378. package/_mjs/Push/IndexedBuffer.mjs.map +1 -0
  379. package/_mjs/Push/MergeStrategy.mjs +36 -0
  380. package/_mjs/Push/MergeStrategy.mjs.map +1 -0
  381. package/_mjs/Push/Operator/IOLoopOperator.mjs +208 -0
  382. package/_mjs/Push/Operator/IOLoopOperator.mjs.map +1 -0
  383. package/_mjs/Push/Operator/IOOperator.mjs +91 -0
  384. package/_mjs/Push/Operator/IOOperator.mjs.map +1 -0
  385. package/_mjs/Push/Operator/LoopOperator.mjs +151 -0
  386. package/_mjs/Push/Operator/LoopOperator.mjs.map +1 -0
  387. package/_mjs/Push/Operator/SyncOperator.mjs +67 -0
  388. package/_mjs/Push/Operator/SyncOperator.mjs.map +1 -0
  389. package/_mjs/Push/Operator.mjs +2 -0
  390. package/_mjs/Push/Operator.mjs.map +1 -0
  391. package/_mjs/Push/Producer/IOProducer.mjs +60 -0
  392. package/_mjs/Push/Producer/IOProducer.mjs.map +1 -0
  393. package/_mjs/Push/Producer/SyncProducer.mjs +94 -0
  394. package/_mjs/Push/Producer/SyncProducer.mjs.map +1 -0
  395. package/_mjs/Push/Producer.mjs +2 -0
  396. package/_mjs/Push/Producer.mjs.map +1 -0
  397. package/_mjs/Push/Sink.mjs +225 -0
  398. package/_mjs/Push/Sink.mjs.map +1 -0
  399. package/_mjs/Push/api.mjs +340 -348
  400. package/_mjs/Push/api.mjs.map +1 -1
  401. package/_mjs/Push/definition.mjs +75 -21
  402. package/_mjs/Push/definition.mjs.map +1 -1
  403. package/_mjs/Push/internal.mjs +30 -26
  404. package/_mjs/Push/internal.mjs.map +1 -1
  405. package/_mjs/Push.mjs +7 -1
  406. package/_mjs/Push.mjs.map +1 -1
  407. package/_mjs/Queue/api/dimapIO.mjs +74 -32
  408. package/_mjs/Queue/api/dimapIO.mjs.map +1 -1
  409. package/_mjs/Queue/api/filterInputIO.mjs +51 -25
  410. package/_mjs/Queue/api/filterInputIO.mjs.map +1 -1
  411. package/_mjs/Queue/api/filterOutputIO.mjs +60 -30
  412. package/_mjs/Queue/api/filterOutputIO.mjs.map +1 -1
  413. package/_mjs/Queue/api/zipWithIO.mjs +27 -10
  414. package/_mjs/Queue/api/zipWithIO.mjs.map +1 -1
  415. package/_mjs/Queue/definition.mjs +3 -7
  416. package/_mjs/Queue/definition.mjs.map +1 -1
  417. package/_mjs/Queue/internal.mjs +73 -62
  418. package/_mjs/Queue/internal.mjs.map +1 -1
  419. package/_mjs/Queue/strategy.mjs +1 -3
  420. package/_mjs/Queue/strategy.mjs.map +1 -1
  421. package/_mjs/Random/live.mjs +4 -3
  422. package/_mjs/Random/live.mjs.map +1 -1
  423. package/_mjs/Ref/Atomic.mjs +2 -3
  424. package/_mjs/Ref/Atomic.mjs.map +1 -1
  425. package/_mjs/Ref/Derived.mjs +2 -3
  426. package/_mjs/Ref/Derived.mjs.map +1 -1
  427. package/_mjs/Ref/DerivedAll.mjs +2 -3
  428. package/_mjs/Ref/DerivedAll.mjs.map +1 -1
  429. package/_mjs/Ref/Synchronized/definition.mjs +16 -15
  430. package/_mjs/Ref/Synchronized/definition.mjs.map +1 -1
  431. package/_mjs/Ref/definition.mjs +1 -5
  432. package/_mjs/Ref/definition.mjs.map +1 -1
  433. package/_mjs/Reloadable/definition.mjs +2 -0
  434. package/_mjs/Reloadable/definition.mjs.map +1 -1
  435. package/_mjs/STM/definition.mjs +29 -24
  436. package/_mjs/STM/definition.mjs.map +1 -1
  437. package/_mjs/STM/driver.mjs +5 -0
  438. package/_mjs/STM/driver.mjs.map +1 -1
  439. package/_mjs/STM/internal/Entry.mjs +8 -5
  440. package/_mjs/STM/internal/Entry.mjs.map +1 -1
  441. package/_mjs/STM/internal/TryCommit.mjs +6 -7
  442. package/_mjs/STM/internal/TryCommit.mjs.map +1 -1
  443. package/_mjs/STM/internal/Versioned.mjs +2 -3
  444. package/_mjs/STM/internal/Versioned.mjs.map +1 -1
  445. package/_mjs/Schedule/Decision.mjs +3 -4
  446. package/_mjs/Schedule/Decision.mjs.map +1 -1
  447. package/_mjs/Schedule/Driver.mjs +4 -0
  448. package/_mjs/Schedule/Driver.mjs.map +1 -1
  449. package/_mjs/Schedule/api.mjs +2 -5
  450. package/_mjs/Schedule/api.mjs.map +1 -1
  451. package/_mjs/Schedule/definition.mjs +3 -1
  452. package/_mjs/Schedule/definition.mjs.map +1 -1
  453. package/_mjs/Scope/ReleaseMap/definition.mjs +8 -2
  454. package/_mjs/Scope/ReleaseMap/definition.mjs.map +1 -1
  455. package/_mjs/Scope/api.mjs +23 -8
  456. package/_mjs/Scope/api.mjs.map +1 -1
  457. package/_mjs/Scope/definition.mjs +2 -6
  458. package/_mjs/Scope/definition.mjs.map +1 -1
  459. package/_mjs/ScopedRef/api.mjs +8 -3
  460. package/_mjs/ScopedRef/api.mjs.map +1 -1
  461. package/_mjs/ScopedRef/definition.mjs +1 -5
  462. package/_mjs/ScopedRef/definition.mjs.map +1 -1
  463. package/_mjs/Semaphore/Reservation.mjs +2 -0
  464. package/_mjs/Semaphore/Reservation.mjs.map +1 -1
  465. package/_mjs/Semaphore/definition.mjs +42 -38
  466. package/_mjs/Semaphore/definition.mjs.map +1 -1
  467. package/_mjs/Sink/definition.mjs +3 -3
  468. package/_mjs/Sink/definition.mjs.map +1 -1
  469. package/_mjs/State/api.mjs +1 -4
  470. package/_mjs/State/api.mjs.map +1 -1
  471. package/_mjs/State/definition.mjs +1 -5
  472. package/_mjs/State/definition.mjs.map +1 -1
  473. package/_mjs/State/internal.mjs +1 -5
  474. package/_mjs/State/internal.mjs.map +1 -1
  475. package/_mjs/Stream/api/zipAllWith.mjs +7 -11
  476. package/_mjs/Stream/api/zipAllWith.mjs.map +1 -1
  477. package/_mjs/Stream/api/zipWithChunks.mjs +5 -5
  478. package/_mjs/Stream/api/zipWithChunks.mjs.map +1 -1
  479. package/_mjs/Stream/api.mjs +8 -7
  480. package/_mjs/Stream/api.mjs.map +1 -1
  481. package/_mjs/Stream/definition.mjs +2 -3
  482. package/_mjs/Stream/definition.mjs.map +1 -1
  483. package/_mjs/Stream/internal/DebounceState.mjs +5 -5
  484. package/_mjs/Stream/internal/DebounceState.mjs.map +1 -1
  485. package/_mjs/Stream/internal/Handoff.mjs +17 -16
  486. package/_mjs/Stream/internal/Handoff.mjs.map +1 -1
  487. package/_mjs/Stream/internal/SinkEndReason.mjs +4 -11
  488. package/_mjs/Stream/internal/SinkEndReason.mjs.map +1 -1
  489. package/_mjs/Stream/internal/Take.mjs +3 -0
  490. package/_mjs/Stream/internal/Take.mjs.map +1 -1
  491. package/_mjs/Subject/Atomic.mjs +46 -15
  492. package/_mjs/Subject/Atomic.mjs.map +1 -1
  493. package/_mjs/Subject/DeferredRef.mjs +48 -0
  494. package/_mjs/Subject/DeferredRef.mjs.map +1 -0
  495. package/_mjs/Subject/Hold.mjs +30 -0
  496. package/_mjs/Subject/Hold.mjs.map +1 -0
  497. package/_mjs/Subject/RefSubject/Atomic.mjs +163 -0
  498. package/_mjs/Subject/RefSubject/Atomic.mjs.map +1 -0
  499. package/_mjs/Subject/RefSubject/Derived.mjs +95 -0
  500. package/_mjs/Subject/RefSubject/Derived.mjs.map +1 -0
  501. package/_mjs/Subject/RefSubject/RefSubject.mjs +11 -0
  502. package/_mjs/Subject/RefSubject/RefSubject.mjs.map +1 -0
  503. package/_mjs/Subject/RefSubject/constructors.mjs +23 -0
  504. package/_mjs/Subject/RefSubject/constructors.mjs.map +1 -0
  505. package/_mjs/Subject/RefSubject.mjs +2 -0
  506. package/_mjs/Subject/RefSubject.mjs.map +1 -0
  507. package/_mjs/Subject/definition.mjs +9 -0
  508. package/_mjs/Subject/definition.mjs.map +1 -1
  509. package/_mjs/Subject.mjs +3 -0
  510. package/_mjs/Subject.mjs.map +1 -1
  511. package/_mjs/SubscriptionRef.mjs +4 -5
  512. package/_mjs/SubscriptionRef.mjs.map +1 -1
  513. package/_mjs/Supervisor/constructors.mjs +3 -11
  514. package/_mjs/Supervisor/constructors.mjs.map +1 -1
  515. package/_mjs/Supervisor/definition.mjs +10 -4
  516. package/_mjs/Supervisor/definition.mjs.map +1 -1
  517. package/_mjs/SupervisorPatch.mjs +9 -12
  518. package/_mjs/SupervisorPatch.mjs.map +1 -1
  519. package/_mjs/TExit/definition.mjs +19 -18
  520. package/_mjs/TExit/definition.mjs.map +1 -1
  521. package/_mjs/TReentrantLock/definition.mjs +8 -3
  522. package/_mjs/TReentrantLock/definition.mjs.map +1 -1
  523. package/_mjs/TRef/definition.mjs +6 -6
  524. package/_mjs/TRef/definition.mjs.map +1 -1
  525. package/_mjs/internal/BackgroundScheduler.mjs +16 -16
  526. package/_mjs/internal/BackgroundScheduler.mjs.map +1 -1
  527. package/_mjs/internal/HashedPair.mjs +2 -0
  528. package/_mjs/internal/HashedPair.mjs.map +1 -1
  529. package/_mjs/internal/Hub.mjs +39 -15
  530. package/_mjs/internal/Hub.mjs.map +1 -1
  531. package/_mjs/internal/IsFatal.mjs +7 -11
  532. package/_mjs/internal/IsFatal.mjs.map +1 -1
  533. package/_mjs/internal/MutableQueue.mjs +14 -11
  534. package/_mjs/internal/MutableQueue.mjs.map +1 -1
  535. package/_mjs/internal/Scheduler.mjs +4 -8
  536. package/_mjs/internal/Scheduler.mjs.map +1 -1
  537. package/_mjs/internal/StackTraceBuilder.mjs +2 -4
  538. package/_mjs/internal/StackTraceBuilder.mjs.map +1 -1
  539. package/_src/Cached/api.ts +8 -2
  540. package/_src/Channel/internal/SingleProducerAsyncInput.ts +6 -4
  541. package/_src/CountdownLatch.ts +24 -13
  542. package/_src/Fiber/FiberRuntime.ts +4 -2
  543. package/_src/FiberRef/definition.ts +1 -1
  544. package/_src/Hub/api.ts +85 -54
  545. package/_src/Hub/internal.ts +36 -20
  546. package/_src/IO/api/foreachExec.ts +47 -0
  547. package/_src/IO/api.ts +0 -5
  548. package/_src/Push/Bounds.ts +4 -0
  549. package/_src/Push/FlattenStrategy.ts +137 -0
  550. package/_src/Push/IndexedBuffer.ts +79 -0
  551. package/_src/Push/MergeStrategy.ts +59 -0
  552. package/_src/Push/Operator/IOLoopOperator.ts +413 -0
  553. package/_src/Push/Operator/IOOperator.ts +173 -0
  554. package/_src/Push/Operator/LoopOperator.ts +242 -0
  555. package/_src/Push/Operator/SyncOperator.ts +107 -0
  556. package/_src/Push/Operator.ts +7 -0
  557. package/_src/Push/Producer/IOProducer.ts +83 -0
  558. package/_src/Push/Producer/SyncProducer.ts +105 -0
  559. package/_src/Push/Producer.ts +0 -0
  560. package/_src/Push/Sink.ts +302 -0
  561. package/_src/Push/api.ts +389 -515
  562. package/_src/Push/definition.ts +216 -23
  563. package/_src/Push/internal.ts +11 -0
  564. package/_src/Push.ts +7 -1
  565. package/_src/Queue/api/dimapIO.ts +57 -19
  566. package/_src/Queue/api/filterInputIO.ts +36 -12
  567. package/_src/Queue/api/filterOutputIO.ts +42 -18
  568. package/_src/Queue/api/zipWithIO.ts +23 -11
  569. package/_src/Queue/internal.ts +9 -3
  570. package/_src/Ref/Synchronized/definition.ts +81 -37
  571. package/_src/Ref/definition.ts +26 -0
  572. package/_src/Schedule/api.ts +1 -1
  573. package/_src/Scope/api.ts +22 -0
  574. package/_src/ScopedRef/api.ts +6 -2
  575. package/_src/Semaphore/definition.ts +4 -2
  576. package/_src/Sink/definition.ts +4 -5
  577. package/_src/Stream/api.ts +0 -2
  578. package/_src/Stream/definition.ts +0 -1
  579. package/_src/Subject/Atomic.ts +68 -11
  580. package/_src/Subject/DeferredRef.ts +44 -0
  581. package/_src/Subject/Hold.ts +48 -0
  582. package/_src/Subject/RefSubject/Atomic.ts +233 -0
  583. package/_src/Subject/RefSubject/Derived.ts +184 -0
  584. package/_src/Subject/RefSubject/RefSubject.ts +100 -0
  585. package/_src/Subject/RefSubject/constructors.ts +27 -0
  586. package/_src/Subject/RefSubject.ts +7 -0
  587. package/_src/Subject/definition.ts +21 -3
  588. package/_src/Subject.ts +6 -3
  589. package/_src/SubscriptionRef.ts +1 -1
  590. package/_src/Supervisor/constructors.ts +0 -2
  591. package/_src/Supervisor/definition.ts +2 -1
  592. package/_src/TReentrantLock/api.ts +1 -1
  593. package/_src/global.ts +8 -0
  594. package/_src/index.ts +49 -50
  595. package/_src/internal/MutableQueue.ts +5 -3
  596. package/global.d.ts +8 -0
  597. package/index.d.ts +0 -1
  598. package/internal/MutableQueue.d.ts +2 -2
  599. package/package.json +4 -4
  600. package/RefSubject/Atomic.d.ts +0 -34
  601. package/RefSubject/Synchronized/api.d.ts +0 -9
  602. package/RefSubject/Synchronized/definition.d.ts +0 -39
  603. package/RefSubject/api.d.ts +0 -120
  604. package/RefSubject/definition.d.ts +0 -52
  605. package/RefSubject.d.ts +0 -3
  606. package/_cjs/RefSubject/Atomic.cjs +0 -107
  607. package/_cjs/RefSubject/Atomic.cjs.map +0 -1
  608. package/_cjs/RefSubject/Synchronized/api.cjs +0 -22
  609. package/_cjs/RefSubject/Synchronized/api.cjs.map +0 -1
  610. package/_cjs/RefSubject/Synchronized/definition.cjs +0 -55
  611. package/_cjs/RefSubject/Synchronized/definition.cjs.map +0 -1
  612. package/_cjs/RefSubject/api.cjs +0 -251
  613. package/_cjs/RefSubject/api.cjs.map +0 -1
  614. package/_cjs/RefSubject/definition.cjs +0 -26
  615. package/_cjs/RefSubject/definition.cjs.map +0 -1
  616. package/_cjs/RefSubject.cjs +0 -39
  617. package/_cjs/RefSubject.cjs.map +0 -1
  618. package/_mjs/RefSubject/Atomic.mjs +0 -99
  619. package/_mjs/RefSubject/Atomic.mjs.map +0 -1
  620. package/_mjs/RefSubject/Synchronized/api.mjs +0 -15
  621. package/_mjs/RefSubject/Synchronized/api.mjs.map +0 -1
  622. package/_mjs/RefSubject/Synchronized/definition.mjs +0 -47
  623. package/_mjs/RefSubject/Synchronized/definition.mjs.map +0 -1
  624. package/_mjs/RefSubject/api.mjs +0 -229
  625. package/_mjs/RefSubject/api.mjs.map +0 -1
  626. package/_mjs/RefSubject/definition.mjs +0 -19
  627. package/_mjs/RefSubject/definition.mjs.map +0 -1
  628. package/_mjs/RefSubject.mjs +0 -5
  629. package/_mjs/RefSubject.mjs.map +0 -1
  630. package/_src/RefSubject/Atomic.ts +0 -129
  631. package/_src/RefSubject/Synchronized/api.ts +0 -14
  632. package/_src/RefSubject/Synchronized/definition.ts +0 -76
  633. package/_src/RefSubject/api.ts +0 -253
  634. package/_src/RefSubject/definition.ts +0 -70
  635. package/_src/RefSubject.ts +0 -5
@@ -0,0 +1,173 @@
1
+ import type { SyncOperator } from "./SyncOperator.js";
2
+
3
+ export const enum IOOperatorTag {
4
+ MapIO = "MapIO",
5
+ TapIO = "TapIO",
6
+ FilterIO = "FilterIO",
7
+ FilterMapIO = "FilterMapIO",
8
+ }
9
+
10
+ /**
11
+ * @tsplus type fncts.io.Push.IOOperator
12
+ * @tsplus companion fncts.io.Push.IOOperatorOps
13
+ */
14
+ export type IOOperator =
15
+ | MapIO<any, any, any, any>
16
+ | TapIO<any, any, any, any>
17
+ | FilterIO<any, any, any>
18
+ | FilterMapIO<any, any, any, any>;
19
+
20
+ export interface MapIO<R, E, A, B> {
21
+ readonly _tag: IOOperatorTag.MapIO;
22
+ readonly f: (a: A) => IO<R, E, B>;
23
+ }
24
+
25
+ export function MapIO<R, E, A, B>(f: (a: A) => IO<R, E, B>): MapIO<R, E, A, B> {
26
+ return {
27
+ _tag: IOOperatorTag.MapIO,
28
+ f,
29
+ };
30
+ }
31
+
32
+ export interface TapIO<R, E, A, B> {
33
+ readonly _tag: IOOperatorTag.TapIO;
34
+ readonly f: (a: A) => IO<R, E, B>;
35
+ }
36
+
37
+ export function TapIO<R, E, A, B>(f: (a: A) => IO<R, E, B>): TapIO<R, E, A, B> {
38
+ return {
39
+ _tag: IOOperatorTag.TapIO,
40
+ f,
41
+ };
42
+ }
43
+
44
+ export interface FilterIO<R, E, A> {
45
+ readonly _tag: IOOperatorTag.FilterIO;
46
+ readonly f: (a: A) => IO<R, E, boolean>;
47
+ }
48
+
49
+ export function FilterIO<R, E, A>(f: (a: A) => IO<R, E, boolean>): FilterIO<R, E, A> {
50
+ return {
51
+ _tag: IOOperatorTag.FilterIO,
52
+ f,
53
+ };
54
+ }
55
+
56
+ export interface FilterMapIO<R, E, A, B> {
57
+ readonly _tag: IOOperatorTag.FilterMapIO;
58
+ readonly f: (a: A) => IO<R, E, Maybe<B>>;
59
+ }
60
+
61
+ export function FilterMapIO<R, E, A, B>(f: (a: A) => IO<R, E, Maybe<B>>): FilterMapIO<R, E, A, B> {
62
+ return {
63
+ _tag: IOOperatorTag.FilterMapIO,
64
+ f,
65
+ };
66
+ }
67
+
68
+ export type IOOperatorFusionMap = {
69
+ readonly [K in IOOperator["_tag"]]: {
70
+ readonly [K2 in IOOperator["_tag"]]: (
71
+ op1: Extract<IOOperator, { readonly _tag: K }>,
72
+ op2: Extract<IOOperator, { readonly _tag: K2 }>,
73
+ ) => IOOperator;
74
+ };
75
+ };
76
+
77
+ const IOOperatorFusionMap: IOOperatorFusionMap = {
78
+ [IOOperatorTag.MapIO]: {
79
+ [IOOperatorTag.MapIO]: (op1, op2) => MapIO((a) => op1.f(a).flatMap(op2.f)),
80
+ [IOOperatorTag.TapIO]: (op1, op2) => MapIO((a) => op1.f(a).tap(op2.f)),
81
+ [IOOperatorTag.FilterIO]: (op1, op2) =>
82
+ FilterMapIO((a) => op1.f(a).flatMap((b) => op2.f(b).map((b2) => (b2 ? Just(b) : Nothing())))),
83
+ [IOOperatorTag.FilterMapIO]: (op1, op2) => FilterMapIO((a) => op1.f(a).flatMap(op2.f)),
84
+ },
85
+ [IOOperatorTag.TapIO]: {
86
+ [IOOperatorTag.MapIO]: (op1, op2) => MapIO((a) => op1.f(a).flatMap(() => op2.f(a))),
87
+ [IOOperatorTag.TapIO]: (op1, op2) => TapIO((a) => op1.f(a).tap(() => op2.f(a))),
88
+ [IOOperatorTag.FilterIO]: (op1, op2) => FilterIO((a) => op1.f(a).flatMap(() => op2.f(a))),
89
+ [IOOperatorTag.FilterMapIO]: (op1, op2) => FilterMapIO((a) => op1.f(a).flatMap(() => op2.f(a))),
90
+ },
91
+ [IOOperatorTag.FilterIO]: {
92
+ [IOOperatorTag.MapIO]: (op1, op2) =>
93
+ FilterMapIO((a) => op1.f(a).flatMap((b) => (b ? op2.f(a).map(Maybe.just) : IO.succeedNow(Nothing())))),
94
+ [IOOperatorTag.TapIO]: (op1, op2) => FilterIO((a) => op1.f(a).tap(() => op2.f(a))),
95
+ [IOOperatorTag.FilterIO]: (op1, op2) => FilterIO((a) => op1.f(a).zipWith(op2.f(a), (b1, b2) => b1 && b2)),
96
+ [IOOperatorTag.FilterMapIO]: (op1, op2) =>
97
+ FilterMapIO((a) => op1.f(a).flatMap((b) => (b ? op2.f(a) : IO.succeedNow(Nothing())))),
98
+ },
99
+ [IOOperatorTag.FilterMapIO]: {
100
+ [IOOperatorTag.MapIO]: (op1, op2) =>
101
+ FilterMapIO((a) => op1.f(a).flatMap((mb) => mb.match(() => IO.succeedNow(Nothing()), op2.f))),
102
+ [IOOperatorTag.TapIO]: (op1, op2) =>
103
+ FilterMapIO((a) =>
104
+ op1.f(a).flatMap((mb) =>
105
+ mb.match(
106
+ () => IO.succeedNow(Nothing()),
107
+ (b) => op2.f(b).as(() => a),
108
+ ),
109
+ ),
110
+ ),
111
+ [IOOperatorTag.FilterIO]: (op1, op2) =>
112
+ FilterMapIO((a) =>
113
+ op1.f(a).flatMap((mb) =>
114
+ mb.match(
115
+ () => IO.succeedNow(Nothing()),
116
+ (b) => op2.f(b).map((b2) => (b2 ? Just(b) : Nothing())),
117
+ ),
118
+ ),
119
+ ),
120
+ [IOOperatorTag.FilterMapIO]: (op1, op2) =>
121
+ FilterMapIO((a) =>
122
+ op1.f(a).flatMap((mb) =>
123
+ mb.match(
124
+ () => IO.succeedNow(Nothing()),
125
+ (b) => op2.f(b),
126
+ ),
127
+ ),
128
+ ),
129
+ },
130
+ };
131
+
132
+ /**
133
+ * @tsplus pipeable fncts.io.Push.IOOperator fuse
134
+ */
135
+ export function fuse(that: IOOperator) {
136
+ return (self: IOOperator): IOOperator => {
137
+ return IOOperatorFusionMap[self._tag][that._tag](self as any, that as any);
138
+ };
139
+ }
140
+
141
+ /**
142
+ * @tsplus static fncts.io.Push.IOOperatorOps fromSyncOperator
143
+ */
144
+ export function fromSyncOperator(op: SyncOperator): IOOperator {
145
+ return op.match({
146
+ Map: (op) => MapIO((a) => IO.succeedNow(op.f(a))),
147
+ Filter: (op) => FilterIO((a) => IO.succeedNow(op.f(a))),
148
+ FilterMap: (op) => FilterMapIO((a) => IO.succeedNow(op.f(a))),
149
+ });
150
+ }
151
+
152
+ /**
153
+ * @tsplus pipeable fncts.io.Push.IOOperator match
154
+ */
155
+ export function match<A, B, C, D>(cases: {
156
+ readonly MapIO: (f: MapIO<any, any, any, any>) => A;
157
+ readonly TapIO: (f: TapIO<any, any, any, any>) => B;
158
+ readonly FilterIO: (f: FilterIO<any, any, any>) => C;
159
+ readonly FilterMapIO: (f: FilterMapIO<any, any, any, any>) => D;
160
+ }) {
161
+ return (self: IOOperator): A | B | C | D => {
162
+ switch (self._tag) {
163
+ case IOOperatorTag.MapIO:
164
+ return cases.MapIO(self);
165
+ case IOOperatorTag.TapIO:
166
+ return cases.TapIO(self);
167
+ case IOOperatorTag.FilterIO:
168
+ return cases.FilterIO(self);
169
+ case IOOperatorTag.FilterMapIO:
170
+ return cases.FilterMapIO(self);
171
+ }
172
+ };
173
+ }
@@ -0,0 +1,242 @@
1
+ import type { Bounds } from "../Bounds.js";
2
+ import type { SyncOperator } from "./SyncOperator.js";
3
+
4
+ export const enum SyncLoopOperatorTag {
5
+ Loop = "Loop",
6
+ FilterMapLoop = "FilterMapLoop",
7
+ }
8
+
9
+ /**
10
+ * @tsplus type fncts.io.Push.SyncLoopOperator
11
+ */
12
+ export type SyncLoopOperator<B = any, A = any, C = any> = LoopOperator<B, A, C> | FilterMapLoopOperator<B, A, C>;
13
+
14
+ export interface LoopOperator<B, A, C> {
15
+ readonly _tag: SyncLoopOperatorTag.Loop;
16
+ readonly seed: B;
17
+ readonly f: (acc: B, a: A) => readonly [C, B];
18
+ }
19
+
20
+ export function LoopOperator<const B, A, C>(seed: B, f: (acc: B, a: A) => readonly [C, B]): LoopOperator<B, A, C> {
21
+ return {
22
+ _tag: SyncLoopOperatorTag.Loop,
23
+ seed,
24
+ f,
25
+ };
26
+ }
27
+
28
+ export interface FilterMapLoopOperator<B, A, C> {
29
+ readonly _tag: SyncLoopOperatorTag.FilterMapLoop;
30
+ readonly seed: B;
31
+ readonly f: (acc: B, a: A) => readonly [Maybe<C>, B];
32
+ }
33
+
34
+ export function FilterMapLoopOperator<const B, A, C>(
35
+ seed: B,
36
+ f: (acc: B, a: A) => readonly [Maybe<C>, B],
37
+ ): FilterMapLoopOperator<B, A, C> {
38
+ return {
39
+ _tag: SyncLoopOperatorTag.FilterMapLoop,
40
+ seed,
41
+ f,
42
+ };
43
+ }
44
+
45
+ export const enum SliceOperatorTag {
46
+ SliceOperator,
47
+ FilterMapSliceOperator,
48
+ }
49
+
50
+ export interface SliceOperator {
51
+ readonly _tag: SliceOperatorTag.SliceOperator;
52
+ readonly bounds: Bounds;
53
+ }
54
+
55
+ export function SliceOperator(bounds: Bounds): SliceOperator {
56
+ return {
57
+ _tag: SliceOperatorTag.SliceOperator,
58
+ bounds,
59
+ };
60
+ }
61
+
62
+ export interface FilterMapSliceOperator<A, B, C> {
63
+ readonly _tag: SliceOperatorTag.FilterMapSliceOperator;
64
+ readonly seed: B;
65
+ readonly f: (acc: B, a: A) => Either<readonly [Maybe<C>, B], Maybe<C>>;
66
+ }
67
+
68
+ export function FilterMapSliceOperator<const B, A, C>(
69
+ seed: B,
70
+ f: (acc: B, a: A) => Either<readonly [Maybe<C>, B], Maybe<C>>,
71
+ ): FilterMapSliceOperator<A, B, C> {
72
+ return {
73
+ _tag: SliceOperatorTag.FilterMapSliceOperator,
74
+ seed,
75
+ f,
76
+ };
77
+ }
78
+
79
+ /**
80
+ * @tsplus pipeable fncts.io.Push.SyncLoopOperator match
81
+ */
82
+ export function matchSyncLoopOperator<A, B, C, D, E>(matchers: {
83
+ Loop: (op: LoopOperator<A, B, C>) => D;
84
+ FilterMapLoop: (op: FilterMapLoopOperator<A, B, C>) => E;
85
+ }) {
86
+ return (self: SyncLoopOperator<A, B, C>): D | E => {
87
+ switch (self._tag) {
88
+ case SyncLoopOperatorTag.Loop:
89
+ return matchers.Loop(self);
90
+ case SyncLoopOperatorTag.FilterMapLoop:
91
+ return matchers.FilterMapLoop(self);
92
+ }
93
+ };
94
+ }
95
+
96
+ export function fuseSyncOperatorBefore(that: SyncOperator) {
97
+ return (self: SyncLoopOperator): SyncLoopOperator => {
98
+ return that.match({
99
+ Map: (op) =>
100
+ self.match({
101
+ Loop: (lop) => LoopOperator(lop.seed, (acc, a) => lop.f(acc, op.f(a))),
102
+ FilterMapLoop: (lop) => FilterMapLoopOperator(lop.seed, (acc, a) => lop.f(acc, op.f(a))),
103
+ }),
104
+ Filter: (op) =>
105
+ self.match({
106
+ Loop: (lop) =>
107
+ FilterMapLoopOperator(lop.seed, (acc, a) => {
108
+ const [b, c] = lop.f(acc, a);
109
+ if (op.f(a)) {
110
+ return [Just(b), c];
111
+ } else {
112
+ return [Nothing(), c];
113
+ }
114
+ }),
115
+ FilterMapLoop: (lop) =>
116
+ FilterMapLoopOperator(lop.seed, (acc, a) => {
117
+ if (op.f(a)) {
118
+ return [Nothing(), acc];
119
+ } else {
120
+ return lop.f(acc, a);
121
+ }
122
+ }),
123
+ }),
124
+ FilterMap: (op) =>
125
+ self.match({
126
+ Loop: (lop) =>
127
+ FilterMapLoopOperator(lop.seed, (acc, a) =>
128
+ op.f(a).match(
129
+ () => [Nothing(), acc],
130
+ (x) => {
131
+ const [b, c] = lop.f(acc, x);
132
+ return [Just(b), c];
133
+ },
134
+ ),
135
+ ),
136
+ FilterMapLoop: (lop) =>
137
+ FilterMapLoopOperator(lop.seed, (acc, a) =>
138
+ op.f(a).match(
139
+ () => [Nothing(), acc],
140
+ (x) => lop.f(acc, x.value),
141
+ ),
142
+ ),
143
+ }),
144
+ });
145
+ };
146
+ }
147
+
148
+ export function fuseSyncOperatorAfter(that: SyncOperator) {
149
+ return (self: SyncLoopOperator): SyncLoopOperator =>
150
+ self.match({
151
+ Loop: (lop) =>
152
+ that.match({
153
+ Map: (op) =>
154
+ LoopOperator(lop.seed, (acc, a) => {
155
+ const [b, c] = lop.f(acc, a);
156
+ return [op.f(b), c];
157
+ }),
158
+ Filter: (op) =>
159
+ FilterMapLoopOperator(lop.seed, (acc, a) => {
160
+ const [b, c] = lop.f(acc, a);
161
+ if (op.f(b)) {
162
+ return [Just(b), c];
163
+ } else {
164
+ return [Nothing(), c];
165
+ }
166
+ }),
167
+ FilterMap: (op) =>
168
+ FilterMapLoopOperator(lop.seed, (acc, a) => {
169
+ const [b, c] = lop.f(acc, a);
170
+ return op.f(b).match(
171
+ () => [Nothing(), c],
172
+ (d) => [Just(d), c],
173
+ );
174
+ }),
175
+ }),
176
+ FilterMapLoop: (lop) =>
177
+ that.match({
178
+ Map: (op) =>
179
+ FilterMapLoopOperator(lop.seed, (acc, a) => {
180
+ const [b, c] = lop.f(acc, a);
181
+ return [b.map(op.f), c];
182
+ }),
183
+ Filter: (op) =>
184
+ FilterMapLoopOperator(lop.seed, (acc, a) => {
185
+ const [b, c] = lop.f(acc, a);
186
+ return [b.filter(op.f), c];
187
+ }),
188
+ FilterMap: (op) =>
189
+ FilterMapLoopOperator(lop.seed, (acc, a) => {
190
+ const [b, c] = lop.f(acc, a);
191
+ return [b.flatMap(op.f), c];
192
+ }),
193
+ }),
194
+ });
195
+ }
196
+
197
+ export function fuse<C, D, E>(that: SyncLoopOperator<D, C, E>) {
198
+ return <A, B>(self: SyncLoopOperator<A, B, C>): SyncLoopOperator<readonly [A, D], B, E> => {
199
+ return self.match({
200
+ Loop: (op1) =>
201
+ that.match({
202
+ Loop: (op2) =>
203
+ LoopOperator([op1.seed, op2.seed], ([a, d], b) => {
204
+ const [c, a1] = op1.f(a, b);
205
+ const [e, d1] = op2.f(d, c);
206
+ return [e, [a1, d1]];
207
+ }),
208
+ FilterMapLoop: (op2) =>
209
+ FilterMapLoopOperator([op1.seed, op2.seed], ([a, d], b) => {
210
+ const [c, a1] = op1.f(a, b);
211
+ const [e, d1] = op2.f(d, c);
212
+ return [e, [a1, d1]];
213
+ }),
214
+ }),
215
+ FilterMapLoop: (op1) =>
216
+ that.match({
217
+ Loop: (op2) =>
218
+ FilterMapLoopOperator([op1.seed, op2.seed], ([a, d], b) => {
219
+ const [c, a1] = op1.f(a, b);
220
+ return c.match(
221
+ () => [Nothing(), [a1, d]],
222
+ (c) => {
223
+ const [e, d1] = op2.f(d, c);
224
+ return [Just(e), [a1, d1]];
225
+ },
226
+ );
227
+ }),
228
+ FilterMapLoop: (op2) =>
229
+ FilterMapLoopOperator([op1.seed, op2.seed], ([a, d], b) => {
230
+ const [c, a1] = op1.f(a, b);
231
+ return c.match(
232
+ () => [Nothing(), [a1, d]],
233
+ (c) => {
234
+ const [e, d1] = op2.f(d, c);
235
+ return [e, [a1, d1]];
236
+ },
237
+ );
238
+ }),
239
+ }),
240
+ });
241
+ };
242
+ }
@@ -0,0 +1,107 @@
1
+ export const enum SyncOperatorTag {
2
+ Map = "Map",
3
+ Filter = "Filter",
4
+ FilterMap = "FilterMap",
5
+ }
6
+
7
+ export interface Map<A, B> {
8
+ readonly _tag: SyncOperatorTag.Map;
9
+ readonly f: (a: A) => B;
10
+ }
11
+
12
+ export function Map<A, B>(f: (a: A) => B): Map<A, B> {
13
+ return {
14
+ _tag: SyncOperatorTag.Map,
15
+ f,
16
+ };
17
+ }
18
+
19
+ export interface Filter<A> {
20
+ readonly _tag: SyncOperatorTag.Filter;
21
+ readonly f: Predicate<A>;
22
+ }
23
+
24
+ export function Filter<A>(f: Predicate<A>): Filter<A> {
25
+ return {
26
+ _tag: SyncOperatorTag.Filter,
27
+ f,
28
+ };
29
+ }
30
+
31
+ export interface FilterMap<A, B> {
32
+ readonly _tag: SyncOperatorTag.FilterMap;
33
+ readonly f: (a: A) => Maybe<B>;
34
+ }
35
+
36
+ export function FilterMap<A, B>(f: (a: A) => Maybe<B>): FilterMap<A, B> {
37
+ return {
38
+ _tag: SyncOperatorTag.FilterMap,
39
+ f,
40
+ };
41
+ }
42
+
43
+ /**
44
+ * @tsplus type fncts.io.Push.SyncOperator
45
+ * @tsplus companion fncts.io.Push.SyncOperatorOps
46
+ */
47
+ export type SyncOperator<A = any, B = any> = Map<A, B> | Filter<A> | FilterMap<A, B>;
48
+
49
+ type SyncOperatorFusionMap = {
50
+ readonly [K in SyncOperator["_tag"]]: {
51
+ readonly [K2 in SyncOperator["_tag"]]: (
52
+ op1: Extract<SyncOperator, { readonly _tag: K }>,
53
+ op2: Extract<SyncOperator, { readonly _tag: K2 }>,
54
+ ) => SyncOperator;
55
+ };
56
+ };
57
+
58
+ const SyncOperatorFusionMap: SyncOperatorFusionMap = {
59
+ [SyncOperatorTag.Map]: {
60
+ [SyncOperatorTag.Map]: (op1, op2) => Map(op1.f.compose(op2.f)),
61
+ [SyncOperatorTag.Filter]: (op1, op2) =>
62
+ FilterMap((a) => {
63
+ const b = op1.f(a);
64
+ return op2.f(b) ? Just(b) : Nothing();
65
+ }),
66
+ [SyncOperatorTag.FilterMap]: (op1, op2) => FilterMap(op1.f.compose(op2.f)),
67
+ },
68
+ [SyncOperatorTag.Filter]: {
69
+ [SyncOperatorTag.Map]: (op1, op2) => FilterMap((a) => (op1.f(a) ? Just(op2.f(a)) : Nothing())),
70
+ [SyncOperatorTag.Filter]: (op1, op2) => Filter(op1.f && op2.f),
71
+ [SyncOperatorTag.FilterMap]: (op1, op2) => FilterMap((a) => (op1.f(a) ? op2.f(a) : Nothing())),
72
+ },
73
+ [SyncOperatorTag.FilterMap]: {
74
+ [SyncOperatorTag.Map]: (op1, op2) => FilterMap((a) => op1.f(a).map(op2.f)),
75
+ [SyncOperatorTag.Filter]: (op1, op2) => FilterMap((a) => op1.f(a).filter(op2.f)),
76
+ [SyncOperatorTag.FilterMap]: (op1, op2) => FilterMap((a) => op1.f(a).flatMap(op2.f)),
77
+ },
78
+ };
79
+
80
+ /**
81
+ * @tsplus pipeable fncts.io.Push.SyncOperator fuse
82
+ */
83
+ export function fuse(that: SyncOperator) {
84
+ return (self: SyncOperator) => {
85
+ return SyncOperatorFusionMap[self._tag][that._tag](self as any, that as any);
86
+ };
87
+ }
88
+
89
+ /**
90
+ * @tsplus pipeable fncts.io.Push.SyncOperator match
91
+ */
92
+ export function match<A, B, C, D, E>(cases: {
93
+ readonly Map: (f: Map<A, B>) => C;
94
+ readonly Filter: (f: Filter<A>) => D;
95
+ readonly FilterMap: (f: FilterMap<A, B>) => E;
96
+ }) {
97
+ return (self: SyncOperator<A, B>): C | D | E => {
98
+ switch (self._tag) {
99
+ case SyncOperatorTag.Map:
100
+ return cases.Map(self);
101
+ case SyncOperatorTag.Filter:
102
+ return cases.Filter(self);
103
+ case SyncOperatorTag.FilterMap:
104
+ return cases.FilterMap(self);
105
+ }
106
+ };
107
+ }
@@ -0,0 +1,7 @@
1
+ /* eslint-disable simple-import-sort/exports */
2
+ // codegen:start { preset: type-barrel, include: ./Operator/*.ts }
3
+ export type {} from "./Operator/SyncOperator.js"
4
+ export type {} from "./Operator/LoopOperator.js"
5
+ export type {} from "./Operator/IOOperator.js"
6
+ export type {} from "./Operator/IOLoopOperator.js"
7
+ // codegen:end
@@ -0,0 +1,83 @@
1
+ import type { Push } from "../definition.js";
2
+
3
+ export const enum IOProducerTag {
4
+ FromIO,
5
+ FromScheduled,
6
+ Scheduled,
7
+ }
8
+
9
+ export class FromIO<R, E, A> {
10
+ readonly _tag = IOProducerTag.FromIO;
11
+ constructor(readonly source: IO<R, E, A>) {}
12
+ }
13
+
14
+ export class FromScheduled<R, E, I, R1, O> {
15
+ readonly _tag = IOProducerTag.FromScheduled;
16
+ constructor(
17
+ readonly input: IO<R, E, I>,
18
+ readonly schedule: Schedule<R1, I, O>,
19
+ ) {}
20
+ }
21
+
22
+ export class Scheduled<R, E, A, R1, O> {
23
+ readonly _tag = IOProducerTag.Scheduled;
24
+ constructor(
25
+ readonly input: IO<R, E, A>,
26
+ readonly schedule: Schedule<R1, unknown, O>,
27
+ ) {}
28
+ }
29
+
30
+ /**
31
+ * @tsplus type fncts.io.Push.IOProducer
32
+ * @tsplus companion fncts.io.Push.IOProducerOps
33
+ */
34
+ export type IOProducer<R, E, A> = FromIO<R, E, A> | FromScheduled<R, E, any, any, A> | Scheduled<R, E, A, any, any>;
35
+
36
+ /**
37
+ * @tsplus fluent fncts.io.Push.IOProducer runSink
38
+ */
39
+ export function runSink<R, E, A, R1>(
40
+ self: IOProducer<R, E, A>,
41
+ sink: Push.UnsafeSink<R1, E, A>,
42
+ ): IO<R | R1, never, unknown> {
43
+ switch (self._tag) {
44
+ case IOProducerTag.FromIO:
45
+ return self.source.matchCauseIO(sink.onFailure, sink.onSuccess);
46
+ case IOProducerTag.Scheduled:
47
+ return self.input
48
+ .matchCauseIO(sink.onFailure, sink.onSuccess)
49
+ .schedule(self.schedule)
50
+ .catchAllCause(sink.onFailure);
51
+ case IOProducerTag.FromScheduled:
52
+ return self.input
53
+ .flatMap((i) => self.input.scheduleFrom(() => i, self.schedule.mapIO(sink.onSuccess)))
54
+ .catchAllCause(sink.onFailure);
55
+ }
56
+ }
57
+
58
+ /**
59
+ * @tsplus fluent fncts.io.Push.IOProducer runIO
60
+ */
61
+ export function runIO<R, E, A, R1, E1, A1>(
62
+ self: IOProducer<R, E, A>,
63
+ f: (a: A) => IO<R1, E1, A1>,
64
+ ): IO<R | R1, E | E1, unknown> {
65
+ switch (self._tag) {
66
+ case IOProducerTag.FromIO:
67
+ return self.source.flatMap(f);
68
+ case IOProducerTag.FromScheduled:
69
+ return self.input.flatMap((i) =>
70
+ IO.asyncIO((resume) => {
71
+ const onFailure = (cause: Cause<E | E1>) => IO.succeedNow(resume(IO.failCauseNow(cause)));
72
+ return self.input
73
+ .scheduleFrom(
74
+ () => i,
75
+ self.schedule.mapIO((a) => f(a).catchAllCause(onFailure)),
76
+ )
77
+ .matchCauseIO(onFailure, () => IO.succeedNow(resume(IO.unit))).asUnit;
78
+ }),
79
+ );
80
+ case IOProducerTag.Scheduled:
81
+ return self.input.flatMap(f).schedule(self.schedule);
82
+ }
83
+ }