@typed/fx 1.19.0 → 1.20.1

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 (411) hide show
  1. package/AsyncData/package.json +6 -0
  2. package/Push/package.json +6 -0
  3. package/dist/cjs/AsyncData.js +177 -0
  4. package/dist/cjs/AsyncData.js.map +1 -0
  5. package/dist/cjs/Emitter.js +24 -21
  6. package/dist/cjs/Emitter.js.map +1 -1
  7. package/dist/cjs/Form.js +78 -21
  8. package/dist/cjs/Form.js.map +1 -1
  9. package/dist/cjs/FormEntry.js +75 -48
  10. package/dist/cjs/FormEntry.js.map +1 -1
  11. package/dist/cjs/Fx.js +517 -872
  12. package/dist/cjs/Fx.js.map +1 -1
  13. package/dist/cjs/Guard.js +21 -13
  14. package/dist/cjs/Guard.js.map +1 -1
  15. package/dist/cjs/Idle.js +49 -37
  16. package/dist/cjs/Idle.js.map +1 -1
  17. package/dist/cjs/Match.js +99 -61
  18. package/dist/cjs/Match.js.map +1 -1
  19. package/dist/cjs/Pull.js.map +1 -1
  20. package/dist/cjs/Push.js +168 -0
  21. package/dist/cjs/Push.js.map +1 -0
  22. package/dist/cjs/RefArray.js +32 -30
  23. package/dist/cjs/RefArray.js.map +1 -1
  24. package/dist/cjs/RefChunk.js +26 -24
  25. package/dist/cjs/RefChunk.js.map +1 -1
  26. package/dist/cjs/RefHashMap.js +20 -20
  27. package/dist/cjs/RefHashMap.js.map +1 -1
  28. package/dist/cjs/RefHashSet.js +11 -8
  29. package/dist/cjs/RefHashSet.js.map +1 -1
  30. package/dist/cjs/RefSubject.js +904 -158
  31. package/dist/cjs/RefSubject.js.map +1 -1
  32. package/dist/cjs/Sink.js +588 -62
  33. package/dist/cjs/Sink.js.map +1 -1
  34. package/dist/cjs/Stream.js +15 -10
  35. package/dist/cjs/Stream.js.map +1 -1
  36. package/dist/cjs/Subject.js +156 -55
  37. package/dist/cjs/Subject.js.map +1 -1
  38. package/dist/cjs/TypeId.js +10 -5
  39. package/dist/cjs/TypeId.js.map +1 -1
  40. package/dist/cjs/Typeclass.js +28 -31
  41. package/dist/cjs/Typeclass.js.map +1 -1
  42. package/dist/cjs/Versioned.js +118 -57
  43. package/dist/cjs/Versioned.js.map +1 -1
  44. package/dist/cjs/index.js +44 -8
  45. package/dist/cjs/index.js.map +1 -1
  46. package/dist/cjs/internal/{deferred-ref.js → DeferredRef.js} +45 -13
  47. package/dist/cjs/internal/DeferredRef.js.map +1 -0
  48. package/dist/cjs/internal/UnionToTuple.js +6 -0
  49. package/dist/cjs/internal/UnionToTuple.js.map +1 -0
  50. package/dist/cjs/internal/core.js +1590 -779
  51. package/dist/cjs/internal/core.js.map +1 -1
  52. package/dist/cjs/internal/diff.js +114 -0
  53. package/dist/cjs/internal/diff.js.map +1 -0
  54. package/dist/cjs/internal/effect-loop-operator.js +288 -0
  55. package/dist/cjs/internal/effect-loop-operator.js.map +1 -0
  56. package/dist/cjs/internal/effect-operator.js +46 -37
  57. package/dist/cjs/internal/effect-operator.js.map +1 -1
  58. package/dist/cjs/internal/effect-producer.js +74 -0
  59. package/dist/cjs/internal/effect-producer.js.map +1 -0
  60. package/dist/cjs/internal/helpers.js +158 -128
  61. package/dist/cjs/internal/helpers.js.map +1 -1
  62. package/dist/cjs/internal/keyed.js +136 -173
  63. package/dist/cjs/internal/keyed.js.map +1 -1
  64. package/dist/cjs/internal/loop-operator.js +213 -0
  65. package/dist/cjs/internal/loop-operator.js.map +1 -0
  66. package/dist/cjs/internal/operator.js +79 -0
  67. package/dist/cjs/internal/operator.js.map +1 -0
  68. package/dist/cjs/internal/protos.js +19 -81
  69. package/dist/cjs/internal/protos.js.map +1 -1
  70. package/dist/cjs/internal/provide.js +47 -25
  71. package/dist/cjs/internal/provide.js.map +1 -1
  72. package/dist/cjs/internal/requestIdleCallback.js +5 -5
  73. package/dist/cjs/internal/requestIdleCallback.js.map +1 -1
  74. package/dist/cjs/internal/share.js +12 -15
  75. package/dist/cjs/internal/share.js.map +1 -1
  76. package/dist/cjs/internal/sync-operator.js +50 -22
  77. package/dist/cjs/internal/sync-operator.js.map +1 -1
  78. package/dist/cjs/internal/sync-producer.js +114 -0
  79. package/dist/cjs/internal/sync-producer.js.map +1 -0
  80. package/dist/cjs/internal/withKey.js +45 -51
  81. package/dist/cjs/internal/withKey.js.map +1 -1
  82. package/dist/dts/AsyncData.d.ts +185 -0
  83. package/dist/dts/AsyncData.d.ts.map +1 -0
  84. package/dist/dts/Emitter.d.ts +13 -20
  85. package/dist/dts/Emitter.d.ts.map +1 -1
  86. package/dist/dts/Form.d.ts +45 -28
  87. package/dist/dts/Form.d.ts.map +1 -1
  88. package/dist/dts/FormEntry.d.ts +25 -13
  89. package/dist/dts/FormEntry.d.ts.map +1 -1
  90. package/dist/dts/Fx.d.ts +980 -1390
  91. package/dist/dts/Fx.d.ts.map +1 -1
  92. package/dist/dts/Guard.d.ts +8 -1
  93. package/dist/dts/Guard.d.ts.map +1 -1
  94. package/dist/dts/Idle.d.ts +3 -3
  95. package/dist/dts/Idle.d.ts.map +1 -1
  96. package/dist/dts/Match.d.ts +8 -8
  97. package/dist/dts/Match.d.ts.map +1 -1
  98. package/dist/dts/Pull.d.ts +5 -5
  99. package/dist/dts/Pull.d.ts.map +1 -1
  100. package/dist/dts/Push.d.ts +170 -0
  101. package/dist/dts/Push.d.ts.map +1 -0
  102. package/dist/dts/RefArray.d.ts +21 -23
  103. package/dist/dts/RefArray.d.ts.map +1 -1
  104. package/dist/dts/RefChunk.d.ts +17 -19
  105. package/dist/dts/RefChunk.d.ts.map +1 -1
  106. package/dist/dts/RefHashMap.d.ts +19 -20
  107. package/dist/dts/RefHashMap.d.ts.map +1 -1
  108. package/dist/dts/RefHashSet.d.ts +12 -16
  109. package/dist/dts/RefHashSet.d.ts.map +1 -1
  110. package/dist/dts/RefSubject.d.ts +413 -184
  111. package/dist/dts/RefSubject.d.ts.map +1 -1
  112. package/dist/dts/Sink.d.ts +193 -93
  113. package/dist/dts/Sink.d.ts.map +1 -1
  114. package/dist/dts/Stream.d.ts +7 -1
  115. package/dist/dts/Stream.d.ts.map +1 -1
  116. package/dist/dts/Subject.d.ts +27 -36
  117. package/dist/dts/Subject.d.ts.map +1 -1
  118. package/dist/dts/TypeId.d.ts +10 -0
  119. package/dist/dts/TypeId.d.ts.map +1 -1
  120. package/dist/dts/Typeclass.d.ts +2 -2
  121. package/dist/dts/Typeclass.d.ts.map +1 -1
  122. package/dist/dts/Versioned.d.ts +50 -78
  123. package/dist/dts/Versioned.d.ts.map +1 -1
  124. package/dist/dts/index.d.ts +66 -6
  125. package/dist/dts/index.d.ts.map +1 -1
  126. package/dist/dts/internal/DeferredRef.d.ts +20 -0
  127. package/dist/dts/internal/DeferredRef.d.ts.map +1 -0
  128. package/dist/dts/internal/UnionToTuple.d.ts +6 -0
  129. package/dist/dts/internal/UnionToTuple.d.ts.map +1 -0
  130. package/dist/dts/internal/core.d.ts +218 -450
  131. package/dist/dts/internal/core.d.ts.map +1 -1
  132. package/dist/dts/internal/diff.d.ts +38 -0
  133. package/dist/dts/internal/diff.d.ts.map +1 -0
  134. package/dist/dts/internal/effect-loop-operator.d.ts +34 -0
  135. package/dist/dts/internal/effect-loop-operator.d.ts.map +1 -0
  136. package/dist/dts/internal/effect-operator.d.ts +8 -5
  137. package/dist/dts/internal/effect-operator.d.ts.map +1 -1
  138. package/dist/dts/internal/effect-producer.d.ts +25 -0
  139. package/dist/dts/internal/effect-producer.d.ts.map +1 -0
  140. package/dist/dts/internal/helpers.d.ts +33 -24
  141. package/dist/dts/internal/helpers.d.ts.map +1 -1
  142. package/dist/dts/internal/keyed.d.ts +3 -3
  143. package/dist/dts/internal/keyed.d.ts.map +1 -1
  144. package/dist/dts/internal/loop-operator.d.ts +40 -0
  145. package/dist/dts/internal/loop-operator.d.ts.map +1 -0
  146. package/dist/dts/internal/operator.d.ts +16 -0
  147. package/dist/dts/internal/operator.d.ts.map +1 -0
  148. package/dist/dts/internal/protos.d.ts +16 -43
  149. package/dist/dts/internal/protos.d.ts.map +1 -1
  150. package/dist/dts/internal/provide.d.ts +7 -1
  151. package/dist/dts/internal/provide.d.ts.map +1 -1
  152. package/dist/dts/internal/share.d.ts +12 -9
  153. package/dist/dts/internal/share.d.ts.map +1 -1
  154. package/dist/dts/internal/sync-operator.d.ts +7 -3
  155. package/dist/dts/internal/sync-operator.d.ts.map +1 -1
  156. package/dist/dts/internal/sync-producer.d.ts +36 -0
  157. package/dist/dts/internal/sync-producer.d.ts.map +1 -0
  158. package/dist/dts/internal/withKey.d.ts +3 -3
  159. package/dist/dts/internal/withKey.d.ts.map +1 -1
  160. package/dist/esm/AsyncData.js +151 -0
  161. package/dist/esm/AsyncData.js.map +1 -0
  162. package/dist/esm/Emitter.js +24 -21
  163. package/dist/esm/Emitter.js.map +1 -1
  164. package/dist/esm/Form.js +69 -14
  165. package/dist/esm/Form.js.map +1 -1
  166. package/dist/esm/FormEntry.js +77 -52
  167. package/dist/esm/FormEntry.js.map +1 -1
  168. package/dist/esm/Fx.js +509 -874
  169. package/dist/esm/Fx.js.map +1 -1
  170. package/dist/esm/Guard.js +5 -1
  171. package/dist/esm/Guard.js.map +1 -1
  172. package/dist/esm/Idle.js +49 -39
  173. package/dist/esm/Idle.js.map +1 -1
  174. package/dist/esm/Match.js +103 -63
  175. package/dist/esm/Match.js.map +1 -1
  176. package/dist/esm/Pull.js.map +1 -1
  177. package/dist/esm/Push.js +159 -0
  178. package/dist/esm/Push.js.map +1 -0
  179. package/dist/esm/RefArray.js +32 -30
  180. package/dist/esm/RefArray.js.map +1 -1
  181. package/dist/esm/RefChunk.js +26 -24
  182. package/dist/esm/RefChunk.js.map +1 -1
  183. package/dist/esm/RefHashMap.js +20 -20
  184. package/dist/esm/RefHashMap.js.map +1 -1
  185. package/dist/esm/RefHashSet.js +11 -8
  186. package/dist/esm/RefHashSet.js.map +1 -1
  187. package/dist/esm/RefSubject.js +876 -150
  188. package/dist/esm/RefSubject.js.map +1 -1
  189. package/dist/esm/Sink.js +608 -57
  190. package/dist/esm/Sink.js.map +1 -1
  191. package/dist/esm/Stream.js +13 -9
  192. package/dist/esm/Stream.js.map +1 -1
  193. package/dist/esm/Subject.js +154 -56
  194. package/dist/esm/Subject.js.map +1 -1
  195. package/dist/esm/TypeId.js +9 -4
  196. package/dist/esm/TypeId.js.map +1 -1
  197. package/dist/esm/Typeclass.js +29 -29
  198. package/dist/esm/Typeclass.js.map +1 -1
  199. package/dist/esm/Versioned.js +110 -53
  200. package/dist/esm/Versioned.js.map +1 -1
  201. package/dist/esm/index.js +66 -6
  202. package/dist/esm/index.js.map +1 -1
  203. package/dist/esm/internal/DeferredRef.js +54 -0
  204. package/dist/esm/internal/DeferredRef.js.map +1 -0
  205. package/dist/esm/internal/UnionToTuple.js +2 -0
  206. package/dist/esm/internal/UnionToTuple.js.map +1 -0
  207. package/dist/esm/internal/core.js +1439 -719
  208. package/dist/esm/internal/core.js.map +1 -1
  209. package/dist/esm/internal/diff.js +82 -0
  210. package/dist/esm/internal/diff.js.map +1 -0
  211. package/dist/esm/internal/effect-loop-operator.js +269 -0
  212. package/dist/esm/internal/effect-loop-operator.js.map +1 -0
  213. package/dist/esm/internal/effect-operator.js +44 -37
  214. package/dist/esm/internal/effect-operator.js.map +1 -1
  215. package/dist/esm/internal/effect-producer.js +47 -0
  216. package/dist/esm/internal/effect-producer.js.map +1 -0
  217. package/dist/esm/internal/helpers.js +157 -129
  218. package/dist/esm/internal/helpers.js.map +1 -1
  219. package/dist/esm/internal/keyed.js +128 -139
  220. package/dist/esm/internal/keyed.js.map +1 -1
  221. package/dist/esm/internal/loop-operator.js +186 -0
  222. package/dist/esm/internal/loop-operator.js.map +1 -0
  223. package/dist/esm/internal/operator.js +68 -0
  224. package/dist/esm/internal/operator.js.map +1 -0
  225. package/dist/esm/internal/protos.js +16 -75
  226. package/dist/esm/internal/protos.js.map +1 -1
  227. package/dist/esm/internal/provide.js +33 -25
  228. package/dist/esm/internal/provide.js.map +1 -1
  229. package/dist/esm/internal/requestIdleCallback.js +5 -5
  230. package/dist/esm/internal/requestIdleCallback.js.map +1 -1
  231. package/dist/esm/internal/share.js +12 -12
  232. package/dist/esm/internal/share.js.map +1 -1
  233. package/dist/esm/internal/sync-operator.js +49 -21
  234. package/dist/esm/internal/sync-operator.js.map +1 -1
  235. package/dist/esm/internal/sync-producer.js +88 -0
  236. package/dist/esm/internal/sync-producer.js.map +1 -0
  237. package/dist/esm/internal/withKey.js +46 -47
  238. package/dist/esm/internal/withKey.js.map +1 -1
  239. package/package.json +22 -62
  240. package/src/AsyncData.ts +447 -0
  241. package/src/Emitter.ts +47 -38
  242. package/src/Form.ts +185 -65
  243. package/src/FormEntry.ts +142 -109
  244. package/src/Fx.ts +1682 -1854
  245. package/src/Guard.ts +12 -1
  246. package/src/Idle.ts +76 -62
  247. package/src/Match.ts +149 -93
  248. package/src/Pull.ts +8 -8
  249. package/src/Push.ts +472 -0
  250. package/src/RefArray.ts +53 -51
  251. package/src/RefChunk.ts +44 -41
  252. package/src/RefHashMap.ts +57 -43
  253. package/src/RefHashSet.ts +21 -31
  254. package/src/RefSubject.ts +2003 -446
  255. package/src/Sink.ts +922 -171
  256. package/src/Stream.ts +32 -20
  257. package/src/Subject.ts +236 -87
  258. package/src/TypeId.ts +16 -4
  259. package/src/Typeclass.ts +31 -32
  260. package/src/Versioned.ts +220 -168
  261. package/src/index.ts +78 -6
  262. package/src/internal/DeferredRef.ts +62 -0
  263. package/src/internal/UnionToTuple.ts +11 -0
  264. package/src/internal/core.ts +2491 -1950
  265. package/src/internal/diff.ts +157 -0
  266. package/src/internal/effect-loop-operator.ts +466 -0
  267. package/src/internal/effect-operator.ts +89 -54
  268. package/src/internal/effect-producer.ts +125 -0
  269. package/src/internal/helpers.ts +275 -205
  270. package/src/internal/keyed.ts +192 -241
  271. package/src/internal/loop-operator.ts +266 -0
  272. package/src/internal/operator.ts +87 -0
  273. package/src/internal/protos.ts +29 -104
  274. package/src/internal/provide.ts +48 -40
  275. package/src/internal/requestIdleCallback.ts +5 -6
  276. package/src/internal/share.ts +26 -24
  277. package/src/internal/sync-operator.ts +68 -27
  278. package/src/internal/sync-producer.ts +146 -0
  279. package/src/internal/withKey.ts +64 -74
  280. package/Computed/package.json +0 -6
  281. package/Filtered/package.json +0 -6
  282. package/Model/package.json +0 -6
  283. package/RefAsyncData/package.json +0 -6
  284. package/RefAsyncDataArray/package.json +0 -6
  285. package/RefBoolean/package.json +0 -6
  286. package/RefNumber/package.json +0 -6
  287. package/dist/cjs/Computed.js +0 -115
  288. package/dist/cjs/Computed.js.map +0 -1
  289. package/dist/cjs/Filtered.js +0 -95
  290. package/dist/cjs/Filtered.js.map +0 -1
  291. package/dist/cjs/Model.js +0 -119
  292. package/dist/cjs/Model.js.map +0 -1
  293. package/dist/cjs/RefAsyncData.js +0 -187
  294. package/dist/cjs/RefAsyncData.js.map +0 -1
  295. package/dist/cjs/RefAsyncDataArray.js +0 -38
  296. package/dist/cjs/RefAsyncDataArray.js.map +0 -1
  297. package/dist/cjs/RefBoolean.js +0 -45
  298. package/dist/cjs/RefBoolean.js.map +0 -1
  299. package/dist/cjs/RefNumber.js +0 -49
  300. package/dist/cjs/RefNumber.js.map +0 -1
  301. package/dist/cjs/internal/core-ref-subject.js +0 -254
  302. package/dist/cjs/internal/core-ref-subject.js.map +0 -1
  303. package/dist/cjs/internal/core-subject.js +0 -108
  304. package/dist/cjs/internal/core-subject.js.map +0 -1
  305. package/dist/cjs/internal/deferred-ref.js.map +0 -1
  306. package/dist/cjs/internal/effect-primitive.js +0 -47
  307. package/dist/cjs/internal/effect-primitive.js.map +0 -1
  308. package/dist/cjs/internal/fx-effect-proto.js +0 -58
  309. package/dist/cjs/internal/fx-effect-proto.js.map +0 -1
  310. package/dist/cjs/internal/fx-primitive.js +0 -193
  311. package/dist/cjs/internal/fx-primitive.js.map +0 -1
  312. package/dist/cjs/internal/fx.js +0 -240
  313. package/dist/cjs/internal/fx.js.map +0 -1
  314. package/dist/cjs/internal/matchers.js +0 -34
  315. package/dist/cjs/internal/matchers.js.map +0 -1
  316. package/dist/cjs/internal/run.js +0 -54
  317. package/dist/cjs/internal/run.js.map +0 -1
  318. package/dist/cjs/internal/schema-ref-subject.js +0 -132
  319. package/dist/cjs/internal/schema-ref-subject.js.map +0 -1
  320. package/dist/cjs/internal/versioned-transform.js +0 -46
  321. package/dist/cjs/internal/versioned-transform.js.map +0 -1
  322. package/dist/dts/Computed.d.ts +0 -106
  323. package/dist/dts/Computed.d.ts.map +0 -1
  324. package/dist/dts/Filtered.d.ts +0 -97
  325. package/dist/dts/Filtered.d.ts.map +0 -1
  326. package/dist/dts/Model.d.ts +0 -200
  327. package/dist/dts/Model.d.ts.map +0 -1
  328. package/dist/dts/RefAsyncData.d.ts +0 -236
  329. package/dist/dts/RefAsyncData.d.ts.map +0 -1
  330. package/dist/dts/RefAsyncDataArray.d.ts +0 -56
  331. package/dist/dts/RefAsyncDataArray.d.ts.map +0 -1
  332. package/dist/dts/RefBoolean.d.ts +0 -47
  333. package/dist/dts/RefBoolean.d.ts.map +0 -1
  334. package/dist/dts/RefNumber.d.ts +0 -48
  335. package/dist/dts/RefNumber.d.ts.map +0 -1
  336. package/dist/dts/internal/core-ref-subject.d.ts +0 -100
  337. package/dist/dts/internal/core-ref-subject.d.ts.map +0 -1
  338. package/dist/dts/internal/core-subject.d.ts +0 -5
  339. package/dist/dts/internal/core-subject.d.ts.map +0 -1
  340. package/dist/dts/internal/deferred-ref.d.ts +0 -12
  341. package/dist/dts/internal/deferred-ref.d.ts.map +0 -1
  342. package/dist/dts/internal/effect-primitive.d.ts +0 -6
  343. package/dist/dts/internal/effect-primitive.d.ts.map +0 -1
  344. package/dist/dts/internal/fx-effect-proto.d.ts +0 -30
  345. package/dist/dts/internal/fx-effect-proto.d.ts.map +0 -1
  346. package/dist/dts/internal/fx-primitive.d.ts +0 -109
  347. package/dist/dts/internal/fx-primitive.d.ts.map +0 -1
  348. package/dist/dts/internal/fx.d.ts +0 -245
  349. package/dist/dts/internal/fx.d.ts.map +0 -1
  350. package/dist/dts/internal/matchers.d.ts +0 -33
  351. package/dist/dts/internal/matchers.d.ts.map +0 -1
  352. package/dist/dts/internal/run.d.ts +0 -8
  353. package/dist/dts/internal/run.d.ts.map +0 -1
  354. package/dist/dts/internal/schema-ref-subject.d.ts +0 -5
  355. package/dist/dts/internal/schema-ref-subject.d.ts.map +0 -1
  356. package/dist/dts/internal/versioned-transform.d.ts +0 -17
  357. package/dist/dts/internal/versioned-transform.d.ts.map +0 -1
  358. package/dist/esm/Computed.js +0 -103
  359. package/dist/esm/Computed.js.map +0 -1
  360. package/dist/esm/Filtered.js +0 -83
  361. package/dist/esm/Filtered.js.map +0 -1
  362. package/dist/esm/Model.js +0 -100
  363. package/dist/esm/Model.js.map +0 -1
  364. package/dist/esm/RefAsyncData.js +0 -163
  365. package/dist/esm/RefAsyncData.js.map +0 -1
  366. package/dist/esm/RefAsyncDataArray.js +0 -27
  367. package/dist/esm/RefAsyncDataArray.js.map +0 -1
  368. package/dist/esm/RefBoolean.js +0 -31
  369. package/dist/esm/RefBoolean.js.map +0 -1
  370. package/dist/esm/RefNumber.js +0 -35
  371. package/dist/esm/RefNumber.js.map +0 -1
  372. package/dist/esm/internal/core-ref-subject.js +0 -242
  373. package/dist/esm/internal/core-ref-subject.js.map +0 -1
  374. package/dist/esm/internal/core-subject.js +0 -90
  375. package/dist/esm/internal/core-subject.js.map +0 -1
  376. package/dist/esm/internal/deferred-ref.js +0 -23
  377. package/dist/esm/internal/deferred-ref.js.map +0 -1
  378. package/dist/esm/internal/effect-primitive.js +0 -41
  379. package/dist/esm/internal/effect-primitive.js.map +0 -1
  380. package/dist/esm/internal/fx-effect-proto.js +0 -43
  381. package/dist/esm/internal/fx-effect-proto.js.map +0 -1
  382. package/dist/esm/internal/fx-primitive.js +0 -175
  383. package/dist/esm/internal/fx-primitive.js.map +0 -1
  384. package/dist/esm/internal/fx.js +0 -216
  385. package/dist/esm/internal/fx.js.map +0 -1
  386. package/dist/esm/internal/matchers.js +0 -38
  387. package/dist/esm/internal/matchers.js.map +0 -1
  388. package/dist/esm/internal/run.js +0 -32
  389. package/dist/esm/internal/run.js.map +0 -1
  390. package/dist/esm/internal/schema-ref-subject.js +0 -121
  391. package/dist/esm/internal/schema-ref-subject.js.map +0 -1
  392. package/dist/esm/internal/versioned-transform.js +0 -37
  393. package/dist/esm/internal/versioned-transform.js.map +0 -1
  394. package/src/Computed.ts +0 -289
  395. package/src/Filtered.ts +0 -274
  396. package/src/Model.ts +0 -483
  397. package/src/RefAsyncData.ts +0 -547
  398. package/src/RefAsyncDataArray.ts +0 -135
  399. package/src/RefBoolean.ts +0 -71
  400. package/src/RefNumber.ts +0 -77
  401. package/src/internal/core-ref-subject.ts +0 -528
  402. package/src/internal/core-subject.ts +0 -143
  403. package/src/internal/deferred-ref.ts +0 -26
  404. package/src/internal/effect-primitive.ts +0 -230
  405. package/src/internal/fx-effect-proto.ts +0 -56
  406. package/src/internal/fx-primitive.ts +0 -223
  407. package/src/internal/fx.ts +0 -619
  408. package/src/internal/matchers.ts +0 -83
  409. package/src/internal/run.ts +0 -51
  410. package/src/internal/schema-ref-subject.ts +0 -163
  411. package/src/internal/versioned-transform.ts +0 -48
