@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,282 +1,491 @@
1
1
  /**
2
- * A RefSubject is the core abstraction for keeping state and subscribing to its
3
- * changes over time.
4
- *
5
- * @since 1.18.0
2
+ * A RefSubject is a Subject that can be used to read and write a value.
3
+ * @since 1.20.0
6
4
  */
7
- import type { Schema } from "@effect/schema";
8
5
  import * as C from "@typed/context";
9
- import type { Stream, SubscriptionRef } from "effect";
10
- import { Cause } from "effect";
6
+ import type { Equivalence, FiberId, Runtime } from "effect";
7
+ import * as Cause from "effect/Cause";
11
8
  import * as Effect from "effect/Effect";
12
- import type { Equivalence } from "effect/Equivalence";
13
- import type * as Layer from "effect/Layer";
9
+ import * as ExecutionStrategy from "effect/ExecutionStrategy";
10
+ import * as Layer from "effect/Layer";
14
11
  import * as Option from "effect/Option";
15
- import type * as Scope from "effect/Scope";
16
- import { Computed } from "./Computed.js";
17
- import { Filtered } from "./Filtered.js";
18
- import type * as Fx from "./Fx.js";
19
- import type * as Subject from "./Subject.js";
20
- import { RefSubjectTypeId } from "./TypeId.js";
21
- /**
22
- * A RefSubject is a Subject that has a current value that can be read and updated.
23
- * @since 1.18.0
24
- * @category models
12
+ import * as Scope from "effect/Scope";
13
+ import type { Fx } from "./Fx.js";
14
+ import type { UnionToTuple } from "./internal/UnionToTuple.js";
15
+ import * as Subject from "./Subject.js";
16
+ import { ComputedTypeId, FilteredTypeId, RefSubjectTypeId } from "./TypeId.js";
17
+ import * as Versioned from "./Versioned.js";
18
+ /**
19
+ * A Computed is essentially a readonly RefSubject.
20
+ * @since 1.20.0
25
21
  */
