@typed/fx 1.19.0 → 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 (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 +899 -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 +153 -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 +396 -187
  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 +873 -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 +151 -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 +1984 -457
  255. package/src/Sink.ts +922 -171
  256. package/src/Stream.ts +32 -20
  257. package/src/Subject.ts +230 -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,19 +1,19 @@
1
+ import { ExecutionStrategy, type Scope } from "effect"
1
2
  import * as Effect from "effect/Effect"
2
3
  import * as Fiber from "effect/Fiber"
3
4
  import { dual } from "effect/Function"
4
5
  import * as MutableRef from "effect/MutableRef"
5
6
  import * as Option from "effect/Option"
6
7
  import type { Fx } from "../Fx.js"
7
- import type { Subject } from "../Subject.js"
8
- import { makeHoldSubject, makeReplaySubject, makeSubject } from "./core-subject.js"
9
- import { withScopedFork } from "./core.js"
10
- import { ToFx } from "./fx-primitive.js"
11
- import { run } from "./run.js"
8
+ import type { Sink } from "../Sink.js"
9
+ import * as Subject from "../Subject.js"
10
+ import { withScopedFork } from "./helpers.js"
11
+ import { FxBase } from "./protos.js"
12
12
 
13
13
  export function share<R, E, A, R2>(
14
14
  fx: Fx<R, E, A>,
15
- subject: Subject<R2, E, A>
16
- ): Fx<R | R2, E, A> {
15
+ subject: Subject.Subject<R2, E, A>
16
+ ): Fx<R | R2 | Scope.Scope, E, A> {
17
17
  return new Share(fx, subject)
18
18
  }
19
19
 
@@ -29,32 +29,34 @@ class RefCounter {
29
29
  }
30
30
  }
31
31
 