@@ -1,98 +1,177 @@
1
- import { getOption, unsafeGet } from "@typed/context"
2
- import { Effectable, Exit, TestClock } from "effect"
3
- import { type Cause, NoSuchElementException } from "effect/Cause"
4
- import type * as Duration from "effect/Duration"
1
+ import { getOption } from "@typed/context"
2
+ import { Equivalence } from "effect"
3
+ import type { Duration, Exit } from "effect"
4
+ import * as Cause from "effect/Cause"
5
5
  import * as Effect from "effect/Effect"
6
+ import * as Effectable from "effect/Effectable"
7
+ import * as Equal from "effect/Equal"
8
+ import * as ExecutionStrategy from "effect/ExecutionStrategy"
6
9
  import * as Fiber from "effect/Fiber"
7
10
  import * as Option from "effect/Option"
8
11
  import * as Ref from "effect/Ref"
9
- import * as Runtime from "effect/Runtime"
10
12
  import * as Scope from "effect/Scope"
11
13
  import * as SynchronizedRef from "effect/SynchronizedRef"
14
+ import * as TestClock from "effect/TestClock"
12
15
  import type { FlattenStrategy, FxFork, ScopedFork } from "../Fx.js"
13
16
  import type * as Sink from "../Sink.js"
14
- import type { InternalEffect } from "./effect-primitive.js"
15
- import { matchEffectPrimitive } from "./effect-primitive.js"
17
+
18
+ export function withBuffers<R, E, A>(size: number, sink: Sink.Sink<R, E, A>) {
19
+ const buffers: Array<Array<A>> = Array.from({ length: size }, () => [])
20
+ const finished = new Set<number>()
21
+ let currentIndex = 0
22
+
23
+ const drainBuffer = (index: number): Effect.Effect<R, never, void> => {
24
+ const effect = Effect.forEach(buffers[index], sink.onSuccess)
25
+ buffers[index] = []
26
+
27
+ return Effect.flatMap(effect, () => finished.has(index) ? onEnd(index) : Effect.unit)
28
+ }
29
+
30
+ const onSuccess = (index: number, value: A) => {
31
+ if (index === currentIndex) {
32
+ const buffer = buffers[index]
33
+
34
+ if (buffer.length === 0) {
35
+ return sink.onSuccess(value)
36
+ } else {
37
+ buffer.push(value)
38
+
39
+ return drainBuffer(index)
40
+ }
41
+ } else {
42
+ buffers[index].push(value)
43
+
44
+ return Effect.unit
45
+ }
46
+ }
47
+
48
+ const onEnd = (index: number) => {
49
+ finished.add(index)
50
+
51
+ if (index === currentIndex && ++currentIndex < size) {
52
+ return drainBuffer(currentIndex)
53
+ } else {
54
+ return Effect.unit
55
+ }
56
+ }
57
+
58
+ return {
59
+ onSuccess,
60
+ onEnd
61
+ } as const
62
+ }
63
+
64
+ export const withScope = <R, E, A>(
65
+ f: (scope: Scope.CloseableScope) => Effect.Effect<R, E, A>,
66
+ executionStrategy: ExecutionStrategy.ExecutionStrategy
67
+ ): Effect.Effect<R | Scope.Scope, E, A> =>
68
+ Effect.acquireUseRelease(Effect.scopeWith((scope) => Scope.fork(scope, executionStrategy)), f, Scope.close)
69
+
70
+ export const getExitEquivalence = <E, A>(A: Equivalence.Equivalence<A>) =>
71
+ Equivalence.make<Exit.Exit<E, A>>((a, b) => {
72
+ if (a._tag === "Failure") {
73
+ return b._tag === "Failure" && Equal.equals(a.cause, b.cause)
74
+ } else {
75
+ return b._tag === "Success" && A(a.value, b.value)
76
+ }
77
+ })
16
78
 