26
- export interface RefSubject<R, in out E, in out A> extends Computed<R, E, A>, Subject.Subject<R, E, A> {
27
- readonly [RefSubjectTypeId]: RefSubjectTypeId;
28
- /**
29
- * Get the current value of this RefSubject. If the RefSubject has not been initialized
30
- * then the initial value will be computed and returned. Concurrent calls to `get` will
31
- * only compute the initial value once.
32
- * @since 1.18.0
33
- */
34
- readonly get: Effect.Effect<R, E, A>;
35
- /**
36
- * Set the current value of this RefSubject.
37
- * @since 1.18.0
38
- */
39
- readonly set: (a: A) => Effect.Effect<R, never, A>;
40
- /**
41
- * Modify the current value of this RefSubject using the provided function.
42
- * @since 1.18.0
43
- */
44
- readonly update: (f: (a: A) => A) => Effect.Effect<R, E, A>;
45
- /**
46
- * Modify the current value of this RefSubject and compute a new value.
47
- * @since 1.18.0
48
- */
49
- readonly modify: <B>(f: (a: A) => readonly [B, A]) => Effect.Effect<R, E, B>;
50
- /**
51
- * Delete the current value of this RefSubject. If it was not initialized the Option.none will be returned.
52
- * Otherwise the current value will be returned as an Option.some and the RefSubject will be uninitialized.
53
- * If there are existing subscribers to this RefSubject then the RefSubject will be re-initialized.
54
- * @since 1.18.0
55
- */
56
- readonly delete: Effect.Effect<R, never, Option.Option<A>>;
22
+ export interface Computed<out R, out E, out A> extends Versioned.Versioned<R, E, R | Scope.Scope, E, A, R, E, A> {
23
+ readonly [ComputedTypeId]: ComputedTypeId;
24
+ }
25
+ /**
26
+ * @since 1.20.0
27
+ */
28
+ export declare namespace Computed {
57
29
  /**
58
- * Modify the current value of this RefSubject and compute a new value using the provided effectful function.
59
- * @since 1.18.0
30
+ * @since 1.20.0
60
31
  */
61
- readonly modifyEffect: <R2, E2, B>(f: (a: A) => Effect.Effect<R2, E2, readonly [B, A]>) => Effect.Effect<R | R2, E | E2, B>;
32
+ type Any = Computed<any, any, any> | Computed<never, any, any> | Computed<any, never, any> | Computed<never, never, any>;
33
+ }
34
+ /**
35
+ * A Filtered is essentially a readonly RefSubject that may have its values filtered out.
36
+ * @since 1.20.0
37
+ */
38
+ export interface Filtered<out R, out E, out A> extends Versioned.Versioned<R, E, R | Scope.Scope, E, A, R, E | Cause.NoSuchElementException, A> {
39
+ readonly [FilteredTypeId]: FilteredTypeId;
62
40
  /**
63
- * Modify the current value of this RefSubject using the provided effectful function.
64
- * @since 1.18.0
41
+ * @since 1.20.0
65
42
  */
66
- readonly updateEffect: <R2, E2>(f: (a: A) => Effect.Effect<R2, E2, A>) => Effect.Effect<R | R2, E | E2, A>;
43
+ asComputed(): Computed<R, E, Option.Option<A>>;
44
+ }
45
+ /**
46
+ * @since 1.20.0
47
+ */
48
+ export declare namespace Filtered {
67
49
  /**
68
- * Modify the current value of this RefSubject and compute a new value using the provided effectful function.
69
- * The key difference is it will allow running a workflow and setting the value multiple times. Optionally,
70
- * another function can be provided to change the value
71
- * @since 1.18.0
50
+ * @since 1.20.0
72
51
  */
73
- readonly runUpdate: <R2, E2, B, R3 = never, E3 = never>(updates: (get: RefSubject<R, E, A>["get"], set: RefSubject<R, E, A>["set"]) => Effect.Effect<R2, E2, B>, onInterrupt?: (a: A) => Effect.Effect<R3, E3, A>) => Effect.Effect<R | R2 | R3, E | E2 | E3, B>;
52
+ type Any = Filtered<any, any, any> | Filtered<never, any, any> | Filtered<any, never, any> | Filtered<never, never, any>;
53
+ }
54
+ /**
55
+ * A RefSubject is a Subject that can be used to read and write a value.
56
+ * @since 1.20.0
57
+ */
58
+ export interface RefSubject<out R, in out E, in out A> extends Computed<R, E, A>, Subject.Subject<R, E, A> {
59
+ readonly [RefSubjectTypeId]: RefSubjectTypeId;
74
60
  /**
75
- * Interrupt the current Fibers.
61
+ * @since 1.20.0
76
62
  */
77
- readonly interrupt: Effect.Effect<R, never, void>;
63
+ readonly runUpdates: <R2, E2, B>(f: (ref: GetSetDelete<R, E, A>) => Effect.Effect<R2, E2, B>) => Effect.Effect<R | R2, E2, B>;
78
64
  }
79
65
  /**
80
- * @since 1.18.0
66
+ * @since 1.20.0
81
67
  */
82
68
  export declare namespace RefSubject {
83
69
  /**
84
- * @since 1.18.0
70
+ * @since 1.20.0
85
71
  */
86
72
  type Any = RefSubject<any, any, any> | RefSubject<never, any, any> | RefSubject<any, never, any> | RefSubject<never, never, any>;
87
73
  /**
88
- * A Contextual wrapper around a RefSubject
89
- * @since 1.18.0
90
- * @category models
74
+ * @since 1.20.0
91
75
  */
92
76
  interface Tagged<I, E, A> extends RefSubject<I, E, A> {
93
- readonly tag: C.Tagged<I, RefSubject<never, E, A>>;
94
- /**
95
- * Make a layer initializing a RefSubject
96
- * @since 1.18.0
97
- */
98
- readonly make: <R = never>(fx: Exclude<Fx.FxInput<R, E, A>, Iterable<A>>, eq?: Equivalence<A>) => Layer.Layer<R, never, I>;
99
77
  /**
100
- * Make a layer initializing a RefSubject
101
- * @since 1.18.0
78
+ * @since 1.20.0
102
79
  */
103
- readonly of: (value: A, eq?: Equivalence<A>) => Layer.Layer<never, never, I>;
104
- /**
105
- * Provide an implementation of this RefSubject
106
- * @since 1.18.0
107
- */
108
- readonly provide: <R2>(fx: Fx.FxInput<R2, E, A>, eq?: Equivalence<A>) => <R3, E3, C>(effect: Effect.Effect<R3, E3, C>) => Effect.Effect<R2 | Exclude<R3, I> | Scope.Scope, E | E3, C>;
80
+ readonly tag: C.Tagged<I, RefSubject<never, E, A>>;
109
81
  /**
110
- * Provide an implementation of this RefSubject
111
- * @since 1.18.0
82
+ * @since 1.20.0
112
83
  */
113
- readonly provideFx: <R2>(fx: Fx.FxInput<R2, E, A>, eq?: Equivalence<A>) => <R3, E3, C>(effect: Fx.Fx<R3, E3, C>) => Fx.Fx<R2 | Exclude<R3, I> | Scope.Scope, E | E3, C>;
84
+ readonly make: <R>(fxOrEffect: Fx<R, E, A> | Effect.Effect<R, E, A>) => Layer.Layer<R, never, I>;
114
85
  }
115
86
  /**
116
87
  * A Contextual wrapper around a RefSubject
117
88
  * @since 1.18.0
118
89
  * @category models
119
90
  */
120
- interface Derived<R0, R, E, A> extends RefSubject<R, E, A> {
121
- readonly persist: Effect.Effect<R0, never, void>;
91
+ interface Derived<R, E, A> extends RefSubject<R, E, A> {
92
+ readonly persist: Effect.Effect<R, never, void>;
122
93
  }
94
+ }
95
+ /**
96
+ * @since 1.20.0
97
+ */
98
+ export type Context<T> = Fx.Context<T>;
99
+ /**
100
+ * @since 1.20.0
101
+ */
102
+ export type Error<T> = Fx.Error<T>;
103
+ /**
104
+ * @since 1.20.0
105
+ */
106
+ export type Success<T> = Fx.Success<T>;
107
+ /**
108
+ * @since 1.20.0
109
+ */
110
+ export interface RefSubjectOptions<A> {
111
+ readonly eq?: Equivalence.Equivalence<A>;
112
+ readonly replay?: number;
113
+ readonly executionStrategy?: ExecutionStrategy.ExecutionStrategy;
114
+ }
115
+ /**
116
+ * @since 1.20.0
117
+ */
118
+ export declare function fromEffect<R, E, A>(effect: Effect.Effect<R, E, A>, options?: RefSubjectOptions<A>): Effect.Effect<R | Scope.Scope, never, RefSubject<never, E, A>>;
119
+ /**
120
+ * @since 1.20.0
121
+ */
122
+ export declare function fromFx<R, E, A>(fx: Fx<R, E, A>, options?: RefSubjectOptions<A>): Effect.Effect<R | Scope.Scope, never, RefSubject<never, E, A>>;
123
+ /**
124
+ * @since 1.20.0
125
+ */
126
+ export declare function fromRefSubject<R, E, A>(ref: RefSubject<R, E, A>, options?: RefSubjectOptions<A>): Effect.Effect<R | Scope.Scope, never, RefSubject.Derived<never, E, A>>;
127
+ /**
128
+ * @since 1.20.0
129
+ */
130
+ export declare const make: {
131
+ <R, E, A>(ref: RefSubject<R, E, A>, options?: RefSubjectOptions<A>): Effect.Effect<R | Scope.Scope, never, RefSubject.Derived<never, E, A>>;
132
+ <R, E, A>(fxOrEffect: Fx<R, E, A> | Effect.Effect<R, E, A>, options?: RefSubjectOptions<A>): Effect.Effect<R | Scope.Scope, never, RefSubject<never, E, A>>;
133
+ <R, E, A>(fxOrEffect: Fx<R, E, A> | Effect.Effect<R, E, A> | RefSubject<R, E, A>, options?: RefSubjectOptions<A>): Effect.Effect<R | Scope.Scope, never, RefSubject<never, E, A> | RefSubject.Derived<never, E, A>>;
134
+ };
135
+ /**
136
+ * @since 1.20.0
137
+ */
138
+ export declare function of<A, E = never>(a: A, options?: RefSubjectOptions<A>): Effect.Effect<Scope.Scope, never, RefSubject<never, E, A>>;
139
+ /**
140
+ * @since 1.20.0
141
+ */
142
+ export declare function unsafeMake<E, A>(params: {
143
+ readonly id: FiberId.FiberId;
144
+ readonly initial: Effect.Effect<never, E, A>;
145
+ readonly options?: RefSubjectOptions<A> | undefined;
146
+ readonly scope: Scope.CloseableScope;
147
+ readonly initialValue?: A;
148
+ }): Effect.Effect<never, never, RefSubject<never, E, A>>;
149
+ /**
150
+ * @since 1.20.0
151
+ */
152
+ export declare const set: {
153
+ <A>(value: A): <R, E>(ref: RefSubject<R, E, A>) => Effect.Effect<R, E, A>;
154
+ <R, E, A>(ref: RefSubject<R, E, A>, a: A): Effect.Effect<R, E, A>;
155
+ };
156
+ /**
157
+ * @since 1.20.0
158
+ */
159
+ export declare function reset<R, E, A>(ref: RefSubject<R, E, A>): Effect.Effect<R, E, Option.Option<A>>;
160
+ /**
161
+ * @since 1.20.0
162
+ */
163
+ export {
164
+ /**
165
+ * @since 1.20.0
166
+ */
167
+ reset as delete };
168
+ /**
169
+ * @since 1.20.0
170
+ */
171
+ export interface GetSetDelete<R, E, A> {
123
172
  /**
124
- * Extract the Identifier from a RefSubject
125
- * @since 1.18.0
173
+ * @since 1.20.0
126
174
  */
127
- type Context<T> = T extends RefSubject<infer I, infer _, infer __> ? I : never;
175
+ readonly get: Effect.Effect<R, E, A>;
128
176
  /**
129
- * Extract the Error from a RefSubject
130
- * @since 1.18.0
177
+ * @since 1.20.0
131
178
  */
132
- type Error<T> = T extends RefSubject<infer _, infer E, infer __> ? E : never;
179
+ readonly set: (a: A) => Effect.Effect<R, never, A>;
133
180
  /**
134
- * Extract the State from a RefSubject
135
- * @since 1.18.0
181
+ * @since 1.20.0
136
182
  */
137
- type Success<T> = T extends RefSubject<infer _, infer __, infer S> ? S : never;
183
+ readonly delete: Effect.Effect<R, E, Option.Option<A>>;
138
184
  }
139
185
  /**
140
- * Extract the Identifier from a RefSubject
141
- * @since 1.18.0
186
+ * @since 1.20.0
142
187
  */
143
- export type Context<T> = RefSubject.Context<T>;
188
+ export declare const updateEffect: {
189
+ <A, R2, E2>(f: (value: A) => Effect.Effect<R2, E2, A>): <R, E>(ref: RefSubject<R, E, A>) => Effect.Effect<R | R2, E | E2, A>;
190
+ <R, E, A, R2, E2>(ref: RefSubject<R, E, A>, f: (value: A) => Effect.Effect<R2, E2, A>): Effect.Effect<R | R2, E | E2, A>;
191
+ };
144
192
  /**
145
- * Extract the Error from a RefSubject
146
- * @since 1.18.0
193
+ * @since 1.20.0
147
194
  */
148
- export type Error<T> = RefSubject.Error<T>;
195
+ export declare const update: {
196
+ <A>(f: (value: A) => A): <R, E>(ref: RefSubject<R, E, A>) => Effect.Effect<R, E, A>;
197
+ <R, E, A>(ref: RefSubject<R, E, A>, f: (value: A) => A): Effect.Effect<R, E, A>;
198
+ };
149
199
  /**
150
- * Extract the State from a RefSubject
151
- * @since 1.18.0
200
+ * @since 1.20.0
152
201
  */
153
- export type Success<T> = RefSubject.Success<T>;
202
+ export declare const modifyEffect: {
203
+ <A, R2, E2, B>(f: (value: A) => Effect.Effect<R2, E2, readonly [B, A]>): <R, E>(ref: RefSubject<R, E, A>) => Effect.Effect<R | R2, E | E2, B>;
204
+ <R, E, A, R2, E2, B>(ref: RefSubject<R, E, A>, f: (value: A) => Effect.Effect<R2, E2, readonly [B, A]>): Effect.Effect<R | R2, E | E2, B>;
205
+ };
154
206
  /**
155
- * Construct a RefSubject with a lazily initialized value.
156
- * @since 1.18.0
157
- * @category constructors
207
+ * @since 1.20.0
158
208
  */
159
- export declare function fromEffect<R, E, A>(initial: Effect.Effect<R, E, A>, eq?: Equivalence<A>): Effect.Effect<R | Scope.Scope, never, RefSubject<never, E, A>>;
209
+ export declare const modify: {
210
+ <A, B>(f: (value: A) => readonly [B, A]): <R, E>(ref: RefSubject<R, E, A>) => Effect.Effect<R, E, B>;
211
+ <R, E, A, B>(ref: RefSubject<R, E, A>, f: (value: A) => readonly [B, A]): Effect.Effect<R, E, B>;
212
+ };
160
213
  /**
161
- * Construct a RefSubject from a synchronous value.
162
- * @since 1.18.0
163
- * @category constructors
214
+ * @since 1.20.0
164
215
  */
165
- export declare function of<A, E = never>(initial: A, eq?: Equivalence<A>): Effect.Effect<Scope.Scope, never, RefSubject<never, E, A>>;
216
+ export declare const runUpdates: {
217
+ <R, E, A, R2, E2, B, R3 = never, E3 = never, C = never>(f: (ref: GetSetDelete<R, E, A>) => Effect.Effect<R2, E2, B>, options?: {
218
+ readonly onInterrupt: (value: A) => Effect.Effect<R3, E3, C>;
219
+ readonly value?: "initial" | "current";
220
+ } | undefined): (ref: RefSubject<R, E, A>) => Effect.Effect<R | R2 | R3, E | E2 | E3, B>;
221
+ <R, E, A, R2, E2, B, R3 = never, E3 = never, C = never>(ref: RefSubject<R, E, A>, f: (ref: GetSetDelete<R, E, A>) => Effect.Effect<R2, E2, B>, options?: {
222
+ readonly onInterrupt: (value: A) => Effect.Effect<R3, E3, C>;
223
+ readonly value?: "initial" | "current";
224
+ } | undefined): Effect.Effect<R | R2 | R3, E | E2 | E3, B>;
225
+ };
166
226
  /**
167
- * Construct a RefSubject from a synchronous value.
168
- * @since 1.18.0
169
- * @category constructors
227
+ * @since 1.20.0
170
228
  */
171
- export declare function sync<A, E = never>(initial: () => A, eq?: Equivalence<A>): Effect.Effect<Scope.Scope, never, RefSubject<never, E, A>>;
229
+ export declare const mapEffect: {
230
+ <A, R2, E2, B>(f: (a: A) => Effect.Effect<R2, E2, B>): {
231
+ <R, E>(ref: RefSubject<R, E, A> | Computed<R, E, A>): Computed<R | R2, E | E2, B>;
232
+ <R, E>(ref: Filtered<R, E, A>): Filtered<R | R2, E | E2, B>;
233
+ <R0, E0, R, E, R2, E2, C>(versioned: Versioned.Versioned<R0, E0, R, E, A, R2, E2, A>, f: (a: A) => Effect.Effect<R2, E2, C>): Computed<R0 | R2, E0 | E | E2, C>;
234
+ };
235
+ <R, E, A, R2, E2, B>(ref: RefSubject<R, E, A> | Computed<R, E, A>, f: (a: A) => Effect.Effect<R2, E2, B>): Computed<R | R2, E | E2, B>;
236
+ <R, E, A, R2, E2, B>(ref: Filtered<R, E, A>, f: (a: A) => Effect.Effect<R2, E2, B>): Filtered<R | R2, E | E2, B>;
237
+ <R0, E0, R, E, A, R2, E2, R3, E3, C>(versioned: Versioned.Versioned<R0, E0, R, E, A, R2, E2, A>, f: (a: A) => Effect.Effect<R3, E3, C>): Computed<R0 | R2 | R3 | Exclude<R, Scope.Scope>, E0 | E | E2 | E3, C>;
238
+ };
172
239
  /**
173
- * Construct a RefSubject from any Fx value.
174
- *
175
- * @since 1.18.0
176
- * @category constructors
240
+ * @since 1.20.0
177
241
  */
178
- export declare function make<R, E, A>(fx: Effect.Effect<R, E, A>, eq?: Equivalence<A>): Effect.Effect<R | Scope.Scope, never, RefSubject<never, E, A>>;
179
- export declare function make<R, E, A>(fx: Fx.FxInput<R, E, A>, eq?: Equivalence<A>): Effect.Effect<R | Scope.Scope, never, RefSubject<never, E, A>>;
242
+ export declare const map: {
243
+ <A, B>(f: (a: A) => B): {
244
+ <R, E>(ref: RefSubject<R, E, A>): Computed<R, E, B>;
245
+ <R, E>(ref: Computed<R, E, A>): Computed<R, E, B>;
246
+ <R, E>(ref: Filtered<R, E, A>): Filtered<R, E, B>;
247
+ <R0, E0, R, E, R2, E2>(versioned: Versioned.Versioned<R0, E0, R, E, A, R2, E2, A>, f: (a: A) => B): Computed<R0 | R2, E0 | E | E2, B>;
248
+ };
249
+ <R, E, A, B>(ref: RefSubject<R, E, A> | Computed<R, E, A>, f: (a: A) => B): Computed<R, E, B>;
250
+ <R, E, A, B>(filtered: Filtered<R, E, A>, f: (a: A) => B): Filtered<R, E, B>;
251
+ <R0, E0, R, E, A, R2, E2, B>(versioned: Versioned.Versioned<R0, E0, R, E, A, R2, E2, A>, f: (a: A) => B): Computed<R0 | R2 | Exclude<R, Scope.Scope>, E0 | E | E2, B> | Filtered<R0 | R2 | Exclude<R, Scope.Scope>, E0 | E | E2, B>;
252
+ };
180
253
  /**
181
- * Create a contextual wrapper around a RefSubject while maintaing the full API of
182
- * a Ref Subject.
183
- * @since 1.18.0
184
- * @category constructors
254
+ * @since 1.20.0
185
255
  */
186
- export declare function tagged<A>(defaultEq?: Equivalence<A>): {
187
- <const I extends C.IdentifierConstructor<any>>(identifier: (id: typeof C.id) => I): RefSubject.Tagged<C.IdentifierOf<I>, never, A>;
188
- <const I>(identifier: I | string): RefSubject.Tagged<C.IdentifierOf<I>, never, A>;
256
+ export declare const filterMapEffect: {
257
+ <A, R2, E2, B>(f: (a: A) => Effect.Effect<R2, E2, Option.Option<B>>): {
258
+ <R, E>(ref: RefSubject<R, E, A> | Computed<R, E, A>): Filtered<R | R2, E | E2, B>;
259
+ <R, E>(ref: Filtered<R, E, A>): Filtered<R | R2, E | E2, B>;
260
+ <R0, E0, R, E, R2, E2, B>(versioned: Versioned.Versioned<R0, E0, R, E, A, R2, E2, A>, f: (a: A) => Effect.Effect<R2, E2, Option.Option<B>>): Filtered<R0 | R2, E0 | E | E2, B>;
261
+ };
262
+ <R, E, A, R2, E2, B>(ref: RefSubject<R, E, A> | Computed<R, E, A> | Filtered<R, E, A>, f: (a: A) => Effect.Effect<R2, E2, Option.Option<B>>): Filtered<R | R2, E | E2, B>;
263
+ <R0, E0, R, E, A, R2, E2, B, R3, E3>(versioned: Versioned.Versioned<R0, E0, R, E, A, R2, E2, A>, f: (a: A) => Effect.Effect<R3, E3, Option.Option<B>>): Filtered<R0 | R2 | R3 | Exclude<R, Scope.Scope>, E0 | E | E2 | E3, B>;
189
264
  };
190
- export declare function tagged<E, A>(defaultEq?: Equivalence<A>): {
191
- <const I extends C.IdentifierConstructor<any>>(identifier: (id: typeof C.id) => I): RefSubject.Tagged<C.IdentifierOf<I>, E, A>;
192
- <const I>(identifier: I | string): RefSubject.Tagged<C.IdentifierOf<I>, E, A>;
265
+ /**
266
+ * @since 1.20.0
267
+ */
268
+ export declare const filterMap: {
269
+ <A, B>(f: (a: A) => Option.Option<B>): {
270
+ <R, E>(ref: RefSubject<R, E, A> | Computed<R, E, A> | Filtered<R, E, A>): Filtered<R, E, B>;
271
+ <R0, E0, R, E, R2, E2, B>(versioned: Versioned.Versioned<R0, E0, R, E, A, R2, E2, A>, f: (a: A) => Option.Option<B>): Filtered<R0 | R2, E0 | E | E2, B>;
272
+ };
273
+ <R0, E0, R, E, A, R2, E2, B>(versioned: Versioned.Versioned<R0, E0, R, E, A, R2, E2, A>, f: (a: A) => Option.Option<B>): Filtered<R0 | R2 | Exclude<R, Scope.Scope>, E0 | E | E2, B>;
274
+ <R, E, A, B>(ref: RefSubject<R, E, A> | Computed<R, E, A> | Filtered<R, E, A>, f: (a: A) => Option.Option<B>): Filtered<R, E, B>;
193
275
  };
194
276
  /**
195
- * Construct a RefSubject from any Fx value.
196
- *
197
- * @since 1.18.0
198
- * @category constructors
277
+ * @since 1.20.0
199
278
  */
200
- export declare function makeWithExtension<R, E, A, B>(fx: Effect.Effect<R, E, A>, f: (ref: RefSubject<never, E, A>) => B, eq?: Equivalence<A>): Effect.Effect<R, never, RefSubject<never, E, A> & B>;
201
- export declare function makeWithExtension<R, E, A, B>(fx: Fx.FxInput<R, E, A>, f: (ref: RefSubject<never, E, A>) => B, eq?: Equivalence<A>): Effect.Effect<R | Scope.Scope, never, RefSubject<never, E, A> & B>;
279
+ export declare const compact: {
280
+ <R, E, A>(ref: RefSubject<R, E, Option.Option<A>> | Computed<R, E, Option.Option<A>>): Filtered<R, E, A>;
281
+ <R, E, A>(ref: Filtered<R, E, Option.Option<A>>): Filtered<R, E, A>;
282
+ <R0, E0, R, E, A, R2, E2>(versioned: Versioned.Versioned<R0, E0, R, E, Option.Option<A>, R2, E2, Option.Option<A>>): Filtered<R0 | R2 | Exclude<R, Scope.Scope>, E0 | E | Exclude<E, Cause.NoSuchElementException> | Exclude<E2, Cause.NoSuchElementException>, A>;
283
+ };
202
284
  /**
203
- * Construct a RefSubject with an initial value and the specified subject.
204
- * @since 1.18.0
205
- * @category constructors
285
+ * @since 1.20.0
206
286
  */
207
- export declare const unsafeMake: <R, E, A>(initial: Effect.Effect<R, E, A>, subject: Subject.Subject<R, E, A>, eq?: Equivalence<A>) => RefSubject<R, E, A>;
287
+ export declare const filterEffect: {
288
+ <R, E, A, R2, E2>(ref: RefSubject<R, E, A> | Computed<R, E, A> | Filtered<R, E, A>, f: (a: A) => Effect.Effect<R2, E2, boolean>): Filtered<R | R2, E | E2, A>;
289
+ <R0, E0, R, E, A, R2, E2, R3, E3>(versioned: Versioned.Versioned<R0, E0, R, E, A, R2, E2, A>, f: (a: A) => Effect.Effect<R3, E3, boolean>): Filtered<R0 | R2 | R3 | Exclude<R, Scope.Scope>, E0 | E | E2 | E3, A>;
290
+ };
208
291
  /**
209
- * Flatten an RefSubject of an Option into a Filtered.
210
- * @since 1.18.0
211
- * @category combinators
292
+ * @since 1.20.0
293
+ */
294
+ export declare const filter: {
295
+ <A>(f: (a: A) => boolean): {
296
+ <R, E>(ref: RefSubject<R, E, A> | Computed<R, E, A> | Filtered<R, E, A>): Filtered<R, E, A>;
297
+ <R0, E0, R, E, R2, E2>(versioned: Versioned.Versioned<R0, E0, R, E, A, R2, E2, A>, f: (a: A) => boolean): Filtered<R0 | R2, E0 | E | E2, A>;
298
+ };
299
+ <R, E, A>(ref: RefSubject<R, E, A> | Computed<R, E, A> | Filtered<R, E, A>, f: (a: A) => boolean): Filtered<R, E, A>;
300
+ <R0, E0, R, E, A, R2, E2, R3, E3>(versioned: Versioned.Versioned<R0, E0, R, E, A, R2, E2, A>, f: (a: A) => boolean): Filtered<R0 | R2 | R3 | Exclude<R, Scope.Scope>, E0 | E | E2 | E3, A>;
301
+ };
302
+ /**
303
+ * @since 1.20.0
212
304
  */
213
- export declare const compact: <R, E, A>(refSubject: RefSubject<R, E, Option.Option<A>>) => Filtered<R, E, A>;
305
+ export declare const skipRepeatsWith: {
306
+ <A>(eq: Equivalence.Equivalence<A>): {
307
+ <R, E>(ref: RefSubject<R, E, A> | Computed<R, E, A>): Computed<R, E, A>;
308
+ <R, E>(ref: Filtered<R, E, A>): Filtered<R, E, A>;
309
+ };
310
+ <R, E, A>(ref: RefSubject<R, E, A> | Computed<R, E, A>, eq: Equivalence.Equivalence<A>): Computed<R, E, A>;
311
+ <R, E, A>(ref: Filtered<R, E, A>, eq: Equivalence.Equivalence<A>): Filtered<R, E, A>;
312
+ <R, E, A>(ref: RefSubject<R, E, A> | Computed<R, E, A> | Filtered<R, E, A>, eq: Equivalence.Equivalence<A>): Computed<R, E, A> | Filtered<R, E, A>;
313
+ };
214
314
  /**
215
- * Split a RefSubject's into 2 Filtered values that track its errors and
216
- * success values separately.
217
- * @since 1.18.0
218
- * @category combinators
315
+ * @since 1.20.0
219
316
  */
220
- export declare const split: <R, E, A>(refSubject: RefSubject<R, E, A>) => readonly [Filtered<R, never, E>, Filtered<R, never, A>];
317
+ export declare function skipRepeats<R, E, A>(ref: RefSubject<R, E, A> | Computed<R, E, A>): Computed<R, E, A>;
318
+ export declare function skipRepeats<R, E, A>(ref: Filtered<R, E, A>): Filtered<R, E, A>;
319
+ export declare function skipRepeats<R, E, A>(ref: RefSubject<R, E, A> | Computed<R, E, A> | Filtered<R, E, A>): Computed<R, E, A> | Filtered<R, E, A>;
221
320
  /**
222
- * MakeRefSubject is a RefSubject factory function dervied from a Schema.
223
- * @since 1.18.0
321
+ * @since 1.20.0
322
+ */
323
+ export declare function transform<R, E, A, B>(ref: RefSubject<R, E, A>, from: (a: A) => B, to: (b: B) => A): RefSubject<R, E, B>;
324
+ /**
325
+ * @since 1.20.0
326
+ */
327
+ export declare function transformOrFail<R, E, R2, E2, A, R3, E3, B>(ref: RefSubject<R, E, A>, from: (a: A) => Effect.Effect<R2, E2, B>, to: (b: B) => Effect.Effect<R3, E3, A>): RefSubject<R | R2 | R3, E | E2 | E3, B>;
328
+ /**
329
+ * @since 1.20.0
330
+ */
331
+ export declare function tuple<const Refs extends ReadonlyArray<RefSubject<any, any, any> | Computed<any, any, any> | Filtered<any, any, any>>>(refs: Refs): TupleFrom<Refs>;
332
+ type RefKind = "r" | "c" | "f";
333
+ /**
334
+ * @since 1.20.0
335
+ */
336
+ export type TupleFrom<Refs extends ReadonlyArray<RefSubject<any, any, any> | Computed<any, any, any> | Filtered<any, any, any>>> = {
337
+ "c": [ComputedTupleFrom<Refs>] extends [Computed<infer R, infer E, infer A>] ? Computed<R, E, A> : never;
338
+ "f": [FilteredTupleFrom<Refs>] extends [Filtered<infer R, infer E, infer A>] ? Filtered<R, E, A> : never;
339
+ "r": [RefSubjectTupleFrom<Refs>] extends [RefSubject<infer R, infer E, infer A>] ? RefSubject<R, E, A> : never;
340
+ }[GetTupleKind<Refs>];
341
+ type Ref = RefSubject.Any | Computed.Any | Filtered.Any;
342
+ /**
343
+ * @since 1.20.0
344
+ */
345
+ export type GetTupleKind<Refs extends ReadonlyArray<Ref>, Kind extends RefKind = "r"> = Refs extends readonly [infer Head extends Ref, ...infer Tail extends ReadonlyArray<Ref>] ? GetTupleKind<Tail, MergeKind<Kind, MatchKind<Head>>> : Kind;
346
+ /**
347
+ * @since 1.20.0
348
+ */
349
+ export type MatchKind<T extends Ref> = [T] extends [Filtered.Any] ? "f" : [T] extends [RefSubject.Any] ? "r" : "c";
350
+ type MergeKind<A extends RefKind, B extends RefKind> = A extends "f" ? A : B extends "f" ? B : A extends "r" ? B : B extends "r" ? A : "c";
351
+ type FilteredTupleFrom<Refs extends ReadonlyArray<RefSubject<any, any, any> | Computed<any, any, any> | Filtered<any, any, any>>> = Filtered<Effect.Effect.Context<Refs[number]>, Fx.Error<Refs[number]>, {
352
+ readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]>;
353
+ }>;
354
+ type ComputedTupleFrom<Refs extends ReadonlyArray<RefSubject<any, any, any> | Computed<any, any, any> | Filtered<any, any, any>>> = Computed<Effect.Effect.Context<Refs[number]>, Effect.Effect.Error<Refs[number]>, {
355
+ readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]>;
356
+ }>;
357
+ type RefSubjectTupleFrom<Refs extends ReadonlyArray<RefSubject<any, any, any> | Computed<any, any, any> | Filtered<any, any, any>>> = RefSubject<Effect.Effect.Context<Refs[number]>, Effect.Effect.Error<Refs[number]>, {
358
+ readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]>;
359
+ }>;
360
+ /**
361
+ * @since 1.20.0
224
362
  */
225
- export type MakeRefSubject<O> = {
226
- <R, E>(input: RefSubject<R, E, O>, eq?: Equivalence<O>): Effect.Effect<R | Scope.Scope, never, ToDerived<R, E, O>>;
227
- <R, E>(input: Effect.Effect<R, E, O>, eq?: Equivalence<O>): Effect.Effect<R | Scope.Scope, never, ToRefSubject<E, O>>;
228
- <R, E>(input: Stream.Stream<R, E, O>, eq?: Equivalence<O>): Effect.Effect<R | Scope.Scope, never, ToRefSubject<E, O>>;
229
- <R, E>(input: Fx.Fx<R, E, O>, eq?: Equivalence<O>): Effect.Effect<R | Scope.Scope, never, ToRefSubject<E, O>>;
230
- <E>(input: Cause.Cause<E>, eq?: Equivalence<O>): Effect.Effect<Scope.Scope, never, ToRefSubject<E, O>>;
231
- <R, E>(input: Fx.FxInput<R, E, O>, eq?: Equivalence<O>): Effect.Effect<R | Scope.Scope, never, ToRefSubject<E, O>>;
363
+ export declare function struct<const Refs extends Readonly<Record<string, RefSubject.Any | Computed.Any | Filtered.Any>>>(refs: Refs): StructFrom<Refs>;
364
+ type StructFrom<Refs extends Readonly<Record<string, RefSubject.Any | Computed.Any | Filtered.Any>>> = {
365
+ "c": [ComputedStructFrom<Refs>] extends [Computed<infer R, infer E, infer A>] ? Computed<R, E, A> : never;
366
+ "f": [FilteredStructFrom<Refs>] extends [Filtered<infer R, infer E, infer A>] ? Filtered<R, E, A> : never;
367
+ "r": [RefSubjectStructFrom<Refs>] extends [RefSubject<infer R, infer E, infer A>] ? RefSubject<R, E, A> : never;
368
+ }[GetStructKind<Refs>];
369
+ /**
370
+ * @since 1.20.0
371
+ */
372
+ export type GetStructKind<Refs extends Readonly<Record<string, RefSubject.Any | Computed.Any | Filtered.Any>>> = MergeKinds<UnionToTuple<{
373
+ [K in keyof Refs]: MatchKind<Refs[K]>;
374
+ }[keyof Refs]>>;
375
+ type MergeKinds<Kinds extends ReadonlyArray<any>> = Kinds extends readonly [infer Head extends RefKind, ...infer Tail extends ReadonlyArray<RefKind>] ? MergeKind<Head, MergeKinds<Tail>> : "r";
376
+ type FilteredStructFrom<Refs extends Readonly<Record<string, RefSubject.Any | Computed.Any | Filtered.Any>>> = Filtered<Effect.Effect.Context<Refs[keyof Refs]>, Fx.Error<Refs[keyof Refs]>, {
377
+ readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]>;
378
+ }>;
379
+ type ComputedStructFrom<Refs extends Readonly<Record<string, RefSubject.Any | Computed.Any | Filtered.Any>>> = Computed<Effect.Effect.Context<Refs[keyof Refs]>, Effect.Effect.Error<Refs[keyof Refs]>, {
380
+ readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]>;
381
+ }>;
382
+ type RefSubjectStructFrom<Refs extends Readonly<Record<string, RefSubject.Any | Computed.Any | Filtered.Any>>> = RefSubject<Effect.Effect.Context<Refs[keyof Refs]>, Effect.Effect.Error<Refs[keyof Refs]>, {
383
+ readonly [K in keyof Refs]: Effect.Effect.Success<Refs[K]>;
384
+ }>;
385
+ /**
386
+ * @since 1.20.0
387
+ */
388
+ export declare function tagged<E, A>(replay?: number): {
389
+ <const I extends C.IdentifierFactory<any>>(identifier: I): RefSubject.Tagged<C.IdentifierOf<I>, E, A>;
390
+ <const I>(identifier: I): RefSubject.Tagged<C.IdentifierOf<I>, E, A>;
232
391
  };