32
- export class Share<R, E, A, R2> extends ToFx<R | R2, E, A> {
32
+ export class Share<R, E, A, R2> extends FxBase<R | R2 | Scope.Scope, E, A> {
33
33
  _FxFiber: MutableRef.MutableRef<Option.Option<Fiber.Fiber<never, unknown>>> = MutableRef.make(Option.none())
34
34
  _RefCount = new RefCounter()
35
35
 
36
36
  constructor(
37
37
  readonly i0: Fx<R, E, A>,
38
- readonly i1: Subject<R2, E, A>
38
+ readonly i1: Subject.Subject<R2, E, A>
39
39
  ) {
40
- super(i0, i1)
40
+ super()
41
41
  }
42
42
 
43
- toFx(): Fx<R | R2, E, A> {
44
- return withScopedFork(({ fork, sink }) =>
45
- Effect.flatMap(
46
- fork(
47
- Effect.onExit(run(this.i1, sink), () => this._RefCount.decrement() === 0 ? this.interrupt() : Effect.unit)
43
+ run<R3>(sink: Sink<R3, E, A>): Effect.Effect<R | R2 | R3 | Scope.Scope, never, unknown> {
44
+ return withScopedFork(
45
+ (fork) =>
46
+ Effect.flatMap(
47
+ fork(
48
+ Effect.onExit(this.i1.run(sink), () => this._RefCount.decrement() === 0 ? this.interrupt() : Effect.unit)
49
+ ),
50
+ () => this.initialize()
48
51
  ),
49
- () => this.initialize()
50
- )
52
+ ExecutionStrategy.sequential
51
53
  )
52
54
  }
53
55
 
54
56
  private initialize(): Effect.Effect<R | R2, never, unknown> {
55
57
  return Effect.suspend(() => {
56
58
  if (this._RefCount.increment() === 1) {
57
- return run(this.i0, this.i1).pipe(
59
+ return this.i0.run(this.i1).pipe(
58
60
  Effect.onExit(() => Effect.sync(() => MutableRef.set(this._FxFiber, Option.none()))),
59
61
  Effect.interruptible,
60
62
  Effect.forkDaemon,
@@ -84,14 +86,14 @@ export class Share<R, E, A, R2> extends ToFx<R | R2, E, A> {
84
86
 
85
87
  export function multicast<R, E, A>(
86
88
  fx: Fx<R, E, A>
87
- ): Fx<R, E, A> {
88
- return new Share(fx, makeSubject<E, A>())
89
+ ): Fx<R | Scope.Scope, E, A> {
90
+ return new Share(fx, Subject.unsafeMake<E, A>(0))
89
91
  }
90
92
 
91
93
  export function hold<R, E, A>(
92
94
  fx: Fx<R, E, A>
93
- ): Fx<R, E, A> {
94
- return new Share(fx, makeHoldSubject<E, A>())
95
+ ): Fx<R | Scope.Scope, E, A> {
96
+ return new Share(fx, Subject.unsafeMake<E, A>(1))
95
97
  }
96
98
 
97
99
  export const replay: {
@@ -100,6 +102,6 @@ export const replay: {
100
102
  } = dual(2, function replay<R, E, A>(
101
103
  fx: Fx<R, E, A>,
102
104
  capacity: number
103
- ): Fx<R, E, A> {
104
- return new Share(fx, makeReplaySubject<E, A>(capacity))
105
+ ): Fx<R | Scope.Scope, E, A> {
106
+ return new Share(fx, Subject.unsafeMake<E, A>(capacity))
105
107
  })
@@ -1,6 +1,10 @@
1
+ import * as ReadonlyArray from "effect/ReadonlyArray"
2
+
1
3
  import * as Effect from "effect/Effect"
4
+ import { flow } from "effect/Function"
2
5
  import * as Option from "effect/Option"
3
- import { WithContext } from "../Sink.js"
6
+ import * as Sink from "../Sink.js"
7
+ import * as SyncProducer from "./sync-producer.js"
4
8
 
5
9
  // Sync operators are a subset of operators which can be safely fused together synchronously
6
10
 
@@ -41,13 +45,13 @@ type SyncOperatorFusionMap = {
41
45
 
42
46
  const SyncOperatorFusionMap: SyncOperatorFusionMap = {
43
47
  Map: {
44
- Map: (op1, op2) => Map((a: any) => op2.f(op1.f(a))),
48
+ Map: (op1, op2) => Map(flow(op1.f, op2.f)),
45
49
  Filter: (op1, op2) =>
46
50
  FilterMap((a: any) => {
47
51
  const b = op1.f(a)
48
52
  return op2.f(b) ? Option.some(b) : Option.none()
49
53
  }),
50
- FilterMap: (op1, op2) => FilterMap((a: any) => op2.f(op1.f(a)))
54
+ FilterMap: (op1, op2) => FilterMap(flow(op1.f, op2.f))
51
55
  },
52
56
  Filter: {
53
57
  Map: (op1, op2) => FilterMap((a: any) => op1.f(a) ? Option.some(op2.f(a)) : Option.none()),
@@ -71,41 +75,29 @@ export function matchSyncOperator<A>(operator: SyncOperator, matchers: {
71
75
  readonly Filter: (f: Filter<any>) => A
72
76
  readonly FilterMap: (f: FilterMap<any, any>) => A
73
77
  }): A {
74
- switch (operator._tag) {
75
- case "Map":
76
- return matchers.Map(operator)
77
- case "Filter":
78
- return matchers.Filter(operator)
79
- case "FilterMap":
80
- return matchers.FilterMap(operator)
81
- }
78
+ return matchers[operator._tag](operator as any)
82
79
  }
83
80
 
84
81
  export function compileSyncOperatorSink<R>(
85
82
  operator: SyncOperator,
86
- sink: WithContext<R, any, any>
87
- ): WithContext<R, any, any> {
83
+ sink: Sink.Sink<R, any, any>
84
+ ): Sink.Sink<R, any, any> {
88
85
  return matchSyncOperator(operator, {
89
- Map: (op) => WithContext(sink.onFailure, (a) => sink.onSuccess(op.f(a))),
90
- Filter: (op) => WithContext(sink.onFailure, (a) => op.f(a) ? sink.onSuccess(a) : Effect.unit),
91
- FilterMap: (op) =>
92
- WithContext(sink.onFailure, (a) =>
93
- Option.match(op.f(a), {
94
- onNone: () => Effect.unit,
95
- onSome: sink.onSuccess
96
- }))
86
+ Map: (op) => Sink.map(sink, op.f),
87
+ Filter: (op) => Sink.filter(sink, op.f),
88
+ FilterMap: (op) => Sink.filterMap(sink, op.f)
97
89
  })
98
90
  }
99
91
 
100
- export function compileSyncOperatorFailureSink<R>(
92
+ export function compileCauseSyncOperatorSink<R>(
101
93
  operator: SyncOperator,
102
- sink: WithContext<R, any, any>
103
- ): WithContext<R, any, any> {
94
+ sink: Sink.Sink<R, any, any>
95
+ ): Sink.Sink<R, any, any> {
104
96
  return matchSyncOperator(operator, {
105
- Map: (op) => WithContext((a) => sink.onFailure(op.f(a)), sink.onSuccess),
106
- Filter: (op) => WithContext((a) => op.f(a) ? sink.onFailure(a) : Effect.unit, sink.onSuccess),
97
+ Map: (op) => Sink.make((a) => sink.onFailure(op.f(a)), sink.onSuccess),
98
+ Filter: (op) => Sink.make((a) => op.f(a) ? sink.onFailure(a) : Effect.unit, sink.onSuccess),
107
99
  FilterMap: (op) =>
108
- WithContext((a) =>
100
+ Sink.make((a) =>
109
101
  Option.match(op.f(a), {
110
102
  onNone: () => Effect.unit,
111
103
  onSome: sink.onFailure
@@ -123,3 +115,52 @@ export function compileSyncReducer<A, B, C>(
123
115
  FilterMap: (op) => (b, i) => Option.map(op.f(i), (a) => f(b, a))
124
116
  })
125
117
  }
118
+
119
+ export function applyArray<A, B>(array: ReadonlyArray<A>, operator: SyncOperator): ReadonlyArray<B> {
120
+ return matchSyncOperator(operator, {
121
+ Map: (op) => ReadonlyArray.map(array, op.f),
122
+ Filter: (op) => ReadonlyArray.filter(array, op.f),
123
+ FilterMap: (op) => ReadonlyArray.filterMap(array, op.f)
124
+ })
125
+ }
126
+
127
+ export function applyArrayReducer<A, B>(
128
+ array: Iterable<any>,
129
+ operator: SyncOperator,
130
+ seed: B,
131
+ f: (acc: B, a: A) => B
132
+ ): B {
133
+ return matchSyncOperator(operator, {
134
+ Map: (op) => ReadonlyArray.reduce(array, seed, (b, a) => f(b, op.f(a))),
135
+ Filter: (op) => ReadonlyArray.reduce(array, seed, (b, a) => op.f(a) ? f(b, a) : b),
136
+ FilterMap: (op) =>
137
+ ReadonlyArray.reduce(array, seed, (b, a) => {
138
+ const o = op.f(a)
139
+ if (Option.isSome(o)) return f(b, o.value)
140
+ else return b
141
+ })
142
+ })
143
+ }
144
+
145
+ export function runSyncReduce<A, B>(
146
+ producer: SyncProducer.SyncProducer<A>,
147
+ op: SyncOperator,
148
+ seed: B,
149
+ f: (acc: B, a: any) => B
150
+ ): B {
151
+ return SyncProducer.matchSyncProducer(producer, {
152
+ Success: (a) =>
153
+ matchSyncOperator(op, {
154
+ Map: (op) => f(seed, op.f(a)),
155
+ Filter: (op) => op.f(a) ? f(seed, a) : seed,
156
+ FilterMap: (op) =>
157
+ Option.match(op.f(a), {
158
+ onNone: () => seed,
159
+ onSome: (a) => f(seed, a)
160
+ })
161
+ }),
162
+ FromSync: (g) => f(seed, g()),
163
+ FromArray: (array) => applyArrayReducer(array, op, seed, f),
164
+ FromIterable: (iterable) => applyArrayReducer(iterable, op, seed, f)
165
+ })
166
+ }
@@ -0,0 +1,146 @@
1
+ import { Effect, Option, ReadonlyArray } from "effect"
2
+ import type { Sink } from "../Sink.js"
3
+
4
+ const DISCARD = { discard: true } as const
5
+
6
+ export type SyncProducer<A> = Success<A> | FromSync<A> | FromArray<A> | FromIterable<A>
7
+
8
+ export interface Success<A> {
9
+ readonly _tag: "Success"
10
+ readonly source: A
11
+ }
12
+
13
+ export const Success = <A>(value: A): Success<A> => ({ _tag: "Success", source: value })
14
+
15
+ export interface FromSync<A> {
16
+ readonly _tag: "FromSync"
17
+ readonly source: () => A
18
+ }
19
+
20
+ export const FromSync = <A>(f: () => A): FromSync<A> => ({ _tag: "FromSync", source: f })
21
+
22
+ export interface FromArray<A> {
23
+ readonly _tag: "FromArray"
24
+ readonly source: ReadonlyArray<A>
25
+ }
26
+
27
+ export const FromArray = <A>(array: ReadonlyArray<A>): FromArray<A> => ({ _tag: "FromArray", source: array })
28
+
29
+ export interface FromIterable<A> {
30
+ readonly _tag: "FromIterable"
31
+ readonly source: Iterable<A>
32
+ }
33
+
34
+ export const FromIterable = <A>(iterable: Iterable<A>): FromIterable<A> => ({ _tag: "FromIterable", source: iterable })
35
+
36
+ export const matchSyncProducer = <A, R>(
37
+ producer: SyncProducer<A>,
38
+ matchers: {
39
+ readonly Success: (a: A) => R
40
+ readonly FromSync: (a: () => A) => R
41
+ readonly FromArray: (a: ReadonlyArray<A>) => R
42
+ readonly FromIterable: (a: Iterable<A>) => R
43
+ }
44
+ ): R => {
45
+ return matchers[producer._tag](producer.source as any)
46
+ }
47
+
48
+ export function runSink<A, R, E>(
49
+ producer: SyncProducer<A>,
50
+ sink: Sink<R, E, A>
51
+ ): Effect.Effect<R, never, unknown> {
52
+ return matchSyncProducer(producer, {
53
+ Success: (a) => sink.onSuccess(a),
54
+ FromSync: (a) => Effect.suspend(() => sink.onSuccess(a())),
55
+ FromArray: (a) => arrayToSink(a, sink),
56
+ FromIterable: (a) => iterableToSink(a, sink)
57
+ })
58
+ }
59
+
60
+ export function runReduce<A, B>(
61
+ producer: SyncProducer<A>,
62
+ initial: B,
63
+ f: (b: B, a: any) => B
64
+ ): Effect.Effect<never, never, B> {
65
+ return matchSyncProducer(producer, {
66
+ Success: (a) => syncOnce(() => f(initial, a)),
67
+ FromSync: (a) => syncOnce(() => f(initial, a())),
68
+ FromArray: (a) => syncOnce(() => ReadonlyArray.reduce(a, initial, f)),
69
+ FromIterable: (a) => syncOnce(() => ReadonlyArray.reduce(a, initial, f))
70
+ })
71
+ }
72
+
73
+ export function runReduceEffect<A, R2, E2, B>(
74
+ producer: SyncProducer<A>,
75
+ initial: B,
76
+ f: (b: B, a: any) => Effect.Effect<R2, E2, B>
77
+ ): Effect.Effect<R2, E2, B> {
78
+ return matchSyncProducer(producer, {
79
+ Success: (a) => effectOnce(() => f(initial, a)),
80
+ FromSync: (a) => Effect.suspend(() => f(initial, a())),
81
+ FromArray: (a) => Effect.reduce(a, initial, f),
82
+ FromIterable: (a) => Effect.reduce(a, initial, f)
83
+ })
84
+ }
85
+
86
+ function arrayToSink<A, R2>(array: ReadonlyArray<A>, sink: Sink<R2, never, A>): Effect.Effect<R2, never, unknown> {
87
+ if (array.length === 0) return Effect.unit
88
+ else if (array.length === 1) return sink.onSuccess(array[0])
89
+ else {
90
+ const [first, ...rest] = array
91
+ let effect = sink.onSuccess(first)
92
+ for (const item of rest) {
93
+ effect = Effect.zipRight(effect, sink.onSuccess(item))
94
+ }
95
+ return effect
96
+ }
97
+ }
98
+
99
+ function iterableToSink<A, R2>(array: Iterable<A>, sink: Sink<R2, never, A>): Effect.Effect<R2, never, unknown> {
100
+ let effect: Effect.Effect<R2, never, any> = Effect.unit
101
+
102
+ for (const item of array) {
103
+ effect = Effect.zipRight(effect, sink.onSuccess(item))
104
+ }
105
+
106
+ return effect
107
+ }
108
+
109
+ export const syncOnce = <A>(f: () => A): Effect.Effect<never, never, A> => {
110
+ let memoized: Option.Option<A> = Option.none()
111
+ const get = () => {
112
+ if (Option.isSome(memoized)) {
113
+ return memoized.value
114
+ } else {
115
+ const a = f()
116
+ memoized = Option.some(a)
117
+ return a
118
+ }
119
+ }
120
+
121
+ return Effect.sync(get)
122
+ }
123
+
124
+ export const effectOnce = <R, E, A>(f: () => Effect.Effect<R, E, A>): Effect.Effect<R, E, A> => {
125
+ let memoized: Option.Option<A> = Option.none()
126
+
127
+ return Effect.suspend(() => {
128
+ if (Option.isSome(memoized)) {
129
+ return Effect.succeed(memoized.value)
130
+ } else {
131
+ return Effect.tap(f(), (a) => Effect.sync(() => memoized = Option.some(a)))
132
+ }
133
+ })
134
+ }
135
+
136
+ export function runEffect<A, R2, E2, B>(
137
+ producer: SyncProducer<A>,
138
+ f: (a: A) => Effect.Effect<R2, E2, B>
139
+ ): Effect.Effect<R2, E2, void> {
140
+ return matchSyncProducer(producer, {
141
+ Success: (a): Effect.Effect<R2, E2, void> => f(a),
142
+ FromSync: (a) => Effect.suspend(() => f(a())),
143
+ FromArray: (a) => Effect.forEach(a, f, DISCARD),
144
+ FromIterable: (a) => Effect.forEach(a, f, DISCARD)
145
+ })
146
+ }
@@ -1,92 +1,82 @@
1
1
  import * as Effect from "effect/Effect"
2
- import { equals } from "effect/Equal"
3
- import * as Fiber from "effect/Fiber"
2
+ import * as ExecutionStrategy from "effect/ExecutionStrategy"
4
3
  import * as Option from "effect/Option"
5
- import * as Scope from "effect/Scope"
6
- import type { Fx, FxInput } from "../Fx.js"
4
+ import type * as Scope from "effect/Scope"
5
+
6
+ import type { Fx, WithKeyOptions } from "../Fx.js"
7
7
  import * as RefSubject from "../RefSubject.js"
8
8
  import * as Sink from "../Sink.js"
9
- import * as core from "./core.js"
10
- import { adjustTime } from "./helpers.js"
11
- import { run } from "./run.js"
9
+ import { withSwitchFork } from "./helpers.js"
10
+ import { FxBase } from "./protos.js"
12
11
 
13
- export function withKey<R, E, A, B, R2, E2, C>(
12
+ export function withKey<R, E, A, B extends PropertyKey, R2, E2, C>(
14
13
  fx: Fx<R, E, A>,
15
- getKey: (a: A) => B,
16
- onValue: (ref: RefSubject.RefSubject<never, never, A>, key: B) => FxInput<R2, E2, C>
17
- ): Fx<R | R2, E | E2, C> {
18
- return core.withScopedFork(({ fork, scope, sink }) =>
19
- Effect.gen(function*(_) {
20
- let current: Option.Option<
21
- [B, { value: A }, RefSubject.RefSubject<never, never, A>, Fiber.Fiber<never, unknown>]
22
- > = Option.none()
14
+ options: WithKeyOptions<A, B, R2, E2, C>
15
+ ): Fx<R | R2 | Scope.Scope, E | E2, C> {
16
+ return new WithKey(fx, options)
17
+ }
18
+
19
+ class WithKey<R, E, A, B extends PropertyKey, R2, E2, C> extends FxBase<R | R2 | Scope.Scope, E | E2, C> {
20
+ constructor(readonly fx: Fx<R, E, A>, readonly options: WithKeyOptions<A, B, R2, E2, C>) {
21
+ super()
22
+ }
23
23
 
24
- const lock = (yield* _(Effect.makeSemaphore(1))).withPermits(1)
24
+ run<R3>(sink: Sink.Sink<R3, E | E2, C>) {
25
+ return runWithKey(this.fx, this.options, sink)
26
+ }
27
+ }
25
28
 
26
- const make = (a: A) =>
27
- Effect.uninterruptibleMask((restore) =>
28
- Effect.gen(function*(_) {
29
- const key = getKey(a)
30
- // We use a simple mutable object to track the current value
31
- // of the state coming from the "outside", such that any internal
32
- // usage of RefSubject.delete will reset to the latest value emitted
33
- // from here.
34
- const currentValue = { value: a }
35
- const ref = yield* _(
36
- RefSubject.fromEffect(Effect.sync(() => currentValue.value)),
37
- Effect.provideService(Scope.Scope, scope)
38
- )
39
- const fiber = yield* _(
40
- run(core.from(onValue(ref, key)), sink),
41
- restore,
42
- fork
43
- )
29
+ function runWithKey<R, E, A, B extends PropertyKey, R2, E2, C, R3>(
30
+ fx: Fx<R, E, A>,
31
+ options: WithKeyOptions<A, B, R2, E2, C>,
32
+ sink: Sink.Sink<R3, E | E2, C>
33
+ ) {
34
+ return withSwitchFork((fork) => {
35
+ let previous: Option.Option<WithKeyState<A, B>> = Option.none()
44
36
 
45
- // Save our state
46
- current = Option.some([key, currentValue, ref, fiber])
37
+ const run = fx.run(Sink.make(
38
+ (cause) => sink.onFailure(cause),
39
+ (value) =>
40
+ Effect.gen(function*(_) {
41
+ const key = options.getKey(value)
47
42
 
48
- // Allow our Fibers to start
49
- yield* _(adjustTime(1))
50
- })
51
- )
43
+ // We don't need to do anything if the key is the same as the previous one
44
+ if (Option.isSome(previous)) {
45
+ const prev = previous.value
52
46
 
53
- yield* _(run(
54
- fx,
55
- Sink.WithContext(
56
- sink.onFailure,
57
- (a) =>
58
- lock(Effect.gen(function*(_) {
59
- if (Option.isNone(current)) {
60
- yield _(make(a))
61
- } else {
62
- const [key, currentValue, ref, fiber] = current.value
47
+ // If the key is the same, we just need to update the value
48
+ if (prev.key === key) {
49
+ prev.value = value
50
+ yield* _(RefSubject.set(prev.ref, value))
51
+ return
52
+ } else {
53
+ // Otherwise, we need to remove the previous value
54
+ yield* _(prev.ref.interrupt)
55
+ }
56
+ }
63
57
 
64
- if (equals(key, getKey(a))) {
65
- // Key didn't change, so we just set an updated value.
58
+ const ref = yield* _(RefSubject.fromEffect(Effect.sync(() => state.value)))
66
59
 
67
- currentValue.value = a
68
- yield* _(ref.set(a))
69
- } else {
70
- // Cleanup previous resources
71
- yield* _(Fiber.interrupt(fiber))
60
+ // Create a new state
61
+ const state: WithKeyState<A, B> = {
62
+ value,
63
+ key,
64
+ ref
65
+ }
72
66
 
73
- // Create a new RefSubject
74
- yield* _(make(a))
75
- }
76
- }
77
- }))
78
- )
79
- ))
67
+ previous = Option.some(state)
80
68
 
81
- if (Option.isSome(current)) {
82
- const [, , ref, fiber] = current.value
69
+ // Create a new listener
70
+ yield* _(fork(options.onValue(state.ref, state.key).run(sink)))
71
+ })
72
+ ))
83
73
 
84
- // Signal there will be no more input events
85
- yield* _(fork(ref.interrupt))
74
+ return Effect.flatMap(run, () => Option.isSome(previous) ? previous.value.ref.interrupt : Effect.unit)
75
+ }, ExecutionStrategy.sequential)
76
+ }
86
77
 
87
- // Wait for the last Fiber to complete
88
- yield* _(Effect.fromFiber(fiber))
89
- }
90
- })
91
- )
78
+ type WithKeyState<A, B> = {
79
+ value: A
80
+ key: B
81
+ ref: RefSubject.RefSubject<never, never, A>
92
82
  }
@@ -1,6 +0,0 @@
1
- {
2
- "main": "../dist/cjs/Computed.js",
3
- "module": "../dist/esm/Computed.js",
4
- "types": "../dist/dts/Computed.d.ts",
5
- "sideEffects": []
6
- }
@@ -1,6 +0,0 @@
1
- {
2
- "main": "../dist/cjs/Filtered.js",
3
- "module": "../dist/esm/Filtered.js",
4
- "types": "../dist/dts/Filtered.d.ts",
5
- "sideEffects": []
6
- }
@@ -1,6 +0,0 @@
1
- {
2
- "main": "../dist/cjs/Model.js",
3
- "module": "../dist/esm/Model.js",
4
- "types": "../dist/dts/Model.d.ts",
5
- "sideEffects": []
6
- }
@@ -1,6 +0,0 @@
1
- {
2
- "main": "../dist/cjs/RefAsyncData.js",
3
- "module": "../dist/esm/RefAsyncData.js",
4
- "types": "../dist/dts/RefAsyncData.d.ts",
5
- "sideEffects": []
6
- }
@@ -1,6 +0,0 @@
1
- {
2
- "main": "../dist/cjs/RefAsyncDataArray.js",
3
- "module": "../dist/esm/RefAsyncDataArray.js",
4
- "types": "../dist/dts/RefAsyncDataArray.d.ts",
5
- "sideEffects": []
6
- }
@@ -1,6 +0,0 @@
1
- {
2
- "main": "../dist/cjs/RefBoolean.js",
3
- "module": "../dist/esm/RefBoolean.js",
4
- "types": "../dist/dts/RefBoolean.d.ts",
5
- "sideEffects": []
6
- }
@@ -1,6 +0,0 @@
1
- {
2
- "main": "../dist/cjs/RefNumber.js",
3
- "module": "../dist/esm/RefNumber.js",
4
- "types": "../dist/dts/RefNumber.d.ts",
5
- "sideEffects": []
6
- }