17
79
  export function withScopedFork<R, E, A>(
18
- f: (fork: ScopedFork, scope: Scope.Scope) => Effect.Effect<R, E, A>
19
- ): Effect.Effect<R, E, A> {
20
- return Effect.acquireUseRelease(
21
- Scope.make(),
22
- (scope) => {
23
- const fork = makeScopedFork(scope)
24
-
25
- return f((effect) => fork(Effect.interruptible(effect)), scope)
26
- },
27
- Scope.close
28
- )
80
+ f: (fork: ScopedFork, scope: Scope.CloseableScope) => Effect.Effect<R, E, A>,
81
+ executionStrategy: ExecutionStrategy.ExecutionStrategy
82
+ ): Effect.Effect<R | Scope.Scope, E, A> {
83
+ return withScope((scope) => f(makeForkInScope(scope), scope), executionStrategy)
29
84
  }
30
85
 
31
- function makeScopedFork(scope: Scope.Scope): ScopedFork {
32
- const forkIn = Effect.forkIn(scope)
33
-
34
- return <R, E, A>(effect: Effect.Effect<R, E, A>): Effect.Effect<R, never, Fiber.Fiber<E, A>> => {
35
- // Convert simple Effects directly into synthetic Fibers to avoid the overhead of constructing a fiber.
36
- return matchEffectPrimitive(effect as Effect.Effect<R, E, A> & InternalEffect, {
37
- Success: (e): Effect.Effect<R, never, Fiber.Fiber<E, A>> => Effect.succeed(Fiber.succeed(e.i0 as A)),
38
- Failure: (e) => Effect.succeed(Fiber.failCause(e.i0 as Cause<E>)),
39
- Sync: (e) => Effect.sync(() => Fiber.succeed(e.i0() as A)),
40
- Left: (e) => Effect.succeed(Fiber.fail(e.left as E)),
41
- Right: (e) => Effect.succeed(Fiber.succeed(e.right as A)),
42
- None: () => Effect.succeed(Fiber.fail(new NoSuchElementException() as E)),
43
- Some: (e) => Effect.succeed(Fiber.succeed(e.value)),
44
- Otherwise: (e) => forkIn(e as Effect.Effect<R, E, A>)
86
+ export function makeForkInScope(scope: Scope.Scope) {
87
+ return <R, E, A>(effect: Effect.Effect<R, E, A>) =>
88
+ matchEffectPrimitive<R, E, A, Effect.Effect<Exclude<R, Scope.Scope>, never, Fiber.Fiber<E, A>>>(effect, {
89
+ Success: (a) => Effect.succeed(Fiber.succeed(a)),
90
+ Failure: (cause) => Effect.succeed(Fiber.failCause(cause)),
91
+ Sync: (f) =>
92
+ Effect.sync(() => {
93
+ try {
94
+ return Fiber.succeed(f())
95
+ } catch (e) {
96
+ return Fiber.failCause(Cause.die(e))
97
+ }
98
+ }),
99
+ Left: (e) => Effect.succeed(Fiber.fail(e)),
100
+ Right: (a) => Effect.succeed(Fiber.succeed(a)),
101
+ Some: (a) => Effect.succeed(Fiber.succeed(a)),
102
+ None: (e) => Effect.succeed(Fiber.fail(e)),
103
+ Otherwise: (eff) => Effect.forkIn(Effect.provideService(eff, Scope.Scope, scope), scope)
45
104
  })
46
- }
47
105
  }
48
106
 
49
107
  export function withSwitchFork<R, E, A>(
50
- f: (fork: FxFork, scope: Scope.Scope) => Effect.Effect<R, E, A>
108
+ f: (fork: FxFork, scope: Scope.CloseableScope) => Effect.Effect<R, E, A>,
109
+ executionStrategy: ExecutionStrategy.ExecutionStrategy
51
110
  ) {
52
- return withScopedFork((_, scope) =>
53
- Effect.flatMap(
54
- SynchronizedRef.make<Fiber.Fiber<never, void>>(Fiber.unit),
55
- (ref) => runSwitchFork(ref, scope, f)
56
- )
111
+ return withScopedFork(
112
+ (fork, scope) =>
113
+ Effect.flatMap(
114
+ SynchronizedRef.make<Fiber.Fiber<never, unknown>>(Fiber.unit),
115
+ (ref) => runSwitchFork(ref, fork, scope, f)
116
+ ),
117
+ executionStrategy
57
118
  )
58
119
  }
59
120
 
60
121
  export function runSwitchFork<R, E, A>(
61
- ref: SynchronizedRef.SynchronizedRef<Fiber.Fiber<never, void>>,
62
- scope: Scope.Scope,
63
- f: (fork: FxFork, scope: Scope.Scope) => Effect.Effect<R, E, A>
122
+ ref: SynchronizedRef.SynchronizedRef<Fiber.Fiber<never, unknown>>,
123
+ fork: ScopedFork,
124
+ scope: Scope.CloseableScope,
125
+ f: (fork: FxFork, scope: Scope.CloseableScope) => Effect.Effect<R, E, A>
64
126
  ) {
65
- return Effect.flatMap(
66
- f((effect) =>
67
- SynchronizedRef.updateAndGetEffect(
68
- ref,
69
- (fiber) => Effect.flatMap(Fiber.interrupt(fiber), () => Effect.forkIn(effect, scope))
70
- ), scope),
71
- () => Effect.flatMap(SynchronizedRef.get(ref), Fiber.join)
127
+ return Effect.zipRight(
128
+ f(
129
+ (effect) =>
130
+ SynchronizedRef.updateEffect(
131
+ ref,
132
+ (fiber) =>
133
+ Effect.zipRight(
134
+ Fiber.interrupt(fiber),
135
+ fork(effect)
136
+ )
137
+ ),
138
+ scope
139
+ ),
140
+ Effect.flatMap(SynchronizedRef.get(ref), Fiber.join)
72
141
  )
73
142
  }
74
143
 
75
144
  export function withExhaustFork<R, E, A>(
76
- f: (fork: FxFork, scope: Scope.Scope) => Effect.Effect<R, E, A>
145
+ f: (fork: FxFork, scope: Scope.Scope) => Effect.Effect<R, E, A>,
146
+ executionStrategy: ExecutionStrategy.ExecutionStrategy
77
147
  ) {
78
- return withScopedFork((fork, scope) =>
79
- Effect.flatMap(
148
+ return withScopedFork((fork, scope) => {
149
+ return Effect.flatMap(
80
150
  SynchronizedRef.make<Fiber.Fiber<never, void> | null>(null),
81
151
  (ref) =>
82
152
  Effect.flatMap(
83
153
  f((effect) =>
84
154
  SynchronizedRef.updateEffect(
85
155
  ref,
86
- (fiber) => fiber ? Effect.succeed(fiber) : fork(Effect.onExit(effect, () => Ref.set(ref, null)))
156
+ (fiber) =>
157
+ fiber
158
+ ? Effect.succeed(fiber)
159
+ : fork(
160
+ Effect.onExit(
161
+ effect,
162
+ () => Ref.set(ref, null)
163
+ )
164
+ )
87
165
  ), scope),
88
166
  () => Effect.flatMap(Ref.get(ref), (fiber) => fiber ? Fiber.join(fiber) : Effect.unit)
89
167
  )
90
168
  )
91
- )
169
+ }, executionStrategy)
92
170
  }
93
171
 
94
172
  export function withExhaustLatestFork<R, E, A>(
95
- f: (exhaustLatestFork: FxFork, scope: Scope.Scope) => Effect.Effect<R, E, A>
173
+ f: (exhaustLatestFork: FxFork, scope: Scope.Scope) => Effect.Effect<R, E, A>,
174
+ executionStrategy: ExecutionStrategy.ExecutionStrategy
96
175
  ) {
97
176
  return withScopedFork((fork, scope) =>
98
177
  Effect.flatMap(
@@ -130,44 +209,53 @@ export function withExhaustLatestFork<R, E, A>(
130
209
  Effect.flatMap(Ref.get(ref), (currentFiber) =>
131
210
  currentFiber
132
211
  ? Ref.set(nextEffect, Option.some(eff))
133
- : Effect.flatMap(fork(Effect.ensuring(eff, Effect.zip(reset, runNext))), (fiber) => Ref.set(ref, fiber)))
212
+ : Effect.flatMap(
213
+ fork(
214
+ Effect.ensuring(
215
+ eff,
216
+ Effect.zip(reset, runNext)
217
+ )
218
+ ),
219
+ (fiber) => Ref.set(ref, fiber)
220
+ ))
134
221
 
135
222
  return Effect.zip(f(exhaustLatestFork, scope), awaitNext)
136
223
  }
137
- )
138
- )
224
+ ), executionStrategy)
139
225
  }
140
226
 
141
227
  export function withUnboundedFork<R, E, A>(
142
- f: (fork: FxFork, scope: Scope.Scope) => Effect.Effect<R, E, A>
228
+ f: (fork: FxFork, scope: Scope.Scope) => Effect.Effect<R, E, A>,
229
+ executionStrategy: ExecutionStrategy.ExecutionStrategy
143
230
  ) {
144
231
  return withScopedFork((fork, scope) =>
145
232
  Effect.flatMap(
146
- Ref.make<Set<Fiber.Fiber<never, void>>>(new Set()),
233
+ Ref.make<Map<symbol, Fiber.Fiber<never, void>>>(new Map()),
147
234
  (ref) =>
148
235
  Effect.flatMap(
149
- f((effect) =>
150
- fork(effect).pipe(
151
- Effect.tap((fiber) => Ref.update(ref, (set) => set.add(fiber))),
152
- Effect.tap((fiber) =>
153
- Scope.addFinalizer(
154
- scope,
155
- Ref.update(ref, (set) => {
156
- set.delete(fiber)
157
- return set
158
- })
159
- )
160
- )
161
- ), scope),
162
- () => Effect.flatMap(Ref.get(ref), (fibers) => fibers.size > 0 ? Fiber.joinAll(fibers) : Effect.unit)
236
+ f((effect) => {
237
+ const id = Symbol()
238
+
239
+ return Effect.tap(
240
+ fork(Effect.onExit(effect, () => Ref.update(ref, (map) => (map.delete(id), map)))),
241
+ (fiber) => {
242
+ if (Fiber.isRuntimeFiber(fiber)) {
243
+ return Ref.update(ref, (map) => map.set(id, fiber))
244
+ } else {
245
+ return Effect.unit
246
+ }
247
+ }
248
+ )
249
+ }, scope),
250
+ () => Effect.flatMap(Ref.get(ref), (fibers) => fibers.size > 0 ? Fiber.joinAll(fibers.values()) : Effect.unit)
163
251
  )
164
- )
165
- )
252
+ ), executionStrategy)
166
253
  }
167
254
 
168
255
  export function withBoundedFork(capacity: number) {
169
256
  return <R, E, A>(
170
- f: (fork: FxFork, scope: Scope.Scope) => Effect.Effect<R, E, A>
257
+ f: (fork: FxFork, scope: Scope.Scope) => Effect.Effect<R, E, A>,
258
+ executionStrategy: ExecutionStrategy.ExecutionStrategy
171
259
  ) => {
172
260
  return withScopedFork((fork, scope) =>
173
261
  Effect.flatMap(
@@ -189,14 +277,16 @@ export function withBoundedFork(capacity: number) {
189
277
  ), scope),
190
278
  () => Effect.flatMap(Ref.get(ref), (fibers) => fibers.size > 0 ? Fiber.joinAll(fibers) : Effect.unit)
191
279
  )
192
- )
193
- )
280
+ ), executionStrategy)
194
281
  }