233
392
  /**
234
- * Converts an error `E` and an output `O` into a RefSubject or a Record of RefSubjects if
235
- * the ouput value is a Record as well.
236
- * @since 1.18.0
393
+ * @since 1.20.0
237
394
  */
238
- export type ToRefSubject<E, O> = O extends Readonly<Record<PropertyKey, any>> ? {
239
- readonly [K in keyof O]: ToRefSubject<E, O[K]>;
240
- } : RefSubject<never, E, O>;
395
+ export declare function fromTag<I, S, R, E, A>(tag: C.Tag<I, S>, f: (s: S) => RefSubject<R, E, A>): RefSubject<I | R, E, A>;
241
396
  /**
242
- * Converts an error `E` and an output `O` into a RefSubject or a Record of RefSubjects if
243
- * the ouput value is a Record as well.
244
- * @since 1.18.0
397
+ * @since 1.20.0
398
+ */
399
+ export declare function isRefSubject<R, E, A>(u: unknown): u is RefSubject<R, E, A>;
400
+ export declare function isRefSubject(u: unknown): u is RefSubject.Any;
401
+ /**
402
+ * @since 1.20.0
403
+ */
404
+ export declare function isComputed<R, E, A>(u: unknown): u is Computed<R, E, A>;
405
+ export declare function isComputed(u: unknown): u is Computed.Any;
406
+ /**
407
+ * @since 1.20.0
408
+ */
409
+ export declare function isFiltered<R, E, A>(u: unknown): u is Filtered<R, E, A>;
410
+ export declare function isFiltered(u: unknown): u is Filtered.Any;
411
+ /**
412
+ * @since 1.20.0
413
+ */
414
+ export declare function isDerived<R, E, A>(u: unknown): u is RefSubject.Derived<R, E, A>;
415
+ export declare function isDerived(u: unknown): u is RefSubject.Derived<unknown, unknown, unknown>;
416
+ /**
417
+ * @since 1.20.0
418
+ */
419
+ export declare function computedFromTag<I, S, R, E, A>(tag: C.Tag<I, S>, f: (s: S) => Computed<R, E, A>): Computed<I | R, E, A>;
420
+ /**
421
+ * @since 1.20.0
422
+ */
423
+ export declare function filteredFromTag<I, S, R, E, A>(tag: C.Tag<I, S>, f: (s: S) => Filtered<R, E, A>): Filtered<I | R, E, A>;
424
+ /**
425
+ * @since 1.20.0
245
426
  */
