@typed/fx 1.18.4 → 1.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (423) hide show
  1. package/AsyncData/package.json +6 -0
  2. package/Emitter/package.json +6 -0
  3. package/Form/package.json +6 -0
  4. package/FormEntry/package.json +6 -0
  5. package/Fx/package.json +6 -0
  6. package/Guard/package.json +6 -0
  7. package/Idle/package.json +6 -0
  8. package/Match/package.json +6 -0
  9. package/Pull/package.json +6 -0
  10. package/Push/package.json +6 -0
  11. package/RefArray/package.json +6 -0
  12. package/RefChunk/package.json +6 -0
  13. package/RefHashMap/package.json +6 -0
  14. package/RefHashSet/package.json +6 -0
  15. package/RefSubject/package.json +6 -0
  16. package/Sink/package.json +6 -0
  17. package/Stream/package.json +6 -0
  18. package/Subject/package.json +6 -0
  19. package/TypeId/package.json +6 -0
  20. package/Typeclass/package.json +6 -0
  21. package/Versioned/package.json +6 -0
  22. package/dist/cjs/AsyncData.js +177 -0
  23. package/dist/cjs/AsyncData.js.map +1 -0
  24. package/dist/cjs/Emitter.js +24 -21
  25. package/dist/cjs/Emitter.js.map +1 -1
  26. package/dist/cjs/Form.js +78 -21
  27. package/dist/cjs/Form.js.map +1 -1
  28. package/dist/cjs/FormEntry.js +75 -48
  29. package/dist/cjs/FormEntry.js.map +1 -1
  30. package/dist/cjs/Fx.js +517 -872
  31. package/dist/cjs/Fx.js.map +1 -1
  32. package/dist/cjs/Guard.js +21 -13
  33. package/dist/cjs/Guard.js.map +1 -1
  34. package/dist/cjs/Idle.js +49 -37
  35. package/dist/cjs/Idle.js.map +1 -1
  36. package/dist/cjs/Match.js +99 -61
  37. package/dist/cjs/Match.js.map +1 -1
  38. package/dist/cjs/Pull.js.map +1 -1
  39. package/dist/cjs/Push.js +168 -0
  40. package/dist/cjs/Push.js.map +1 -0
  41. package/dist/cjs/RefArray.js +32 -30
  42. package/dist/cjs/RefArray.js.map +1 -1
  43. package/dist/cjs/RefChunk.js +26 -24
  44. package/dist/cjs/RefChunk.js.map +1 -1
  45. package/dist/cjs/RefHashMap.js +20 -20
  46. package/dist/cjs/RefHashMap.js.map +1 -1
  47. package/dist/cjs/RefHashSet.js +11 -8
  48. package/dist/cjs/RefHashSet.js.map +1 -1
  49. package/dist/cjs/RefSubject.js +899 -158
  50. package/dist/cjs/RefSubject.js.map +1 -1
  51. package/dist/cjs/Sink.js +588 -62
  52. package/dist/cjs/Sink.js.map +1 -1
  53. package/dist/cjs/Stream.js +15 -10
  54. package/dist/cjs/Stream.js.map +1 -1
  55. package/dist/cjs/Subject.js +153 -55
  56. package/dist/cjs/Subject.js.map +1 -1
  57. package/dist/cjs/TypeId.js +10 -5
  58. package/dist/cjs/TypeId.js.map +1 -1
  59. package/dist/cjs/Typeclass.js +28 -31
  60. package/dist/cjs/Typeclass.js.map +1 -1
  61. package/dist/cjs/Versioned.js +118 -57
  62. package/dist/cjs/Versioned.js.map +1 -1
  63. package/dist/cjs/index.js +44 -8
  64. package/dist/cjs/index.js.map +1 -1
  65. package/dist/cjs/internal/{deferred-ref.js → DeferredRef.js} +45 -13
  66. package/dist/cjs/internal/DeferredRef.js.map +1 -0
  67. package/dist/cjs/internal/UnionToTuple.js +6 -0
  68. package/dist/cjs/internal/UnionToTuple.js.map +1 -0
  69. package/dist/cjs/internal/core.js +1590 -779
  70. package/dist/cjs/internal/core.js.map +1 -1
  71. package/dist/cjs/internal/diff.js +114 -0
  72. package/dist/cjs/internal/diff.js.map +1 -0
  73. package/dist/cjs/internal/effect-loop-operator.js +288 -0
  74. package/dist/cjs/internal/effect-loop-operator.js.map +1 -0
  75. package/dist/cjs/internal/effect-operator.js +46 -37
  76. package/dist/cjs/internal/effect-operator.js.map +1 -1
  77. package/dist/cjs/internal/effect-producer.js +74 -0
  78. package/dist/cjs/internal/effect-producer.js.map +1 -0
  79. package/dist/cjs/internal/helpers.js +158 -128
  80. package/dist/cjs/internal/helpers.js.map +1 -1
  81. package/dist/cjs/internal/keyed.js +136 -173
  82. package/dist/cjs/internal/keyed.js.map +1 -1
  83. package/dist/cjs/internal/loop-operator.js +213 -0
  84. package/dist/cjs/internal/loop-operator.js.map +1 -0
  85. package/dist/cjs/internal/operator.js +79 -0
  86. package/dist/cjs/internal/operator.js.map +1 -0
  87. package/dist/cjs/internal/protos.js +19 -81
  88. package/dist/cjs/internal/protos.js.map +1 -1
  89. package/dist/cjs/internal/provide.js +47 -25
  90. package/dist/cjs/internal/provide.js.map +1 -1
  91. package/dist/cjs/internal/requestIdleCallback.js +5 -5
  92. package/dist/cjs/internal/requestIdleCallback.js.map +1 -1
  93. package/dist/cjs/internal/share.js +12 -15
  94. package/dist/cjs/internal/share.js.map +1 -1
  95. package/dist/cjs/internal/sync-operator.js +50 -22
  96. package/dist/cjs/internal/sync-operator.js.map +1 -1
  97. package/dist/cjs/internal/sync-producer.js +114 -0
  98. package/dist/cjs/internal/sync-producer.js.map +1 -0
  99. package/dist/cjs/internal/withKey.js +45 -51
  100. package/dist/cjs/internal/withKey.js.map +1 -1
  101. package/dist/dts/AsyncData.d.ts +185 -0
  102. package/dist/dts/AsyncData.d.ts.map +1 -0
  103. package/dist/dts/Emitter.d.ts +13 -20
  104. package/dist/dts/Emitter.d.ts.map +1 -1
  105. package/dist/dts/Form.d.ts +45 -28
  106. package/dist/dts/Form.d.ts.map +1 -1
  107. package/dist/dts/FormEntry.d.ts +25 -13
  108. package/dist/dts/FormEntry.d.ts.map +1 -1
  109. package/dist/dts/Fx.d.ts +983 -1387
  110. package/dist/dts/Fx.d.ts.map +1 -1
  111. package/dist/dts/Guard.d.ts +8 -1
  112. package/dist/dts/Guard.d.ts.map +1 -1
  113. package/dist/dts/Idle.d.ts +3 -3
  114. package/dist/dts/Idle.d.ts.map +1 -1
  115. package/dist/dts/Match.d.ts +8 -8
  116. package/dist/dts/Match.d.ts.map +1 -1
  117. package/dist/dts/Pull.d.ts +5 -5
  118. package/dist/dts/Pull.d.ts.map +1 -1
  119. package/dist/dts/Push.d.ts +170 -0
  120. package/dist/dts/Push.d.ts.map +1 -0
  121. package/dist/dts/RefArray.d.ts +21 -23
  122. package/dist/dts/RefArray.d.ts.map +1 -1
  123. package/dist/dts/RefChunk.d.ts +17 -19
  124. package/dist/dts/RefChunk.d.ts.map +1 -1
  125. package/dist/dts/RefHashMap.d.ts +19 -20
  126. package/dist/dts/RefHashMap.d.ts.map +1 -1
  127. package/dist/dts/RefHashSet.d.ts +12 -16
  128. package/dist/dts/RefHashSet.d.ts.map +1 -1
  129. package/dist/dts/RefSubject.d.ts +396 -187
  130. package/dist/dts/RefSubject.d.ts.map +1 -1
  131. package/dist/dts/Sink.d.ts +193 -93
  132. package/dist/dts/Sink.d.ts.map +1 -1
  133. package/dist/dts/Stream.d.ts +7 -1
  134. package/dist/dts/Stream.d.ts.map +1 -1
  135. package/dist/dts/Subject.d.ts +27 -36
  136. package/dist/dts/Subject.d.ts.map +1 -1
  137. package/dist/dts/TypeId.d.ts +10 -0
  138. package/dist/dts/TypeId.d.ts.map +1 -1
  139. package/dist/dts/Typeclass.d.ts +2 -2
  140. package/dist/dts/Typeclass.d.ts.map +1 -1
  141. package/dist/dts/Versioned.d.ts +50 -78
  142. package/dist/dts/Versioned.d.ts.map +1 -1
  143. package/dist/dts/index.d.ts +66 -6
  144. package/dist/dts/index.d.ts.map +1 -1
  145. package/dist/dts/internal/DeferredRef.d.ts +20 -0
  146. package/dist/dts/internal/DeferredRef.d.ts.map +1 -0
  147. package/dist/dts/internal/UnionToTuple.d.ts +6 -0
  148. package/dist/dts/internal/UnionToTuple.d.ts.map +1 -0
  149. package/dist/dts/internal/core.d.ts +218 -450
  150. package/dist/dts/internal/core.d.ts.map +1 -1
  151. package/dist/dts/internal/diff.d.ts +38 -0
  152. package/dist/dts/internal/diff.d.ts.map +1 -0
  153. package/dist/dts/internal/effect-loop-operator.d.ts +34 -0
  154. package/dist/dts/internal/effect-loop-operator.d.ts.map +1 -0
  155. package/dist/dts/internal/effect-operator.d.ts +8 -5
  156. package/dist/dts/internal/effect-operator.d.ts.map +1 -1
  157. package/dist/dts/internal/effect-producer.d.ts +25 -0
  158. package/dist/dts/internal/effect-producer.d.ts.map +1 -0
  159. package/dist/dts/internal/helpers.d.ts +33 -24
  160. package/dist/dts/internal/helpers.d.ts.map +1 -1
  161. package/dist/dts/internal/keyed.d.ts +3 -3
  162. package/dist/dts/internal/keyed.d.ts.map +1 -1
  163. package/dist/dts/internal/loop-operator.d.ts +40 -0
  164. package/dist/dts/internal/loop-operator.d.ts.map +1 -0
  165. package/dist/dts/internal/operator.d.ts +16 -0
  166. package/dist/dts/internal/operator.d.ts.map +1 -0
  167. package/dist/dts/internal/protos.d.ts +16 -43
  168. package/dist/dts/internal/protos.d.ts.map +1 -1
  169. package/dist/dts/internal/provide.d.ts +7 -1
  170. package/dist/dts/internal/provide.d.ts.map +1 -1
  171. package/dist/dts/internal/share.d.ts +12 -9
  172. package/dist/dts/internal/share.d.ts.map +1 -1
  173. package/dist/dts/internal/sync-operator.d.ts +7 -3
  174. package/dist/dts/internal/sync-operator.d.ts.map +1 -1
  175. package/dist/dts/internal/sync-producer.d.ts +36 -0
  176. package/dist/dts/internal/sync-producer.d.ts.map +1 -0
  177. package/dist/dts/internal/withKey.d.ts +3 -3
  178. package/dist/dts/internal/withKey.d.ts.map +1 -1
  179. package/dist/esm/AsyncData.js +151 -0
  180. package/dist/esm/AsyncData.js.map +1 -0
  181. package/dist/esm/Emitter.js +24 -21
  182. package/dist/esm/Emitter.js.map +1 -1
  183. package/dist/esm/Form.js +69 -14
  184. package/dist/esm/Form.js.map +1 -1
  185. package/dist/esm/FormEntry.js +77 -52
  186. package/dist/esm/FormEntry.js.map +1 -1
  187. package/dist/esm/Fx.js +509 -874
  188. package/dist/esm/Fx.js.map +1 -1
  189. package/dist/esm/Guard.js +5 -1
  190. package/dist/esm/Guard.js.map +1 -1
  191. package/dist/esm/Idle.js +49 -39
  192. package/dist/esm/Idle.js.map +1 -1
  193. package/dist/esm/Match.js +103 -63
  194. package/dist/esm/Match.js.map +1 -1
  195. package/dist/esm/Pull.js.map +1 -1
  196. package/dist/esm/Push.js +159 -0
  197. package/dist/esm/Push.js.map +1 -0
  198. package/dist/esm/RefArray.js +32 -30
  199. package/dist/esm/RefArray.js.map +1 -1
  200. package/dist/esm/RefChunk.js +26 -24
  201. package/dist/esm/RefChunk.js.map +1 -1
  202. package/dist/esm/RefHashMap.js +20 -20
  203. package/dist/esm/RefHashMap.js.map +1 -1
  204. package/dist/esm/RefHashSet.js +11 -8
  205. package/dist/esm/RefHashSet.js.map +1 -1
  206. package/dist/esm/RefSubject.js +873 -150
  207. package/dist/esm/RefSubject.js.map +1 -1
  208. package/dist/esm/Sink.js +608 -57
  209. package/dist/esm/Sink.js.map +1 -1
  210. package/dist/esm/Stream.js +13 -9
  211. package/dist/esm/Stream.js.map +1 -1
  212. package/dist/esm/Subject.js +151 -56
  213. package/dist/esm/Subject.js.map +1 -1
  214. package/dist/esm/TypeId.js +9 -4
  215. package/dist/esm/TypeId.js.map +1 -1
  216. package/dist/esm/Typeclass.js +29 -29
  217. package/dist/esm/Typeclass.js.map +1 -1
  218. package/dist/esm/Versioned.js +110 -53
  219. package/dist/esm/Versioned.js.map +1 -1
  220. package/dist/esm/index.js +66 -6
  221. package/dist/esm/index.js.map +1 -1
  222. package/dist/esm/internal/DeferredRef.js +54 -0
  223. package/dist/esm/internal/DeferredRef.js.map +1 -0
  224. package/dist/esm/internal/UnionToTuple.js +2 -0
  225. package/dist/esm/internal/UnionToTuple.js.map +1 -0
  226. package/dist/esm/internal/core.js +1439 -719
  227. package/dist/esm/internal/core.js.map +1 -1
  228. package/dist/esm/internal/diff.js +82 -0
  229. package/dist/esm/internal/diff.js.map +1 -0
  230. package/dist/esm/internal/effect-loop-operator.js +269 -0
  231. package/dist/esm/internal/effect-loop-operator.js.map +1 -0
  232. package/dist/esm/internal/effect-operator.js +44 -37
  233. package/dist/esm/internal/effect-operator.js.map +1 -1
  234. package/dist/esm/internal/effect-producer.js +47 -0
  235. package/dist/esm/internal/effect-producer.js.map +1 -0
  236. package/dist/esm/internal/helpers.js +157 -129
  237. package/dist/esm/internal/helpers.js.map +1 -1
  238. package/dist/esm/internal/keyed.js +128 -139
  239. package/dist/esm/internal/keyed.js.map +1 -1
  240. package/dist/esm/internal/loop-operator.js +186 -0
  241. package/dist/esm/internal/loop-operator.js.map +1 -0
  242. package/dist/esm/internal/operator.js +68 -0
  243. package/dist/esm/internal/operator.js.map +1 -0
  244. package/dist/esm/internal/protos.js +16 -75
  245. package/dist/esm/internal/protos.js.map +1 -1
  246. package/dist/esm/internal/provide.js +33 -25
  247. package/dist/esm/internal/provide.js.map +1 -1
  248. package/dist/esm/internal/requestIdleCallback.js +5 -5
  249. package/dist/esm/internal/requestIdleCallback.js.map +1 -1
  250. package/dist/esm/internal/share.js +12 -12
  251. package/dist/esm/internal/share.js.map +1 -1
  252. package/dist/esm/internal/sync-operator.js +49 -21
  253. package/dist/esm/internal/sync-operator.js.map +1 -1
  254. package/dist/esm/internal/sync-producer.js +88 -0
  255. package/dist/esm/internal/sync-producer.js.map +1 -0
  256. package/dist/esm/internal/withKey.js +46 -47
  257. package/dist/esm/internal/withKey.js.map +1 -1
  258. package/package.json +22 -62
  259. package/src/AsyncData.ts +447 -0
  260. package/src/Emitter.ts +47 -38
  261. package/src/Form.ts +185 -65
  262. package/src/FormEntry.ts +142 -109
  263. package/src/Fx.ts +1685 -1851
  264. package/src/Guard.ts +12 -1
  265. package/src/Idle.ts +76 -62
  266. package/src/Match.ts +149 -93
  267. package/src/Pull.ts +8 -8
  268. package/src/Push.ts +472 -0
  269. package/src/RefArray.ts +53 -51
  270. package/src/RefChunk.ts +44 -41
  271. package/src/RefHashMap.ts +57 -43
  272. package/src/RefHashSet.ts +21 -31
  273. package/src/RefSubject.ts +1984 -457
  274. package/src/Sink.ts +922 -171
  275. package/src/Stream.ts +32 -20
  276. package/src/Subject.ts +230 -87
  277. package/src/TypeId.ts +16 -4
  278. package/src/Typeclass.ts +31 -32
  279. package/src/Versioned.ts +220 -168
  280. package/src/index.ts +78 -6
  281. package/src/internal/DeferredRef.ts +62 -0
  282. package/src/internal/UnionToTuple.ts +11 -0
  283. package/src/internal/core.ts +2491 -1950
  284. package/src/internal/diff.ts +157 -0
  285. package/src/internal/effect-loop-operator.ts +466 -0
  286. package/src/internal/effect-operator.ts +89 -54
  287. package/src/internal/effect-producer.ts +125 -0
  288. package/src/internal/helpers.ts +275 -205
  289. package/src/internal/keyed.ts +192 -241
  290. package/src/internal/loop-operator.ts +266 -0
  291. package/src/internal/operator.ts +87 -0
  292. package/src/internal/protos.ts +29 -104
  293. package/src/internal/provide.ts +48 -40
  294. package/src/internal/requestIdleCallback.ts +5 -6
  295. package/src/internal/share.ts +26 -24
  296. package/src/internal/sync-operator.ts +68 -27
  297. package/src/internal/sync-producer.ts +146 -0
  298. package/src/internal/withKey.ts +64 -74
  299. package/dist/cjs/Computed.js +0 -115
  300. package/dist/cjs/Computed.js.map +0 -1
  301. package/dist/cjs/Filtered.js +0 -95
  302. package/dist/cjs/Filtered.js.map +0 -1
  303. package/dist/cjs/Model.js +0 -119
  304. package/dist/cjs/Model.js.map +0 -1
  305. package/dist/cjs/RefAsyncData.js +0 -187
  306. package/dist/cjs/RefAsyncData.js.map +0 -1
  307. package/dist/cjs/RefAsyncDataArray.js +0 -38
  308. package/dist/cjs/RefAsyncDataArray.js.map +0 -1
  309. package/dist/cjs/RefBoolean.js +0 -45
  310. package/dist/cjs/RefBoolean.js.map +0 -1
  311. package/dist/cjs/RefNumber.js +0 -49
  312. package/dist/cjs/RefNumber.js.map +0 -1
  313. package/dist/cjs/internal/core-ref-subject.js +0 -254
  314. package/dist/cjs/internal/core-ref-subject.js.map +0 -1
  315. package/dist/cjs/internal/core-subject.js +0 -108
  316. package/dist/cjs/internal/core-subject.js.map +0 -1
  317. package/dist/cjs/internal/deferred-ref.js.map +0 -1
  318. package/dist/cjs/internal/effect-primitive.js +0 -47
  319. package/dist/cjs/internal/effect-primitive.js.map +0 -1
  320. package/dist/cjs/internal/fx-effect-proto.js +0 -58
  321. package/dist/cjs/internal/fx-effect-proto.js.map +0 -1
  322. package/dist/cjs/internal/fx-primitive.js +0 -193
  323. package/dist/cjs/internal/fx-primitive.js.map +0 -1
  324. package/dist/cjs/internal/fx.js +0 -240
  325. package/dist/cjs/internal/fx.js.map +0 -1
  326. package/dist/cjs/internal/matchers.js +0 -34
  327. package/dist/cjs/internal/matchers.js.map +0 -1
  328. package/dist/cjs/internal/run.js +0 -54
  329. package/dist/cjs/internal/run.js.map +0 -1
  330. package/dist/cjs/internal/schema-ref-subject.js +0 -132
  331. package/dist/cjs/internal/schema-ref-subject.js.map +0 -1
  332. package/dist/cjs/internal/versioned-transform.js +0 -46
  333. package/dist/cjs/internal/versioned-transform.js.map +0 -1
  334. package/dist/dts/Computed.d.ts +0 -106
  335. package/dist/dts/Computed.d.ts.map +0 -1
  336. package/dist/dts/Filtered.d.ts +0 -97
  337. package/dist/dts/Filtered.d.ts.map +0 -1
  338. package/dist/dts/Model.d.ts +0 -200
  339. package/dist/dts/Model.d.ts.map +0 -1
  340. package/dist/dts/RefAsyncData.d.ts +0 -236
  341. package/dist/dts/RefAsyncData.d.ts.map +0 -1
  342. package/dist/dts/RefAsyncDataArray.d.ts +0 -56
  343. package/dist/dts/RefAsyncDataArray.d.ts.map +0 -1
  344. package/dist/dts/RefBoolean.d.ts +0 -47
  345. package/dist/dts/RefBoolean.d.ts.map +0 -1
  346. package/dist/dts/RefNumber.d.ts +0 -48
  347. package/dist/dts/RefNumber.d.ts.map +0 -1
  348. package/dist/dts/internal/core-ref-subject.d.ts +0 -100
  349. package/dist/dts/internal/core-ref-subject.d.ts.map +0 -1
  350. package/dist/dts/internal/core-subject.d.ts +0 -5
  351. package/dist/dts/internal/core-subject.d.ts.map +0 -1
  352. package/dist/dts/internal/deferred-ref.d.ts +0 -12
  353. package/dist/dts/internal/deferred-ref.d.ts.map +0 -1
  354. package/dist/dts/internal/effect-primitive.d.ts +0 -6
  355. package/dist/dts/internal/effect-primitive.d.ts.map +0 -1
  356. package/dist/dts/internal/fx-effect-proto.d.ts +0 -30
  357. package/dist/dts/internal/fx-effect-proto.d.ts.map +0 -1
  358. package/dist/dts/internal/fx-primitive.d.ts +0 -109
  359. package/dist/dts/internal/fx-primitive.d.ts.map +0 -1
  360. package/dist/dts/internal/fx.d.ts +0 -245
  361. package/dist/dts/internal/fx.d.ts.map +0 -1
  362. package/dist/dts/internal/matchers.d.ts +0 -33
  363. package/dist/dts/internal/matchers.d.ts.map +0 -1
  364. package/dist/dts/internal/run.d.ts +0 -8
  365. package/dist/dts/internal/run.d.ts.map +0 -1
  366. package/dist/dts/internal/schema-ref-subject.d.ts +0 -5
  367. package/dist/dts/internal/schema-ref-subject.d.ts.map +0 -1
  368. package/dist/dts/internal/versioned-transform.d.ts +0 -17
  369. package/dist/dts/internal/versioned-transform.d.ts.map +0 -1
  370. package/dist/esm/Computed.js +0 -103
  371. package/dist/esm/Computed.js.map +0 -1
  372. package/dist/esm/Filtered.js +0 -83
  373. package/dist/esm/Filtered.js.map +0 -1
  374. package/dist/esm/Model.js +0 -100
  375. package/dist/esm/Model.js.map +0 -1
  376. package/dist/esm/RefAsyncData.js +0 -163
  377. package/dist/esm/RefAsyncData.js.map +0 -1
  378. package/dist/esm/RefAsyncDataArray.js +0 -27
  379. package/dist/esm/RefAsyncDataArray.js.map +0 -1
  380. package/dist/esm/RefBoolean.js +0 -31
  381. package/dist/esm/RefBoolean.js.map +0 -1
  382. package/dist/esm/RefNumber.js +0 -35
  383. package/dist/esm/RefNumber.js.map +0 -1
  384. package/dist/esm/internal/core-ref-subject.js +0 -242
  385. package/dist/esm/internal/core-ref-subject.js.map +0 -1
  386. package/dist/esm/internal/core-subject.js +0 -90
  387. package/dist/esm/internal/core-subject.js.map +0 -1
  388. package/dist/esm/internal/deferred-ref.js +0 -23
  389. package/dist/esm/internal/deferred-ref.js.map +0 -1
  390. package/dist/esm/internal/effect-primitive.js +0 -41
  391. package/dist/esm/internal/effect-primitive.js.map +0 -1
  392. package/dist/esm/internal/fx-effect-proto.js +0 -43
  393. package/dist/esm/internal/fx-effect-proto.js.map +0 -1
  394. package/dist/esm/internal/fx-primitive.js +0 -175
  395. package/dist/esm/internal/fx-primitive.js.map +0 -1
  396. package/dist/esm/internal/fx.js +0 -216
  397. package/dist/esm/internal/fx.js.map +0 -1
  398. package/dist/esm/internal/matchers.js +0 -38
  399. package/dist/esm/internal/matchers.js.map +0 -1
  400. package/dist/esm/internal/run.js +0 -32
  401. package/dist/esm/internal/run.js.map +0 -1
  402. package/dist/esm/internal/schema-ref-subject.js +0 -121
  403. package/dist/esm/internal/schema-ref-subject.js.map +0 -1
  404. package/dist/esm/internal/versioned-transform.js +0 -37
  405. package/dist/esm/internal/versioned-transform.js.map +0 -1
  406. package/src/Computed.ts +0 -289
  407. package/src/Filtered.ts +0 -274
  408. package/src/Model.ts +0 -483
  409. package/src/RefAsyncData.ts +0 -547
  410. package/src/RefAsyncDataArray.ts +0 -135
  411. package/src/RefBoolean.ts +0 -71
  412. package/src/RefNumber.ts +0 -77
  413. package/src/internal/core-ref-subject.ts +0 -528
  414. package/src/internal/core-subject.ts +0 -143
  415. package/src/internal/deferred-ref.ts +0 -26
  416. package/src/internal/effect-primitive.ts +0 -230
  417. package/src/internal/fx-effect-proto.ts +0 -56
  418. package/src/internal/fx-primitive.ts +0 -223
  419. package/src/internal/fx.ts +0 -619
  420. package/src/internal/matchers.ts +0 -83
  421. package/src/internal/run.ts +0 -51
  422. package/src/internal/schema-ref-subject.ts +0 -163
  423. 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
- }