195
282
  }
196
283
 
197
284
  export function withFlattenStrategy(
198
285
  strategy: FlattenStrategy
199
- ): <R, E, A>(f: (fork: FxFork, scope: Scope.Scope) => Effect.Effect<R, E, A>) => Effect.Effect<R, E, void> {
286
+ ): <R, E, A>(
287
+ f: (fork: FxFork, scope: Scope.Scope) => Effect.Effect<R, E, A>,
288
+ executionStrategy: ExecutionStrategy.ExecutionStrategy
289
+ ) => Effect.Effect<R | Scope.Scope, E, void> {
200
290
  switch (strategy._tag) {
201
291
  case "Bounded":
202
292
  return withBoundedFork(strategy.capacity)
@@ -211,6 +301,111 @@ export function withFlattenStrategy(
211
301
  }
212
302
  }
213
303
 
304
+ export function matchEffectPrimitive<R, E, A, Z>(
305
+ effect: Effect.Effect<R, E, A>,
306
+ matchers: {
307
+ Success: (a: A) => Z
308
+ Failure: (e: Cause.Cause<E>) => Z
309
+ Sync: (f: () => A) => Z
310
+ Left: (e: E) => Z
311
+ Right: (a: A) => Z
312
+ Some: (a: A) => Z
313
+ None: (e: E) => Z
314
+ Otherwise: (effect: Effect.Effect<R, E, A>) => Z
315
+ }
316
+ ): Z {
317
+ const eff = effect as any
318
+
319
+ switch (eff._tag) {
320
+ case "Success":
321
+ return matchers.Success(eff.value)
322
+ case "Failure":
323
+ return matchers.Failure(eff.cause)
324
+ case "Sync":
325
+ return matchers.Sync(eff.i0)
326
+ case "Left":
327
+ return matchers.Left(eff.left)
328
+ case "Right":
329
+ return matchers.Right(eff.right)
330
+ case "Some":
331
+ return matchers.Some(eff.value)
332
+ case "None":
333
+ return matchers.None(new Cause.NoSuchElementException() as E)
334
+ default:
335
+ return matchers.Otherwise(effect)
336
+ }
337
+ }
338
+
339
+ export function adjustTime(input: Duration.DurationInput = 1) {
340
+ return Effect.flatMap(
341
+ Effect.context<never>(),
342
+ Effect.unifiedFn((ctx) => {
343
+ const testClock = getOption(ctx, TestClock.TestClock)
344
+
345
+ if (Option.isSome(testClock)) {
346
+ return testClock.value.adjust(input)
347
+ } else {
348
+ return Effect.sleep(input)
349
+ }
350
+ })
351
+ )
352
+ }
353
+
354
+ export function tupleSink<R, E, A extends ReadonlyArray<any>, R2, E2, B>(
355
+ sink: Sink.Sink<R, E, A>,
356
+ f: (sink: (index: number, value: A[number]) => Effect.Effect<R, never, unknown>) => Effect.Effect<R2, E2, B>,
357
+ expected: number
358
+ ) {
359
+ return Effect.suspend(() => {
360
+ const values = new Map<number, A[number]>()
361
+
362
+ const getValues = () => Array.from({ length: expected }, (_, i) => values.get(i)!) as any as A
363
+
364
+ return f((index: number, value: A[number]) => {
365
+ values.set(index, value)
366
+
367
+ if (values.size === expected) {
368
+ return sink.onSuccess(getValues())
369
+ } else {
370
+ return Effect.unit
371
+ }
372
+ })
373
+ })
374
+ }
375
+
376
+ export function withDebounceFork<R, E, A>(
377
+ f: (fork: FxFork, scope: Scope.Scope) => Effect.Effect<R, E, A>,
378
+ duration: Duration.DurationInput
379
+ ): Effect.Effect<R | Scope.Scope, E, unknown> {
380
+ return withScopedFork(
381
+ (fork, scope) =>
382
+ Effect.flatMap(
383
+ SynchronizedRef.make(Option.none<Fiber.Fiber<never, void>>()),
384
+ (ref) =>
385
+ Effect.flatMap(
386
+ f(
387
+ (effect) =>
388
+ SynchronizedRef.updateEffect(
389
+ ref,
390
+ Option.match({
391
+ onNone: () => Effect.asSome(fork(Effect.delay(effect, duration))),
392
+ onSome: (fiber) =>
393
+ Fiber.interrupt(fiber).pipe(Effect.zipRight(fork(Effect.delay(effect, duration))), Effect.asSome)
394
+ })
395
+ ),
396
+ scope
397
+ ),
398
+ () =>
399
+ SynchronizedRef.get(ref).pipe(Effect.flatMap(Option.match({
400
+ onNone: () => Effect.unit,
401
+ onSome: Fiber.join
402
+ })))
403
+ )
404
+ ),
405
+ ExecutionStrategy.sequential
406
+ )
407
+ }
408
+
214
409
  export class RingBuffer<A> {
215
410
  constructor(
216
411
  readonly capacity: number
@@ -261,118 +456,6 @@ export class RingBuffer<A> {
261
456
  }
262
457
  }
263
458
 
264
- export function withEarlyExit<R, E, A, R2, B>(
265
- sink: Sink.Sink<E, A>,
266
- f: (sink: Sink.WithEarlyExit<E, A>) => Effect.Effect<R2, E, B>
267
- ): Effect.Effect<R | R2, never, void> {
268
- return Effect.asyncEffect<never, never, void, R | R2, never, void>((resume) => {
269
- const earlyExit: Sink.WithEarlyExit<E, A> = {
270
- ...sink,
271
- earlyExit: Effect.sync(() => resume(Effect.unit))
272
- }
273
-
274
- return Effect.matchCauseEffect(f(earlyExit), {
275
- onFailure: sink.onFailure,
276
- onSuccess: () => earlyExit.earlyExit
277
- })
278
- })
279
- }
280
-
281
- export function withBuffers<R, E, A>(size: number, sink: Sink.WithContext<R, E, A>) {
282
- return Effect.sync(() => {
283
- const buffers: Array<Array<A>> = Array.from({ length: size }, () => [])
284
- const finished = new Set<number>()
285
- let currentIndex = 0
286
-
287
- const drainBuffer = (index: number): Effect.Effect<R, never, void> => {
288
- const effect = Effect.forEach(buffers[index], sink.onSuccess)
289
- buffers[index] = []
290
-
291
- return Effect.flatMap(effect, () => finished.has(index) ? onEnd(index) : Effect.unit)
292
- }
293
-
294
- const onSuccess = (index: number, value: A) => {
295
- if (index === currentIndex) {
296
- const buffer = buffers[index]
297
-
298
- if (buffer.length === 0) {
299
- return sink.onSuccess(value)
300
- } else {
301
- buffer.push(value)
302
-
303
- return drainBuffer(index)
304
- }
305
- } else {
306
- buffers[index].push(value)
307
-
308
- return Effect.unit
309
- }
310
- }
311
-
312
- const onEnd = (index: number) => {
313
- finished.add(index)
314
-
315
- if (index === currentIndex && ++currentIndex < size) {
316
- return drainBuffer(currentIndex)
317
- } else {
318
- return Effect.unit
319
- }
320
- }
321
-
322
- return {
323
- onSuccess,
324
- onEnd
325
- }
326
- })
327
- }
328
-
329
- export type ScopedRuntime<R> = {
330
- readonly runtime: Runtime.Runtime<R | Scope.Scope>
331
- readonly scope: Scope.Scope
332
- readonly run: <E, A>(effect: Effect.Effect<R | Scope.Scope, E, A>) => Fiber.RuntimeFiber<E, A>
333
- readonly runPromise: <E, A>(effect: Effect.Effect<R | Scope.Scope, E, A>) => Promise<A>
334
- }
335
-
336
- export function scopedRuntime<R>(): Effect.Effect<
337
- R | Scope.Scope,
338
- never,
339
- ScopedRuntime<R>
340
- > {
341
- return Effect.gen(function*(_) {
342
- const runtime = yield* _(Effect.runtime<R | Scope.Scope>())
343
- const scope = unsafeGet(runtime.context, Scope.Scope)
344
- const runFork = Runtime.runFork(runtime)
345
-
346
- const run = <E, A>(effect: Effect.Effect<R | Scope.Scope, E, A>): Fiber.RuntimeFiber<E, A> => {
347
- const fiber: Fiber.RuntimeFiber<E, A> = Scope.addFinalizer(
348
- scope,
349
- Effect.suspend(() => Fiber.interrupt(fiber))
350
- ).pipe(
351
- Effect.zipRight(effect),
352
- runFork
353
- )
354
-
355
- return fiber
356
- }
357
-
358
- const runPromise = <E, A>(effect: Effect.Effect<R | Scope.Scope, E, A>): Promise<A> =>
359
- new Promise((resolve, reject) => {
360
- const fiber = run(effect)
361
- fiber.addObserver(Exit.match({
362
- onFailure: (cause) => reject(Runtime.makeFiberFailure(cause)),
363
- onSuccess: resolve
364
- }))
365
- })
366
-
367
- return {
368
- runtime,
369
- scope,
370
- run,
371
- runPromise
372
- } as const
373
- })
374
- }
375
-
376
459
  export function awaitScopeClose(scope: Scope.Scope) {
377
460
  return Effect.asyncEffect<never, never, unknown, never, never, void>((cb) =>
378
461
  Scope.addFinalizerExit(scope, () => Effect.sync(() => cb(Effect.unit)))
@@ -413,16 +496,3 @@ export class MulticastEffect<R, E, A> extends Effectable.Class<R, E, A> {
413
496
  })
414
497
  }
415
498
  }
416
-
417
- export function adjustTime(input?: Duration.DurationInput) {
418
- return Effect.gen(function*(_) {
419
- const ctx = yield* _(Effect.context<never>())
420
- const testClock = getOption(ctx, TestClock.TestClock)
421
-
422
- if (Option.isSome(testClock)) {
423
- yield* _(testClock.value.adjust(input ?? 1))
424
- } else if (input) {
425
- yield* _(Effect.sleep(input))
426
- }
427
- })
428
- }