246
- export type ToDerived<R, E, O> = ToRefSubject<E, O> & {
247
- readonly persist: Effect.Effect<R, E, O>;
427
+ export declare const provide: {
428
+ <S>(context: C.Context<S> | Runtime.Runtime<S>): {
429
+ <R, E, A>(filtered: Filtered<R, E, A>): Filtered<Exclude<R, S>, E, A>;
430
+ <R, E, A>(computed: Computed<R, E, A>): Computed<Exclude<R, S>, E, A>;
431
+ <R, E, A>(ref: RefSubject<R, E, A>): RefSubject<Exclude<R, S>, E, A>;
432
+ };
433
+ <R2, S>(layer: Layer.Layer<R2, never, S>): {
434
+ <R, E, A>(filtered: Filtered<R, E, A>): Filtered<Exclude<R, S> | R2, E, A>;
435
+ <R, E, A>(computed: Computed<R, E, A>): Computed<Exclude<R, S> | R2, E, A>;
436
+ <R, E, A>(ref: RefSubject<R, E, A>): RefSubject<Exclude<R, S> | R2, E, A>;
437
+ };
438
+ <R, E, A, S>(filtered: Filtered<R, E, A>, context: C.Context<S> | Runtime.Runtime<S>): Filtered<Exclude<R, S>, E, A>;
439
+ <R, E, A, S>(computed: Computed<R, E, A>, context: C.Context<S> | Runtime.Runtime<S>): Computed<Exclude<R, S>, E, A>;
440
+ <R, E, A, S>(ref: RefSubject<R, E, A>, context: C.Context<S> | Runtime.Runtime<S>): RefSubject<Exclude<R, S>, E, A>;
441
+ <R, E, A, R2, S>(filtered: Filtered<R, E, A>, layer: Layer.Layer<R2, never, S>): Filtered<Exclude<R, S> | R2, E, A>;
442
+ <R, E, A, R2, S>(computed: Computed<R, E, A>, layer: Layer.Layer<R2, never, S>): Computed<Exclude<R, S> | R2, E, A>;
443
+ <R, E, A, R2, S>(ref: RefSubject<R, E, A>, layer: Layer.Layer<R2, never, S>): RefSubject<Exclude<R, S> | R2, E, A>;
248
444
  };
249
445
  /**
250
- * Derive a RefSubjectSchema using the "from" or "encoded" value represented by a Schema.
446
+ * Set the value to true
251
447
  * @since 1.18.0
252
448
  */
253
- export declare function deriveFromSchema<I, O>(schema: Schema.Schema<I, O>): MakeRefSubject<I>;
449
+ export declare const asTrue: <R, E>(ref: RefSubject<R, E, boolean>) => Effect.Effect<R, E, boolean>;
254
450
  /**
255
- * Derive a RefSubjectSchema using the "to" or "decoded" value represented by a Schema.
451
+ * Set the value to false
256
452
  * @since 1.18.0
257
453
  */
258
- export declare function deriveToSchema<I, O>(schema: Schema.Schema<I, O>): MakeRefSubject<O>;
454
+ export declare const asFalse: <R, E>(ref: RefSubject<R, E, boolean>) => Effect.Effect<R, E, boolean>;
259
455
  /**
456
+ * Toggle the boolean value between true and false
260
457
  * @since 1.18.0
261
458
  */
262
- export declare const tuple: <const REFS extends ReadonlyArray<RefSubject.Any>>(...refs: REFS) => RefSubject<RefSubject.Context<REFS[number]>, RefSubject.Error<REFS[number]>, {
263
- readonly [K in keyof REFS]: RefSubject.Success<REFS[K]>;
264
- }>;
459
+ export declare const toggle: <R, E>(ref: RefSubject<R, E, boolean>) => Effect.Effect<R, E, boolean>;
265
460
  /**
461
+ * Set the value to true
266
462
  * @since 1.18.0
267
463
  */
268
- export declare const struct: <const REFS extends Readonly<Record<PropertyKey, RefSubject.Any>>>(refs: REFS) => RefSubject<RefSubject.Context<REFS[string]>, RefSubject.Error<REFS[string]>, {
269
- readonly [K in keyof REFS]: RefSubject.Success<REFS[K]>;
270
- }>;
464
+ export declare const increment: <R, E>(ref: RefSubject<R, E, number>) => Effect.Effect<R, E, number>;
271
465
  /**
466
+ * Set the value to false
272
467
  * @since 1.18.0
273
468
  */
274
- export declare function fromSubscriptionRef<A>(subscriptionRef: SubscriptionRef.SubscriptionRef<A>): Effect.Effect<Scope.Scope, never, RefSubject<never, never, A>>;
469
+ export declare const decrement: <R, E>(ref: RefSubject<R, E, number>) => Effect.Effect<R, E, number>;
275
470
  /**
276
- * @since 1.18.0
471
+ * @since 1.20.0
472
+ */
473
+ export declare const slice: {
474
+ (drop: number, take: number): <R, E, A>(ref: RefSubject<R, E, A>) => RefSubject<R, E, A>;
475
+ <R, E, A>(ref: RefSubject<R, E, A>, drop: number, take: number): RefSubject<R, E, A>;
476
+ };
477
+ /**
478
+ * @since 1.20.0
479
+ */
480
+ export declare const drop: {
481
+ (drop: number): <R, E, A>(ref: RefSubject<R, E, A>) => RefSubject<R, E, A>;
482
+ <R, E, A>(ref: RefSubject<R, E, A>, drop: number): RefSubject<R, E, A>;
483
+ };
484
+ /**
485
+ * @since 1.20.0
277
486
  */
278
- export declare const transform: {
279
- <A, B>(from: (a: A) => B, to: (b: B) => A): <R, E>(ref: RefSubject<R, E, A>) => RefSubject<R, E, B>;
280
- <R, E, A, B>(ref: RefSubject<R, E, A>, from: (a: A) => B, to: (b: B) => A): RefSubject<R, E, B>;
487
+ export declare const take: {
488
+ (take: number): <R, E, A>(ref: RefSubject<R, E, A>) => RefSubject<R, E, A>;
489
+ <R, E, A>(ref: RefSubject<R, E, A>, take: number): RefSubject<R, E, A>;
281
490
  };
282
491
  //# sourceMappingURL=RefSubject.d.ts.map