@typed/fx 1.17.4 → 1.18.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 (1047) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +5 -0
  3. package/dist/cjs/Computed.js +111 -74
  4. package/dist/cjs/Computed.js.map +1 -1
  5. package/dist/cjs/Emitter.js +37 -0
  6. package/dist/cjs/Emitter.js.map +1 -0
  7. package/dist/cjs/Filtered.js +91 -74
  8. package/dist/cjs/Filtered.js.map +1 -1
  9. package/dist/cjs/Form.js +123 -0
  10. package/dist/cjs/Form.js.map +1 -0
  11. package/dist/cjs/FormEntry.js +78 -0
  12. package/dist/cjs/FormEntry.js.map +1 -0
  13. package/dist/cjs/Fx.js +1303 -31
  14. package/dist/cjs/Fx.js.map +1 -1
  15. package/dist/cjs/Guard.js +67 -0
  16. package/dist/cjs/Guard.js.map +1 -0
  17. package/dist/cjs/Idle.js +176 -0
  18. package/dist/cjs/Idle.js.map +1 -0
  19. package/dist/cjs/Match.js +156 -0
  20. package/dist/cjs/Match.js.map +1 -0
  21. package/dist/cjs/Model.js +119 -0
  22. package/dist/cjs/Model.js.map +1 -0
  23. package/dist/cjs/Pull.js +50 -0
  24. package/dist/cjs/Pull.js.map +1 -0
  25. package/dist/cjs/RefArray.js +248 -94
  26. package/dist/cjs/RefArray.js.map +1 -1
  27. package/dist/cjs/RefAsyncData.js +187 -0
  28. package/dist/cjs/RefAsyncData.js.map +1 -0
  29. package/dist/cjs/RefAsyncDataArray.js +38 -0
  30. package/dist/cjs/RefAsyncDataArray.js.map +1 -0
  31. package/dist/cjs/RefBoolean.js +45 -0
  32. package/dist/cjs/RefBoolean.js.map +1 -0
  33. package/dist/cjs/RefChunk.js +210 -0
  34. package/dist/cjs/RefChunk.js.map +1 -0
  35. package/dist/cjs/RefHashMap.js +198 -0
  36. package/dist/cjs/RefHashMap.js.map +1 -0
  37. package/dist/cjs/RefHashSet.js +96 -0
  38. package/dist/cjs/RefHashSet.js.map +1 -0
  39. package/dist/cjs/RefNumber.js +49 -0
  40. package/dist/cjs/RefNumber.js.map +1 -0
  41. package/dist/cjs/RefSubject.js +234 -431
  42. package/dist/cjs/RefSubject.js.map +1 -1
  43. package/dist/cjs/Sink.js +118 -8
  44. package/dist/cjs/Sink.js.map +1 -1
  45. package/dist/cjs/Stream.js +82 -0
  46. package/dist/cjs/Stream.js.map +1 -0
  47. package/dist/cjs/Subject.js +87 -49
  48. package/dist/cjs/Subject.js.map +1 -1
  49. package/dist/cjs/TypeId.js +27 -0
  50. package/dist/cjs/TypeId.js.map +1 -0
  51. package/dist/cjs/Typeclass.js +383 -0
  52. package/dist/cjs/Typeclass.js.map +1 -0
  53. package/dist/cjs/Versioned.js +111 -0
  54. package/dist/cjs/Versioned.js.map +1 -0
  55. package/dist/cjs/index.js +52 -213
  56. package/dist/cjs/index.js.map +1 -1
  57. package/dist/cjs/internal/bounds.js +26 -0
  58. package/dist/cjs/internal/bounds.js.map +1 -0
  59. package/dist/cjs/internal/core-ref-subject.js +254 -0
  60. package/dist/cjs/internal/core-ref-subject.js.map +1 -0
  61. package/dist/cjs/internal/core-subject.js +108 -0
  62. package/dist/cjs/internal/core-subject.js.map +1 -0
  63. package/dist/cjs/internal/core.js +924 -0
  64. package/dist/cjs/internal/core.js.map +1 -0
  65. package/dist/cjs/internal/deferred-ref.js +32 -0
  66. package/dist/cjs/internal/deferred-ref.js.map +1 -0
  67. package/dist/cjs/internal/effect-operator.js +147 -0
  68. package/dist/cjs/internal/effect-operator.js.map +1 -0
  69. package/dist/cjs/internal/effect-primitive.js +47 -0
  70. package/dist/cjs/internal/effect-primitive.js.map +1 -0
  71. package/dist/cjs/internal/fx-effect-proto.js +58 -0
  72. package/dist/cjs/internal/fx-effect-proto.js.map +1 -0
  73. package/dist/cjs/internal/fx-primitive.js +193 -0
  74. package/dist/cjs/internal/fx-primitive.js.map +1 -0
  75. package/dist/cjs/internal/fx.js +240 -0
  76. package/dist/cjs/internal/fx.js.map +1 -0
  77. package/dist/cjs/internal/helpers.js +270 -0
  78. package/dist/cjs/internal/helpers.js.map +1 -0
  79. package/dist/cjs/internal/keyed.js +198 -0
  80. package/dist/cjs/internal/keyed.js.map +1 -0
  81. package/dist/cjs/internal/matchers.js +34 -0
  82. package/dist/cjs/internal/matchers.js.map +1 -0
  83. package/dist/cjs/internal/protos.js +110 -0
  84. package/dist/cjs/internal/protos.js.map +1 -0
  85. package/dist/cjs/internal/provide.js +78 -0
  86. package/dist/cjs/internal/provide.js.map +1 -0
  87. package/dist/cjs/internal/requestIdleCallback.js +22 -0
  88. package/dist/cjs/internal/requestIdleCallback.js.map +1 -0
  89. package/dist/cjs/internal/run.js +54 -0
  90. package/dist/cjs/internal/run.js.map +1 -0
  91. package/dist/cjs/internal/schema-ref-subject.js +132 -0
  92. package/dist/cjs/internal/schema-ref-subject.js.map +1 -0
  93. package/dist/cjs/internal/share.js +79 -0
  94. package/dist/cjs/internal/share.js.map +1 -0
  95. package/dist/cjs/internal/strategies.js +34 -0
  96. package/dist/cjs/internal/strategies.js.map +1 -0
  97. package/dist/cjs/internal/sync-operator.js +92 -0
  98. package/dist/cjs/internal/sync-operator.js.map +1 -0
  99. package/dist/cjs/internal/versioned-transform.js +46 -0
  100. package/dist/cjs/internal/versioned-transform.js.map +1 -0
  101. package/dist/cjs/internal/withKey.js +69 -0
  102. package/dist/cjs/internal/withKey.js.map +1 -0
  103. package/dist/dts/Computed.d.ts +106 -0
  104. package/dist/dts/Computed.d.ts.map +1 -0
  105. package/dist/dts/Emitter.d.ts +31 -0
  106. package/dist/dts/Emitter.d.ts.map +1 -0
  107. package/dist/dts/Filtered.d.ts +97 -0
  108. package/dist/dts/Filtered.d.ts.map +1 -0
  109. package/dist/dts/Form.d.ts +126 -0
  110. package/dist/dts/Form.d.ts.map +1 -0
  111. package/dist/dts/FormEntry.d.ts +53 -0
  112. package/dist/dts/FormEntry.d.ts.map +1 -0
  113. package/dist/dts/Fx.d.ts +2006 -0
  114. package/dist/dts/Fx.d.ts.map +1 -0
  115. package/dist/dts/Guard.d.ts +95 -0
  116. package/dist/dts/Guard.d.ts.map +1 -0
  117. package/dist/dts/Idle.d.ts +84 -0
  118. package/dist/dts/Idle.d.ts.map +1 -0
  119. package/dist/dts/Match.d.ts +66 -0
  120. package/dist/dts/Match.d.ts.map +1 -0
  121. package/dist/dts/Model.d.ts +200 -0
  122. package/dist/dts/Model.d.ts.map +1 -0
  123. package/dist/dts/Pull.d.ts +37 -0
  124. package/dist/dts/Pull.d.ts.map +1 -0
  125. package/dist/dts/RefArray.d.ts +281 -0
  126. package/dist/dts/RefArray.d.ts.map +1 -0
  127. package/dist/dts/RefAsyncData.d.ts +236 -0
  128. package/dist/dts/RefAsyncData.d.ts.map +1 -0
  129. package/dist/dts/RefAsyncDataArray.d.ts +56 -0
  130. package/dist/dts/RefAsyncDataArray.d.ts.map +1 -0
  131. package/dist/dts/RefBoolean.d.ts +47 -0
  132. package/dist/dts/RefBoolean.d.ts.map +1 -0
  133. package/dist/dts/RefChunk.d.ts +232 -0
  134. package/dist/dts/RefChunk.d.ts.map +1 -0
  135. package/dist/dts/RefHashMap.d.ts +190 -0
  136. package/dist/dts/RefHashMap.d.ts.map +1 -0
  137. package/dist/dts/RefHashSet.d.ts +104 -0
  138. package/dist/dts/RefHashSet.d.ts.map +1 -0
  139. package/dist/dts/RefNumber.d.ts +48 -0
  140. package/dist/dts/RefNumber.d.ts.map +1 -0
  141. package/dist/dts/RefSubject.d.ts +282 -0
  142. package/dist/dts/RefSubject.d.ts.map +1 -0
  143. package/dist/dts/Sink.d.ts +152 -0
  144. package/dist/dts/Sink.d.ts.map +1 -0
  145. package/dist/dts/Stream.d.ts +60 -0
  146. package/dist/dts/Stream.d.ts.map +1 -0
  147. package/dist/dts/Subject.d.ts +69 -0
  148. package/dist/dts/Subject.d.ts.map +1 -0
  149. package/dist/dts/TypeId.d.ts +41 -0
  150. package/dist/dts/TypeId.d.ts.map +1 -0
  151. package/dist/dts/Typeclass.d.ts +284 -0
  152. package/dist/dts/Typeclass.d.ts.map +1 -0
  153. package/dist/dts/Versioned.d.ts +143 -0
  154. package/dist/dts/Versioned.d.ts.map +1 -0
  155. package/dist/dts/index.d.ts +56 -0
  156. package/dist/dts/index.d.ts.map +1 -0
  157. package/dist/dts/internal/bounds.d.ts +9 -0
  158. package/dist/dts/internal/bounds.d.ts.map +1 -0
  159. package/dist/dts/internal/core-ref-subject.d.ts +100 -0
  160. package/dist/dts/internal/core-ref-subject.d.ts.map +1 -0
  161. package/dist/dts/internal/core-subject.d.ts +5 -0
  162. package/dist/dts/internal/core-subject.d.ts.map +1 -0
  163. package/dist/dts/internal/core.d.ts +456 -0
  164. package/dist/dts/internal/core.d.ts.map +1 -0
  165. package/dist/dts/internal/deferred-ref.d.ts +12 -0
  166. package/dist/dts/internal/deferred-ref.d.ts.map +1 -0
  167. package/dist/dts/internal/effect-operator.d.ts +37 -0
  168. package/dist/dts/internal/effect-operator.d.ts.map +1 -0
  169. package/dist/dts/internal/effect-primitive.d.ts +6 -0
  170. package/dist/dts/internal/effect-primitive.d.ts.map +1 -0
  171. package/dist/dts/internal/fx-effect-proto.d.ts +30 -0
  172. package/dist/dts/internal/fx-effect-proto.d.ts.map +1 -0
  173. package/dist/dts/internal/fx-primitive.d.ts +109 -0
  174. package/dist/dts/internal/fx-primitive.d.ts.map +1 -0
  175. package/dist/dts/internal/fx.d.ts +245 -0
  176. package/dist/dts/internal/fx.d.ts.map +1 -0
  177. package/dist/dts/internal/helpers.d.ts +48 -0
  178. package/dist/dts/internal/helpers.d.ts.map +1 -0
  179. package/dist/dts/internal/keyed.d.ts +4 -0
  180. package/dist/dts/internal/keyed.d.ts.map +1 -0
  181. package/dist/dts/internal/matchers.d.ts +33 -0
  182. package/dist/dts/internal/matchers.d.ts.map +1 -0
  183. package/dist/dts/internal/protos.d.ts +50 -0
  184. package/dist/dts/internal/protos.d.ts.map +1 -0
  185. package/dist/dts/internal/provide.d.ts +40 -0
  186. package/dist/dts/internal/provide.d.ts.map +1 -0
  187. package/dist/dts/internal/requestIdleCallback.d.ts +3 -0
  188. package/dist/dts/internal/requestIdleCallback.d.ts.map +1 -0
  189. package/dist/dts/internal/run.d.ts +8 -0
  190. package/dist/dts/internal/run.d.ts.map +1 -0
  191. package/dist/dts/internal/schema-ref-subject.d.ts +5 -0
  192. package/dist/dts/internal/schema-ref-subject.d.ts.map +1 -0
  193. package/dist/dts/internal/share.d.ts +30 -0
  194. package/dist/dts/internal/share.d.ts.map +1 -0
  195. package/dist/dts/internal/strategies.d.ts +9 -0
  196. package/dist/dts/internal/strategies.d.ts.map +1 -0
  197. package/dist/dts/internal/sync-operator.d.ts +28 -0
  198. package/dist/dts/internal/sync-operator.d.ts.map +1 -0
  199. package/dist/dts/internal/versioned-transform.d.ts +17 -0
  200. package/dist/dts/internal/versioned-transform.d.ts.map +1 -0
  201. package/dist/dts/internal/withKey.d.ts +4 -0
  202. package/dist/dts/internal/withKey.d.ts.map +1 -0
  203. package/dist/esm/Computed.js +103 -0
  204. package/dist/esm/Computed.js.map +1 -0
  205. package/dist/esm/Emitter.js +28 -0
  206. package/dist/esm/Emitter.js.map +1 -0
  207. package/dist/esm/Filtered.js +83 -0
  208. package/dist/esm/Filtered.js.map +1 -0
  209. package/dist/esm/Form.js +111 -0
  210. package/dist/esm/Form.js.map +1 -0
  211. package/dist/esm/FormEntry.js +72 -0
  212. package/dist/esm/FormEntry.js.map +1 -0
  213. package/dist/esm/Fx.js +1298 -0
  214. package/dist/esm/Fx.js.map +1 -0
  215. package/dist/esm/Guard.js +56 -0
  216. package/dist/esm/Guard.js.map +1 -0
  217. package/dist/esm/Idle.js +166 -0
  218. package/dist/esm/Idle.js.map +1 -0
  219. package/dist/esm/Match.js +149 -0
  220. package/dist/esm/Match.js.map +1 -0
  221. package/dist/esm/Model.js +100 -0
  222. package/dist/esm/Model.js.map +1 -0
  223. package/dist/esm/Pull.js +41 -0
  224. package/dist/esm/Pull.js.map +1 -0
  225. package/dist/esm/RefArray.js +232 -0
  226. package/dist/esm/RefArray.js.map +1 -0
  227. package/dist/esm/RefAsyncData.js +163 -0
  228. package/dist/esm/RefAsyncData.js.map +1 -0
  229. package/dist/esm/RefAsyncDataArray.js +27 -0
  230. package/dist/esm/RefAsyncDataArray.js.map +1 -0
  231. package/dist/esm/RefBoolean.js +31 -0
  232. package/dist/esm/RefBoolean.js.map +1 -0
  233. package/dist/esm/RefChunk.js +194 -0
  234. package/dist/esm/RefChunk.js.map +1 -0
  235. package/dist/esm/RefHashMap.js +176 -0
  236. package/dist/esm/RefHashMap.js.map +1 -0
  237. package/dist/esm/RefHashSet.js +83 -0
  238. package/dist/esm/RefHashSet.js.map +1 -0
  239. package/dist/esm/RefNumber.js +35 -0
  240. package/dist/esm/RefNumber.js.map +1 -0
  241. package/dist/esm/RefSubject.js +217 -0
  242. package/dist/esm/RefSubject.js.map +1 -0
  243. package/dist/esm/Sink.js +108 -0
  244. package/dist/esm/Sink.js.map +1 -0
  245. package/dist/esm/Stream.js +72 -0
  246. package/dist/esm/Stream.js.map +1 -0
  247. package/dist/esm/Subject.js +84 -0
  248. package/dist/esm/Subject.js.map +1 -0
  249. package/dist/esm/TypeId.js +21 -0
  250. package/dist/esm/TypeId.js.map +1 -0
  251. package/dist/esm/Typeclass.js +375 -0
  252. package/dist/esm/Typeclass.js.map +1 -0
  253. package/dist/esm/Versioned.js +94 -0
  254. package/dist/esm/Versioned.js.map +1 -0
  255. package/dist/esm/index.js +56 -0
  256. package/dist/esm/index.js.map +1 -0
  257. package/dist/esm/internal/bounds.js +13 -0
  258. package/dist/esm/internal/bounds.js.map +1 -0
  259. package/dist/esm/internal/core-ref-subject.js +242 -0
  260. package/dist/esm/internal/core-ref-subject.js.map +1 -0
  261. package/dist/esm/internal/core-subject.js +90 -0
  262. package/dist/esm/internal/core-subject.js.map +1 -0
  263. package/dist/esm/internal/core.js +841 -0
  264. package/dist/esm/internal/core.js.map +1 -0
  265. package/dist/esm/internal/deferred-ref.js +23 -0
  266. package/dist/esm/internal/deferred-ref.js.map +1 -0
  267. package/dist/esm/internal/effect-operator.js +127 -0
  268. package/dist/esm/internal/effect-operator.js.map +1 -0
  269. package/dist/esm/internal/effect-primitive.js +41 -0
  270. package/dist/esm/internal/effect-primitive.js.map +1 -0
  271. package/dist/esm/internal/fx-effect-proto.js +43 -0
  272. package/dist/esm/internal/fx-effect-proto.js.map +1 -0
  273. package/dist/esm/internal/fx-primitive.js +175 -0
  274. package/dist/esm/internal/fx-primitive.js.map +1 -0
  275. package/dist/esm/internal/fx.js +216 -0
  276. package/dist/esm/internal/fx.js.map +1 -0
  277. package/dist/esm/internal/helpers.js +253 -0
  278. package/dist/esm/internal/helpers.js.map +1 -0
  279. package/dist/esm/internal/keyed.js +156 -0
  280. package/dist/esm/internal/keyed.js.map +1 -0
  281. package/dist/esm/internal/matchers.js +38 -0
  282. package/dist/esm/internal/matchers.js.map +1 -0
  283. package/dist/esm/internal/protos.js +98 -0
  284. package/dist/esm/internal/protos.js.map +1 -0
  285. package/dist/esm/internal/provide.js +64 -0
  286. package/dist/esm/internal/provide.js.map +1 -0
  287. package/dist/esm/internal/requestIdleCallback.js +16 -0
  288. package/dist/esm/internal/requestIdleCallback.js.map +1 -0
  289. package/dist/esm/internal/run.js +32 -0
  290. package/dist/esm/internal/run.js.map +1 -0
  291. package/dist/esm/internal/schema-ref-subject.js +121 -0
  292. package/dist/esm/internal/schema-ref-subject.js.map +1 -0
  293. package/dist/esm/internal/share.js +64 -0
  294. package/dist/esm/internal/share.js.map +1 -0
  295. package/dist/esm/internal/strategies.js +8 -0
  296. package/dist/esm/internal/strategies.js.map +1 -0
  297. package/dist/esm/internal/sync-operator.js +67 -0
  298. package/dist/esm/internal/sync-operator.js.map +1 -0
  299. package/dist/esm/internal/versioned-transform.js +37 -0
  300. package/dist/esm/internal/versioned-transform.js.map +1 -0
  301. package/dist/esm/internal/withKey.js +57 -0
  302. package/dist/esm/internal/withKey.js.map +1 -0
  303. package/dist/esm/package.json +4 -0
  304. package/package.json +240 -30
  305. package/src/Computed.ts +247 -121
  306. package/src/Emitter.ts +54 -0
  307. package/src/Filtered.ts +239 -128
  308. package/src/Form.ts +373 -0
  309. package/src/FormEntry.ts +174 -0
  310. package/src/Fx.ts +2632 -43
  311. package/src/Guard.ts +159 -0
  312. package/src/Idle.ts +284 -0
  313. package/src/Match.ts +273 -0
  314. package/src/Model.ts +483 -0
  315. package/src/Pull.ts +96 -0
  316. package/src/RefArray.ts +507 -223
  317. package/src/RefAsyncData.ts +547 -0
  318. package/src/RefAsyncDataArray.ts +135 -0
  319. package/src/RefBoolean.ts +71 -0
  320. package/src/RefChunk.ts +403 -0
  321. package/src/RefHashMap.ts +319 -0
  322. package/src/RefHashSet.ts +188 -0
  323. package/src/RefNumber.ts +77 -0
  324. package/src/RefSubject.ts +583 -740
  325. package/src/Sink.ts +268 -11
  326. package/src/Stream.ts +128 -0
  327. package/src/Subject.ts +129 -23
  328. package/src/TypeId.ts +47 -0
  329. package/src/Typeclass.ts +460 -0
  330. package/src/Versioned.ts +302 -0
  331. package/src/index.ts +64 -1083
  332. package/src/internal/bounds.ts +21 -0
  333. package/src/internal/core-ref-subject.ts +528 -0
  334. package/src/internal/core-subject.ts +143 -0
  335. package/src/internal/core.ts +2198 -0
  336. package/src/internal/deferred-ref.ts +26 -0
  337. package/src/internal/effect-operator.ts +282 -0
  338. package/src/internal/effect-primitive.ts +230 -0
  339. package/src/internal/fx-effect-proto.ts +56 -0
  340. package/src/internal/fx-primitive.ts +223 -0
  341. package/src/internal/fx.ts +619 -0
  342. package/src/internal/helpers.ts +428 -0
  343. package/src/internal/keyed.ts +281 -0
  344. package/src/internal/matchers.ts +83 -0
  345. package/src/internal/protos.ts +132 -0
  346. package/src/internal/provide.ts +143 -0
  347. package/src/internal/requestIdleCallback.ts +20 -0
  348. package/src/internal/run.ts +51 -0
  349. package/src/internal/schema-ref-subject.ts +163 -0
  350. package/src/internal/share.ts +105 -0
  351. package/src/internal/strategies.ts +15 -0
  352. package/src/internal/sync-operator.ts +125 -0
  353. package/src/internal/versioned-transform.ts +48 -0
  354. package/src/internal/withKey.ts +92 -0
  355. package/dist/Computed.d.ts +0 -60
  356. package/dist/Computed.d.ts.map +0 -1
  357. package/dist/Computed.js +0 -51
  358. package/dist/Computed.js.map +0 -1
  359. package/dist/Filtered.d.ts +0 -52
  360. package/dist/Filtered.d.ts.map +0 -1
  361. package/dist/Filtered.js +0 -51
  362. package/dist/Filtered.js.map +0 -1
  363. package/dist/Fx.d.ts +0 -27
  364. package/dist/Fx.d.ts.map +0 -1
  365. package/dist/Fx.js +0 -28
  366. package/dist/Fx.js.map +0 -1
  367. package/dist/RefArray.d.ts +0 -116
  368. package/dist/RefArray.d.ts.map +0 -1
  369. package/dist/RefArray.js +0 -67
  370. package/dist/RefArray.js.map +0 -1
  371. package/dist/RefRemoteData.d.ts +0 -44
  372. package/dist/RefRemoteData.d.ts.map +0 -1
  373. package/dist/RefRemoteData.js +0 -63
  374. package/dist/RefRemoteData.js.map +0 -1
  375. package/dist/RefSubject.d.ts +0 -53
  376. package/dist/RefSubject.d.ts.map +0 -1
  377. package/dist/RefSubject.js +0 -404
  378. package/dist/RefSubject.js.map +0 -1
  379. package/dist/RefTransform.d.ts +0 -74
  380. package/dist/RefTransform.d.ts.map +0 -1
  381. package/dist/RefTransform.js +0 -86
  382. package/dist/RefTransform.js.map +0 -1
  383. package/dist/Sink.d.ts +0 -8
  384. package/dist/Sink.d.ts.map +0 -1
  385. package/dist/Sink.js +0 -7
  386. package/dist/Sink.js.map +0 -1
  387. package/dist/Subject.d.ts +0 -18
  388. package/dist/Subject.d.ts.map +0 -1
  389. package/dist/Subject.js +0 -24
  390. package/dist/Subject.js.map +0 -1
  391. package/dist/Transducer.d.ts +0 -2
  392. package/dist/Transducer.d.ts.map +0 -1
  393. package/dist/Transducer.js +0 -2
  394. package/dist/Transducer.js.map +0 -1
  395. package/dist/at.d.ts +0 -4
  396. package/dist/at.d.ts.map +0 -1
  397. package/dist/at.js +0 -6
  398. package/dist/at.js.map +0 -1
  399. package/dist/catchAllCause.d.ts +0 -14
  400. package/dist/catchAllCause.d.ts.map +0 -1
  401. package/dist/catchAllCause.js +0 -39
  402. package/dist/catchAllCause.js.map +0 -1
  403. package/dist/cjs/Computed.d.ts +0 -60
  404. package/dist/cjs/Computed.d.ts.map +0 -1
  405. package/dist/cjs/Filtered.d.ts +0 -52
  406. package/dist/cjs/Filtered.d.ts.map +0 -1
  407. package/dist/cjs/Fx.d.ts +0 -27
  408. package/dist/cjs/Fx.d.ts.map +0 -1
  409. package/dist/cjs/RefArray.d.ts +0 -116
  410. package/dist/cjs/RefArray.d.ts.map +0 -1
  411. package/dist/cjs/RefRemoteData.d.ts +0 -44
  412. package/dist/cjs/RefRemoteData.d.ts.map +0 -1
  413. package/dist/cjs/RefRemoteData.js +0 -93
  414. package/dist/cjs/RefRemoteData.js.map +0 -1
  415. package/dist/cjs/RefSubject.d.ts +0 -53
  416. package/dist/cjs/RefSubject.d.ts.map +0 -1
  417. package/dist/cjs/RefTransform.d.ts +0 -74
  418. package/dist/cjs/RefTransform.d.ts.map +0 -1
  419. package/dist/cjs/RefTransform.js +0 -113
  420. package/dist/cjs/RefTransform.js.map +0 -1
  421. package/dist/cjs/Sink.d.ts +0 -8
  422. package/dist/cjs/Sink.d.ts.map +0 -1
  423. package/dist/cjs/Subject.d.ts +0 -18
  424. package/dist/cjs/Subject.d.ts.map +0 -1
  425. package/dist/cjs/Transducer.d.ts +0 -2
  426. package/dist/cjs/Transducer.d.ts.map +0 -1
  427. package/dist/cjs/Transducer.js +0 -3
  428. package/dist/cjs/Transducer.js.map +0 -1
  429. package/dist/cjs/at.d.ts +0 -4
  430. package/dist/cjs/at.d.ts.map +0 -1
  431. package/dist/cjs/at.js +0 -33
  432. package/dist/cjs/at.js.map +0 -1
  433. package/dist/cjs/catchAllCause.d.ts +0 -14
  434. package/dist/cjs/catchAllCause.d.ts.map +0 -1
  435. package/dist/cjs/catchAllCause.js +0 -71
  436. package/dist/cjs/catchAllCause.js.map +0 -1
  437. package/dist/cjs/combineAll.d.ts +0 -6
  438. package/dist/cjs/combineAll.d.ts.map +0 -1
  439. package/dist/cjs/combineAll.js +0 -55
  440. package/dist/cjs/combineAll.js.map +0 -1
  441. package/dist/cjs/combineAllDiscard.d.ts +0 -3
  442. package/dist/cjs/combineAllDiscard.d.ts.map +0 -1
  443. package/dist/cjs/combineAllDiscard.js +0 -49
  444. package/dist/cjs/combineAllDiscard.js.map +0 -1
  445. package/dist/cjs/continueWith.d.ts +0 -7
  446. package/dist/cjs/continueWith.d.ts.map +0 -1
  447. package/dist/cjs/continueWith.js +0 -47
  448. package/dist/cjs/continueWith.js.map +0 -1
  449. package/dist/cjs/data-first.d.ts +0 -68
  450. package/dist/cjs/data-first.d.ts.map +0 -1
  451. package/dist/cjs/data-first.js +0 -84
  452. package/dist/cjs/data-first.js.map +0 -1
  453. package/dist/cjs/debounce.d.ts +0 -4
  454. package/dist/cjs/debounce.d.ts.map +0 -1
  455. package/dist/cjs/debounce.js +0 -33
  456. package/dist/cjs/debounce.js.map +0 -1
  457. package/dist/cjs/delay.d.ts +0 -4
  458. package/dist/cjs/delay.d.ts.map +0 -1
  459. package/dist/cjs/delay.js +0 -33
  460. package/dist/cjs/delay.js.map +0 -1
  461. package/dist/cjs/empty.d.ts +0 -3
  462. package/dist/cjs/empty.d.ts.map +0 -1
  463. package/dist/cjs/empty.js +0 -33
  464. package/dist/cjs/empty.js.map +0 -1
  465. package/dist/cjs/exhaustMap.d.ts +0 -7
  466. package/dist/cjs/exhaustMap.d.ts.map +0 -1
  467. package/dist/cjs/exhaustMap.js +0 -23
  468. package/dist/cjs/exhaustMap.js.map +0 -1
  469. package/dist/cjs/exhaustMapCause.d.ts +0 -8
  470. package/dist/cjs/exhaustMapCause.d.ts.map +0 -1
  471. package/dist/cjs/exhaustMapCause.js +0 -50
  472. package/dist/cjs/exhaustMapCause.js.map +0 -1
  473. package/dist/cjs/exhaustMapLatest.d.ts +0 -7
  474. package/dist/cjs/exhaustMapLatest.d.ts.map +0 -1
  475. package/dist/cjs/exhaustMapLatest.js +0 -23
  476. package/dist/cjs/exhaustMapLatest.js.map +0 -1
  477. package/dist/cjs/exhaustMapLatestCause.d.ts +0 -8
  478. package/dist/cjs/exhaustMapLatestCause.d.ts.map +0 -1
  479. package/dist/cjs/exhaustMapLatestCause.js +0 -50
  480. package/dist/cjs/exhaustMapLatestCause.js.map +0 -1
  481. package/dist/cjs/failCause.d.ts +0 -8
  482. package/dist/cjs/failCause.d.ts.map +0 -1
  483. package/dist/cjs/failCause.js +0 -45
  484. package/dist/cjs/failCause.js.map +0 -1
  485. package/dist/cjs/filter.d.ts +0 -7
  486. package/dist/cjs/filter.d.ts.map +0 -1
  487. package/dist/cjs/filter.js +0 -38
  488. package/dist/cjs/filter.js.map +0 -1
  489. package/dist/cjs/filterMap.d.ts +0 -5
  490. package/dist/cjs/filterMap.d.ts.map +0 -1
  491. package/dist/cjs/filterMap.js +0 -38
  492. package/dist/cjs/filterMap.js.map +0 -1
  493. package/dist/cjs/flatMap.d.ts +0 -7
  494. package/dist/cjs/flatMap.d.ts.map +0 -1
  495. package/dist/cjs/flatMap.js +0 -23
  496. package/dist/cjs/flatMap.js.map +0 -1
  497. package/dist/cjs/fromArray.d.ts +0 -3
  498. package/dist/cjs/fromArray.d.ts.map +0 -1
  499. package/dist/cjs/fromArray.js +0 -42
  500. package/dist/cjs/fromArray.js.map +0 -1
  501. package/dist/cjs/fromDequeue.d.ts +0 -5
  502. package/dist/cjs/fromDequeue.d.ts.map +0 -1
  503. package/dist/cjs/fromDequeue.js +0 -49
  504. package/dist/cjs/fromDequeue.js.map +0 -1
  505. package/dist/cjs/fromEffect.d.ts +0 -4
  506. package/dist/cjs/fromEffect.d.ts.map +0 -1
  507. package/dist/cjs/fromEffect.js +0 -46
  508. package/dist/cjs/fromEffect.js.map +0 -1
  509. package/dist/cjs/fromEmitter.d.ts +0 -11
  510. package/dist/cjs/fromEmitter.d.ts.map +0 -1
  511. package/dist/cjs/fromEmitter.js +0 -53
  512. package/dist/cjs/fromEmitter.js.map +0 -1
  513. package/dist/cjs/fromFxEffect.d.ts +0 -4
  514. package/dist/cjs/fromFxEffect.d.ts.map +0 -1
  515. package/dist/cjs/fromFxEffect.js +0 -33
  516. package/dist/cjs/fromFxEffect.js.map +0 -1
  517. package/dist/cjs/fromHub.d.ts +0 -5
  518. package/dist/cjs/fromHub.d.ts.map +0 -1
  519. package/dist/cjs/fromHub.js +0 -34
  520. package/dist/cjs/fromHub.js.map +0 -1
  521. package/dist/cjs/fromIterable.d.ts +0 -3
  522. package/dist/cjs/fromIterable.d.ts.map +0 -1
  523. package/dist/cjs/fromIterable.js +0 -47
  524. package/dist/cjs/fromIterable.js.map +0 -1
  525. package/dist/cjs/gen.d.ts +0 -7
  526. package/dist/cjs/gen.d.ts.map +0 -1
  527. package/dist/cjs/gen.js +0 -33
  528. package/dist/cjs/gen.js.map +0 -1
  529. package/dist/cjs/helpers.d.ts +0 -12
  530. package/dist/cjs/helpers.d.ts.map +0 -1
  531. package/dist/cjs/helpers.js +0 -90
  532. package/dist/cjs/helpers.js.map +0 -1
  533. package/dist/cjs/hold.d.ts +0 -14
  534. package/dist/cjs/hold.d.ts.map +0 -1
  535. package/dist/cjs/hold.js +0 -56
  536. package/dist/cjs/hold.js.map +0 -1
  537. package/dist/cjs/index.d.ts +0 -391
  538. package/dist/cjs/index.d.ts.map +0 -1
  539. package/dist/cjs/keyed.d.ts +0 -4
  540. package/dist/cjs/keyed.d.ts.map +0 -1
  541. package/dist/cjs/keyed.js +0 -183
  542. package/dist/cjs/keyed.js.map +0 -1
  543. package/dist/cjs/map.d.ts +0 -4
  544. package/dist/cjs/map.d.ts.map +0 -1
  545. package/dist/cjs/map.js +0 -37
  546. package/dist/cjs/map.js.map +0 -1
  547. package/dist/cjs/mapEffect.d.ts +0 -7
  548. package/dist/cjs/mapEffect.d.ts.map +0 -1
  549. package/dist/cjs/mapEffect.js +0 -36
  550. package/dist/cjs/mapEffect.js.map +0 -1
  551. package/dist/cjs/mergeAll.d.ts +0 -5
  552. package/dist/cjs/mergeAll.d.ts.map +0 -1
  553. package/dist/cjs/mergeAll.js +0 -45
  554. package/dist/cjs/mergeAll.js.map +0 -1
  555. package/dist/cjs/mergeBufferConcurrently.d.ts +0 -8
  556. package/dist/cjs/mergeBufferConcurrently.d.ts.map +0 -1
  557. package/dist/cjs/mergeBufferConcurrently.js +0 -97
  558. package/dist/cjs/mergeBufferConcurrently.js.map +0 -1
  559. package/dist/cjs/mergeConcurrently.d.ts +0 -3
  560. package/dist/cjs/mergeConcurrently.d.ts.map +0 -1
  561. package/dist/cjs/mergeConcurrently.js +0 -69
  562. package/dist/cjs/mergeConcurrently.js.map +0 -1
  563. package/dist/cjs/multicast.d.ts +0 -32
  564. package/dist/cjs/multicast.d.ts.map +0 -1
  565. package/dist/cjs/multicast.js +0 -110
  566. package/dist/cjs/multicast.js.map +0 -1
  567. package/dist/cjs/never.d.ts +0 -3
  568. package/dist/cjs/never.d.ts.map +0 -1
  569. package/dist/cjs/never.js +0 -33
  570. package/dist/cjs/never.js.map +0 -1
  571. package/dist/cjs/observe.d.ts +0 -9
  572. package/dist/cjs/observe.d.ts.map +0 -1
  573. package/dist/cjs/observe.js +0 -52
  574. package/dist/cjs/observe.js.map +0 -1
  575. package/dist/cjs/onExit.d.ts +0 -5
  576. package/dist/cjs/onExit.d.ts.map +0 -1
  577. package/dist/cjs/onExit.js +0 -33
  578. package/dist/cjs/onExit.js.map +0 -1
  579. package/dist/cjs/onInterrupt.d.ts +0 -6
  580. package/dist/cjs/onInterrupt.d.ts.map +0 -1
  581. package/dist/cjs/onInterrupt.js +0 -33
  582. package/dist/cjs/onInterrupt.js.map +0 -1
  583. package/dist/cjs/orElse.d.ts +0 -4
  584. package/dist/cjs/orElse.d.ts.map +0 -1
  585. package/dist/cjs/orElse.js +0 -34
  586. package/dist/cjs/orElse.js.map +0 -1
  587. package/dist/cjs/promise.d.ts +0 -8
  588. package/dist/cjs/promise.d.ts.map +0 -1
  589. package/dist/cjs/promise.js +0 -54
  590. package/dist/cjs/promise.js.map +0 -1
  591. package/dist/cjs/provide.d.ts +0 -12
  592. package/dist/cjs/provide.d.ts.map +0 -1
  593. package/dist/cjs/provide.js +0 -62
  594. package/dist/cjs/provide.js.map +0 -1
  595. package/dist/cjs/reduce.d.ts +0 -5
  596. package/dist/cjs/reduce.d.ts.map +0 -1
  597. package/dist/cjs/reduce.js +0 -37
  598. package/dist/cjs/reduce.js.map +0 -1
  599. package/dist/cjs/scan.d.ts +0 -3
  600. package/dist/cjs/scan.d.ts.map +0 -1
  601. package/dist/cjs/scan.js +0 -36
  602. package/dist/cjs/scan.js.map +0 -1
  603. package/dist/cjs/scoped.d.ts +0 -4
  604. package/dist/cjs/scoped.d.ts.map +0 -1
  605. package/dist/cjs/scoped.js +0 -33
  606. package/dist/cjs/scoped.js.map +0 -1
  607. package/dist/cjs/skipRepeats.d.ts +0 -5
  608. package/dist/cjs/skipRepeats.d.ts.map +0 -1
  609. package/dist/cjs/skipRepeats.js +0 -46
  610. package/dist/cjs/skipRepeats.js.map +0 -1
  611. package/dist/cjs/skipWhile.d.ts +0 -5
  612. package/dist/cjs/skipWhile.d.ts.map +0 -1
  613. package/dist/cjs/skipWhile.js +0 -46
  614. package/dist/cjs/skipWhile.js.map +0 -1
  615. package/dist/cjs/slice.d.ts +0 -5
  616. package/dist/cjs/slice.d.ts.map +0 -1
  617. package/dist/cjs/slice.js +0 -55
  618. package/dist/cjs/slice.js.map +0 -1
  619. package/dist/cjs/snapshotEffect.d.ts +0 -5
  620. package/dist/cjs/snapshotEffect.d.ts.map +0 -1
  621. package/dist/cjs/snapshotEffect.js +0 -50
  622. package/dist/cjs/snapshotEffect.js.map +0 -1
  623. package/dist/cjs/struct.d.ts +0 -5
  624. package/dist/cjs/struct.d.ts.map +0 -1
  625. package/dist/cjs/struct.js +0 -10
  626. package/dist/cjs/struct.js.map +0 -1
  627. package/dist/cjs/succeed.d.ts +0 -4
  628. package/dist/cjs/succeed.d.ts.map +0 -1
  629. package/dist/cjs/succeed.js +0 -10
  630. package/dist/cjs/succeed.js.map +0 -1
  631. package/dist/cjs/suspend.d.ts +0 -3
  632. package/dist/cjs/suspend.d.ts.map +0 -1
  633. package/dist/cjs/suspend.js +0 -9
  634. package/dist/cjs/suspend.js.map +0 -1
  635. package/dist/cjs/switchMap.d.ts +0 -7
  636. package/dist/cjs/switchMap.d.ts.map +0 -1
  637. package/dist/cjs/switchMap.js +0 -46
  638. package/dist/cjs/switchMap.js.map +0 -1
  639. package/dist/cjs/switchMapCause.d.ts +0 -9
  640. package/dist/cjs/switchMapCause.d.ts.map +0 -1
  641. package/dist/cjs/switchMapCause.js +0 -61
  642. package/dist/cjs/switchMapCause.js.map +0 -1
  643. package/dist/cjs/switchMatch.d.ts +0 -8
  644. package/dist/cjs/switchMatch.d.ts.map +0 -1
  645. package/dist/cjs/switchMatch.js +0 -50
  646. package/dist/cjs/switchMatch.js.map +0 -1
  647. package/dist/cjs/takeWhile.d.ts +0 -5
  648. package/dist/cjs/takeWhile.d.ts.map +0 -1
  649. package/dist/cjs/takeWhile.js +0 -46
  650. package/dist/cjs/takeWhile.js.map +0 -1
  651. package/dist/cjs/tap.d.ts +0 -5
  652. package/dist/cjs/tap.d.ts.map +0 -1
  653. package/dist/cjs/tap.js +0 -37
  654. package/dist/cjs/tap.js.map +0 -1
  655. package/dist/cjs/tapCause.d.ts +0 -8
  656. package/dist/cjs/tapCause.d.ts.map +0 -1
  657. package/dist/cjs/tapCause.js +0 -50
  658. package/dist/cjs/tapCause.js.map +0 -1
  659. package/dist/cjs/test-utils.d.ts +0 -5
  660. package/dist/cjs/test-utils.d.ts.map +0 -1
  661. package/dist/cjs/test-utils.js +0 -52
  662. package/dist/cjs/test-utils.js.map +0 -1
  663. package/dist/cjs/throttle.d.ts +0 -4
  664. package/dist/cjs/throttle.d.ts.map +0 -1
  665. package/dist/cjs/throttle.js +0 -34
  666. package/dist/cjs/throttle.js.map +0 -1
  667. package/dist/cjs/toArray.d.ts +0 -5
  668. package/dist/cjs/toArray.d.ts.map +0 -1
  669. package/dist/cjs/toArray.js +0 -36
  670. package/dist/cjs/toArray.js.map +0 -1
  671. package/dist/cjs/toChunk.d.ts +0 -6
  672. package/dist/cjs/toChunk.d.ts.map +0 -1
  673. package/dist/cjs/toChunk.js +0 -38
  674. package/dist/cjs/toChunk.js.map +0 -1
  675. package/dist/cjs/toEnqueue.d.ts +0 -6
  676. package/dist/cjs/toEnqueue.d.ts.map +0 -1
  677. package/dist/cjs/toEnqueue.js +0 -9
  678. package/dist/cjs/toEnqueue.js.map +0 -1
  679. package/dist/cjs/toReadonlyArray.d.ts +0 -5
  680. package/dist/cjs/toReadonlyArray.d.ts.map +0 -1
  681. package/dist/cjs/toReadonlyArray.js +0 -9
  682. package/dist/cjs/toReadonlyArray.js.map +0 -1
  683. package/dist/cjs/toStream.d.ts +0 -4
  684. package/dist/cjs/toStream.d.ts.map +0 -1
  685. package/dist/cjs/toStream.js +0 -39
  686. package/dist/cjs/toStream.js.map +0 -1
  687. package/dist/combineAll.d.ts +0 -6
  688. package/dist/combineAll.d.ts.map +0 -1
  689. package/dist/combineAll.js +0 -27
  690. package/dist/combineAll.js.map +0 -1
  691. package/dist/combineAllDiscard.d.ts +0 -3
  692. package/dist/combineAllDiscard.d.ts.map +0 -1
  693. package/dist/combineAllDiscard.js +0 -22
  694. package/dist/combineAllDiscard.js.map +0 -1
  695. package/dist/continueWith.d.ts +0 -7
  696. package/dist/continueWith.d.ts.map +0 -1
  697. package/dist/continueWith.js +0 -17
  698. package/dist/continueWith.js.map +0 -1
  699. package/dist/data-first.d.ts +0 -68
  700. package/dist/data-first.d.ts.map +0 -1
  701. package/dist/data-first.js +0 -68
  702. package/dist/data-first.js.map +0 -1
  703. package/dist/debounce.d.ts +0 -4
  704. package/dist/debounce.d.ts.map +0 -1
  705. package/dist/debounce.js +0 -6
  706. package/dist/debounce.js.map +0 -1
  707. package/dist/delay.d.ts +0 -4
  708. package/dist/delay.d.ts.map +0 -1
  709. package/dist/delay.js +0 -6
  710. package/dist/delay.js.map +0 -1
  711. package/dist/empty.d.ts +0 -3
  712. package/dist/empty.d.ts.map +0 -1
  713. package/dist/empty.js +0 -6
  714. package/dist/empty.js.map +0 -1
  715. package/dist/exhaustMap.d.ts +0 -7
  716. package/dist/exhaustMap.d.ts.map +0 -1
  717. package/dist/exhaustMap.js +0 -16
  718. package/dist/exhaustMap.js.map +0 -1
  719. package/dist/exhaustMapCause.d.ts +0 -8
  720. package/dist/exhaustMapCause.d.ts.map +0 -1
  721. package/dist/exhaustMapCause.js +0 -20
  722. package/dist/exhaustMapCause.js.map +0 -1
  723. package/dist/exhaustMapLatest.d.ts +0 -7
  724. package/dist/exhaustMapLatest.d.ts.map +0 -1
  725. package/dist/exhaustMapLatest.js +0 -16
  726. package/dist/exhaustMapLatest.js.map +0 -1
  727. package/dist/exhaustMapLatestCause.d.ts +0 -8
  728. package/dist/exhaustMapLatestCause.d.ts.map +0 -1
  729. package/dist/exhaustMapLatestCause.js +0 -20
  730. package/dist/exhaustMapLatestCause.js.map +0 -1
  731. package/dist/failCause.d.ts +0 -8
  732. package/dist/failCause.d.ts.map +0 -1
  733. package/dist/failCause.js +0 -15
  734. package/dist/failCause.js.map +0 -1
  735. package/dist/filter.d.ts +0 -7
  736. package/dist/filter.d.ts.map +0 -1
  737. package/dist/filter.js +0 -10
  738. package/dist/filter.js.map +0 -1
  739. package/dist/filterMap.d.ts +0 -5
  740. package/dist/filterMap.d.ts.map +0 -1
  741. package/dist/filterMap.js +0 -10
  742. package/dist/filterMap.js.map +0 -1
  743. package/dist/flatMap.d.ts +0 -7
  744. package/dist/flatMap.d.ts.map +0 -1
  745. package/dist/flatMap.js +0 -16
  746. package/dist/flatMap.js.map +0 -1
  747. package/dist/fromArray.d.ts +0 -3
  748. package/dist/fromArray.d.ts.map +0 -1
  749. package/dist/fromArray.js +0 -15
  750. package/dist/fromArray.js.map +0 -1
  751. package/dist/fromDequeue.d.ts +0 -5
  752. package/dist/fromDequeue.d.ts.map +0 -1
  753. package/dist/fromDequeue.js +0 -21
  754. package/dist/fromDequeue.js.map +0 -1
  755. package/dist/fromEffect.d.ts +0 -4
  756. package/dist/fromEffect.d.ts.map +0 -1
  757. package/dist/fromEffect.js +0 -19
  758. package/dist/fromEffect.js.map +0 -1
  759. package/dist/fromEmitter.d.ts +0 -11
  760. package/dist/fromEmitter.d.ts.map +0 -1
  761. package/dist/fromEmitter.js +0 -26
  762. package/dist/fromEmitter.js.map +0 -1
  763. package/dist/fromFxEffect.d.ts +0 -4
  764. package/dist/fromFxEffect.d.ts.map +0 -1
  765. package/dist/fromFxEffect.js +0 -6
  766. package/dist/fromFxEffect.js.map +0 -1
  767. package/dist/fromHub.d.ts +0 -5
  768. package/dist/fromHub.d.ts.map +0 -1
  769. package/dist/fromHub.js +0 -7
  770. package/dist/fromHub.js.map +0 -1
  771. package/dist/fromIterable.d.ts +0 -3
  772. package/dist/fromIterable.d.ts.map +0 -1
  773. package/dist/fromIterable.js +0 -20
  774. package/dist/fromIterable.js.map +0 -1
  775. package/dist/gen.d.ts +0 -7
  776. package/dist/gen.d.ts.map +0 -1
  777. package/dist/gen.js +0 -6
  778. package/dist/gen.js.map +0 -1
  779. package/dist/helpers.d.ts +0 -12
  780. package/dist/helpers.d.ts.map +0 -1
  781. package/dist/helpers.js +0 -59
  782. package/dist/helpers.js.map +0 -1
  783. package/dist/hold.d.ts +0 -14
  784. package/dist/hold.d.ts.map +0 -1
  785. package/dist/hold.js +0 -28
  786. package/dist/hold.js.map +0 -1
  787. package/dist/index.d.ts +0 -391
  788. package/dist/index.d.ts.map +0 -1
  789. package/dist/index.js +0 -139
  790. package/dist/index.js.map +0 -1
  791. package/dist/keyed.d.ts +0 -4
  792. package/dist/keyed.d.ts.map +0 -1
  793. package/dist/keyed.js +0 -156
  794. package/dist/keyed.js.map +0 -1
  795. package/dist/map.d.ts +0 -4
  796. package/dist/map.d.ts.map +0 -1
  797. package/dist/map.js +0 -9
  798. package/dist/map.js.map +0 -1
  799. package/dist/mapEffect.d.ts +0 -7
  800. package/dist/mapEffect.d.ts.map +0 -1
  801. package/dist/mapEffect.js +0 -9
  802. package/dist/mapEffect.js.map +0 -1
  803. package/dist/mergeAll.d.ts +0 -5
  804. package/dist/mergeAll.d.ts.map +0 -1
  805. package/dist/mergeAll.js +0 -16
  806. package/dist/mergeAll.js.map +0 -1
  807. package/dist/mergeBufferConcurrently.d.ts +0 -8
  808. package/dist/mergeBufferConcurrently.d.ts.map +0 -1
  809. package/dist/mergeBufferConcurrently.js +0 -70
  810. package/dist/mergeBufferConcurrently.js.map +0 -1
  811. package/dist/mergeConcurrently.d.ts +0 -3
  812. package/dist/mergeConcurrently.d.ts.map +0 -1
  813. package/dist/mergeConcurrently.js +0 -42
  814. package/dist/mergeConcurrently.js.map +0 -1
  815. package/dist/multicast.d.ts +0 -32
  816. package/dist/multicast.d.ts.map +0 -1
  817. package/dist/multicast.js +0 -82
  818. package/dist/multicast.js.map +0 -1
  819. package/dist/never.d.ts +0 -3
  820. package/dist/never.d.ts.map +0 -1
  821. package/dist/never.js +0 -6
  822. package/dist/never.js.map +0 -1
  823. package/dist/observe.d.ts +0 -9
  824. package/dist/observe.d.ts.map +0 -1
  825. package/dist/observe.js +0 -22
  826. package/dist/observe.js.map +0 -1
  827. package/dist/onExit.d.ts +0 -5
  828. package/dist/onExit.d.ts.map +0 -1
  829. package/dist/onExit.js +0 -6
  830. package/dist/onExit.js.map +0 -1
  831. package/dist/onInterrupt.d.ts +0 -6
  832. package/dist/onInterrupt.d.ts.map +0 -1
  833. package/dist/onInterrupt.js +0 -6
  834. package/dist/onInterrupt.js.map +0 -1
  835. package/dist/orElse.d.ts +0 -4
  836. package/dist/orElse.d.ts.map +0 -1
  837. package/dist/orElse.js +0 -7
  838. package/dist/orElse.js.map +0 -1
  839. package/dist/promise.d.ts +0 -8
  840. package/dist/promise.d.ts.map +0 -1
  841. package/dist/promise.js +0 -22
  842. package/dist/promise.js.map +0 -1
  843. package/dist/provide.d.ts +0 -12
  844. package/dist/provide.d.ts.map +0 -1
  845. package/dist/provide.js +0 -29
  846. package/dist/provide.js.map +0 -1
  847. package/dist/reduce.d.ts +0 -5
  848. package/dist/reduce.d.ts.map +0 -1
  849. package/dist/reduce.js +0 -10
  850. package/dist/reduce.js.map +0 -1
  851. package/dist/scan.d.ts +0 -3
  852. package/dist/scan.d.ts.map +0 -1
  853. package/dist/scan.js +0 -9
  854. package/dist/scan.js.map +0 -1
  855. package/dist/scoped.d.ts +0 -4
  856. package/dist/scoped.d.ts.map +0 -1
  857. package/dist/scoped.js +0 -6
  858. package/dist/scoped.js.map +0 -1
  859. package/dist/skipRepeats.d.ts +0 -5
  860. package/dist/skipRepeats.d.ts.map +0 -1
  861. package/dist/skipRepeats.js +0 -15
  862. package/dist/skipRepeats.js.map +0 -1
  863. package/dist/skipWhile.d.ts +0 -5
  864. package/dist/skipWhile.d.ts.map +0 -1
  865. package/dist/skipWhile.js +0 -18
  866. package/dist/skipWhile.js.map +0 -1
  867. package/dist/slice.d.ts +0 -5
  868. package/dist/slice.d.ts.map +0 -1
  869. package/dist/slice.js +0 -26
  870. package/dist/slice.js.map +0 -1
  871. package/dist/snapshotEffect.d.ts +0 -5
  872. package/dist/snapshotEffect.d.ts.map +0 -1
  873. package/dist/snapshotEffect.js +0 -22
  874. package/dist/snapshotEffect.js.map +0 -1
  875. package/dist/struct.d.ts +0 -5
  876. package/dist/struct.d.ts.map +0 -1
  877. package/dist/struct.js +0 -6
  878. package/dist/struct.js.map +0 -1
  879. package/dist/succeed.d.ts +0 -4
  880. package/dist/succeed.d.ts.map +0 -1
  881. package/dist/succeed.js +0 -6
  882. package/dist/succeed.js.map +0 -1
  883. package/dist/suspend.d.ts +0 -3
  884. package/dist/suspend.d.ts.map +0 -1
  885. package/dist/suspend.js +0 -5
  886. package/dist/suspend.js.map +0 -1
  887. package/dist/switchMap.d.ts +0 -7
  888. package/dist/switchMap.d.ts.map +0 -1
  889. package/dist/switchMap.js +0 -16
  890. package/dist/switchMap.js.map +0 -1
  891. package/dist/switchMapCause.d.ts +0 -9
  892. package/dist/switchMapCause.d.ts.map +0 -1
  893. package/dist/switchMapCause.js +0 -30
  894. package/dist/switchMapCause.js.map +0 -1
  895. package/dist/switchMatch.d.ts +0 -8
  896. package/dist/switchMatch.d.ts.map +0 -1
  897. package/dist/switchMatch.js +0 -20
  898. package/dist/switchMatch.js.map +0 -1
  899. package/dist/takeWhile.d.ts +0 -5
  900. package/dist/takeWhile.d.ts.map +0 -1
  901. package/dist/takeWhile.js +0 -18
  902. package/dist/takeWhile.js.map +0 -1
  903. package/dist/tap.d.ts +0 -5
  904. package/dist/tap.d.ts.map +0 -1
  905. package/dist/tap.js +0 -9
  906. package/dist/tap.js.map +0 -1
  907. package/dist/tapCause.d.ts +0 -8
  908. package/dist/tapCause.d.ts.map +0 -1
  909. package/dist/tapCause.js +0 -20
  910. package/dist/tapCause.js.map +0 -1
  911. package/dist/test-utils.d.ts +0 -5
  912. package/dist/test-utils.d.ts.map +0 -1
  913. package/dist/test-utils.js +0 -24
  914. package/dist/test-utils.js.map +0 -1
  915. package/dist/throttle.d.ts +0 -4
  916. package/dist/throttle.d.ts.map +0 -1
  917. package/dist/throttle.js +0 -7
  918. package/dist/throttle.js.map +0 -1
  919. package/dist/toArray.d.ts +0 -5
  920. package/dist/toArray.d.ts.map +0 -1
  921. package/dist/toArray.js +0 -9
  922. package/dist/toArray.js.map +0 -1
  923. package/dist/toChunk.d.ts +0 -6
  924. package/dist/toChunk.d.ts.map +0 -1
  925. package/dist/toChunk.js +0 -11
  926. package/dist/toChunk.js.map +0 -1
  927. package/dist/toEnqueue.d.ts +0 -6
  928. package/dist/toEnqueue.d.ts.map +0 -1
  929. package/dist/toEnqueue.js +0 -5
  930. package/dist/toEnqueue.js.map +0 -1
  931. package/dist/toReadonlyArray.d.ts +0 -5
  932. package/dist/toReadonlyArray.d.ts.map +0 -1
  933. package/dist/toReadonlyArray.js +0 -5
  934. package/dist/toReadonlyArray.js.map +0 -1
  935. package/dist/toStream.d.ts +0 -4
  936. package/dist/toStream.d.ts.map +0 -1
  937. package/dist/toStream.js +0 -12
  938. package/dist/toStream.js.map +0 -1
  939. package/dist/tsconfig.cjs.build.tsbuildinfo +0 -1
  940. package/eslintrc.json +0 -3
  941. package/project.json +0 -43
  942. package/readme.md +0 -3
  943. package/src/RefRemoteData.test.ts +0 -100
  944. package/src/RefRemoteData.ts +0 -172
  945. package/src/RefSubject.test.ts +0 -437
  946. package/src/RefTransform.ts +0 -210
  947. package/src/Transducer.ts +0 -0
  948. package/src/at.ts +0 -8
  949. package/src/catchAllCause.test.ts +0 -23
  950. package/src/catchAllCause.ts +0 -82
  951. package/src/combineAll.ts +0 -65
  952. package/src/combineAllDiscard.ts +0 -46
  953. package/src/continueWith.test.ts +0 -17
  954. package/src/continueWith.ts +0 -30
  955. package/src/data-first.ts +0 -67
  956. package/src/debounce.test.ts +0 -18
  957. package/src/debounce.ts +0 -9
  958. package/src/delay.test.ts +0 -13
  959. package/src/delay.ts +0 -8
  960. package/src/empty.test.ts +0 -10
  961. package/src/empty.ts +0 -7
  962. package/src/exhaustMap.test.ts +0 -19
  963. package/src/exhaustMap.ts +0 -31
  964. package/src/exhaustMapCause.test.ts +0 -23
  965. package/src/exhaustMapCause.ts +0 -41
  966. package/src/exhaustMapLatest.test.ts +0 -19
  967. package/src/exhaustMapLatest.ts +0 -31
  968. package/src/exhaustMapLatestCause.test.ts +0 -23
  969. package/src/exhaustMapLatestCause.ts +0 -41
  970. package/src/failCause.test.ts +0 -21
  971. package/src/failCause.ts +0 -20
  972. package/src/filter.ts +0 -23
  973. package/src/filterMap.ts +0 -19
  974. package/src/flatMap.test.ts +0 -19
  975. package/src/flatMap.ts +0 -31
  976. package/src/fromArray.test.ts +0 -11
  977. package/src/fromArray.ts +0 -21
  978. package/src/fromDequeue.ts +0 -39
  979. package/src/fromEffect.test.ts +0 -16
  980. package/src/fromEffect.ts +0 -23
  981. package/src/fromEmitter.test.ts +0 -33
  982. package/src/fromEmitter.ts +0 -46
  983. package/src/fromFxEffect.test.ts +0 -17
  984. package/src/fromFxEffect.ts +0 -11
  985. package/src/fromHub.ts +0 -10
  986. package/src/fromIterable.test.ts +0 -11
  987. package/src/fromIterable.ts +0 -27
  988. package/src/gen.test.ts +0 -30
  989. package/src/gen.ts +0 -28
  990. package/src/helpers.ts +0 -142
  991. package/src/hold.test.ts +0 -37
  992. package/src/hold.ts +0 -36
  993. package/src/keyed.test.ts +0 -47
  994. package/src/keyed.ts +0 -278
  995. package/src/map.test.ts +0 -17
  996. package/src/map.ts +0 -11
  997. package/src/mapEffect.ts +0 -20
  998. package/src/mergeAll.test.ts +0 -17
  999. package/src/mergeAll.ts +0 -38
  1000. package/src/mergeBufferConcurrently.test.ts +0 -37
  1001. package/src/mergeBufferConcurrently.ts +0 -106
  1002. package/src/mergeConcurrently.test.ts +0 -20
  1003. package/src/mergeConcurrently.ts +0 -57
  1004. package/src/multicast.test.ts +0 -88
  1005. package/src/multicast.ts +0 -131
  1006. package/src/never.ts +0 -7
  1007. package/src/observe.ts +0 -43
  1008. package/src/onExit.ts +0 -13
  1009. package/src/onInterrupt.ts +0 -16
  1010. package/src/orElse.ts +0 -16
  1011. package/src/promise.ts +0 -37
  1012. package/src/provide.ts +0 -76
  1013. package/src/reduce.ts +0 -19
  1014. package/src/scan.ts +0 -15
  1015. package/src/scoped.ts +0 -8
  1016. package/src/skipRepeats.ts +0 -29
  1017. package/src/skipWhile.test.ts +0 -27
  1018. package/src/skipWhile.ts +0 -31
  1019. package/src/slice.test.ts +0 -26
  1020. package/src/slice.ts +0 -43
  1021. package/src/snapshotEffect.ts +0 -49
  1022. package/src/struct.ts +0 -18
  1023. package/src/succeed.ts +0 -7
  1024. package/src/suspend.ts +0 -5
  1025. package/src/switchMap.test.ts +0 -19
  1026. package/src/switchMap.ts +0 -38
  1027. package/src/switchMapCause.test.ts +0 -23
  1028. package/src/switchMapCause.ts +0 -57
  1029. package/src/switchMatch.test.ts +0 -26
  1030. package/src/switchMatch.ts +0 -62
  1031. package/src/takeWhile.test.ts +0 -27
  1032. package/src/takeWhile.ts +0 -34
  1033. package/src/tap.ts +0 -22
  1034. package/src/tapCause.ts +0 -44
  1035. package/src/test-utils.ts +0 -38
  1036. package/src/throttle.test.ts +0 -18
  1037. package/src/throttle.ts +0 -13
  1038. package/src/toArray.ts +0 -16
  1039. package/src/toChunk.ts +0 -16
  1040. package/src/toEnqueue.ts +0 -13
  1041. package/src/toReadonlyArray.ts +0 -11
  1042. package/src/toStream.ts +0 -23
  1043. package/tsconfig.build.json +0 -8
  1044. package/tsconfig.build.tsbuildinfo +0 -1
  1045. package/tsconfig.cjs.build.json +0 -13
  1046. package/tsconfig.json +0 -18
  1047. package/vite.config.js +0 -3
package/src/RefSubject.ts CHANGED
@@ -1,800 +1,643 @@
1
- import * as Context from '@effect/data/Context'
2
- import * as Equal from '@effect/data/Equal'
3
- import * as Equivalence from '@effect/data/Equivalence'
4
- import { identity, pipe } from '@effect/data/Function'
5
- import * as Hash from '@effect/data/Hash'
6
- import * as MutableRef from '@effect/data/MutableRef'
7
- import * as Option from '@effect/data/Option'
8
- import { Pipeable, pipeArguments } from '@effect/data/Pipeable'
9
- import * as Deferred from '@effect/io/Deferred'
10
- import * as Effect from '@effect/io/Effect'
11
- import * as Fiber from '@effect/io/Fiber'
12
- import * as Scope from '@effect/io/Scope'
13
- import fastDeepEqual from 'fast-deep-equal'
14
-
15
- import { Computed, ComputedImpl, ComputedTypeId } from './Computed.js'
16
- import { FilteredImpl } from './Filtered.js'
17
- import { Fx, FxTypeId, Sink, isFx } from './Fx.js'
18
- import { RefTransform, RefTransformImpl } from './RefTransform.js'
19
- import { Subject } from './Subject.js'
20
- import { combineAll } from './combineAll.js'
21
- import { HoldFx } from './hold.js'
22
- import { merge } from './mergeAll.js'
23
- import { never } from './never.js'
24
- import { drain } from './observe.js'
25
- import { struct } from './struct.js'
26
- import { unit } from './succeed.js'
27
- import { switchMatchCauseEffect } from './switchMatch.js'
28
-
29
- const unboundedConcurrency = { concurrency: 'unbounded' } as const
30
-
31
- const refVariance = {
32
- _R: identity,
33
- _E: identity,
34
- _A: identity,
35
- }
36
-
37
- export const RefSubjectTypeId = Symbol.for('@typed/fx/RefSubject')
38
- export type RefSubjectTypeId = typeof RefSubjectTypeId
39
-
40
- export interface RefSubject<in out E, in out A>
41
- extends Subject<E, A>,
42
- Computed<never, E, A>,
43
- Pipeable {
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
6
+ */
7
+
8
+ import type { Schema } from "@effect/schema"
9
+ import * as C from "@typed/context"
10
+ import type { Stream, SubscriptionRef } from "effect"
11
+ import { Cause, Exit, identity } from "effect"
12
+ import * as Effect from "effect/Effect"
13
+ import { equals } from "effect/Equal"
14
+ import type { Equivalence } from "effect/Equivalence"
15
+ import { dual } from "effect/Function"
16
+ import type * as Layer from "effect/Layer"
17
+ import * as Option from "effect/Option"
18
+ import type * as Scope from "effect/Scope"
19
+ import { Computed, fromTag } from "./Computed"
20
+ import { Filtered } from "./Filtered"
21
+ import type * as Fx from "./Fx"
22
+ import { fromStream, provide, skipRepeatsWith } from "./internal/core"
23
+ import * as coreRefSubject from "./internal/core-ref-subject"
24
+ import { exit, fromFxEffect } from "./internal/fx"
25
+ import { FxEffectBase } from "./internal/protos"
26
+ import { fromRefSubject, toRefSubject } from "./internal/schema-ref-subject"
27
+ import type * as Subject from "./Subject"
28
+ import { ComputedTypeId, RefSubjectTypeId } from "./TypeId"
29
+ import * as Versioned from "./Versioned"
30
+
31
+ /**
32
+ * A RefSubject is a Subject that has a current value that can be read and updated.
33
+ * @since 1.18.0
34
+ * @category models
35
+ */
36
+ export interface RefSubject<R, in out E, in out A> extends Computed<R, E, A>, Subject.Subject<R, E, A> {
44
37
  readonly [RefSubjectTypeId]: RefSubjectTypeId
45
38
 
46
- readonly eq: Equivalence.Equivalence<A>
47
-
48
- readonly modifyEffect: <R2, E2, B>(
49
- f: (a: A) => Effect.Effect<R2, E2, readonly [B, A]>,
50
- ) => Effect.Effect<R2, E | E2, B>
39
+ /**
40
+ * Get the current value of this RefSubject. If the RefSubject has not been initialized
41
+ * then the initial value will be computed and returned. Concurrent calls to `get` will
42
+ * only compute the initial value once.
43
+ * @since 1.18.0
44
+ */
45
+ readonly get: Effect.Effect<R, E, A>
51
46
 
52
- readonly modify: <B>(f: (a: A) => readonly [B, A]) => Effect.Effect<never, E, B>
47
+ /**
48
+ * Set the current value of this RefSubject.
49
+ * @since 1.18.0
50
+ */
51
+ readonly set: (a: A) => Effect.Effect<R, never, A>
53
52
 
54
- readonly updateEffect: <R2, E2>(
55
- f: (a: A) => Effect.Effect<R2, E2, A>,
56
- ) => Effect.Effect<R2, E | E2, A>
53
+ /**
54
+ * Modify the current value of this RefSubject using the provided function.
55
+ * @since 1.18.0
56
+ */
57
+ readonly update: (f: (a: A) => A) => Effect.Effect<R, E, A>
57
58
 
58
- readonly update: (f: (a: A) => A) => Effect.Effect<never, E, A>
59
+ /**
60
+ * Modify the current value of this RefSubject and compute a new value.
61
+ * @since 1.18.0
62
+ */
63
+ readonly modify: <B>(f: (a: A) => readonly [B, A]) => Effect.Effect<R, E, B>
59
64
 
60
- readonly set: (a: A) => Effect.Effect<never, never, A>
65
+ /**
66
+ * Delete the current value of this RefSubject. If it was not initialized the Option.none will be returned.
67
+ * Otherwise the current value will be returned as an Option.some and the RefSubject will be uninitialized.
68
+ * If there are existing subscribers to this RefSubject then the RefSubject will be re-initialized.
69
+ * @since 1.18.0
70
+ */
71
+ readonly delete: Effect.Effect<R, never, Option.Option<A>>
61
72
 
62
- readonly delete: Effect.Effect<never, E, Option.Option<A>>
73
+ /**
74
+ * Modify the current value of this RefSubject and compute a new value using the provided effectful function.
75
+ * @since 1.18.0
76
+ */
77
+ readonly modifyEffect: <R2, E2, B>(
78
+ f: (a: A) => Effect.Effect<R2, E2, readonly [B, A]>
79
+ ) => Effect.Effect<R | R2, E | E2, B>
63
80
 
64
- readonly multiUpdate: <R2, E2, B>(
65
- f: (current: A, set: (a: A) => Effect.Effect<never, never, A>) => Effect.Effect<R2, E2, B>,
66
- ) => Effect.Effect<R2, E | E2, B>
81
+ /**
82
+ * Modify the current value of this RefSubject using the provided effectful function.
83
+ * @since 1.18.0
84
+ */
85
+ readonly updateEffect: <R2, E2>(f: (a: A) => Effect.Effect<R2, E2, A>) => Effect.Effect<R | R2, E | E2, A>
67
86
 
68
87
  /**
69
- * The current version of the RefSubject, starting with 0, 1 when initialized,
70
- * and incremented each time the value is updated.
88
+ * Modify the current value of this RefSubject and compute a new value using the provided effectful function.
89
+ * The key difference is it will allow running a workflow and setting the value multiple times. Optionally,
90
+ * another function can be provided to change the value
91
+ * @since 1.18.0
71
92
  */
72
- readonly version: () => number
73
- }
93
+ readonly runUpdate: <R2, E2, B, R3 = never, E3 = never>(
94
+ updates: (
95
+ get: RefSubject<R, E, A>["get"],
96
+ set: RefSubject<R, E, A>["set"]
97
+ ) => Effect.Effect<R2, E2, B>,
98
+ onInterrupt?: (a: A) => Effect.Effect<R3, E3, A>
99
+ ) => Effect.Effect<R | R2 | R3, E | E2 | E3, B>
74
100
 
75
- type Lock = <R2, E2, B>(effect: Effect.Effect<R2, E2, B>) => Effect.Effect<R2, E2, B>
76
-
77
- export function makeRef<R, E, A>(
78
- effect: Effect.Effect<R, E, A>,
79
- eq?: Equivalence.Equivalence<A>,
80
- ): Effect.Effect<R | Scope.Scope, never, RefSubject<E, A>> {
81
- return Effect.contextWithEffect((context) =>
82
- Effect.suspend(() => {
83
- const ref = RefSubject.unsafeMake(
84
- Effect.provideContext(effect, context),
85
- Context.get(context, Scope.Scope),
86
- eq,
87
- )
88
-
89
- return Effect.as(
90
- Effect.addFinalizer(() => ref.end()),
91
- ref,
92
- )
93
- }),
94
- )
101
+ /**
102
+ * Interrupt the current Fibers.
103
+ */
104
+ readonly interrupt: Effect.Effect<R, never, void>
95
105
  }
96
106
 
107
+ /**
108
+ * @since 1.18.0
109
+ */
97
110
  export namespace RefSubject {
98
- export type Any = RefSubject<any, any> | RefSubject<never, any>
99
-
100
- export function unsafeMake<E, A>(
101
- initial: Effect.Effect<never, E, A>,
102
- scope: Scope.Scope,
103
- eq: Equivalence.Equivalence<A> = fastDeepEqual,
104
- ): RefSubject<E, A> {
105
- return makeRefFromPrimitive(unsafeMakeRefPrimitive(initial, scope, eq))
106
- }
107
-
108
- export function tuple<const Refs extends readonly Any[]>(
109
- ...refs: Refs
110
- ): RefSubject<
111
- Fx.Error<Refs[number]>,
112
- {
113
- readonly [K in keyof Refs]: Fx.Success<Refs[K]>
114
- }
115
- > {
116
- return makeRefFromPrimitive<
117
- Fx.Error<Refs[number]>,
118
- {
119
- readonly [K in keyof Refs]: Fx.Success<Refs[K]>
120
- }
121
- >(tupleRefPrimitive<Refs>(refs))
122
- }
123
-
124
- export function struct<const Refs extends Readonly<Record<string, Any>>>(
125
- refs: Refs,
126
- ): RefSubject<
127
- Fx.Error<Refs[string]>,
128
- {
129
- readonly [K in keyof Refs]: Fx.Success<Refs[K]>
130
- }
131
- > {
132
- return makeRefFromPrimitive(structRefPrimitive<Refs>(refs))
133
- }
134
-
135
- export function all<S extends ReadonlyArray<Any>>(
136
- subjects: S,
137
- ): RefSubject<
138
- Fx.Error<S[number]>,
139
- {
140
- readonly [K in keyof S]: Fx.Success<S[K]>
141
- }
142
- >
143
-
144
- export function all<S extends ReadonlyArray<Any>>(
145
- ...subjects: S
146
- ): RefSubject<
147
- Fx.Error<S[number]>,
148
- {
149
- readonly [K in keyof S]: Fx.Success<S[K]>
150
- }
151
- >
152
-
153
- export function all<S extends Readonly<Record<string, Any>>>(
154
- subjects: S,
155
- ): RefSubject<
156
- Fx.Error<S[string]>,
157
- {
158
- readonly [K in keyof S]: Fx.Success<S[K]>
159
- }
160
- >
161
-
162
- export function all(...subjects: any): any {
163
- /// MUST be a tuple if more than one argument
164
- if (subjects.length > 1) {
165
- return tuple(...subjects)
166
- }
167
-
168
- // Otherwise a single param is either a tuple or a struct
169
- const singleParam = subjects[0]
170
-
171
- if (Array.isArray(singleParam)) {
172
- return tuple(...singleParam)
173
- }
174
-
175
- return struct(singleParam)
176
- }
177
- }
178
-
179
- export function isRefSubject<E, A>(u: unknown): u is RefSubject<E, A> {
180
- return isFx<never, E, A>(u) && RefSubjectTypeId in u
181
- }
182
-
183
- // Internals for RefSubject
184
-
185
- function makeGetFromContext<E, A>(ctx: RefSubjectContext<E, A>): RefSubject<E, A>['get'] {
186
- return Effect.suspend(() => {
187
- const current = MutableRef.get(ctx.currentRef)
188
-
189
- if (Option.isSome(current)) {
190
- return Effect.succeed(current.value)
191
- }
192
-
193
- const fiber = MutableRef.get(ctx.initializingFiberRef)
194
-
195
- if (Option.isSome(fiber)) {
196
- return Fiber.join(fiber.value)
197
- }
198
-
199
- return Effect.tap(ctx.lock(initializeFromContext(ctx)), (a) => ctx.hold.event(a))
200
- })
201
- }
202
-
203
- function initializeFromContext<E, A>(ctx: RefSubjectContext<E, A>): Effect.Effect<never, E, A> {
204
- return Effect.uninterruptibleMask((restore) =>
205
- Effect.flatMap(Effect.forkIn(restore(ctx.initial), ctx.scope), (fiber) => {
206
- MutableRef.set(ctx.initializingFiberRef, Option.some(fiber))
207
-
208
- return Fiber.join(fiber).pipe(
209
- Effect.tap((a) =>
210
- Effect.sync(() => {
211
- MutableRef.increment(ctx.version)
212
- MutableRef.set(ctx.currentRef, Option.some(a))
213
- }),
214
- ),
215
- Effect.ensuring(Effect.sync(() => MutableRef.set(ctx.initializingFiberRef, Option.none()))),
216
- )
217
- }),
218
- )
219
- }
220
-
221
- function makeRefMethods<E, A>(
222
- primitive: RefPrimitive<E, A>,
223
- ): Pick<RefSubject<E, A>, 'modify' | 'updateEffect' | 'update'> {
224
- const modify = makeModify<E, A>(primitive.modifyEffect)
225
- const updateEffect = makeUpdateEffect<E, A>(primitive.modifyEffect)
226
- const update = makeUpdate<E, A>(updateEffect)
227
-
228
- return {
229
- modify,
230
- updateEffect,
231
- update,
232
- } as const
233
- }
234
-
235
- function makeModifyEffectFromContext<E, A>(
236
- get: RefSubject<E, A>['get'],
237
- ctx: RefSubjectContext<E, A>,
238
- ): RefSubject<E, A>['modifyEffect'] {
239
- return (f) =>
240
- Effect.flatMap(get, (a1) =>
241
- ctx.lock(
242
- Effect.flatMap(f(a1), ([b, a2]) =>
243
- Effect.suspend(() => {
244
- MutableRef.set(ctx.currentRef, Option.some(a2))
245
-
246
- if (ctx.eq(a1, a2)) {
247
- return Effect.succeed(b)
248
- }
249
-
250
- MutableRef.increment(ctx.version)
251
-
252
- return Effect.as(ctx.hold.event(a2), b)
253
- }),
254
- ),
255
- ),
256
- )
257
- }
258
-
259
- function makeMultiUpdateFromContext<E, A>(
260
- get: RefSubject<E, A>['get'],
261
- set: RefSubject<E, A>['set'],
262
- lock: RefSubjectContext<E, A>['lock'],
263
- ): RefSubject<E, A>['multiUpdate'] {
264
- return (f) => get.pipe(Effect.flatMap((current) => lock(f(current, set))))
265
- }
266
-
267
- function makeModify<E, A>(
268
- modifyEffect: RefSubject<E, A>['modifyEffect'],
269
- ): RefSubject<E, A>['modify'] {
270
- return (f) => modifyEffect((a) => Effect.sync(() => f(a)))
271
- }
272
-
273
- function makeUpdateEffect<E, A>(
274
- modifyEffect: RefSubject<E, A>['modifyEffect'],
275
- ): RefSubject<E, A>['updateEffect'] {
276
- return (f) => modifyEffect((a) => Effect.map(f(a), (a) => [a, a]))
277
- }
278
-
279
- function makeUpdate<E, A>(
280
- updateEffect: RefSubject<E, A>['updateEffect'],
281
- ): RefSubject<E, A>['update'] {
282
- return (f) => updateEffect((a) => Effect.sync(() => f(a)))
283
- }
284
-
285
- function makeSetFromContext<E, A>(ctx: RefSubjectContext<E, A>): RefSubject<E, A>['set'] {
286
- return (a: A) =>
287
- Effect.suspend(() => {
288
- const fiber = MutableRef.get(ctx.initializingFiberRef)
289
-
290
- return pipe(
291
- fiber,
292
- Option.match({ onNone: () => Effect.unit, onSome: Fiber.await }),
293
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
294
- Effect.flatMap((_: unknown) => {
295
- const current = MutableRef.get(ctx.currentRef)
296
-
297
- MutableRef.set(ctx.currentRef, Option.some(a))
298
-
299
- // Only emit if the value has changed
300
- if (Option.isNone(current) || (Option.isSome(current) && !ctx.eq(current.value, a))) {
301
- // Increment the version
302
- MutableRef.increment(ctx.version)
303
- return Effect.as(ctx.hold.event(a), a)
304
- }
305
-
306
- return Effect.succeed(a)
307
- }),
308
- )
309
- })
310
- }
311
-
312
- function makeDeleteFromContext<E, A>(
313
- ctx: RefSubjectContext<E, A>,
314
- get: RefSubject<E, A>['get'],
315
- ): RefSubject<E, A>['delete'] {
316
- return Effect.suspend(() => {
317
- const current = MutableRef.get(ctx.currentRef)
318
-
319
- if (Option.isSome(current)) {
320
- MutableRef.set(ctx.version, 0)
321
- MutableRef.set(ctx.currentRef, Option.none())
322
-
323
- // Attempt to reinitialize the subject if there are observers
324
- if (ctx.hold.observers.length > 0) {
325
- return Effect.forkDaemon(get).pipe(Effect.as(current))
326
- }
327
- }
328
-
329
- return Effect.succeed(current)
330
- })
331
- }
332
-
333
- function makeEndFromContext<E, A>(ctx: RefSubjectContext<E, A>): RefSubject<E, A>['end'] {
334
- return () =>
335
- Effect.suspend(() => {
336
- MutableRef.set(ctx.version, 0)
337
-
338
- const fibers = [
339
- ctx.hold.fiber || Fiber.unit,
340
- Option.getOrElse(MutableRef.get(ctx.initializingFiberRef), () => Fiber.unit),
341
- ]
342
-
343
- return Fiber.interruptAll(fibers)
344
- })
345
- }
346
-
347
- function makeFiltered<E, A>(
348
- f: () => RefSubject<E, A>,
349
- ): Pick<
350
- RefSubject<E, A>,
351
- 'filterMapEffect' | 'filterMap' | 'filterEffect' | 'filter' | 'filterNotEffect' | 'filterNot'
352
- > {
353
- const get = makeMemoizedGet(f)
354
-
355
- function filterMapEffect<R2, E2, B>(f: (a: A) => Effect.Effect<R2, E2, Option.Option<B>>) {
356
- return new FilteredImpl(get(), f)
357
- }
111
+ /**
112
+ * @since 1.18.0
113
+ */
114
+ export type Any =
115
+ | RefSubject<any, any, any>
116
+ | RefSubject<never, any, any>
117
+ | RefSubject<any, never, any>
118
+ | RefSubject<never, never, any>
358
119
 
359
- function filterMap<B>(f: (a: A) => Option.Option<B>) {
360
- return filterMapEffect((a) => Effect.sync(() => f(a)))
120
+ /**
121
+ * A Contextual wrapper around a RefSubject
122
+ * @since 1.18.0
123
+ * @category models
124
+ */
125
+ export interface Tagged<I, E, A> extends RefSubject<I, E, A> {
126
+ readonly tag: C.Tagged<I, RefSubject<never, E, A>>
127
+
128
+ /**
129
+ * Make a layer initializing a RefSubject
130
+ * @since 1.18.0
131
+ */
132
+ readonly make: <R = never>(
133
+ fx: Exclude<Fx.FxInput<R, E, A>, Iterable<A>>,
134
+ eq?: Equivalence<A>
135
+ ) => Layer.Layer<R, never, I>
136
+
137
+ /**
138
+ * Make a layer initializing a RefSubject
139
+ * @since 1.18.0
140
+ */
141
+ readonly of: (value: A, eq?: Equivalence<A>) => Layer.Layer<never, never, I>
142
+
143
+ /**
144
+ * Provide an implementation of this RefSubject
145
+ * @since 1.18.0
146
+ */
147
+ readonly provide: <R2>(fx: Fx.FxInput<R2, E, A>, eq?: Equivalence<A>) => <R3, E3, C>(
148
+ effect: Effect.Effect<R3, E3, C>
149
+ ) => Effect.Effect<R2 | Exclude<R3, I> | Scope.Scope, E | E3, C>
150
+
151
+ /**
152
+ * Provide an implementation of this RefSubject
153
+ * @since 1.18.0
154
+ */
155
+ readonly provideFx: <R2>(fx: Fx.FxInput<R2, E, A>, eq?: Equivalence<A>) => <R3, E3, C>(
156
+ effect: Fx.Fx<R3, E3, C>
157
+ ) => Fx.Fx<R2 | Exclude<R3, I> | Scope.Scope, E | E3, C>
361
158
  }
362
159
 
363
- function filterEffect<R2, E2>(f: (a: A) => Effect.Effect<R2, E2, boolean>) {
364
- return filterMapEffect((a) => Effect.map(f(a), (b) => (b ? Option.some(a) : Option.none())))
160
+ /**
161
+ * A Contextual wrapper around a RefSubject
162
+ * @since 1.18.0
163
+ * @category models
164
+ */
165
+ export interface Derived<R0, R, E, A> extends RefSubject<R, E, A> {
166
+ readonly persist: Effect.Effect<R0, never, void>
365
167
  }
366
168
 
367
- function filter(f: (a: A) => boolean) {
368
- return filterEffect((a) => Effect.sync(() => f(a)))
369
- }
169
+ /**
170
+ * Extract the Identifier from a RefSubject
171
+ * @since 1.18.0
172
+ */
173
+ export type Context<T> = T extends RefSubject<infer I, infer _, infer __> ? I : never
370
174
 
371
- function filterNotEffect<R2, E2>(f: (a: A) => Effect.Effect<R2, E2, boolean>) {
372
- return filterEffect((a) => Effect.map(f(a), (b) => !b))
373
- }
175
+ /**
176
+ * Extract the Error from a RefSubject
177
+ * @since 1.18.0
178
+ */
179
+ export type Error<T> = T extends RefSubject<infer _, infer E, infer __> ? E : never
374
180
 
375
- function filterNot(f: (a: A) => boolean) {
376
- return filterNotEffect((a) => Effect.sync(() => f(a)))
181
+ /**
182
+ * Extract the State from a RefSubject
183
+ * @since 1.18.0
184
+ */
185
+ export type Success<T> = T extends RefSubject<infer _, infer __, infer S> ? S : never
186
+ }
187
+
188
+ /**
189
+ * Extract the Identifier from a RefSubject
190
+ * @since 1.18.0
191
+ */
192
+ export type Context<T> = RefSubject.Context<T>
193
+
194
+ /**
195
+ * Extract the Error from a RefSubject
196
+ * @since 1.18.0
197
+ */
198
+ export type Error<T> = RefSubject.Error<T>
199
+
200
+ /**
201
+ * Extract the State from a RefSubject
202
+ * @since 1.18.0
203
+ */
204
+ export type Success<T> = RefSubject.Success<T>
205
+
206
+ /**
207
+ * Construct a RefSubject with a lazily initialized value.
208
+ * @since 1.18.0
209
+ * @category constructors
210
+ */
211
+ export function fromEffect<R, E, A>(
212
+ initial: Effect.Effect<R, E, A>,
213
+ eq?: Equivalence<A>
214
+ ): Effect.Effect<R | Scope.Scope, never, RefSubject<never, E, A>> {
215
+ return coreRefSubject.fromEffect(initial, eq)
216
+ }
217
+
218
+ /**
219
+ * Construct a RefSubject from a synchronous value.
220
+ * @since 1.18.0
221
+ * @category constructors
222
+ */
223
+ export function of<A, E = never>(
224
+ initial: A,
225
+ eq?: Equivalence<A>
226
+ ): Effect.Effect<Scope.Scope, never, RefSubject<never, E, A>> {
227
+ return fromEffect<never, E, A>(Effect.succeed(initial), eq)
228
+ }
229
+
230
+ /**
231
+ * Construct a RefSubject from a synchronous value.
232
+ * @since 1.18.0
233
+ * @category constructors
234
+ */
235
+ export function sync<A, E = never>(
236
+ initial: () => A,
237
+ eq?: Equivalence<A>
238
+ ): Effect.Effect<Scope.Scope, never, RefSubject<never, E, A>> {
239
+ return fromEffect<never, E, A>(Effect.sync(initial), eq)
240
+ }
241
+
242
+ /**
243
+ * Construct a RefSubject from any Fx value.
244
+ *
245
+ * @since 1.18.0
246
+ * @category constructors
247
+ */
248
+ export function make<R, E, A>(
249
+ fx: Effect.Effect<R, E, A>,
250
+ eq?: Equivalence<A>
251
+ ): Effect.Effect<R | Scope.Scope, never, RefSubject<never, E, A>>
252
+ export function make<R, E, A>(
253
+ fx: Fx.FxInput<R, E, A>,
254
+ eq?: Equivalence<A>
255
+ ): Effect.Effect<R | Scope.Scope, never, RefSubject<never, E, A>>
256
+
257
+ export function make<R, E, A>(
258
+ fx: Fx.FxInput<R, E, A>,
259
+ eq?: Equivalence<A>
260
+ ): Effect.Effect<R | Scope.Scope, never, RefSubject<never, E, A>> {
261
+ return coreRefSubject.make(fx, eq)
262
+ }
263
+
264
+ /**
265
+ * Create a contextual wrapper around a RefSubject while maintaing the full API of
266
+ * a Ref Subject.
267
+ * @since 1.18.0
268
+ * @category constructors
269
+ */
270
+ export function tagged<A>(defaultEq?: Equivalence<A>): {
271
+ <const I extends C.IdentifierConstructor<any>>(
272
+ identifier: (id: typeof C.id) => I
273
+ ): RefSubject.Tagged<C.IdentifierOf<I>, never, A>
274
+ <const I>(identifier: I | string): RefSubject.Tagged<C.IdentifierOf<I>, never, A>
275
+ }
276
+ export function tagged<E, A>(defaultEq?: Equivalence<A>): {
277
+ <const I extends C.IdentifierConstructor<any>>(
278
+ identifier: (id: typeof C.id) => I
279
+ ): RefSubject.Tagged<C.IdentifierOf<I>, E, A>
280
+ <const I>(identifier: I | string): RefSubject.Tagged<C.IdentifierOf<I>, E, A>
281
+ }
282
+
283
+ export function tagged(defaultEq?: Equivalence<any>): {
284
+ <const I extends C.IdentifierConstructor<any>>(
285
+ identifier: (id: typeof C.id) => I
286
+ ): RefSubject.Tagged<C.IdentifierOf<I>, any, any> | RefSubject.Tagged<C.IdentifierOf<I>, never, any>
287
+ <const I>(
288
+ identifier: I | string
289
+ ): RefSubject.Tagged<C.IdentifierOf<I>, any, any> | RefSubject.Tagged<C.IdentifierOf<I>, never, any>
290
+ } {
291
+ function makeTagged<const I extends C.IdentifierFactory<any>>(
292
+ identifier: I
293
+ ): RefSubject.Tagged<C.IdentifierOf<I>, any, any>
294
+ function makeTagged<const I>(identifier: I): RefSubject.Tagged<C.IdentifierOf<I>, any, any>
295
+ function makeTagged<const I>(identifier: I): RefSubject.Tagged<C.IdentifierOf<I>, any, any> {
296
+ return new ContextImpl(C.Tagged<I, RefSubject<never, any, any>>(identifier), defaultEq) as any
377
297
  }
378
298
 
379
- return {
380
- filterMapEffect,
381
- filterMap,
382
- filterEffect,
383
- filter,
384
- filterNotEffect,
385
- filterNot,
386
- } as const
299
+ return makeTagged
387
300
  }
388
301
 
389
- function makeComputedMethods<E, A>(
390
- f: () => RefSubject<E, A>,
391
- ): Pick<RefSubject<E, A>, 'mapEffect' | 'map'> {
392
- const get = makeMemoizedGet(f)
393
-
394
- function mapEffect<R2, E2, B>(f: (a: A) => Effect.Effect<R2, E2, B>): Computed<R2, E | E2, B> {
395
- return new ComputedImpl(get(), f)
396
- }
397
-
398
- function map<B>(f: (a: A) => B): Computed<never, E, B> {
399
- return mapEffect((a) => Effect.sync(() => f(a)))
400
- }
302
+ class ContextImpl<I, E, A> extends FxEffectBase<I, E, A, I, E, A> implements RefSubject<I, E, A> {
303
+ readonly [RefSubjectTypeId]: RefSubjectTypeId = RefSubjectTypeId
304
+ readonly [ComputedTypeId]: ComputedTypeId = ComputedTypeId
401
305
 
402
- return {
403
- mapEffect,
404
- map,
405
- } as const
406
- }
306
+ readonly version: RefSubject<I, E, A>["version"]
307
+ readonly subscriberCount: RefSubject<I, E, A>["subscriberCount"]
308
+ readonly get: RefSubject<I, E, A>["get"]
309
+ readonly delete: RefSubject<I, E, A>["delete"]
310
+ readonly interrupt: RefSubject<I, E, A>["interrupt"]
407
311
 
408
- function makeTransformMethods<E, A>(
409
- f: () => RefSubject<E, A>,
410
- ): Pick<RefSubject<E, A>, 'transformBoth' | 'transform' | 'transformGet'> {
411
- const get = makeMemoizedGet(f)
312
+ constructor(readonly tag: C.Tagged<I, RefSubject<never, E, A>>, readonly defaultEq?: Equivalence<A>) {
313
+ super()
412
314
 
413
- function transformBoth<R3, E3, C, R4, E4, D>(
414
- f: (fx: Fx<never, E, A>) => Fx<R3, E3, C>,
415
- g: (effect: Effect.Effect<never, E, A>) => Effect.Effect<R4, E4, D>,
416
- ): RefTransform<R3, E3, C, R4, E4, D> {
417
- return new RefTransformImpl(get(), f, g)
315
+ this.version = tag.withEffect((ref) => ref.version)
316
+ this.subscriberCount = tag.withEffect((ref) => ref.subscriberCount)
317
+ this.get = tag.withEffect((ref) => ref.get)
318
+ this.delete = tag.withEffect((ref) => ref.delete)
319
+ this.interrupt = tag.withEffect((r) => r.interrupt)
418
320
  }
419
321
 
420
- function transform<R3, E3, C>(
421
- f: (fx: Fx<never, E, A>) => Fx<R3, E3, C>,
422
- ): RefTransform<R3, E3, C, never, E, A> {
423
- return transformBoth(f, identity)
322
+ protected toFx(): Fx.Fx<I, E, A> {
323
+ return fromFxEffect(this.tag)
424
324
  }
425
325
 
426
- function transformGet<R3, E3, C>(
427
- f: (effect: Effect.Effect<never, E, A>) => Effect.Effect<R3, E3, C>,
428
- ): RefTransform<never, E, A, R3, E3, C> {
429
- return transformBoth(identity, f)
326
+ protected toEffect(): Effect.Effect<I, E, A> {
327
+ return this.get
430
328
  }
431
329
 
432
- return {
433
- transformBoth,
434
- transform,
435
- transformGet,
436
- } as const
437
- }
438
-
439
- const placeholders = {
440
- _tag: 'Commit',
441
- [Effect.EffectTypeId]: refVariance,
442
- i0: undefined,
443
- i1: undefined,
444
- i2: undefined,
445
- [Equal.symbol](that: unknown) {
446
- return this === that
447
- },
448
- [Hash.symbol]() {
449
- return Hash.random(this)
450
- },
451
- pipe() {
452
- // eslint-disable-next-line prefer-rest-params
453
- return pipeArguments(this, arguments)
454
- },
455
- }
456
-
457
- function makeEffectMethods<E, A>(
458
- get: RefSubject<E, A>['get'],
459
- ): Pick<RefSubject<E, A>, Extract<keyof Effect.Effect<never, E, A>, keyof RefSubject<E, A>>> {
460
- return Object.assign(
461
- {
462
- commit() {
463
- return get
464
- },
465
- } as const,
466
- placeholders,
467
- ) as any
468
- }
330
+ runUpdate: RefSubject<I, E, A>["runUpdate"] = (
331
+ f,
332
+ onInterrupt
333
+ ) => this.tag.withEffect((ref) => ref.runUpdate(f, onInterrupt))
469
334
 
470
- function makeMemoizedGet<A>(f: () => A) {
471
- let memoized: Option.Option<A> = Option.none()
335
+ modifyEffect: <R2, E2, B>(f: (a: A) => Effect.Effect<R2, E2, readonly [B, A]>) => Effect.Effect<I | R2, E | E2, B> = (
336
+ f
337
+ ) => this.tag.withEffect((ref) => ref.modifyEffect(f))
338
+
339
+ modify: <B>(f: (a: A) => readonly [B, A]) => Effect.Effect<I, E, B> = (f) =>
340
+ this.tag.withEffect((ref) => ref.modify(f))
341
+
342
+ updateEffect: <R2, E2>(f: (a: A) => Effect.Effect<R2, E2, A>) => Effect.Effect<I | R2, E | E2, A> = (f) =>
343
+ this.tag.withEffect((ref) => ref.updateEffect(f))
472
344
 
473
- return () => {
474
- if (Option.isNone(memoized)) {
475
- memoized = Option.some(f())
476
- }
345
+ update: (f: (a: A) => A) => Effect.Effect<I, E, A> = (f) => this.tag.withEffect((ref) => ref.update(f))
477
346
 
478
- return (memoized as Option.Some<A>).value
479
- }
480
- }
347
+ set: (a: A) => Effect.Effect<I, never, A> = (a) => this.tag.withEffect((ref) => ref.set(a))
348
+
349
+ mapEffect: <R2, E2, B>(f: (a: A) => Effect.Effect<R2, E2, B>) => Computed<R2, E | E2, B> = (f) =>
350
+ Computed(this as any, f)
351
+
352
+ map: <B>(f: (a: A) => B) => Computed<I, E, B> = (f) => Computed(this as any, (a: A) => Effect.sync(() => f(a)))
353
+
354
+ filterMapEffect: <R2, E2, B>(
355
+ f: (a: A) => Effect.Effect<R2, E2, Option.Option<B>>
356
+ ) => Filtered<R2, E | E2, B> = (f) => Filtered(this as any, f)
357
+
358
+ filterMap: <B>(f: (a: A) => Option.Option<B>) => Filtered<never, E, B> = (f) =>
359
+ Filtered(this as any, (a: A) => Effect.sync(() => f(a)))
360
+
361
+ filter: (f: (a: A) => boolean) => Filtered<I, E, A> = (f) =>
362
+ this.filterMap((a) => f(a) ? Option.some(a) : Option.none())
363
+
364
+ filterEffect: <R2, E2>(f: (a: A) => Effect.Effect<R2, E2, boolean>) => Filtered<I | R2, E | E2, A> = (f) =>
365
+ this.filterMapEffect((a) => Effect.map(f(a), (b) => b ? Option.some(a) : Option.none()))
366
+
367
+ skipRepeats: (eq?: Equivalence<A> | undefined) => Computed<I, E, A> = (eq = equals) =>
368
+ fromTag(this.tag, (s) => s.skipRepeats(eq))
369
+
370
+ onFailure: (cause: Cause.Cause<E>) => Effect.Effect<I, never, unknown> = (cause) =>
371
+ this.tag.withEffect((ref) => ref.onFailure(cause))
372
+
373
+ onSuccess: (value: A) => Effect.Effect<I, never, unknown> = (a) => this.tag.withEffect((ref) => ref.onSuccess(a))
374
+
375
+ make = <R>(fx: Fx.Fx<R, E, A>, eq?: Equivalence<A>): Layer.Layer<R, never, I> =>
376
+ this.tag.scoped(make(fx, eq || this.defaultEq))
377
+
378
+ of = (value: A, eq?: Equivalence<A>): Layer.Layer<never, never, I> => this.tag.scoped(of(value, eq))
379
+
380
+ provide = <R2>(fx: Fx.Fx<R2, E, A>, eq?: Equivalence<A>) => Effect.provide(this.make(fx, eq || this.defaultEq))
381
+
382
+ provideFx = <R2>(fx: Fx.Fx<R2, E, A>, eq?: Equivalence<A>) => provide(this.make(fx, eq || this.defaultEq))
383
+ }
384
+
385
+ /**
386
+ * Construct a RefSubject from any Fx value.
387
+ *
388
+ * @since 1.18.0
389
+ * @category constructors
390
+ */
391
+ export function makeWithExtension<R, E, A, B>(
392
+ fx: Effect.Effect<R, E, A>,
393
+ f: (ref: RefSubject<never, E, A>) => B,
394
+ eq?: Equivalence<A>
395
+ ): Effect.Effect<R, never, RefSubject<never, E, A> & B>
396
+ export function makeWithExtension<R, E, A, B>(
397
+ fx: Fx.FxInput<R, E, A>,
398
+ f: (ref: RefSubject<never, E, A>) => B,
399
+ eq?: Equivalence<A>
400
+ ): Effect.Effect<R | Scope.Scope, never, RefSubject<never, E, A> & B>
401
+
402
+ export function makeWithExtension<R, E, A, B>(
403
+ fx: Fx.FxInput<R, E, A>,
404
+ f: (ref: RefSubject<never, E, A>) => B,
405
+ eq?: Equivalence<A>
406
+ ): Effect.Effect<R | Scope.Scope, never, RefSubject<never, E, A> & B> {
407
+ return coreRefSubject.makeWithExtension(fx, f, eq)
408
+ }
409
+
410
+ /**
411
+ * Construct a RefSubject with an initial value and the specified subject.
412
+ * @since 1.18.0
413
+ * @category constructors
414
+ */
415
+ export const unsafeMake: <R, E, A>(
416
+ initial: Effect.Effect<R, E, A>,
417
+ subject: Subject.Subject<R, E, A>,
418
+ eq?: Equivalence<A>
419
+ ) => RefSubject<R, E, A> = coreRefSubject.unsafeMake
420
+
421
+ /**
422
+ * Flatten an RefSubject of an Option into a Filtered.
423
+ * @since 1.18.0
424
+ * @category combinators
425
+ */
426
+ export const compact = <R, E, A>(refSubject: RefSubject<R, E, Option.Option<A>>): Filtered<R, E, A> =>
427
+ refSubject.filterMap(identity)
428
+
429
+ /**
430
+ * Split a RefSubject's into 2 Filtered values that track its errors and
431
+ * success values separately.
432
+ * @since 1.18.0
433
+ * @category combinators
434
+ */
435
+ export const split = <R, E, A>(
436
+ refSubject: RefSubject<R, E, A>
437
+ ): readonly [Filtered<R, never, E>, Filtered<R, never, A>] => {
438
+ const versioned = Versioned.transform(refSubject, exit, Effect.exit)
439
+ const left = Filtered(versioned, getLeft)
440
+ const right = Filtered(versioned, getRight)
441
+
442
+ return [left, right] as const
443
+ }
444
+
445
+ const getLeft = <E, A>(exit: Exit.Exit<E, A>) =>
446
+ Effect.succeed(
447
+ Exit.match(exit, {
448
+ onFailure: (cause) => Cause.failureOption(cause),
449
+ onSuccess: () => Option.none()
450
+ })
451
+ )
481
452
 
482
- type RefSubjectContext<E, A> = {
483
- initial: Effect.Effect<never, E, A>
484
- currentRef: MutableRef.MutableRef<Option.Option<A>>
485
- initializingFiberRef: MutableRef.MutableRef<Option.Option<Fiber.RuntimeFiber<E, A>>>
486
- lock: Lock
487
- scope: Scope.Scope
488
- eq: Equivalence.Equivalence<A>
489
- hold: HoldFx<never, E, A>
490
- version: MutableRef.MutableRef<number>
491
- }
453
+ const getRight = <E, A>(exit: Exit.Exit<E, A>) =>
454
+ Effect.succeed(
455
+ Exit.match(exit, {
456
+ onFailure: Option.none,
457
+ onSuccess: Option.some
458
+ })
459
+ )
492
460
 
493
- function makeRefSubjectContext<E, A>(
494
- initial: Effect.Effect<never, E, A>,
495
- scope: Scope.Scope,
496
- eq: Equivalence.Equivalence<A> = fastDeepEqual,
497
- ) {
498
- const hold = new HoldFx(never<E, A>())
499
- const ctx: RefSubjectContext<E, A> = {
500
- initial,
501
- currentRef: hold.current,
502
- initializingFiberRef: MutableRef.make(Option.none()),
503
- lock: Effect.unsafeMakeSemaphore(1).withPermits(1),
504
- scope,
505
- eq,
506
- hold,
507
- version: MutableRef.make(0),
461
+ /**
462
+ * MakeRefSubject is a RefSubject factory function dervied from a Schema.
463
+ * @since 1.18.0
464
+ */
465
+ export type MakeRefSubject<O> = {
466
+ <R, E>(
467
+ input: RefSubject<R, E, O>,
468
+ eq?: Equivalence<O>
469
+ ): Effect.Effect<R | Scope.Scope, never, ToDerived<R, E, O>>
470
+
471
+ <R, E>(input: Effect.Effect<R, E, O>, eq?: Equivalence<O>): Effect.Effect<R | Scope.Scope, never, ToRefSubject<E, O>>
472
+
473
+ <R, E>(
474
+ input: Stream.Stream<R, E, O>,
475
+ eq?: Equivalence<O>
476
+ ): Effect.Effect<R | Scope.Scope, never, ToRefSubject<E, O>>
477
+
478
+ <R, E>(input: Fx.Fx<R, E, O>, eq?: Equivalence<O>): Effect.Effect<R | Scope.Scope, never, ToRefSubject<E, O>>
479
+
480
+ <E>(input: Cause.Cause<E>, eq?: Equivalence<O>): Effect.Effect<Scope.Scope, never, ToRefSubject<E, O>>
481
+
482
+ <R, E>(
483
+ input: Fx.FxInput<R, E, O>,
484
+ eq?: Equivalence<O>
485
+ ): Effect.Effect<R | Scope.Scope, never, ToRefSubject<E, O>>
486
+ }
487
+
488
+ /**
489
+ * Converts an error `E` and an output `O` into a RefSubject or a Record of RefSubjects if
490
+ * the ouput value is a Record as well.
491
+ * @since 1.18.0
492
+ */
493
+ export type ToRefSubject<E, O> = O extends Readonly<Record<PropertyKey, any>> ? {
494
+ readonly [K in keyof O]: ToRefSubject<E, O[K]>
495
+ } :
496
+ RefSubject<never, E, O> // TODO: We should apply ParseErrors here too somehow
497
+
498
+ /**
499
+ * Converts an error `E` and an output `O` into a RefSubject or a Record of RefSubjects if
500
+ * the ouput value is a Record as well.
501
+ * @since 1.18.0
502
+ */
503
+ export type ToDerived<R, E, O> = ToRefSubject<E, O> & {
504
+ readonly persist: Effect.Effect<R, E, O>
505
+ }
506
+
507
+ /**
508
+ * Derive a RefSubjectSchema using the "from" or "encoded" value represented by a Schema.
509
+ * @since 1.18.0
510
+ */
511
+ export function deriveFromSchema<I, O>(schema: Schema.Schema<I, O>): MakeRefSubject<I> {
512
+ return fromRefSubject(schema)
513
+ }
514
+
515
+ /**
516
+ * Derive a RefSubjectSchema using the "to" or "decoded" value represented by a Schema.
517
+ * @since 1.18.0
518
+ */
519
+ export function deriveToSchema<I, O>(schema: Schema.Schema<I, O>): MakeRefSubject<O> {
520
+ return toRefSubject(schema)
521
+ }
522
+
523
+ /**
524
+ * @since 1.18.0
525
+ */
526
+ export const tuple: <const REFS extends ReadonlyArray<RefSubject.Any>>(
527
+ ...refs: REFS
528
+ ) => RefSubject<
529
+ RefSubject.Context<REFS[number]>,
530
+ RefSubject.Error<REFS[number]>,
531
+ { readonly [K in keyof REFS]: RefSubject.Success<REFS[K]> }
532
+ > = coreRefSubject.tuple
533
+
534
+ /**
535
+ * @since 1.18.0
536
+ */
537
+ export const struct: <const REFS extends Readonly<Record<PropertyKey, RefSubject.Any>>>(
538
+ refs: REFS
539
+ ) => RefSubject<
540
+ RefSubject.Context<REFS[string]>,
541
+ RefSubject.Error<REFS[string]>,
542
+ { readonly [K in keyof REFS]: RefSubject.Success<REFS[K]> }
543
+ > = coreRefSubject.struct
544
+
545
+ /**
546
+ * @since 1.18.0
547
+ */
548
+ export function fromSubscriptionRef<A>(
549
+ subscriptionRef: SubscriptionRef.SubscriptionRef<A>
550
+ ): Effect.Effect<Scope.Scope, never, RefSubject<never, never, A>> {
551
+ return coreRefSubject.make(fromStream(subscriptionRef.changes))
552
+ }
553
+
554
+ /**
555
+ * @since 1.18.0
556
+ */
557
+ export const transform: {
558
+ <A, B>(from: (a: A) => B, to: (b: B) => A): <R, E>(ref: RefSubject<R, E, A>) => RefSubject<R, E, B>
559
+ <R, E, A, B>(ref: RefSubject<R, E, A>, from: (a: A) => B, to: (b: B) => A): RefSubject<R, E, B>
560
+ } = dual(3, function transform<R, E, A, B>(
561
+ ref: RefSubject<R, E, A>,
562
+ from: (a: A) => B,
563
+ to: (b: B) => A
564
+ ): RefSubject<R, E, B> {
565
+ return new TransformImpl(ref, from, to)
566
+ })
567
+
568
+ class TransformImpl<R, E, A, B> extends FxEffectBase<R, E, B, R, E, B> implements RefSubject<R, E, B> {
569
+ readonly [RefSubjectTypeId]: RefSubjectTypeId = RefSubjectTypeId
570
+ readonly [ComputedTypeId]: ComputedTypeId = ComputedTypeId
571
+
572
+ readonly version: RefSubject<R, E, B>["version"]
573
+ readonly subscriberCount: RefSubject<R, E, B>["subscriberCount"]
574
+ readonly get: RefSubject<R, E, B>["get"]
575
+ readonly delete: RefSubject<R, E, B>["delete"]
576
+ readonly interrupt: RefSubject<R, E, B>["interrupt"]
577
+
578
+ constructor(
579
+ readonly ref: RefSubject<R, E, A>,
580
+ readonly from: (a: A) => B,
581
+ readonly to: (b: B) => A
582
+ ) {
583
+ super()
584
+
585
+ this.version = ref.version
586
+ this.subscriberCount = ref.subscriberCount
587
+ this.get = Effect.map(ref.get, from)
588
+ this.delete = Effect.map(ref.delete, Option.map(from))
589
+ this.interrupt = ref.interrupt
508
590
  }
509
591
 
510
- return ctx
511
- }
512
-
513
- function unsafeMakeRefPrimitive<E, A>(
514
- initial: Effect.Effect<never, E, A>,
515
- scope: Scope.Scope,
516
- eq: Equivalence.Equivalence<A>,
517
- ): RefPrimitive<E, A> {
518
- const ctx = makeRefSubjectContext(initial, scope, eq)
519
- const get = makeGetFromContext(ctx)
520
- const set = makeSetFromContext(ctx)
521
- const multiUpdate = makeMultiUpdateFromContext(get, set, ctx.lock)
522
-
523
- function run<R2>(sink: Sink<R2, E, A>) {
524
- return Effect.suspend(() => {
525
- const current = MutableRef.get(ctx.hold.current)
526
-
527
- if (Option.isNone(current)) {
528
- return pipe(
529
- primitive.get,
530
- Effect.catchAllCause(sink.error),
531
- Effect.flatMap(() => ctx.hold.run(sink)),
532
- )
533
- }
534
-
535
- return ctx.hold.run(sink)
536
- })
592
+ protected toFx(): Fx.Fx<R, E, B> {
593
+ return this.ref.map(this.from)
537
594
  }
538
595
 
539
- const primitive: RefPrimitive<E, A> = {
540
- delete: makeDeleteFromContext(ctx, get),
541
- end: makeEndFromContext(ctx),
542
- eq,
543
- error: (cause) => ctx.hold.error(cause),
544
- event: set,
545
- get,
546
- modifyEffect: makeModifyEffectFromContext(get, ctx),
547
- run,
548
- set,
549
- multiUpdate,
550
- version: ctx.version,
596
+ protected toEffect(): Effect.Effect<R, E, B> {
597
+ return this.ref.map(this.from)
551
598
  }
552
599
 
553
- return primitive
554
- }
600
+ set: RefSubject<R, E, B>["set"] = (b) => Effect.map(this.ref.set(this.to(b)), this.from)
601
+ update: RefSubject<R, E, B>["update"] = (f) => Effect.map(this.ref.update((a) => this.to(f(this.from(a)))), this.from)
555
602
 
556
- function makeRefFromPrimitive<E, A>(primitive: RefPrimitive<E, A>): RefSubject<E, A> {
557
- const ref: RefSubject<E, A> = {
558
- [FxTypeId]: refVariance,
559
- [RefSubjectTypeId]: RefSubjectTypeId,
560
- [ComputedTypeId]: ComputedTypeId,
561
- ...primitive,
562
- ...makeRefMethods(primitive),
563
- ...makeEffectMethods(primitive.get),
564
- ...makeFiltered(() => ref),
565
- ...makeComputedMethods(() => ref),
566
- ...makeTransformMethods(() => ref),
567
- version() {
568
- return MutableRef.get(primitive.version)
569
- },
570
- }
603
+ updateEffect: RefSubject<R, E, B>["updateEffect"] = (f) =>
604
+ Effect.map(this.ref.updateEffect((a) => Effect.map(f(this.from(a)), this.to)), this.from)
571
605
 
572
- return ref
573
- }
606
+ modifyEffect: RefSubject<R, E, B>["modifyEffect"] = (f) =>
607
+ this.ref.modifyEffect((a) => Effect.map(f(this.from(a)), ([c, b]) => [c, this.to(b)] as const))
574
608
 
575
- // Base Ref which provides all functionality that can otherwise be derived
576
- // using makeRefFromPrimitive
577
- interface RefPrimitive<E, A> {
578
- // Fx
579
- run: RefSubject<E, A>['run']
580
-
581
- // Subject
582
- event: RefSubject<E, A>['event']
583
- error: RefSubject<E, A>['error']
584
- end: RefSubject<E, A>['end']
585
-
586
- // Ref
587
- eq: RefSubject<E, A>['eq']
588
- get: RefSubject<E, A>['get']
589
- modifyEffect: RefSubject<E, A>['modifyEffect']
590
- set: RefSubject<E, A>['set']
591
- delete: RefSubject<E, A>['delete']
592
- multiUpdate: RefSubject<E, A>['multiUpdate']
593
-
594
- // Primitive
595
- version: MutableRef.MutableRef<number>
596
- }
609
+ modify: RefSubject<R, E, B>["modify"] = (f) =>
610
+ this.ref.modify((a) => {
611
+ const [c, b] = f(this.from(a))
612
+ return [c, this.to(b)] as const
613
+ })
597
614
 
598
- // Internals for RefSubject.tuple
599
-
600
- function tupleRefPrimitive<const Refs extends ReadonlyArray<RefSubject.Any>>(
601
- refs: Refs,
602
- ): RefPrimitive<Fx.Error<Refs[number]>, { readonly [K in keyof Refs]: Fx.Success<Refs[K]> }> {
603
- type _E = Fx.Error<Refs[number]>
604
- type _A = { readonly [K in keyof Refs]: Fx.Success<Refs[K]> }
605
-
606
- const hold = new HoldFx(combineAll(...refs) as any as Fx<never, _E, _A>)
607
- const eq = Equivalence.tuple(...refs.map((ref) => ref.eq))
608
- const get = Effect.all(
609
- refs.map((ref) => ref.get),
610
- unboundedConcurrency,
611
- ) as Effect.Effect<never, _E, _A>
612
- const set = (value: { readonly [K in keyof Refs]: Fx.Success<Refs[K]> }) =>
613
- Effect.all(
614
- value.map((v, i) => refs[i].set(v)),
615
- unboundedConcurrency,
616
- ) as Effect.Effect<never, never, _A>
617
- const multiUpdate = makeMultiUpdateFromContext(get, set, identity)
618
-
619
- const primitive: RefPrimitive<_E, _A> = {
620
- multiUpdate,
621
- delete: Effect.map(
622
- Effect.all(
623
- refs.map((ref) => ref.delete),
624
- unboundedConcurrency,
625
- ),
626
- (values) => Option.all(values),
627
- ) as Effect.Effect<never, _E, Option.Option<_A>>,
628
- end: () =>
629
- Effect.all(
630
- refs.map((ref) => ref.end()),
631
- unboundedConcurrency,
632
- ),
633
- eq,
634
- error: (error) => hold.error(error),
635
- event: (value) =>
636
- Effect.all(
637
- value.map((v, i) => refs[i].event(v)),
638
- unboundedConcurrency,
639
- ),
640
- get,
641
- modifyEffect: makeModifyEffectTuple(refs, get, eq),
642
- run: (sink) => hold.run(sink),
643
- set,
644
- version: MutableRef.make(0),
645
- }
615
+ runUpdate: RefSubject<R, E, B>["runUpdate"] = (f) =>
616
+ this.ref.runUpdate((get, set) => f(Effect.map(get, this.from), (b) => Effect.map(set(this.to(b)), this.from)))
646
617
 
647
- return primitive
648
- }
618
+ mapEffect: RefSubject<R, E, B>["mapEffect"] = (f) => Computed(this, f)
649
619
 
650
- function makeModifyEffectTuple<
651
- const Refs extends ReadonlyArray<RefSubject.Any>,
652
- E,
653
- A extends readonly any[],
654
- >(
655
- refs: Refs,
656
- get: Effect.Effect<never, E, A>,
657
- eq: Equivalence.Equivalence<A>,
658
- ): RefSubject<E, A>['modifyEffect'] {
659
- return <R2, E2, B>(f: (a: A) => Effect.Effect<R2, E2, readonly [B, A]>) => {
660
- return Effect.gen(function* ($) {
661
- const current = yield* $(get)
662
- const [b, a] = yield* $(f(current))
663
-
664
- if (eq(a, current)) {
665
- return b
666
- }
667
-
668
- yield* $(
669
- Effect.all(
670
- refs.map((ref, i) => ref.set(a[i])),
671
- unboundedConcurrency,
672
- ),
673
- )
674
-
675
- return b
676
- })
677
- }
678
- }
679
-
680
- function structRefPrimitive<const Refs extends Readonly<Record<string, RefSubject.Any>>>(
681
- refs: Refs,
682
- ): RefPrimitive<Fx.Error<Refs[string]>, { readonly [K in keyof Refs]: Fx.Success<Refs[K]> }> {
683
- type _E = Fx.Error<Refs[string]>
684
- type _A = { readonly [K in keyof Refs]: Fx.Success<Refs[K]> }
685
-
686
- const hold = new HoldFx(struct(refs)) as HoldFx<never, _E, _A>
687
- const eq = Equivalence.struct(mapRecord(refs, (ref) => ref.eq))
688
- const get = Effect.all(
689
- mapRecord(refs, (ref) => ref.get),
690
- unboundedConcurrency,
691
- ) as Effect.Effect<never, _E, _A>
692
- const set = (value: { readonly [K in keyof Refs]: Fx.Success<Refs[K]> }) =>
693
- Effect.all(
694
- mapRecord(value, (v, i) => refs[i].set(v)),
695
- unboundedConcurrency,
696
- ) as Effect.Effect<never, never, _A>
697
- const multiUpdate = makeMultiUpdateFromContext(get, set, identity)
698
-
699
- const primitive: RefPrimitive<_E, _A> = {
700
- multiUpdate,
701
- delete: Effect.map(
702
- Effect.all(
703
- mapRecord(refs, (ref) => ref.delete),
704
- unboundedConcurrency,
705
- ),
706
- (values) => Option.all(values),
707
- ) as Effect.Effect<never, _E, Option.Option<_A>>,
708
- end: () =>
709
- Effect.all(
710
- mapRecord(refs, (ref) => ref.end()),
711
- unboundedConcurrency,
712
- ),
713
- eq,
714
- error: (error) => hold.error(error),
715
- event: (value) =>
716
- Effect.all(
717
- mapRecord(value, (v, i) => refs[i].event(v)),
718
- unboundedConcurrency,
719
- ),
720
- get,
721
- modifyEffect: makeModifyEffectStruct(refs, get, eq),
722
- run: (sink) => hold.run(sink),
723
- set: (value) =>
724
- Effect.all(
725
- mapRecord(value, (v, i) => refs[i].set(v)),
726
- unboundedConcurrency,
727
- ) as Effect.Effect<never, never, _A>,
728
- version: MutableRef.make(0),
729
- }
620
+ map: RefSubject<R, E, B>["map"] = (f) => this.mapEffect((b) => Effect.sync(() => f(b)))
730
621
 
731
- return primitive
732
- }
622
+ filterMapEffect: RefSubject<R, E, B>["filterMapEffect"] = (f) => Filtered(this, f)
733
623
 
734
- function makeModifyEffectStruct<
735
- const Refs extends Readonly<Record<string, RefSubject.Any>>,
736
- E,
737
- A extends Readonly<Record<string, any>>,
738
- >(
739
- refs: Refs,
740
- get: Effect.Effect<never, E, A>,
741
- eq: Equivalence.Equivalence<A>,
742
- ): RefSubject<E, A>['modifyEffect'] {
743
- return <R2, E2, B>(f: (a: A) => Effect.Effect<R2, E2, readonly [B, A]>) => {
744
- return Effect.gen(function* ($) {
745
- const current = yield* $(get)
746
- const [b, a] = yield* $(f(current))
747
-
748
- if (eq(a, current)) {
749
- return b
750
- }
751
-
752
- yield* $(
753
- Effect.all(
754
- mapRecord(refs, (ref, i) => ref.set(a[i])),
755
- unboundedConcurrency,
756
- ),
757
- )
758
-
759
- return b
760
- })
761
- }
762
- }
624
+ filterMap: RefSubject<R, E, B>["filterMap"] = (f) => Filtered(this, (a) => Effect.sync(() => f(a)))
763
625
 
764
- function mapRecord<K extends string, A, B>(
765
- record: Readonly<Record<K, A>>,
766
- f: (a: A, k: K) => B,
767
- ): { readonly [_ in K]: B } {
768
- const result: Record<K, B> = {} as any
626
+ filter: RefSubject<R, E, B>["filter"] = (f) => this.filterMap((a) => f(a) ? Option.some(a) : Option.none())
769
627
 
770
- for (const k in record) {
771
- result[k] = f(record[k], k)
772
- }
628
+ filterEffect: RefSubject<R, E, B>["filterEffect"] = (f) =>
629
+ this.filterMapEffect((a) => Effect.map(f(a), (b) => b ? Option.some(a) : Option.none()))
773
630
 
774
- return result
775
- }
631
+ onSuccess: RefSubject<R, E, B>["onSuccess"] = (b) => this.ref.onSuccess(this.to(b))
776
632
 
777
- export interface AsRefParams<A, R2 = never, E2 = never> {
778
- readonly eq?: Equivalence.Equivalence<A>
779
- readonly onValue?: (value: A) => Effect.Effect<R2, E2, unknown>
780
- }
633
+ onFailure: RefSubject<R, E, B>["onFailure"] = (b) => this.ref.onFailure(b)
781
634
 
782
- export function asRef<R, E, A, R2 = never, E2 = never>(
783
- fx: Fx<R, E, A>,
784
- params: AsRefParams<A, R2, E2> = {},
785
- ) {
786
- return Effect.flatMap(Deferred.make<E | E2, A>(), (deferred) =>
787
- Effect.flatMap(makeRef(Deferred.await(deferred), params.eq), (ref) => {
788
- const event = (value: A) =>
789
- Effect.flatMap(Deferred.succeed(deferred, value), (closed) =>
790
- closed ? Effect.unit : ref.set(value),
791
- )
792
-
793
- const to = switchMatchCauseEffect(fx, ref.error, event)
794
- const from = params.onValue ? switchMatchCauseEffect(ref, ref.error, params.onValue) : unit
795
- const both = merge(from, to)
796
-
797
- return Effect.as(Effect.forkScoped(Effect.catchAllCause(drain(both), ref.error)), ref)
798
- }),
799
- )
635
+ skipRepeats: (eq?: Equivalence<B> | undefined) => Computed<R, E, B> = (eq = equals) =>
636
+ Computed<R, E, B, never, never, B>(
637
+ Versioned.transformFx<R, never, R, E, B, R, E, B, R, E, B>(
638
+ this,
639
+ skipRepeatsWith(eq)
640
+ ),
641
+ Effect.succeed
642
+ )
800
643
  }