@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/Fx.ts CHANGED
@@ -1,68 +1,2657 @@
1
- import { identity } from '@effect/data/Function'
2
- import { Pipeable, pipeArguments } from '@effect/data/Pipeable'
3
- import type { Effect } from '@effect/io/Effect'
4
- import type * as Runtime from '@effect/io/Runtime'
1
+ /**
2
+ * Fx<R, E, A> is a representation of an `Effect`-ful workflow that exists over
3
+ * the time dimension. It operates within a context `R`, can fail with an `E`,
4
+ * and succeed with an `A`.
5
+ *
6
+ * Any `Fx`, shorthand for "Effects", can emit 0 or more errors or events over an
7
+ * indefinite period of time. This is in contrast to `Effect` which can only
8
+ * produce exactly 1 error or event.
9
+ *
10
+ * It is defined as a super-type of `Effect`, `Stream`, and `Cause`. This
11
+ * allows for all operators that accept an `Fx` to also capable of
12
+ * accepting an `Effect`, `Stream`, or `Cause`. An Effect or Cause represents a single
13
+ * event or error, while a Stream represents a series of events or errors that will
14
+ * be pulled from the producer as soon as possible.
15
+ *
16
+ * @since 1.18.0
17
+ */
5
18
 
6
- import { Sink } from './Sink.js'
19
+ import type * as Context from "@typed/context"
20
+ import type { Stream } from "effect"
21
+ import * as Cause from "effect/Cause"
22
+ import type * as Chunk from "effect/Chunk"
23
+ import type { DurationInput } from "effect/Duration"
24
+ import * as Effect from "effect/Effect"
25
+ import * as Either from "effect/Either"
26
+ import type { Equivalence } from "effect/Equivalence"
27
+ import type * as Exit from "effect/Exit"
28
+ import type * as Fiber from "effect/Fiber"
29
+ import type * as FiberId from "effect/FiberId"
30
+ import type { FiberRef } from "effect/FiberRef"
31
+ import { constant, dual, identity } from "effect/Function"
32
+ import type * as HashSet from "effect/HashSet"
33
+ import type { Inspectable } from "effect/Inspectable"
34
+ import type * as Layer from "effect/Layer"
35
+ import * as Option from "effect/Option"
36
+ import type { Pipeable } from "effect/Pipeable"
37
+ import type * as PubSub from "effect/PubSub"
38
+ import type * as Queue from "effect/Queue"
39
+ import type * as Request from "effect/Request"
40
+ import type * as Runtime from "effect/Runtime"
41
+ import type * as Schedule from "effect/Schedule"
42
+ import type { Scheduler } from "effect/Scheduler"
43
+ import type * as Scope from "effect/Scope"
44
+ import type * as Tracer from "effect/Tracer"
45
+ import type { Emitter } from "./Emitter"
46
+ import * as core from "./internal/core"
47
+ import * as internal from "./internal/fx"
48
+ import * as primitive from "./internal/fx-primitive"
49
+ import * as internalKeyed from "./internal/keyed"
50
+ import * as internalRun from "./internal/run"
51
+ import * as Share from "./internal/share"
52
+ import * as strategies from "./internal/strategies"
53
+ import * as internalWithKey from "./internal/withKey"
54
+ import { type RefSubject, transform } from "./RefSubject"
55
+ import type * as Sink from "./Sink"
56
+ import type { Subject } from "./Subject"
57
+ import { TypeId } from "./TypeId"
7
58
 
8
- export const FxTypeId = Symbol.for('@typed/fx/Fx')
9
- export type FxTypeId = typeof FxTypeId
59
+ /* #region Model */
10
60
 
11
- export interface Fx<out R, out E, out A> extends Pipeable {
12
- readonly [FxTypeId]: {
13
- readonly _R: (_: never) => R
14
- readonly _E: (_: never) => E
15
- readonly _A: (_: never) => A
61
+ /**
62
+ * Fx<R, E, A> is a representation of an `Effect`-ful workflow that exists over
63
+ * the time dimension. It operates within a context `R`, can fail with an `E`,
64
+ * and succeed with an `A`.
65
+ *
66
+ * @since 1.18.0
67
+ * @category models
68
+ */
69
+ export interface Fx<R, E, A> extends Fx.Variance<R, E, A>, Pipeable, Inspectable {}
70
+
71
+ /**
72
+ * FxInput<R, E, A> are all the types that can be transformed into an Fx
73
+ *
74
+ * @since 1.18.0
75
+ * @category models
76
+ */
77
+ export type FxInput<R, E, A> = Fx<R, E, A> | Effect.Effect<R, E, A> | Cause.Cause<E> | Iterable<A>
78
+
79
+ /**
80
+ * @since 1.18.0
81
+ */
82
+ export namespace Fx {
83
+ /**
84
+ * Extract the Context, Error, or Success type from an Fx
85
+ * @since 1.18.0
86
+ */
87
+ export type Context<T> = T extends Fx<infer R, infer _E, infer _A> ? R : never
88
+
89
+ /**
90
+ * Extract the Error type from an Fx
91
+ * @since 1.18.0
92
+ */
93
+ export type Error<T> = T extends Fx<infer _R, infer E, infer _A> ? E : never
94
+
95
+ /**
96
+ * Extract the Success type from an Fx
97
+ * @since 1.18.0
98
+ */
99
+ export type Success<T> = T extends Fx<infer _R, infer _E, infer A> ? A : never
100
+
101
+ /**
102
+ * Configures the variance of an Fx
103
+ * @since 1.18.0
104
+ * @category models
105
+ */
106
+ export interface Variance<R, E, A> {
107
+ readonly [TypeId]: {
108
+ readonly _R: (_: never) => R
109
+ readonly _E: (_: never) => E
110
+ readonly _A: (_: never) => A
111
+ }
16
112
  }
17
113
 
18
- readonly run: <R2>(sink: Sink<R2, E, A>) => Effect<R | R2, never, void>
114
+ /**
115
+ * @since 1.18.0
116
+ */
117
+ export type FromInput<T extends FxInput<any, any, any>> = [T] extends [ReadonlyArray<infer A>] ? Fx<never, never, A>
118
+ : [T] extends [Iterable<infer A>] ? Fx<never, never, A>
119
+ : [T] extends [Cause.Cause<infer E>] ? Fx<never, E, never>
120
+ : [T] extends [Fx<infer R, infer E, infer A>] ? Fx<R, E, A>
121
+ : [T] extends [Effect.Effect<infer R, infer E, infer A>] ? Fx<R, E, A>
122
+ : never
19
123
  }
20
124
 
21
- const fxVariance = {
22
- _R: identity,
23
- _E: identity,
24
- _A: identity,
125
+ /**
126
+ * FlattenStrategy is a representation of how higher-order effect operators should flatten
127
+ * nested Fx.
128
+ *
129
+ * @since 1.18.0
130
+ * @category FlattenStrategy
131
+ */
132
+ export type FlattenStrategy = Unbounded | Bounded | Switch | Exhaust | ExhaustLatest
133
+
134
+ /**
135
+ * Strategy which will allow for an unbounded number of concurrent effects to be run.
136
+ * @since 1.18.0
137
+ * @category FlattenStrategy
138
+ */
139
+ export interface Unbounded {
140
+ readonly _tag: "Unbounded"
25
141
  }
26
142
 
27
- const proto = {
28
- [FxTypeId]: fxVariance,
29
- pipe() {
30
- // eslint-disable-next-line prefer-rest-params
31
- return pipeArguments(this, arguments)
32
- },
143
+ /**
144
+ * Singleton instance of Unbounded
145
+ * @since 1.18.0
146
+ * @category FlattenStrategy
147
+ */
148
+ export const Unbounded: Unbounded = strategies.Unbounded
149
+
150
+ /**
151
+ * Strategy which will allow for a bounded number of concurrent effects to be run.
152
+ * @since 1.18.0
153
+ * @category FlattenStrategy
154
+ */
155
+ export interface Bounded {
156
+ readonly _tag: "Bounded"
157
+ readonly capacity: number
33
158
  }
34
159
 
35
- export const make: <R, E, A>(
36
- run: <R2>(sink: Sink<R2, E, A>) => Effect<R | R2, never, void>,
37
- ) => Fx<R, E, A> = function Fx<R, E, A>(run: Fx<R, E, A>['run']): Fx<R, E, A> {
38
- const fx = Object.create(proto)
160
+ /**
161
+ * Construct a Bounded strategy
162
+ * @since 1.18.0
163
+ * @category FlattenStrategy
164
+ */
165
+ export const Bounded: (capacity: number) => Bounded = strategies.Bounded
39
166
 
40
- fx.run = run
167
+ /**
168
+ * Strategy which will switch to a new effect as soon as it is available.
169
+ * @since 1.18.0
170
+ * @category FlattenStrategy
171
+ */
172
+ export interface Switch {
173
+ readonly _tag: "Switch"
174
+ }
175
+
176
+ /**
177
+ * Singleton instance of Switch
178
+ * @since 1.18.0
179
+ * @category FlattenStrategy
180
+ */
181
+ export const Switch: Switch = strategies.Switch
41
182
 
42
- return fx
183
+ /**
184
+ * Strategy which will always favor the first Fx, dropping any Fx emitted while
185
+ * the first Fx is still running. When the first Fx finished, the next event
186
+ * will execute.
187
+ *
188
+ * @since 1.18.0
189
+ * @category FlattenStrategy
190
+ */
191
+ export interface Exhaust {
192
+ readonly _tag: "Exhaust"
43
193
  }
44
194
 
45
- export function Fx<R, E, A>(
46
- run: <R2>(sink: Sink<R2, E, A>) => Effect<R | R2, never, void>,
47
- ): Fx<R, E, A> {
48
- return make(run)
195
+ /**
196
+ * Singleton instance of Exhaust
197
+ * @since 1.18.0
198
+ * @category FlattenStrategy
199
+ */
200
+ export const Exhaust: Exhaust = strategies.Exhaust
201
+
202
+ /**
203
+ * Strategy which will always favor the latest Fx, dropping any Fx emitted while
204
+ * the latest Fx is still running. When the latest Fx finishes, the last seend event
205
+ * will execute.
206
+ *
207
+ * @since 1.18.0
208
+ * @category FlattenStrategy
209
+ */
210
+ export interface ExhaustLatest {
211
+ readonly _tag: "ExhaustLatest"
49
212
  }
50
213
 
51
- export namespace Fx {
52
- export type Any = Fx<any, any, any>
53
- export type TupleAny = ReadonlyArray<Any>
214
+ /**
215
+ * Singleton instance of ExhaustLatest
216
+ * @since 1.18.0
217
+ * @category FlattenStrategy
218
+ */
219
+ export const ExhaustLatest: ExhaustLatest = strategies.ExhaustLatest
220
+
221
+ /**
222
+ * MergeStrategy is a representation of how multiple Fx should be merged together.
223
+ * @since 1.18.0
224
+ * @category MergeStrategy
225
+ */
226
+ export type MergeStrategy = Unordered | Ordered | Switch
227
+
228
+ /**
229
+ * Strategy which will merge Fx in an unordered fashion.
230
+ * @since 1.18.0
231
+ * @category MergeStrategy
232
+ */
233
+ export interface Unordered {
234
+ readonly _tag: "Unordered"
235
+ readonly concurrency: number
236
+ }
237
+
238
+ /**
239
+ * Construct an Unordered strategy
240
+ * @since 1.18.0
241
+ * @category MergeStrategy
242
+ */
243
+ export const Unordered: (concurrency: number) => Unordered = strategies.Unordered
244
+
245
+ /**
246
+ * Strategy which will merge Fx in an ordered fashion with
247
+ * the specified level of concurrency.
248
+ * @since 1.18.0
249
+ * @category MergeStrategy
250
+ */
251
+ export interface Ordered {
252
+ readonly _tag: "Ordered"
253
+ readonly concurrency: number
254
+ }
255
+
256
+ /**
257
+ * Construct an Ordered strategy
258
+ * @since 1.18.0
259
+ * @category MergeStrategy
260
+ */
261
+ export const Ordered: (concurrency: number) => Ordered = strategies.Ordered
262
+
263
+ /* #endregion */
264
+
265
+ /* #region Constructor */
266
+
267
+ /* #region Core */
268
+
269
+ /**
270
+ * An Fx which will immediately end producing 0 events and 0 errors.
271
+ * @since 1.18.0
272
+ * @category constructors
273
+ */
274
+ export const empty: Fx<never, never, never> = core.empty
275
+
276
+ /**
277
+ * Construct an Fx<never, E, A> from a Cause<E>
278
+ * @since 1.18.0
279
+ * @category constructors
280
+ */
281
+ export const failCause: <E>(cause: Cause.Cause<E>) => Fx<never, E, never> = core.failCause
282
+
283
+ /**
284
+ * Construct an Fx<never, never, never> from a defect
285
+ * @since 1.18.0
286
+ * @category constructors
287
+ */
288
+ export const die = (defect: unknown): Fx<never, never, never> => failCause(Cause.die(defect))
289
+
290
+ /**
291
+ * Interrupt the current Fx with the specified FiberId
292
+ * @since 1.18.0
293
+ * @category constructors
294
+ */
295
+ export const interrupt = (id: FiberId.FiberId): Fx<never, never, never> => failCause(Cause.interrupt(id))
296
+
297
+ /**
298
+ * Construct an Fx which will fail with the specified error.
299
+ * @since 1.18.0
300
+ * @category constructors
301
+ */
302
+ export const fail: <E>(error: E) => Fx<never, E, never> = core.fail
303
+
304
+ /**
305
+ * Construct an Fx<R, E, A> from an Effect<R, E, A>
306
+ * @since 1.18.0
307
+ * @category constructors
308
+ */
309
+ export const fromEffect: <R, E, A>(effect: Effect.Effect<R, E, A>) => Fx<R, E, A> = core.fromEffect
310
+
311
+ /**
312
+ * Construct an Fx from an Iterable
313
+ * @since 1.18.0
314
+ * @category constructors
315
+ */
316
+ export const fromIterable: {
317
+ <A extends ReadonlyArray<any>>(array: A): Fx<never, never, A[number]>
318
+ <A>(iterable: Iterable<A>): Fx<never, never, A>
319
+ } = core.fromIterable
320
+
321
+ /**
322
+ * Construct an Fx<R, E, A> from an Effect<R, E, A>
323
+ * @since 1.18.0
324
+ * @category constructors
325
+ */
326
+ export const fromStream: <R, E, A>(effect: Stream.Stream<R, E, A>) => Fx<R, E, A> = core.fromStream
327
+
328
+ /**
329
+ * Construct an Fx<R, E, A> from an Effect<R, E, A>
330
+ * @since 1.18.0
331
+ * @category constructors
332
+ */
333
+ export const from: {
334
+ <A extends ReadonlyArray<any>>(array: A): Fx<never, never, A[number]>
335
+ <A>(iterable: Iterable<A>): Fx<never, never, A>
336
+ <E>(cause: Cause.Cause<E>): Fx<never, E, never>
337
+ <R, E, A>(fx: FxInput<R, E, A>): Fx<R, E, A>
338
+ <A>(value: A): Fx<never, never, A>
339
+ } = core.from
340
+
341
+ /**
342
+ * Construct an Fx by describing an Effectful workflow that has access to a Sink
343
+ * to emit events and errors.
344
+ * @since 1.18.0
345
+ * @category constructors
346
+ */
347
+ export const fromSink: <R, E, A>(f: (sink: Sink.Sink<E, A>) => Effect.Effect<R, E, unknown>) => Fx<R, E, A> =
348
+ core.fromSink
349
+
350
+ /**
351
+ * Construct an Fx by describing an Scoped Effect that has access to an Emitter
352
+ * to emit events and errors.
353
+ * @since 1.18.0
354
+ * @category constructors
355
+ */
356
+ export const fromEmitter: <R, E, A>(
357
+ f: (emitter: Emitter<E, A>) => Effect.Effect<R | Scope.Scope, never, unknown>
358
+ ) => Fx<Exclude<R, Scope.Scope>, E, A> = core.fromEmitter
359
+
360
+ /**
361
+ * An Fx which will never emit any errors or events, and will never end
362
+ * @since 1.18.0
363
+ * @category constructors
364
+ */
365
+ export const never: Fx<never, never, never> = core.never
366
+
367
+ /**
368
+ * Construct an Fx which will emit the specified value and then end.
369
+ * @since 1.18.0
370
+ * @category constructors
371
+ */
372
+ export const succeed: <A>(value: A) => Fx<never, never, A> = core.succeed
373
+
374
+ /**
375
+ * Construct an Fx which will emit the return of a synchronous function and then end.
376
+ * @since 1.18.0
377
+ * @category constructors
378
+ */
379
+ export const sync: <A>(f: () => A) => Fx<never, never, A> = core.sync
380
+
381
+ /**
382
+ * Lazily construct an Fx.
383
+ * @since 1.18.0
384
+ * @category constructors
385
+ */
386
+ export const suspend: <R, E, A>(f: () => Fx<R, E, A>) => Fx<R, E, A> = core.suspend
387
+
388
+ /**
389
+ * Helper for constructing your own custom subtypes of an Fx
390
+ * @since 1.18.0
391
+ * @category Subtyping
392
+ */
393
+ export abstract class ToFx<R, E, A> extends primitive.ToFx<R, E, A> implements Fx<R, E, A> {
394
+ /**
395
+ * Your implementation of an Fx is returned by this function.
396
+ * @since 1.18.0
397
+ */
398
+ abstract toFx(): Fx<R, E, A>
399
+ }
400
+
401
+ /**
402
+ * Create an Fx which will emit a value after waiting for a specified duration.
403
+ * @since 1.18.0
404
+ * @category constructors
405
+ */
406
+ export const at: {
407
+ (delay: DurationInput): <A>(value: A) => Fx<never, never, A>
408
+ <A>(value: A, delay: DurationInput): Fx<never, never, A>
409
+ } = internal.at
410
+
411
+ /**
412
+ * Type-alias for a Effect.forkIn(scope) that returns a Fiber
413
+ * @since 1.18.0
414
+ * @category models
415
+ */
416
+ export type ScopedFork = <R, E, A>(effect: Effect.Effect<R, E, A>) => Effect.Effect<R, never, Fiber.Fiber<E, A>>
417
+
418
+ /**
419
+ * Type-alias for Effect.forkIn(scope) which runs the Effect runtime
420
+ * of an Fx in a Scope. Used in for higher-order operators.
421
+ *
422
+ * @since 1.18.0
423
+ * @category models
424
+ */
425
+ export type FxFork = <R>(
426
+ effect: Effect.Effect<R, never, void>
427
+ ) => Effect.Effect<R, never, void>
428
+
429
+ /**
430
+ * Params for withScopedFork
431
+ * @since 1.18.0
432
+ * @category params
433
+ */
434
+ export type WithScopedForkParams<E, A> = {
435
+ readonly sink: Sink.Sink<E, A>
436
+ readonly fork: ScopedFork
437
+ readonly scope: Scope.Scope
438
+ }
439
+
440
+ /**
441
+ * Construct an Fx which can fork effects into a Scope.
442
+ * @since 1.18.0
443
+ * @category constructors
444
+ */
445
+ export const withScopedFork: <R, E, A>(
446
+ f: (params: WithScopedForkParams<E, A>) => Effect.Effect<R, never, unknown>
447
+ ) => Fx<R, E, A> = core.withScopedFork
448
+
449
+ /**
450
+ * Params for withEarlyExit
451
+ * @since 1.18.0
452
+ * @category params
453
+ */
454
+ export type WithEarlyExitParams<E, A> = {
455
+ readonly sink: Sink.WithEarlyExit<E, A>
456
+ readonly fork: ScopedFork
457
+ readonly scope: Scope.Scope
458
+ }
459
+
460
+ /**
461
+ * Construct an Fx which can exit early from a Scope.
462
+ * @since 1.18.0
463
+ * @category constructors
464
+ */
465
+ export const withEarlyExit: <R, E, A>(
466
+ f: (params: WithEarlyExitParams<E, A>) => Effect.Effect<R, never, unknown>
467
+ ) => Fx<R, E, A> = core.withEarlyExit
468
+
469
+ /**
470
+ * Params for withFlattenStrategy
471
+ * @since 1.18.0
472
+ * @category params
473
+ */
474
+ export type WithFlattenStrategyParams<E, A> = {
475
+ readonly sink: Sink.Sink<E, A>
476
+ readonly fork: FxFork
477
+ readonly scope: Scope.Scope
478
+ }
479
+
480
+ /**
481
+ * Construct an Fx which can flatten nested Fx.
482
+ * @since 1.18.0
483
+ * @category constructors
484
+ */
485
+ export const withFlattenStrategy: <R, E, A>(
486
+ f: (params: WithFlattenStrategyParams<E, A>) => Effect.Effect<R, never, unknown>,
487
+ strategy: FlattenStrategy
488
+ ) => Fx<R, E, A> = core.withFlattenStrategy
489
+
490
+ /* #endregion */
491
+
492
+ /* #region Additions */
493
+
494
+ /**
495
+ * Acquire a resource, use it to construct an Fx, and then release the resource
496
+ * after the Fx has exited.
497
+ *
498
+ * @since 1.18.0
499
+ * @category constructors
500
+ */
501
+ export const acquireUseRelease: {
502
+ <A, R2, E2, B, R3, E3>(
503
+ use: (a: A) => FxInput<R2, E2, B>,
504
+ release: (a: A, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<R3, E3, unknown>
505
+ ): <R, E>(acquire: Effect.Effect<R, E, A>) => Fx<R | R2 | R3, E | E2 | E3, B>
506
+
507
+ <R, E, A, R2, E2, B, R3, E3>(
508
+ acquire: Effect.Effect<R, E, A>,
509
+ use: (a: A) => FxInput<R2, E2, B>,
510
+ release: (a: A, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<R3, E3, unknown>
511
+ ): Fx<R | R2 | R3, E | E2 | E3, B>
512
+ } = core.acquireUseRelease
513
+
514
+ /**
515
+ * Combine multiple Fx into a single Fx that will emit the results of all Fx
516
+ * as a tuple of values.
517
+ *
518
+ * @since 1.18.0
519
+ * @category constructors
520
+ */
521
+ export const combine: <const FX extends ReadonlyArray<Fx<any, any, any>>>(
522
+ fxs: FX
523
+ ) => Fx<Fx.Context<FX[number]>, Fx.Error<FX[number]>, { readonly [K in keyof FX]: Fx.Success<FX[K]> }> = core.combine
524
+
525
+ /**
526
+ * Combine a record of Fx into a single Fx that will emit the results of all Fx
527
+ * as a record of values.
528
+ *
529
+ * @since 1.18.0
530
+ * @category constructors
531
+ */
532
+ export const struct: <const FX extends Readonly<Record<string, Fx<any, any, any>>>>(
533
+ fxs: FX
534
+ ) => Fx<Fx.Context<FX[string]>, Fx.Error<FX[string]>, { readonly [K in keyof FX]: Fx.Success<FX[K]> }> = (fx) =>
535
+ map(combine(Object.entries(fx).map(([k, fx]) => map(fx, (v) => [k, v] as const))), Object.fromEntries)
536
+
537
+ /**
538
+ * Combine multiple Fx into a single Fx that will emit the results of all Fx
539
+ * as they occur.
540
+ * @since 1.18.0
541
+ * @category constructors
542
+ */
543
+ export const merge: <const FX extends ReadonlyArray<Fx<any, any, any>>>(
544
+ fxs: FX
545
+ ) => Fx<Fx.Context<FX[number]>, Fx.Error<FX[number]>, Fx.Success<FX[number]>> = core.merge
546
+
547
+ /**
548
+ * Combine multiple Fx into a single Fx that will emit the results of all Fx
549
+ * as they occur, but only allowing `n` concurrent Fx to run at a time.
550
+ *
551
+ * @since 1.18.0
552
+ * @category constructors
553
+ */
554
+ export const mergeConcurrently: {
555
+ (concurrency: number): <const FX extends ReadonlyArray<Fx<any, any, any>>>(
556
+ fxs: FX
557
+ ) => Fx<Fx.Context<FX[number]>, Fx.Error<FX[number]>, Fx.Success<FX[number]>>
558
+ <const FX extends ReadonlyArray<Fx<any, any, any>>>(
559
+ fxs: FX,
560
+ concurrency: number
561
+ ): Fx<Fx.Context<FX[number]>, Fx.Error<FX[number]>, Fx.Success<FX[number]>>
562
+ } = core.mergeConcurrently
563
+
564
+ /**
565
+ * Combine multiple Fx into a single Fx that will emit the results of all Fx
566
+ * in the order the Fx were provided. All Fx will be executed concurrently,
567
+ * and the results will be buffered if necessary to preserve ordering.
568
+ *
569
+ * @since 1.18.0
570
+ * @category constructors
571
+ */
572
+ export const mergeBuffer: <const FX extends ReadonlyArray<Fx<any, any, any>>>(
573
+ fxs: FX
574
+ ) => Fx<Fx.Context<FX[number]>, Fx.Error<FX[number]>, Fx.Success<FX[number]>> = core.mergeBuffer
575
+
576
+ /**
577
+ * Combine multiple Fx into a single Fx that will emit the results of all Fx
578
+ * in the order the Fx were provided. All Fx will be executed concurrently, limited
579
+ * by the provided concurrency, and the results will be buffered if necessary to preserve ordering.
580
+ *
581
+ * @since 1.18.0
582
+ * @category constructors
583
+ */
584
+ export const mergeBufferConcurrently: {
585
+ (concurrency: number): <const FX extends ReadonlyArray<Fx<any, any, any>>>(
586
+ fxs: FX
587
+ ) => Fx<Fx.Context<FX[number]>, Fx.Error<FX[number]>, Fx.Success<FX[number]>>
588
+ <const FX extends ReadonlyArray<Fx<any, any, any>>>(
589
+ fxs: FX,
590
+ concurrency: number
591
+ ): Fx<Fx.Context<FX[number]>, Fx.Error<FX[number]>, Fx.Success<FX[number]>>
592
+ } = core.mergeBufferConcurrently
593
+
594
+ /**
595
+ * Merge together multiple Fx into a single Fx that will emit the results of all Fx
596
+ * allowing only 1 Fx to run at a time.
597
+ *
598
+ * @since 1.18.0
599
+ * @category constructors
600
+ */
601
+ export const mergeSwitch = <const FX extends ReadonlyArray<Fx<any, any, any>>>(
602
+ fxs: FX
603
+ ): Fx<
604
+ Fx.Context<FX[number]>,
605
+ Fx.Error<FX[number]>,
606
+ Fx.Success<FX[number]>
607
+ > => core.mergeSwitch(fxs)
608
+
609
+ /**
610
+ * Merge together multiple Fx into a single Fx that will emit the results of the
611
+ * first Fx to emit a value.
612
+ *
613
+ * @since 1.18.0
614
+ * @category constructors
615
+ */
616
+ export const race: <const FX extends ReadonlyArray<Fx<any, any, any>>>(
617
+ fxs: FX
618
+ ) => Fx<Fx.Context<FX[number]>, Fx.Error<FX[number]>, Fx.Success<FX[number]>> = core.race
619
+
620
+ /**
621
+ * Schedule an Effect to run using the provided Schedule, emitting its success of failure
622
+ * at the intervals specified by the Schedule.
623
+ *
624
+ * @since 1.18.0
625
+ * @category constructors
626
+ */
627
+ export const fromScheduled: {
628
+ <R2>(scheduled: Schedule.Schedule<R2, unknown, unknown>): <R, E, A>(fx: Effect.Effect<R, E, A>) => Fx<R | R2, E, A>
629
+ <R, E, A, R2>(fx: Effect.Effect<R, E, A>, scheduled: Schedule.Schedule<R2, unknown, unknown>): Fx<R | R2, E, A>
630
+ } = core.fromScheduled
631
+
632
+ /**
633
+ * Schedule an Effect to run at the specified duration.
634
+ *
635
+ * @since 1.18.0
636
+ * @category constructors
637
+ */
638
+ export const periodic: {
639
+ (duration: DurationInput): <R, E, A>(fx: Effect.Effect<R, E, A>) => Fx<R, E, A>
640
+ <R, E, A>(fx: Effect.Effect<R, E, A>, duration: DurationInput): Fx<R, E, A>
641
+ } = core.periodic
642
+
643
+ /**
644
+ * Consume a Dequeue as soon as values become available and emit them as a Fx.
645
+ * @since 1.18.0
646
+ * @category constructors
647
+ */
648
+ export const fromDequeue: {
649
+ <A>(dequeue: Queue.Dequeue<A>): Fx<never, never, A>
650
+ <I, A>(dequeue: Context.Dequeue<I, A>): Fx<I, never, A>
651
+ } = internal.fromDequeue
652
+
653
+ /**
654
+ * Consume a PubSub as soon as values become available and emit them as a Fx.
655
+ * @since 1.18.0
656
+ * @category constructors
657
+ */
658
+ export const fromPubSub: {
659
+ <A>(PubSub: PubSub.PubSub<A>): Fx<Scope.Scope, never, A>
660
+ <I, A>(PubSub: Context.PubSub<I, A>): Fx<Scope.Scope | I, never, A>
661
+ } = internal.fromPubSub
662
+
663
+ /* #endregion */
664
+
665
+ /* #region Running */
666
+
667
+ /**
668
+ * Run an Fx to completion with the provided Sink. The
669
+ * Effect will resolve with the first Error of the Fx.
670
+ * @since 1.18.0
671
+ * @category running
672
+ */
673
+ export const run: {
674
+ <E, A, R2>(
675
+ sink: Sink.WithContext<R2, E, A>
676
+ ): <R>(fx: Fx<R, E, A>) => Effect.Effect<R | R2, never, unknown>
677
+
678
+ <R, E, A, R2>(
679
+ fx: Fx<R, E, A>,
680
+ sink: Sink.WithContext<R2, E, A>
681
+ ): Effect.Effect<R | R2, never, unknown>
682
+ } = dual(2, internalRun.run)
683
+
684
+ /**
685
+ * Observe an Fx with the provided success value handler. The
686
+ * Effect will resolve with the first Error of the Fx.
687
+ *
688
+ * @since 1.18.0
689
+ * @category running
690
+ */
691
+ export const observe: {
692
+ <A, R2, E2>(
693
+ onSuccees: (a: A) => Effect.Effect<R2, E2, unknown>
694
+ ): <R, E>(fx: Fx<R, E, A>) => Effect.Effect<R | R2, E | E2, void>
695
+ <R, E, A, R2, E2>(
696
+ fx: Fx<R, E, A>,
697
+ onSuccees: (a: A) => Effect.Effect<R2, E2, unknown>
698
+ ): Effect.Effect<R | R2, E | E2, void>
699
+ } = dual(2, core.observe)
700
+
701
+ /**
702
+ * Run an Fx to completion. The Effect will resolve with the first Error of the Fx.
703
+ *
704
+ * @since 1.18.0
705
+ * @category running
706
+ */
707
+ export const drain: <R, E, A>(fx: Fx<R, E, A>) => Effect.Effect<R, E, void> = core.drain
708
+
709
+ /**
710
+ * Reduce an Fx to a single value.
711
+ * @since 1.18.0
712
+ * @category running
713
+ */
714
+ export const reduce: {
715
+ <A, B>(seed: B, f: (acc: B, a: A) => B): <R, E>(fx: Fx<R, E, A>) => Effect.Effect<R, E, B>
716
+ <R, E, A, B>(fx: Fx<R, E, A>, seed: B, f: (acc: B, a: A) => B): Effect.Effect<R, E, B>
717
+ } = core.reduce
718
+
719
+ /**
720
+ * Run an Fx to completion, collecting all emitted values into an Array.
721
+ * @since 1.18.0
722
+ * @category running
723
+ */
724
+ export const toArray: <R, E, A>(fx: Fx<R, E, A>) => Effect.Effect<R, E, Array<A>> = core.toArray
725
+
726
+ /**
727
+ * Run an Fx to completion, collecting all emitted values into a ReadonlyArray.
728
+ * @since 1.18.0
729
+ * @category running
730
+ */
731
+ export const toReadonlyArray: <R, E, A>(fx: Fx<R, E, A>) => Effect.Effect<R, E, ReadonlyArray<A>> = core.toReadonlyArray
732
+
733
+ /**
734
+ * Run an Fx to completion, collecting all emitted values into a Chunk.
735
+ * @since 1.18.0
736
+ * @category running
737
+ */
738
+ export const toChunk: <R, E, A>(fx: Fx<R, E, A>) => Effect.Effect<R, E, Chunk.Chunk<A>> = core.toChunk
739
+
740
+ /**
741
+ * Consume an Fx and place its values into an Enqueue.
742
+ * @since 1.18.0
743
+ * @category running
744
+ */
745
+ export const toEnqueue: {
746
+ <A, B>(enqueue: Queue.Enqueue<A | B>): <R, E>(fx: Fx<R, E, A>) => Effect.Effect<R, E, void>
747
+ <I, A, B>(enqueue: Context.Enqueue<I, A | B>): <R, E>(fx: Fx<R, E, A>) => Effect.Effect<I | R, E, void>
748
+ <R, E, A, B>(fx: Fx<R, E, A>, enqueue: Queue.Enqueue<A | B>): Effect.Effect<R, E, void>
749
+ <R, E, I, A, B>(fx: Fx<R, E, A>, enqueue: Context.Enqueue<I, A | B>): Effect.Effect<R, E, void>
750
+ } = internal.toEnqueue
751
+
752
+ /* #endregion */
753
+
754
+ /* #region Combinators */
755
+
756
+ /**
757
+ * Map over the success value of an Fx.
758
+ * @since 1.18.0
759
+ * @category combinators
760
+ */
761
+ export const map: {
762
+ <A, B>(f: (a: A) => B): <R, E>(fx: Fx<R, E, A>) => Fx<R, E, B>
763
+ <R, E, A, B>(fx: Fx<R, E, A>, f: (a: A) => B): Fx<R, E, B>
764
+ } = core.map
765
+
766
+ /**
767
+ * Map over both failure and success values of an Fx.
768
+ * @since 1.18.0
769
+ * @category combinators
770
+ */
771
+ export const mapBoth: {
772
+ <E, E2, A, B>(
773
+ options: { readonly onFailure: (e: E) => E2; readonly onSuccess: (a: A) => B }
774
+ ): <R>(fx: Fx<R, E, A>) => Fx<R, E2, B>
775
+ <R, E, A, E2, B>(
776
+ fx: Fx<R, E, A>,
777
+ options: { readonly onFailure: (e: E) => E2; readonly onSuccess: (a: A) => B }
778
+ ): Fx<R, E2, B>
779
+ } = core.mapBoth
780
+
781
+ /**
782
+ * Filter the success value of an Fx.
783
+ * @since 1.18.0
784
+ * @category combinators
785
+ */
786
+ export const filter: {
787
+ <A, B extends A>(f: (a: A) => a is B): <R, E>(fx: Fx<R, E, A>) => Fx<R, E, B>
788
+ <A>(f: (a: A) => boolean): <R, E>(fx: Fx<R, E, A>) => Fx<R, E, A>
789
+ <R, E, A, B extends A>(fx: Fx<R, E, A>, f: (a: A) => a is B): Fx<R, E, B>
790
+ <R, E, A>(fx: Fx<R, E, A>, f: (a: A) => boolean): Fx<R, E, A>
791
+ } = core.filter
792
+
793
+ /**
794
+ * Filter and map the success value of an Fx.
795
+ * @since 1.18.0
796
+ * @category combinators
797
+ */
798
+ export const filterMap: {
799
+ <A, B>(f: (a: A) => Option.Option<B>): <R, E>(fx: Fx<R, E, A>) => Fx<R, E, B>
800
+ <R, E, A, B>(fx: Fx<R, E, A>, f: (a: A) => Option.Option<B>): Fx<R, E, B>
801
+ } = core.filterMap
802
+
803
+ /**
804
+ * Unwrap Options by filtering any None values.
805
+ * @since 1.18.0
806
+ * @category combinators
807
+ */
808
+ export const compact: <R, E, A>(fx: Fx<R, E, Option.Option<A>>) => Fx<R, E, A> = core.compact
809
+ /**
810
+ * Map over the Cause of an Fx.
811
+ * @since 1.18.0
812
+ * @category errors
813
+ */
814
+ export const mapErrorCause: {
815
+ <E, E2>(f: (a: Cause.Cause<E>) => Cause.Cause<E2>): <R, A>(fx: Fx<R, E, A>) => Fx<R, E2, A>
816
+ <R, E, A, E2>(fx: Fx<R, E, A>, f: (a: Cause.Cause<E>) => Cause.Cause<E2>): Fx<R, E2, A>
817
+ } = core.mapErrorCause
818
+
819
+ /**
820
+ * Map over the Error of an Fx.
821
+ * @since 1.18.0
822
+ * @category errors
823
+ */
824
+ export const mapError: {
825
+ <E, E2>(f: (a: E) => E2): <R, A>(fx: Fx<R, E, A>) => Fx<R, E2, A>
826
+ <R, E, A, E2>(fx: Fx<R, E, A>, f: (a: E) => E2): Fx<R, E2, A>
827
+ } = core.mapError
828
+
829
+ /**
830
+ * Filter the Cause of an Fx.
831
+ * @since 1.18.0
832
+ * @category errors
833
+ */
834
+ export const filterErrorCause: {
835
+ <E, E2 extends E>(f: (a: Cause.Cause<E>) => a is Cause.Cause<E2>): <R, A>(fx: Fx<R, E, A>) => Fx<R, E2, A>
836
+ <E>(f: (a: Cause.Cause<E>) => boolean): <R, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
837
+ <R, E, E2 extends E, A>(fx: Fx<R, E, A>, f: (a: Cause.Cause<E>) => a is Cause.Cause<E2>): Fx<R, E2, A>
838
+ <R, E, A>(fx: Fx<R, E, A>, f: (a: Cause.Cause<E>) => boolean): Fx<R, E, A>
839
+ } = core.filterCause
840
+
841
+ /**
842
+ * Filter and map the Cause of an Fx.
843
+ * @since 1.18.0
844
+ * @category errors
845
+ */
846
+ export const filterMapCause: {
847
+ <E, E2>(f: (a: Cause.Cause<E>) => Option.Option<Cause.Cause<E2>>): <R, A>(fx: Fx<R, E, A>) => Fx<R, E2, A>
848
+ <R, E, A, E2>(fx: Fx<R, E, A>, f: (a: Cause.Cause<E>) => Option.Option<Cause.Cause<E2>>): Fx<R, E2, A>
849
+ } = core.filterMapCause
850
+
851
+ /**
852
+ * Filter the Error of an Fx.
853
+ * @since 1.18.0
854
+ * @category errors
855
+ */
856
+ export const filterError: {
857
+ <E, E2 extends E>(f: (a: E) => a is E2): <R, A>(fx: Fx<R, E, A>) => Fx<R, E2, A>
858
+ <E>(f: (a: E) => boolean): <R, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
859
+ <R, E, E2 extends E, A>(fx: Fx<R, E, A>, f: (a: E) => a is E2): Fx<R, E2, A>
860
+ <R, E, A>(fx: Fx<R, E, A>, f: (a: E) => boolean): Fx<R, E, A>
861
+ } = core.filterError
862
+
863
+ /**
864
+ * Filter and map the error of an Fx.
865
+ * @since 1.18.0
866
+ * @category errors
867
+ */
868
+ export const filterMapError: {
869
+ <E, E2>(f: (a: E) => Option.Option<E2>): <R, A>(fx: Fx<R, E, A>) => Fx<R, E2, A>
870
+ <R, E, A, E2>(fx: Fx<R, E, A>, f: (a: E) => Option.Option<E2>): Fx<R, E2, A>
871
+ } = core.filterMapError
872
+
873
+ /**
874
+ * Filter and map the error of an Fx using an Effect.
875
+ * @since 1.18.0
876
+ * @category errors
877
+ */
878
+ export const filterMapErrorEffect: {
879
+ <E, R2, E2, B>(f: (e: E) => Effect.Effect<R2, E2, Option.Option<B>>): <R, A>(fx: Fx<R, E, A>) => Fx<R2 | R, E2 | B, A>
880
+ <R, E, A, R2, E2, B>(fx: Fx<R, E, A>, f: (e: E) => Effect.Effect<R2, E2, Option.Option<B>>): Fx<R | R2, E2 | B, A>
881
+ } = core.filterMapErrorEffect
882
+
883
+ /**
884
+ * Map the success value of an Fx to another Fx, flattening the result
885
+ * with the provided FlattenStrategy.
886
+ * @since 1.18.0
887
+ * @category flattening
888
+ */
889
+ export const flatMapWithStrategy: {
890
+ <A, R2, E2, B>(
891
+ f: (a: A) => FxInput<R2, E2, B>,
892
+ strategy: FlattenStrategy
893
+ ): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, B>
894
+ <R, E, A, R2, E2, B>(
895
+ fx: Fx<R, E, A>,
896
+ f: (a: A) => FxInput<R2, E2, B>,
897
+ strategy: FlattenStrategy
898
+ ): Fx<R | R2, E | E2, B>
899
+ } = dual(3, core.flatMapWithStrategy)
900
+
901
+ /**
902
+ * Map the success value of an Fx to another Fx, switching to the latest
903
+ * Fx emitted and interrupting the previous.
904
+ * @since 1.18.0
905
+ * @category flattening
906
+ */
907
+ export const switchMap: {
908
+ <A, R2 = never, E2 = never, B = never>(
909
+ f: (a: A) => FxInput<R2, E2, B>
910
+ ): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, B>
911
+ <R, E, A, R2 = never, E2 = never, B = never>(fx: Fx<R, E, A>, f: (a: A) => FxInput<R2, E2, B>): Fx<R | R2, E | E2, B>
912
+ } = core.switchMap
913
+
914
+ /**
915
+ * Map the success value of an Fx to another Fx, switching to the latest
916
+ * Fx emitted and interrupting the previous.
917
+ * @since 1.18.0
918
+ * @category flattening
919
+ */
920
+ export const switchLatest: {
921
+ <R, E, R2, E2, B>(fx: Fx<R, E, FxInput<R2, E2, B>>): Fx<R | R2, E | E2, B>
922
+ } = core.switchMap((x) => x)
923
+
924
+ /**
925
+ * Map the success value of an Fx to another Fx, prefering the first
926
+ * Fx emitted and dropping any subsequent Fx until it has completed.
927
+ * @since 1.18.0
928
+ * @category flattening
929
+ */
930
+ export const exhaustMap: {
931
+ <A, R2 = never, E2 = never, B = never>(
932
+ f: (a: A) => FxInput<R2, E2, B>
933
+ ): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, B>
934
+ <R, E, A, R2 = never, E2 = never, B = never>(fx: Fx<R, E, A>, f: (a: A) => FxInput<R2, E2, B>): Fx<R | R2, E | E2, B>
935
+ } = core.exhaustMap
936
+
937
+ /**
938
+ * Flatten a nested Fx, prefering the first
939
+ * Fx emitted and dropping any subsequent Fx until it has completed.
940
+ * @since 1.18.0
941
+ * @category flattening
942
+ */
943
+ export const exhaust: <R, E, R2, E2, A>(fx: Fx<R, E, Fx<R2, E2, A>>) => Fx<R | R2, E | E2, A> = core.exhaust
944
+
945
+ /**
946
+ * Map the success value of an Fx to another Fx, prefering the first
947
+ * until completion, and then running the last emitted Fx if they are not
948
+ * the same Fx.
949
+ *
950
+ * @since 1.18.0
951
+ * @category flattening
952
+ */
953
+ export const exhaustMapLatest: {
954
+ <A, R2 = never, E2 = never, B = never>(
955
+ f: (a: A) => FxInput<R2, E2, B>
956
+ ): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, B>
957
+ <R, E, A, R2 = never, E2 = never, B = never>(fx: Fx<R, E, A>, f: (a: A) => FxInput<R2, E2, B>): Fx<R | R2, E | E2, B>
958
+ } = core.exhaustMapLatest
959
+
960
+ /**
961
+ * Flatten a nested Fx, prefering the first until completion, and then running the last emitted Fx if they are not
962
+ * the same Fx.
963
+ *
964
+ * @since 1.18.0
965
+ * @category flattening
966
+ */
967
+ export const exhaustLatest: <R, E, R2, E2, A>(fx: Fx<R, E, Fx<R2, E2, A>>) => Fx<R | R2, E | E2, A> = core.exhaustLatest
968
+
969
+ /**
970
+ * Map the success value of an Fx to another Fx with unbounded concurrency.
971
+ *
972
+ * @since 1.18.0
973
+ * @category flattening
974
+ */
975
+ export const flatMap: {
976
+ <A, R2 = never, E2 = never, B = never>(
977
+ f: (a: A) => FxInput<R2, E2, B>
978
+ ): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, B>
979
+ <R, E, A, R2 = never, E2 = never, B = never>(fx: Fx<R, E, A>, f: (a: A) => FxInput<R2, E2, B>): Fx<R | R2, E | E2, B>
980
+ } = core.flatMap
981
+
982
+ /**
983
+ * Map the success value of an Fx to another Fx with unbounded concurrency.
984
+ *
985
+ * @since 1.18.0
986
+ * @category flattening
987
+ */
988
+ export const flatten: <R, E, R2, E2, A>(fx: Fx<R, E, Fx<R2, E2, A>>) => Fx<R | R2, E | E2, A> = core.flatten
989
+
990
+ /**
991
+ * Map the success value of an Fx to another Fx with the specified concurrency.
992
+ *
993
+ * @since 1.18.0
994
+ * @category flattening
995
+ */
996
+ export const flatMapConcurrently: {
997
+ <A, R2 = never, E2 = never, B = never>(
998
+ f: (a: A) => FxInput<R2, E2, B>,
999
+ concurrency: number
1000
+ ): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, B>
1001
+ <R, E, A, R2 = never, E2 = never, B = never>(
1002
+ fx: Fx<R, E, A>,
1003
+ f: (a: A) => FxInput<R2, E2, B>,
1004
+ concurrency: number
1005
+ ): Fx<R | R2, E | E2, B>
1006
+ } = core.flatMapConcurrently
1007
+
1008
+ /**
1009
+ * Map the success value of an Fx to another Fx one at a time.
1010
+ *
1011
+ * @since 1.18.0
1012
+ * @category flattening
1013
+ */
1014
+ export const concatMap: {
1015
+ <A, R2 = never, E2 = never, B = never>(
1016
+ f: (a: A) => FxInput<R2, E2, B>
1017
+ ): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, B>
1018
+ <R, E, A, R2 = never, E2 = never, B = never>(fx: Fx<R, E, A>, f: (a: A) => FxInput<R2, E2, B>): Fx<R | R2, E | E2, B>
1019
+ } = core.concatMap
1020
+
1021
+ /**
1022
+ * Skip and take a number of values from an Fx.
1023
+ *
1024
+ * @since 1.18.0
1025
+ * @category slicing
1026
+ */
1027
+ export const slice: {
1028
+ (skip: number, take: number): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
1029
+ <R, E, A>(fx: Fx<R, E, A>, skip: number, take: number): Fx<R, E, A>
1030
+ } = core.slice
1031
+
1032
+ /**
1033
+ * Take a number of values from an Fx.
1034
+ *
1035
+ * @since 1.18.0
1036
+ * @category slicing
1037
+ */
1038
+ export const take: {
1039
+ (n: number): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
1040
+ <R, E, A>(fx: Fx<R, E, A>, n: number): Fx<R, E, A>
1041
+ } = core.take
1042
+
1043
+ /**
1044
+ * Drop a number of values from an Fx.
1045
+ *
1046
+ * @since 1.18.0
1047
+ * @category slicing
1048
+ */
1049
+ export const drop: {
1050
+ (n: number): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
1051
+ <R, E, A>(fx: Fx<R, E, A>, n: number): Fx<R, E, A>
1052
+ } = core.drop
1053
+
1054
+ /**
1055
+ * Take values from an Fx while the predicate returns true.
1056
+ *
1057
+ * @since 1.18.0
1058
+ * @category slicing
1059
+ */
1060
+ export const takeWhile: {
1061
+ <A, R2, E2>(predicate: (a: A) => Effect.Effect<R2, E2, boolean>): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A>
1062
+ <R, E, A, R2, E2>(fx: Fx<R, E, A>, predicate: (a: A) => Effect.Effect<R2, E2, boolean>): Fx<R | R2, E | E2, A>
1063
+ } = core.takeWhile
1064
+
1065
+ /**
1066
+ * Take values from an Fx until the predicate returns true.
1067
+ *
1068
+ * @since 1.18.0
1069
+ * @category slicing
1070
+ */
1071
+ export const takeUntil: {
1072
+ <A, R2, E2>(predicate: (a: A) => Effect.Effect<R2, E2, boolean>): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A>
1073
+ <R, E, A, R2, E2>(fx: Fx<R, E, A>, predicate: (a: A) => Effect.Effect<R2, E2, boolean>): Fx<R | R2, E | E2, A>
1074
+ } = core.takeUntil
1075
+
1076
+ /**
1077
+ * Drop values from an Fx while the predicate returns true.
1078
+ *
1079
+ * @since 1.18.0
1080
+ * @category slicing
1081
+ */
1082
+ export const dropWhile: {
1083
+ <A, R2, E2>(predicate: (a: A) => Effect.Effect<R2, E2, boolean>): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A>
1084
+ <R, E, A, R2, E2>(fx: Fx<R, E, A>, predicate: (a: A) => Effect.Effect<R2, E2, boolean>): Fx<R | R2, E | E2, A>
1085
+ } = core.dropWhile
1086
+
1087
+ /**
1088
+ * Drop values from an Fx until the predicate returns true.
1089
+ *
1090
+ * @since 1.18.0
1091
+ * @category slicing
1092
+ */
1093
+ export const dropUntil: {
1094
+ <A, R2, E2>(predicate: (a: A) => Effect.Effect<R2, E2, boolean>): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A>
1095
+ <R, E, A, R2, E2>(fx: Fx<R, E, A>, predicate: (a: A) => Effect.Effect<R2, E2, boolean>): Fx<R | R2, E | E2, A>
1096
+ } = core.dropUntil
1097
+
1098
+ /**
1099
+ * Drop values from an Fx after the predicate returns true.
1100
+ *
1101
+ * @since 1.18.0
1102
+ * @category slicing
1103
+ */
1104
+ export const dropAfter: {
1105
+ <A, R2, E2>(predicate: (a: A) => Effect.Effect<R2, E2, boolean>): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A>
1106
+ <R, E, A, R2, E2>(fx: Fx<R, E, A>, predicate: (a: A) => Effect.Effect<R2, E2, boolean>): Fx<R | R2, E | E2, A>
1107
+ } = core.dropAfter
1108
+
1109
+ /**
1110
+ * Concatenate an Fx after the successful completion of another Fx
1111
+ *
1112
+ * @since 1.18.0
1113
+ * @category combinators
1114
+ */
1115
+ export const continueWith: {
1116
+ <R2, E2, B>(f: () => Fx<R2, E2, B>): <R, E, A>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A | B>
1117
+ <R, E, A, R2, E2, B>(fx: Fx<R, E, A>, f: () => Fx<R2, E2, B>): Fx<R | R2, E | E2, A | B>
1118
+ } = core.continueWith
1119
+
1120
+ /**
1121
+ * Concatenate an Fx after the failure of another Fx
1122
+ *
1123
+ * @since 1.18.0
1124
+ * @category combinators
1125
+ */
1126
+ export const orElse: {
1127
+ <E, R2, E2, B>(f: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>): <R, A>(fx: Fx<R, E, A>) => Fx<R | R2, E2, A | B>
1128
+ <R, E, A, R2, E2, B>(fx: Fx<R, E, A>, f: (cause: Cause.Cause<E>) => Fx<R2, E2, A>): Fx<R | R2, E2, A | B>
1129
+ } = core.recoverWith
1130
+
1131
+ /**
1132
+ * Map the success value of an Fx to an Effect, doesn't fork any fibers like flatMap* etc.
1133
+ *
1134
+ * @since 1.18.0
1135
+ * @category combinators
1136
+ */
1137
+ export const mapEffect: {
1138
+ <A, R2, E2, B>(f: (a: A) => Effect.Effect<R2, E2, B>): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, B>
1139
+ <R, E, A, R2, E2, B>(fx: Fx<R, E, A>, f: (a: A) => Effect.Effect<R2, E2, B>): Fx<R | R2, E | E2, B>
1140
+ } = core.mapEffect
1141
+
1142
+ /**
1143
+ * Perform an Effect for each value emitted by an Fx, not affecting the output of the Fx.
1144
+ *
1145
+ * @since 1.18.0
1146
+ * @category combinators
1147
+ */
1148
+ export const tap: {
1149
+ <A, R2, E2, B>(f: (a: A) => Effect.Effect<R2, E2, B>): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A>
1150
+ <R, E, A, R2, E2, B>(fx: Fx<R, E, A>, f: (a: A) => Effect.Effect<R2, E2, B>): Fx<R | R2, E | E2, A>
1151
+ } = core.tap
1152
+
1153
+ /**
1154
+ * Filter the success value of an Fx with an Effect.
1155
+ *
1156
+ * @since 1.18.0
1157
+ * @category combinators
1158
+ */
1159
+ export const filterEffect: {
1160
+ <A, R2, E2>(predicate: (a: A) => Effect.Effect<R2, E2, boolean>): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A>
1161
+ <R, E, A, R2, E2>(fx: Fx<R, E, A>, predicate: (a: A) => Effect.Effect<R2, E2, boolean>): Fx<R | R2, E | E2, A>
1162
+ } = core.filterEffect
1163
+
1164
+ /**
1165
+ * Filter and map the success value of an Fx with an Effect.
1166
+ *
1167
+ * @since 1.18.0
1168
+ * @category combinators
1169
+ */
1170
+ export const filterMapEffect: {
1171
+ <A, R2, E2, B>(f: (a: A) => Effect.Effect<R2, E2, Option.Option<B>>): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, B>
1172
+ <R, E, A, R2, E2, B>(fx: Fx<R, E, A>, f: (a: A) => Effect.Effect<R2, E2, Option.Option<B>>): Fx<R | R2, E | E2, B>
1173
+ } = core.filterMapEffect
1174
+
1175
+ /**
1176
+ * Apply a function to the constructed Effect that represents the running Fx.
1177
+ *
1178
+ * @since 1.18.0
1179
+ * @category combinators
1180
+ */
1181
+ export const middleware: {
1182
+ <R, E, A, R2>(
1183
+ f: (effect: Effect.Effect<R, never, unknown>) => Effect.Effect<R2, never, unknown>,
1184
+ g?: (sink: Sink.Sink<E, A>) => Sink.Sink<E, A>
1185
+ ): (fx: Fx<R, E, A>) => Fx<R2, E, A>
1186
+ <R, E, A, R2>(
1187
+ fx: Fx<R, E, A>,
1188
+ f: (effect: Effect.Effect<R, never, unknown>) => Effect.Effect<R2, never, unknown>,
1189
+ g?: (sink: Sink.Sink<E, A>) => Sink.Sink<E, A>
1190
+ ): Fx<R2, E, A>
1191
+ } = core.middleware
1192
+
1193
+ /**
1194
+ * Accumulate a value over the success values of an Fx and atomically produce derived value.
1195
+ *
1196
+ * @since 1.18.0
1197
+ * @category combinators
1198
+ */
1199
+ export const loop: {
1200
+ <A, B, C>(seed: B, f: (acc: B, a: A) => readonly [C, B]): <R, E>(fx: Fx<R, E, A>) => Fx<R, E, C>
1201
+ <R, E, A, B, C>(fx: Fx<R, E, A>, seed: B, f: (acc: B, a: A) => readonly [C, B]): Fx<R, E, C>
1202
+ } = core.loop
54
1203
 
55
- export type Cancel = Runtime.Cancel<never, void>
1204
+ /**
1205
+ * Emit values with their previously emitted values when possible.
1206
+ *
1207
+ * @since 1.18.0
1208
+ * @category combinators
1209
+ */
1210
+ export const withPrevious: <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, readonly [previous: Option.Option<A>, current: A]> = <
1211
+ R,
1212
+ E,
1213
+ A
1214
+ >(fx: Fx<R, E, A>): Fx<R, E, readonly [previous: Option.Option<A>, current: A]> =>
1215
+ loop(
1216
+ fx,
1217
+ Option.none<A>(),
1218
+ (previous, current) => [[previous, current] as const, Option.some(current)]
1219
+ )
56
1220
 
57
- export type Context<T> = [T] extends [never] ? never : T extends Fx<infer R, any, any> ? R : never
1221
+ /**
1222
+ * Accumulate a value over the success values of an Fx and atomically produce derived value
1223
+ * useing an Effect. A SynchronizedRef is utilized to ensure ordering of events.
1224
+ *
1225
+ * @since 1.18.0
1226
+ * @category combinators
1227
+ */
1228
+ export const loopEffect: {
1229
+ <B, A, R2, E2, C>(
1230
+ seed: B,
1231
+ f: (acc: B, a: A) => Effect.Effect<R2, E2, readonly [C, B]>
1232
+ ): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, C>
58
1233
 
59
- export type Error<T> = [T] extends [never] ? never : T extends Fx<any, infer E, any> ? E : never
1234
+ <R, E, A, B, R2, E2, C>(
1235
+ fx: Fx<R, E, A>,
1236
+ seed: B,
1237
+ f: (acc: B, a: A) => Effect.Effect<R2, E2, readonly [C, B]>
1238
+ ): Fx<R | R2, E | E2, C>
1239
+ } = core.loopEffect
60
1240
 
61
- export type Success<T> = [T] extends [never] ? never : T extends Fx<any, any, infer A> ? A : never
1241
+ /**
1242
+ * Prepends a value to the beginning of an Fx.
1243
+ *
1244
+ * @since 1.18.0
1245
+ * @category combinators
1246
+ */
1247
+ export const startWith: {
1248
+ <B>(value: B): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A | B>
1249
+ <R, E, A, B>(fx: Fx<R, E, A>, value: B): Fx<R, E, A | B>
1250
+ } = core.startWith
1251
+
1252
+ /**
1253
+ * Appends a value to the end of an Fx.
1254
+ *
1255
+ * @since 1.18.0
1256
+ * @category combinators
1257
+ */
1258
+ export const endWith: {
1259
+ <B>(value: B): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A | B>
1260
+ <R, E, A, B>(fx: Fx<R, E, A>, value: B): Fx<R, E, A | B>
1261
+ } = core.endWith
1262
+
1263
+ /**
1264
+ * Run a reducer over the success values of an Fx.
1265
+ *
1266
+ * @since 1.18.0
1267
+ * @category combinators
1268
+ */
1269
+ export const scan: {
1270
+ <A, B>(seed: B, f: (acc: B, a: A) => B): <R, E>(fx: Fx<R, E, A>) => Fx<R, E, B>
1271
+ <R, E, A, B>(fx: Fx<R, E, A>, seed: B, f: (acc: B, a: A) => B): Fx<R, E, B>
1272
+ } = core.scan
1273
+
1274
+ /**
1275
+ * Run an Effect-ful reducer over the success values of an Fx.
1276
+ *
1277
+ * @since 1.18.0
1278
+ * @category combinators
1279
+ */
1280
+ export const scanEffect: {
1281
+ <A, B, R2, E2>(
1282
+ seed: B,
1283
+ f: (acc: B, a: A) => Effect.Effect<R2, E2, B>
1284
+ ): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, B>
1285
+ <R, E, A, B, R2, E2>(fx: Fx<R, E, A>, seed: B, f: (acc: B, a: A) => Effect.Effect<R2, E2, B>): Fx<R | R2, E | E2, B>
1286
+ } = core.scanEffect
1287
+
1288
+ /**
1289
+ * Map the failures of an Fx to another Fx, flattening the result
1290
+ * with the provided FlattenStrategy.
1291
+ * @since 1.18.0
1292
+ * @category flattening
1293
+ */
1294
+ export const flatMapCauseWithStrategy: {
1295
+ <E, R2 = never, E2 = never, B = never>(
1296
+ f: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>,
1297
+ strategy: FlattenStrategy
1298
+ ): <R, A>(fx: Fx<R, E, A>) => Fx<R | R2, E2, A | B>
1299
+ <R, E, A, R2 = never, E2 = never, B = never>(
1300
+ fx: Fx<R, E, A>,
1301
+ f: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>,
1302
+ strategy: FlattenStrategy
1303
+ ): Fx<R | R2, E2, A | B>
1304
+ } = core.flatMapCauseWithStrategy
1305
+
1306
+ /**
1307
+ * Map the failures of an Fx to another Fx, flattening the result
1308
+ * with the provided FlattenStrategy.
1309
+ * @since 1.18.0
1310
+ * @category flattening
1311
+ */
1312
+ export const flatMapErrorWithStrategy: {
1313
+ <E, R2 = never, E2 = never, B = never>(
1314
+ f: (error: E) => FxInput<R2, E2, B>,
1315
+ strategy: FlattenStrategy
1316
+ ): <R, A>(fx: Fx<R, E, A>) => Fx<R2 | R, E2, B | A>
1317
+ <R, E, A, R2 = never, E2 = never, B = never>(
1318
+ fx: Fx<R, E, A>,
1319
+ f: (error: E) => FxInput<R2, E2, B>,
1320
+ strategy: FlattenStrategy
1321
+ ): Fx<R | R2, E2, A | B>
1322
+ } = core.flatMapErrorWithStrategy
1323
+
1324
+ /**
1325
+ * Map the failures of an Fx to another Fx, flattening the result with unbounded concurrency.
1326
+ *
1327
+ * @since 1.18.0
1328
+ * @category flattening
1329
+ */
1330
+ export const flatMapCause: {
1331
+ <E, R2 = never, E2 = never, B = never>(
1332
+ f: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
1333
+ ): <R, A>(fx: Fx<R, E, A>) => Fx<R | R2, E2, A | B>
1334
+ <R, E, A, R2 = never, E2 = never, B = never>(
1335
+ fx: Fx<R, E, A>,
1336
+ f: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
1337
+ ): Fx<R | R2, E2, A | B>
1338
+ } = core.flatMapCause
1339
+
1340
+ /**
1341
+ * Map the failures of an Fx to another Fx, flattening the result with unbounded concurrency.
1342
+ *
1343
+ * @since 1.18.0
1344
+ * @category flattening
1345
+ */
1346
+ export const flatMapError: {
1347
+ <E, R2 = never, E2 = never, B = never>(
1348
+ f: (error: E) => FxInput<R2, E2, B>
1349
+ ): <R, A>(fx: Fx<R, E, A>) => Fx<R | R2, E2, A | B>
1350
+ <R, E, A, R2 = never, E2 = never, B = never>(
1351
+ fx: Fx<R, E, A>,
1352
+ f: (error: E) => FxInput<R2, E2, B>
1353
+ ): Fx<R | R2, E2, A | B>
1354
+ } = core.flatMapError
1355
+
1356
+ /**
1357
+ * Map the failures of an Fx to another Fx with the specified concurrency.
1358
+ *
1359
+ * @since 1.18.0
1360
+ * @category flattening
1361
+ */
1362
+ export const flatMapCauseConcurrently: {
1363
+ <E, R2 = never, E2 = never, B = never>(
1364
+ f: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>,
1365
+ concurrency: number
1366
+ ): <R, A>(fx: Fx<R, E, A>) => Fx<R | R2, E2, A | B>
1367
+ <R, E, A, R2 = never, E2 = never, B = never>(
1368
+ fx: Fx<R, E, A>,
1369
+ f: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>,
1370
+ concurrency: number
1371
+ ): Fx<R | R2, E2, A | B>
1372
+ } = core.flatMapCauseConcurrently
1373
+
1374
+ /**
1375
+ * Map the failures of an Fx to another Fx with the specified concurrency.
1376
+ *
1377
+ * @since 1.18.0
1378
+ * @category flattening
1379
+ */
1380
+ export const flatMapErrorConcurrently: {
1381
+ <E, R2 = never, E2 = never, B = never>(
1382
+ f: (error: E) => FxInput<R2, E2, B>,
1383
+ concurrency: number
1384
+ ): <R, A>(fx: Fx<R, E, A>) => Fx<R2 | R, E2, B | A>
1385
+ <R, E, A, R2 = never, E2 = never, B = never>(
1386
+ fx: Fx<R, E, A>,
1387
+ f: (error: E) => FxInput<R2, E2, B>,
1388
+ concurrency: number
1389
+ ): Fx<R | R2, E2, A | B>
1390
+ } = core.flatMapErrorConcurrently
1391
+
1392
+ /**
1393
+ * Map the failures of an Fx to another Fx, switching to the latest
1394
+ * Fx emitted and interrupting the previous.
1395
+ *
1396
+ * @since 1.18.0
1397
+ * @category flattening
1398
+ */
1399
+ export const switchMapCause: {
1400
+ <E, R2 = never, E2 = never, B = never>(
1401
+ f: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
1402
+ ): <R, A>(fx: Fx<R, E, A>) => Fx<R | R2, E2, A | B>
1403
+ <R, E, A, R2 = never, E2 = never, B = never>(
1404
+ fx: Fx<R, E, A>,
1405
+ f: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
1406
+ ): Fx<R | R2, E2, A | B>
1407
+ } = core.switchMapCause
1408
+
1409
+ /**
1410
+ * Map the failures of an Fx to another Fx, switching to the latest
1411
+ * Fx emitted and interrupting the previous.
1412
+ *
1413
+ * @since 1.18.0
1414
+ * @category flattening
1415
+ */
1416
+ export const switchMapError: {
1417
+ <E, R2 = never, E2 = never, B = never>(
1418
+ f: (error: E) => FxInput<R2, E2, B>
1419
+ ): <R, A>(fx: Fx<R, E, A>) => Fx<R2 | R, E2, B | A>
1420
+ <R, E, A, R2 = never, E2 = never, B = never>(
1421
+ fx: Fx<R, E, A>,
1422
+ f: (error: E) => FxInput<R2, E2, B>
1423
+ ): Fx<R | R2, E2, A | B>
1424
+ } = core.switchMapError
1425
+
1426
+ /**
1427
+ * Map the failures of an Fx to another Fx, prefering the first
1428
+ * Fx emitted and dropping any subsequent Fx until it has completed.
1429
+ *
1430
+ * @since 1.18.0
1431
+ * @category flattening
1432
+ */
1433
+ export const exhaustMapCause: {
1434
+ <E, R2 = never, E2 = never, B = never>(
1435
+ f: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
1436
+ ): <R, A>(fx: Fx<R, E, A>) => Fx<R | R2, E2, A | B>
1437
+ <R, E, A, R2 = never, E2 = never, B = never>(
1438
+ fx: Fx<R, E, A>,
1439
+ f: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
1440
+ ): Fx<R | R2, E2, A | B>
1441
+ } = core.exhaustMapCause
1442
+
1443
+ /**
1444
+ * Map the failures of an Fx to another Fx, prefering the first
1445
+ * Fx emitted and dropping any subsequent Fx until it has completed.
1446
+ *
1447
+ * @since 1.18.0
1448
+ * @category flattening
1449
+ */
1450
+ export const exhaustMapError: {
1451
+ <E, R2 = never, E2 = never, B = never>(
1452
+ f: (error: E) => FxInput<R2, E2, B>
1453
+ ): <R, A>(fx: Fx<R, E, A>) => Fx<R2 | R, E2, B | A>
1454
+ <R, E, A, R2 = never, E2 = never, B = never>(
1455
+ fx: Fx<R, E, A>,
1456
+ f: (error: E) => FxInput<R2, E2, B>
1457
+ ): Fx<R | R2, E2, A | B>
1458
+ } = core.exhaustMapError
1459
+
1460
+ /**
1461
+ * Map the failures of an Fx to another Fx, prefering the first
1462
+ * until completion, and then running the last emitted Fx if they are not
1463
+ * the same Fx.
1464
+ *
1465
+ * @since 1.18.0
1466
+ * @category flattening
1467
+ */
1468
+ export const exhaustMapLatestCause: {
1469
+ <E, R2 = never, E2 = never, B = never>(
1470
+ f: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
1471
+ ): <R, A>(fx: Fx<R, E, A>) => Fx<R | R2, E2, A | B>
1472
+ <R, E, A, R2 = never, E2 = never, B = never>(
1473
+ fx: Fx<R, E, A>,
1474
+ f: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
1475
+ ): Fx<R | R2, E2, A | B>
1476
+ } = core.exhaustMapLatestCause
1477
+
1478
+ /**
1479
+ * Map the failures of an Fx to another Fx, prefering the first
1480
+ * until completion, and then running the last emitted Fx if they are not
1481
+ * the same Fx.
1482
+ *
1483
+ * @since 1.18.0
1484
+ * @category flattening
1485
+ */
1486
+ export const exhaustMapLatestError: {
1487
+ <E, R2 = never, E2 = never, B = never>(
1488
+ f: (error: E) => FxInput<R2, E2, B>
1489
+ ): <R, A>(fx: Fx<R, E, A>) => Fx<R2 | R, E2, B | A>
1490
+ <R, E, A, R2 = never, E2 = never, B = never>(
1491
+ fx: Fx<R, E, A>,
1492
+ f: (error: E) => FxInput<R2, E2, B>
1493
+ ): Fx<R | R2, E2, A | B>
1494
+ } = core.exhaustMapLatestError
1495
+
1496
+ /**
1497
+ * Map over the failures and successes of an Fx, flattening both using the same strategy.
1498
+ *
1499
+ * @since 1.18.0
1500
+ * @category flattening
1501
+ */
1502
+ export const matchCauseWithStrategy: {
1503
+ <E, R2 = never, E2 = never, B = never, A = never, R3 = never, E3 = never, C = never>(
1504
+ options: {
1505
+ readonly onFailure: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
1506
+ readonly onSuccess: (a: A) => FxInput<R3, E3, C>
1507
+ readonly strategy: FlattenStrategy
1508
+ }
1509
+ ): <R, A>(fx: Fx<R, E, A>) => Fx<R2 | R, E2, B | A>
1510
+ <R, E, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
1511
+ fx: Fx<R, E, A>,
1512
+ options: {
1513
+ readonly onFailure: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
1514
+ readonly onSuccess: (a: A) => FxInput<R3, E3, C>
1515
+ readonly strategy: FlattenStrategy
1516
+ }
1517
+ ): Fx<R | R2, E2 | E3, B | C>
1518
+ } = core.matchCauseWithStrategy
1519
+
1520
+ /**
1521
+ * Map over the failures and successes of an Fx, flattening both using the same strategy.
1522
+ *
1523
+ * @since 1.18.0
1524
+ * @category flattening
1525
+ */
1526
+ export const matchErrorWithStrategy: {
1527
+ <E, R2 = never, E2 = never, B = never, A = never, R3 = never, E3 = never, C = never>(
1528
+ options: {
1529
+ readonly onFailure: (error: E) => FxInput<R2, E2, B>
1530
+ readonly onSuccess: (a: A) => FxInput<R3, E3, C>
1531
+ readonly strategy: FlattenStrategy
1532
+ }
1533
+ ): <R, A>(fx: Fx<R, E, A>) => Fx<R2 | R, E2, B | A>
1534
+ <R, E, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
1535
+ fx: Fx<R, E, A>,
1536
+ options: {
1537
+ readonly onFailure: (error: E) => FxInput<R2, E2, B>
1538
+ readonly onSuccess: (a: A) => FxInput<R3, E3, C>
1539
+ readonly strategy: FlattenStrategy
1540
+ }
1541
+ ): Fx<R | R2, E2 | E3, B | C>
1542
+ } = core.matchErrorWithStrategy
1543
+
1544
+ /**
1545
+ * Map over the failures and successes of an Fx, flattening both with unbounded concurrency.
1546
+ *
1547
+ * @since 1.18.0
1548
+ * @category flattening
1549
+ */
1550
+ export const matchCause: {
1551
+ <E, R2 = never, E2 = never, B = never, A = never, R3 = never, E3 = never, C = never>(
1552
+ options: {
1553
+ readonly onFailure: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
1554
+ readonly onSuccess: (a: A) => FxInput<R3, E3, C>
1555
+ }
1556
+ ): <R>(fx: Fx<R, E, A>) => Fx<R2 | R3 | R, E2 | E3, B | C>
1557
+ <R, E, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
1558
+ fx: Fx<R, E, A>,
1559
+ options: {
1560
+ readonly onFailure: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
1561
+ readonly onSuccess: (a: A) => FxInput<R3, E3, C>
1562
+ }
1563
+ ): Fx<R | R2 | R3, E2 | E3, B | C>
1564
+ } = core.matchCause
1565
+
1566
+ /**
1567
+ * Map over the failures and successes of an Fx, flattening both with unbounded concurrency.
1568
+ *
1569
+ * @since 1.18.0
1570
+ * @category flattening
1571
+ */
1572
+ export const match: {
1573
+ <E, R2 = never, E2 = never, B = never, A = never, R3 = never, E3 = never, C = never>(
1574
+ options: { readonly onFailure: (error: E) => FxInput<R2, E2, B>; readonly onSuccess: (a: A) => FxInput<R3, E3, C> }
1575
+ ): <R>(fx: Fx<R, E, A>) => Fx<R2 | R3 | R, E2 | E3, B | C>
1576
+ <R, E, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
1577
+ fx: Fx<R, E, A>,
1578
+ options: { readonly onFailure: (error: E) => FxInput<R2, E2, B>; readonly onSuccess: (a: A) => FxInput<R3, E3, C> }
1579
+ ): Fx<R | R2 | R3, E2 | E3, B | C>
1580
+ } = core.match
1581
+
1582
+ /**
1583
+ * Map over the failures and successes of an Fx, flattening both with the specified concurrency.
1584
+ *
1585
+ * @since 1.18.0
1586
+ * @category flattening
1587
+ */
1588
+ export const matchCauseConcurrently: {
1589
+ <E, R2 = never, E2 = never, B = never, A = never, R3 = never, E3 = never, C = never>(
1590
+ options: {
1591
+ readonly onFailure: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
1592
+ readonly onSuccess: (a: A) => FxInput<R3, E3, C>
1593
+ readonly concurrency: number
1594
+ }
1595
+ ): <R>(fx: Fx<R, E, A>) => Fx<R2 | R3 | R, E2 | E3, B | C>
1596
+ <R, E, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
1597
+ fx: Fx<R, E, A>,
1598
+ options: {
1599
+ readonly onFailure: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
1600
+ readonly onSuccess: (a: A) => FxInput<R3, E3, C>
1601
+ readonly concurrency: number
1602
+ }
1603
+ ): Fx<R | R2 | R3, E2 | E3, B | C>
1604
+ } = core.matchCauseConcurrently
1605
+
1606
+ /**
1607
+ * Map over the failures and successes of an Fx, flattening both with the specified concurrency.
1608
+ *
1609
+ * @since 1.18.0
1610
+ * @category flattening
1611
+ */
1612
+ export const matchErrorConcurrently: {
1613
+ <E, R2 = never, E2 = never, B = never, A = never, R3 = never, E3 = never, C = never>(
1614
+ options: {
1615
+ readonly onFailure: (error: E) => FxInput<R2, E2, B>
1616
+ readonly onSuccess: (a: A) => FxInput<R3, E3, C>
1617
+ readonly concurrency: number
1618
+ }
1619
+ ): <R>(fx: Fx<R, E, A>) => Fx<R2 | R3 | R, E2 | E3, B | C>
1620
+ <R, E, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
1621
+ fx: Fx<R, E, A>,
1622
+ options: {
1623
+ readonly onFailure: (error: E) => FxInput<R2, E2, B>
1624
+ readonly onSuccess: (a: A) => FxInput<R3, E3, C>
1625
+ readonly concurrency: number
1626
+ }
1627
+ ): Fx<R | R2 | R3, E2 | E3, B | C>
1628
+ } = core.matchErrorConcurrently
1629
+
1630
+ /**
1631
+ * Map over the failures and successes of an Fx, switching to the latest
1632
+ * Fx emitted and interrupting the previous.
1633
+ *
1634
+ * @since 1.18.0
1635
+ * @category flattening
1636
+ */
1637
+ export const switchMatchCause: {
1638
+ <E, R2 = never, E2 = never, B = never, A = never, R3 = never, E3 = never, C = never>(
1639
+ options: {
1640
+ readonly onFailure: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
1641
+ readonly onSuccess: (a: A) => FxInput<R3, E3, C>
1642
+ }
1643
+ ): <R>(fx: Fx<R, E, A>) => Fx<R2 | R3 | R, E2 | E3, B | C>
1644
+ <R, E, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
1645
+ fx: Fx<R, E, A>,
1646
+ options: {
1647
+ readonly onFailure: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
1648
+ readonly onSuccess: (a: A) => FxInput<R3, E3, C>
1649
+ }
1650
+ ): Fx<R | R2 | R3, E2 | E3, B | C>
1651
+ } = core.switchMatchCause
1652
+
1653
+ /**
1654
+ * Map over the failures and successes of an Fx, switching to the latest
1655
+ * Fx emitted and interrupting the previous.
1656
+ *
1657
+ * @since 1.18.0
1658
+ * @category flattening
1659
+ */
1660
+ export const switchMatch: {
1661
+ <E, R2 = never, E2 = never, B = never, A = never, R3 = never, E3 = never, C = never>(
1662
+ options: { readonly onFailure: (error: E) => FxInput<R2, E2, B>; readonly onSuccess: (a: A) => FxInput<R3, E3, C> }
1663
+ ): <R>(fx: Fx<R, E, A>) => Fx<R2 | R3 | R, E2 | E3, B | C>
1664
+ <R, E, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
1665
+ fx: Fx<R, E, A>,
1666
+ options: { readonly onFailure: (error: E) => FxInput<R2, E2, B>; readonly onSuccess: (a: A) => FxInput<R3, E3, C> }
1667
+ ): Fx<R | R2 | R3, E2 | E3, B | C>
1668
+ } = core.switchMatch
1669
+
1670
+ /**
1671
+ * Map over the failures and successes of an Fx, prefering the first
1672
+ * Fx emitted and dropping any subsequent Fx until it has completed.
1673
+ *
1674
+ * @since 1.18.0
1675
+ * @category flattening
1676
+ */
1677
+ export const exhaustMatchCause: {
1678
+ <E, R2 = never, E2 = never, B = never, A = never, R3 = never, E3 = never, C = never>(
1679
+ options: {
1680
+ readonly onFailure: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
1681
+ readonly onSuccess: (a: A) => FxInput<R3, E3, C>
1682
+ }
1683
+ ): <R>(fx: Fx<R, E, A>) => Fx<R2 | R3 | R, E2 | E3, B | C>
1684
+ <R, E, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
1685
+ fx: Fx<R, E, A>,
1686
+ options: {
1687
+ readonly onFailure: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
1688
+ readonly onSuccess: (a: A) => FxInput<R3, E3, C>
1689
+ }
1690
+ ): Fx<R | R2 | R3, E2 | E3, B | C>
1691
+ } = core.exhaustMatchCause
1692
+
1693
+ /**
1694
+ * Map over the failures and successes of an Fx, prefering the first
1695
+ * Fx emitted and dropping any subsequent Fx until it has completed.
1696
+ *
1697
+ * @since 1.18.0
1698
+ * @category flattening
1699
+ */
1700
+ export const exhaustMatch: {
1701
+ <E, R2 = never, E2 = never, B = never, A = never, R3 = never, E3 = never, C = never>(
1702
+ options: { readonly onFailure: (error: E) => FxInput<R2, E2, B>; readonly onSuccess: (a: A) => FxInput<R3, E3, C> }
1703
+ ): <R>(fx: Fx<R, E, A>) => Fx<R2 | R3 | R, E2 | E3, B | C>
1704
+ <R, E, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
1705
+ fx: Fx<R, E, A>,
1706
+ options: { readonly onFailure: (error: E) => FxInput<R2, E2, B>; readonly onSuccess: (a: A) => FxInput<R3, E3, C> }
1707
+ ): Fx<R | R2 | R3, E2 | E3, B | C>
1708
+ } = core.exhaustMatch
1709
+
1710
+ /**
1711
+ * Map over the failures and successes of an Fx, prefering the first
1712
+ * Fx emitted and starting the latest Fx when the first completes
1713
+ * if they are not the same Fx.
1714
+ *
1715
+ * @since 1.18.0
1716
+ * @category flattening
1717
+ */
1718
+ export const exhaustLatestMatchCause: {
1719
+ <E, R2 = never, E2 = never, B = never, A = never, R3 = never, E3 = never, C = never>(
1720
+ options: {
1721
+ readonly onFailure: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
1722
+ readonly onSuccess: (a: A) => FxInput<R3, E3, C>
1723
+ }
1724
+ ): <R>(fx: Fx<R, E, A>) => Fx<R2 | R3 | R, E2 | E3, B | C>
1725
+ <R, E, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
1726
+ fx: Fx<R, E, A>,
1727
+ options: {
1728
+ readonly onFailure: (cause: Cause.Cause<E>) => FxInput<R2, E2, B>
1729
+ readonly onSuccess: (a: A) => FxInput<R3, E3, C>
1730
+ }
1731
+ ): Fx<R | R2 | R3, E2 | E3, B | C>
1732
+ } = core.exhaustLatestMatchCause
1733
+
1734
+ /**
1735
+ * Map over the failures and successes of an Fx, prefering the first
1736
+ * Fx emitted and starting the latest Fx when the first completes
1737
+ * if they are not the same Fx.
1738
+ *
1739
+ * @since 1.18.0
1740
+ * @category flattening
1741
+ */
1742
+ export const exhaustLatestMatch: {
1743
+ <E, R2 = never, E2 = never, B = never, A = never, R3 = never, E3 = never, C = never>(
1744
+ options: { readonly onFailure: (error: E) => FxInput<R2, E2, B>; readonly onSuccess: (a: A) => FxInput<R3, E3, C> }
1745
+ ): <R>(fx: Fx<R, E, A>) => Fx<R2 | R3 | R, E2 | E3, B | C>
1746
+ <R, E, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
1747
+ fx: Fx<R, E, A>,
1748
+ options: { readonly onFailure: (error: E) => FxInput<R2, E2, B>; readonly onSuccess: (a: A) => FxInput<R3, E3, C> }
1749
+ ): Fx<R | R2 | R3, E2 | E3, B | C>
1750
+ } = core.exhaustLatestMatch
1751
+
1752
+ /**
1753
+ * Listen to the events of an Fx within the provided window. When the window Fx
1754
+ * emits the inner stream, the fx will begin allowing events to pass through,
1755
+ * and when the inner stream emits, the fx will be interrupted.
1756
+ *
1757
+ * @since 1.18.0
1758
+ * @category time slicing
1759
+ */
1760
+ export const during: {
1761
+ <R2, E2, R3, E3>(
1762
+ window: Fx<R2, E2, Fx<R3, E3, unknown>>
1763
+ ): <R, E, A>(fx: Fx<R, E, A>) => Fx<R | R2 | R3, E | E2 | E3, A>
1764
+
1765
+ <R, E, A, R2, E2, R3, E3>(
1766
+ fx: Fx<R, E, A>,
1767
+ window: Fx<R2, E2, Fx<R3, E3, unknown>>
1768
+ ): Fx<R | R2 | R3, E | E2 | E3, A>
1769
+ } = core.during
1770
+
1771
+ /**
1772
+ * Listen to the events of an Fx after the provided window emits.
1773
+ *
1774
+ * @since 1.18.0
1775
+ * @category time slicing
1776
+ */
1777
+ export const since: {
1778
+ <R2, E2>(window: Fx<R2, E2, unknown>): <R, E, A>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A>
1779
+ <R, E, A, R2, E2>(fx: Fx<R, E, A>, window: Fx<R2, E2, unknown>): Fx<R | R2, E | E2, A>
1780
+ } = core.since
1781
+
1782
+ /**
1783
+ * Listen to the events of an Fx until the provided window emits.
1784
+ *
1785
+ * @since 1.18.0
1786
+ * @category time slicing
1787
+ */
1788
+ export const until: {
1789
+ <R2, E2>(window: Fx<R2, E2, unknown>): <R, E, A>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A>
1790
+ <R, E, A, R2, E2>(fx: Fx<R, E, A>, window: Fx<R2, E2, unknown>): Fx<R | R2, E | E2, A>
1791
+ } = core.until
1792
+
1793
+ /**
1794
+ * Provide the environment to an Fx.
1795
+ *
1796
+ * @since 1.18.0
1797
+ * @category context
1798
+ */
1799
+ export const provide: {
1800
+ <R2, E2, S>(layer: Layer.Layer<R2, E2, S>): <R, E, A>(fx: Fx<R, E, A>) => Fx<R2 | Exclude<R, S>, E2 | E, A>
1801
+ <R2>(runtime: Runtime.Runtime<R2>): <R, E, A>(fx: Fx<R, E, A>) => Fx<Exclude<R, R2>, E, A>
1802
+ <R2>(context: Context.Context<R2>): <R, E, A>(fx: Fx<R, E, A>) => Fx<Exclude<R, R2>, E, A>
1803
+ <R, E, A, R2, E2, S>(fx: Fx<R, E, A>, layer: Layer.Layer<R2, E2, S>): Fx<Exclude<R, S> | R2, E | E2, A>
1804
+ <R, E, A, R2>(fx: Fx<R, E, A>, runtime: Runtime.Runtime<R2>): Fx<Exclude<R, R2>, E, A>
1805
+ <R, E, A, R2>(fx: Fx<R, E, A>, context: Context.Context<R2>): Fx<Exclude<R, R2>, E, A>
1806
+ } = core.provide
1807
+
1808
+ /**
1809
+ * Provide a service to an Fx using a Tag.
1810
+ * @since 1.18.0
1811
+ * @category context
1812
+ */
1813
+ export const provideService: {
1814
+ <I, S>(tag: Context.Tag<I, S>, service: S): <R, E, A>(fx: Fx<R, E, A>) => Fx<Exclude<R, I>, E, A>
1815
+ <R, E, A, I, S>(fx: Fx<R, E, A>, tag: Context.Tag<I, S>, service: S): Fx<Exclude<R, I>, E, A>
1816
+ } = core.provideService
1817
+
1818
+ /**
1819
+ * Provide a service using an Effect to an Fx using a Tag.
1820
+ *
1821
+ * @since 1.18.0
1822
+ * @category context
1823
+ */
1824
+ export const provideServiceEffect: {
1825
+ <I, S, R2, E2>(
1826
+ tag: Context.Tag<I, S>,
1827
+ service: Effect.Effect<R2, E2, S>
1828
+ ): <R, E, A>(fx: Fx<R, E, A>) => Fx<R2 | Exclude<R, I>, E, A>
1829
+ <R, E, A, I, S, R2, E2>(
1830
+ fx: Fx<R, E, A>,
1831
+ tag: Context.Tag<I, S>,
1832
+ service: Effect.Effect<R2, E2, S>
1833
+ ): Fx<R2 | Exclude<R, I>, E, A>
1834
+ } = core.provideServiceEffect
1835
+
1836
+ /**
1837
+ * Skip repeated values, using the provided Equivalence to compare values.
1838
+ *
1839
+ * @since 1.18.0
1840
+ * @category slicing
1841
+ */
1842
+ export const skipRepeatsWith: {
1843
+ <A>(eq: Equivalence<A>): <R, E>(fx: Fx<R, E, A>) => Fx<R, E, A>
1844
+ <R, E, A>(fx: Fx<R, E, A>, eq: Equivalence<A>): Fx<R, E, A>
1845
+ } = core.skipRepeatsWith
1846
+
1847
+ /**
1848
+ * Skip repeated values, using @effect/data/Equal for value comparison.
1849
+ *
1850
+ * @since 1.18.0
1851
+ * @category slicing
1852
+ */
1853
+ export const skipRepeats: <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A> = core.skipRepeats
1854
+
1855
+ /**
1856
+ * Sample the values of an Fx, or Effect, during the events of another Fx.
1857
+ *
1858
+ * @since 1.18.0
1859
+ * @category combinators
1860
+ */
1861
+ export const snapshot: {
1862
+ <R2 = never, E2 = never, B = never, A = never, R3 = never, E3 = never, C = never>(
1863
+ sampled: FxInput<R2, E2, B>,
1864
+ f: (a: A, b: B) => Effect.Effect<R3, E3, C>
1865
+ ): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2 | R3, E | E2 | E3, C>
1866
+ <R, E, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
1867
+ fx: Fx<R, E, A>,
1868
+ sampled: FxInput<R2, E2, B>,
1869
+ f: (a: A, b: B) => Effect.Effect<R3, E3, C>
1870
+ ): Fx<R | R2 | R3, E | E2 | E3, C>
1871
+ } = core.snapshot
1872
+
1873
+ /**
1874
+ * Share the output of an Fx, or Effect, with other Fx's using the behavior of the
1875
+ * provided Subject.
1876
+ *
1877
+ * @since 1.18.0
1878
+ * @category sharing
1879
+ */
1880
+ export const share: <R, E, A, R2>(fx: Fx<R, E, A>, subject: Subject<R2, E, A>) => Fx<R | R2, E, A> = Share.share
1881
+
1882
+ /**
1883
+ * Effeciently share an underlying stream with multiple subscribers.
1884
+ *
1885
+ * @since 1.18.0
1886
+ * @category sharing
1887
+ */
1888
+ export const multicast: <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A> = Share.multicast
1889
+
1890
+ /**
1891
+ * Effeciently share an underlying stream with multiple subscribers, saving the most
1892
+ * recent event and emitting it to new subscribers.
1893
+ *
1894
+ * @since 1.18.0
1895
+ * @category sharing
1896
+ */
1897
+ export const hold: <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A> = Share.hold
1898
+
1899
+ /**
1900
+ * Effeciently share an underlying stream with multiple subscribers,
1901
+ * saving up to the most recent `n` events and emitting them to new subscribers.
1902
+ *
1903
+ * @since 1.18.0
1904
+ * @category sharing
1905
+ */
1906
+ export const replay: {
1907
+ (capacity: number): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
1908
+ <R, E, A>(fx: Fx<R, E, A>, capacity: number): Fx<R, E, A>
1909
+ } = Share.replay
1910
+
1911
+ /**
1912
+ * Create an Fx which will wait a specified duration of time where no
1913
+ * events have occurred before emitting a value.
1914
+ * @since 1.18.0
1915
+ * @category time slicing
1916
+ */
1917
+ export const debounce: {
1918
+ (delay: DurationInput): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
1919
+ <R, E, A>(fx: Fx<R, E, A>, delay: DurationInput): Fx<R, E, A>
1920
+ } = internal.debounce
1921
+
1922
+ /**
1923
+ * Create an Fx which will wait a specified duration of time before emitting
1924
+ * an event after the last event.
1925
+ * @since 1.18.0
1926
+ * @category time slicing
1927
+ */
1928
+ export const throttle: {
1929
+ (delay: DurationInput): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
1930
+ <R, E, A>(fx: Fx<R, E, A>, delay: DurationInput): Fx<R, E, A>
1931
+ } = internal.throttle
1932
+
1933
+ /**
1934
+ * Create an Fx which will wait a specified duration of time where no
1935
+ * events have occurred before emitting a value.
1936
+ * @since 1.18.0
1937
+ * @category combinators
1938
+ */
1939
+ export const delay: {
1940
+ (delay: DurationInput): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
1941
+ <R, E, A>(fx: Fx<R, E, A>, delay: DurationInput): Fx<R, E, A>
1942
+ } = internal.delay
1943
+
1944
+ /**
1945
+ * Run an Effect to produce an Fx to run.
1946
+ * @since 1.18.0
1947
+ * @category constructors
1948
+ */
1949
+ export const fromFxEffect: <R, E, R2, E2, B>(fxEffect: Effect.Effect<R, E, Fx<R2, E2, B>>) => Fx<R | R2, E | E2, B> =
1950
+ internal.fromFxEffect
1951
+
1952
+ /**
1953
+ * Extract the context from an EffectGen
1954
+ * @since 1.18.0
1955
+ */
1956
+ export type EffectGenContext<T> = [T] extends [never] ? never
1957
+ : [T] extends [Effect.EffectGen<infer R, any, any>] ? R
1958
+ : never
1959
+
1960
+ /**
1961
+ * Extract the error from an EffectGen
1962
+ * @since 1.18.0
1963
+ */
1964
+ export type EffectGenError<T> = [T] extends [never] ? never
1965
+ : [T] extends [Effect.EffectGen<any, infer E, any>] ? E
1966
+ : never
1967
+
1968
+ /**
1969
+ * Extract the success value from an EffectGen
1970
+ * @since 1.18.0
1971
+ */
1972
+ export type EffectGenSuccess<T> = [T] extends [never] ? never
1973
+ : [T] extends [Effect.EffectGen<any, any, infer A>] ? A
1974
+ : never
1975
+
1976
+ /**
1977
+ * Utilize Effect.gen to construct an Fx
1978
+ * @since 1.18.0
1979
+ * @category constructors
1980
+ */
1981
+ export function gen<Yield extends Effect.EffectGen<any, any, any>, R, E, A>(
1982
+ f: (_: Effect.Adapter) => Generator<Yield, Fx<R, E, A>, any>
1983
+ ): Fx<R | EffectGenContext<Yield>, E | EffectGenError<Yield>, A> {
1984
+ return fromFxEffect(Effect.gen(f))
1985
+ }
1986
+
1987
+ /**
1988
+ * Utilize Effect.gen to construct an Fx
1989
+ * @since 1.18.0
1990
+ * @category constructors
1991
+ */
1992
+ export function genScoped<Yield extends Effect.EffectGen<any, any, any>, R, E, A>(
1993
+ f: (_: Effect.Adapter) => Generator<Yield, Fx<R, E, A>, any>
1994
+ ): Fx<Exclude<R | EffectGenContext<Yield>, Scope.Scope>, E | EffectGenError<Yield>, A> {
1995
+ return scoped(fromFxEffect(Effect.gen(f)))
1996
+ }
1997
+
1998
+ /**
1999
+ * Run an Effect when an Fx exits
2000
+ * @since 1.18.0
2001
+ * @category lifecycles
2002
+ */
2003
+ export const onExit: {
2004
+ <R2>(
2005
+ f: (exit: Exit.Exit<never, unknown>) => Effect.Effect<R2, never, unknown>
2006
+ ): <R, E, A>(fx: Fx<R, E, A>) => Fx<R | R2, E, A>
2007
+ <R, E, A, R2>(
2008
+ fx: Fx<R, E, A>,
2009
+ f: (exit: Exit.Exit<never, unknown>) => Effect.Effect<R2, never, unknown>
2010
+ ): Fx<R | R2, E, A>
2011
+ } = internal.onExit
2012
+
2013
+ /**
2014
+ * Run an Effect when an Fx is interrupted
2015
+ * @since 1.18.0
2016
+ * @category lifecycles
2017
+ */
2018
+ export const onInterrupt: {
2019
+ <R2>(
2020
+ f: (interruptors: HashSet.HashSet<FiberId.FiberId>) => Effect.Effect<R2, never, unknown>
2021
+ ): <R, E, A>(fx: Fx<R, E, A>) => Fx<R | R2, E, A>
2022
+ <R, E, A, R2>(
2023
+ fx: Fx<R, E, A>,
2024
+ f: (interruptors: HashSet.HashSet<FiberId.FiberId>) => Effect.Effect<R2, never, unknown>
2025
+ ): Fx<R | R2, E, A>
2026
+ } = internal.onInterrupt
2027
+
2028
+ /**
2029
+ * Run an Effect when an Fx ends with an error
2030
+ * @since 1.18.0
2031
+ * @category lifecycles
2032
+ */
2033
+ export const onError: {
2034
+ <R2>(
2035
+ f: (cause: Cause.Cause<never>) => Effect.Effect<R2, never, unknown>
2036
+ ): <R, E, A>(fx: Fx<R, E, A>) => Fx<R | R2, E, A>
2037
+ <R, E, A, R2>(
2038
+ fx: Fx<R, E, A>,
2039
+ f: (cause: Cause.Cause<never>) => Effect.Effect<R2, never, unknown>
2040
+ ): Fx<R | R2, E, A>
2041
+ } = internal.onError
2042
+
2043
+ /**
2044
+ * Provide a Scope to an Fx
2045
+ * @since 1.18.0
2046
+ * @category context
2047
+ */
2048
+ export const scoped: <R, E, A>(fx: Fx<R, E, A>) => Fx<Exclude<R, Scope.Scope>, E, A> = internal.scoped
2049
+
2050
+ /**
2051
+ * Annotate the logs of an Fx
2052
+ * @since 1.18.0
2053
+ * @category combinators
2054
+ */
2055
+ export const annotateLogs: {
2056
+ (key: string, value: unknown): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
2057
+ (values: Record<string, unknown>): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
2058
+ <R, E, A>(fx: Fx<R, E, A>, key: string, value: unknown): Fx<R, E, A>
2059
+ <R, E, A>(fx: Fx<R, E, A>, values: Record<string, unknown>): Fx<R, E, A>
2060
+ } = internal.annotateLogs
2061
+
2062
+ /**
2063
+ * Annotate the spans of an Fx
2064
+ * @since 1.18.0
2065
+ * @category combinators
2066
+ */
2067
+ export const annotateSpans: {
2068
+ (key: string, value: unknown): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
2069
+ (values: Record<string, unknown>): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
2070
+ <R, E, A>(fx: Fx<R, E, A>, key: string, value: unknown): Fx<R, E, A>
2071
+ <R, E, A>(fx: Fx<R, E, A>, values: Record<string, unknown>): Fx<R, E, A>
2072
+ } = internal.annotateSpans
2073
+
2074
+ /**
2075
+ * Create an Fx which will succeed with Option.None
2076
+ * @since 1.18.0
2077
+ * @category constructors
2078
+ */
2079
+ export const succeedNone: <A = never>() => Fx<never, never, Option.Option<A>> = internal.succeedNone
2080
+
2081
+ /**
2082
+ * Create an Fx which will succeed with Option.Some
2083
+ * @since 1.18.0
2084
+ * @category constructors
2085
+ */
2086
+ export const succeedSome: <A>(value: A) => Fx<never, never, Option.Option<A>> = internal.succeedSome
2087
+
2088
+ /**
2089
+ * Do simulation
2090
+ * @since 1.18.0
2091
+ * @category Do
2092
+ */
2093
+ export const Do: Fx<never, never, {}> = internal.Do
2094
+
2095
+ /**
2096
+ * Do simulation
2097
+ * @since 1.18.0
2098
+ * @category Do
2099
+ */
2100
+ export const bind: {
2101
+ <N extends string, A extends object, R2, E2, B>(
2102
+ name: Exclude<N, keyof A>,
2103
+ f: (a: A) => Fx<R2, E2, B>
2104
+ ): <R1, E1>(self: Fx<R1, E1, A>) => Fx<R2 | R1, E2 | E1, { [K in N | keyof A]: K extends keyof A ? A[K] : B }>
2105
+ <R1, E1, A1 extends object, N extends string, R2, E2, B>(
2106
+ self: Fx<R1, E1, A1>,
2107
+ name: Exclude<N, keyof A1>,
2108
+ f: (a: A1) => Fx<R2, E2, B>
2109
+ ): Fx<R1 | R2, E1 | E2, { [K in N | keyof A1]: K extends keyof A1 ? A1[K] : B }>
2110
+ } = internal.bind
2111
+
2112
+ /**
2113
+ * Do simulation
2114
+ * @since 1.18.0
2115
+ * @category Do
2116
+ */
2117
+ export const bindTo: {
2118
+ <N extends string>(name: N): <R, E, A>(self: Fx<R, E, A>) => Fx<R, E, { [K in N]: A }>
2119
+ <R, E, A, N extends string>(self: Fx<R, E, A>, name: N): Fx<R, E, { [K_1 in N]: A }>
2120
+ } = internal.bindTo
2121
+
2122
+ const let_: {
2123
+ <N extends string, A extends object, B>(
2124
+ name: Exclude<N, keyof A>,
2125
+ f: (a: A) => B
2126
+ ): <R1, E1>(self: Fx<R1, E1, A>) => Fx<R1, E1, { [K in N | keyof A]: K extends keyof A ? A[K] : B }>
2127
+ <R1, E1, A1 extends object, N extends string, B>(
2128
+ self: Fx<R1, E1, A1>,
2129
+ name: Exclude<N, keyof A1>,
2130
+ f: (a: A1) => B
2131
+ ): Fx<R1, E1, { [K in N | keyof A1]: K extends keyof A1 ? A1[K] : B }>
2132
+ } = internal.let
2133
+
2134
+ export {
2135
+ /**
2136
+ * Do simulation
2137
+ * @since 1.18.0
2138
+ * @category Do
2139
+ */
2140
+ let_ as let
62
2141
  }
63
2142
 
64
- export function isFx<R, E, A>(v: unknown): v is Fx<R, E, A> {
65
- return v !== null && typeof v === 'object' && FxTypeId in v
2143
+ /**
2144
+ * Ensure a finalizer runs on Fx ext.
2145
+ * @since 1.18.0
2146
+ * @category combinators
2147
+ */
2148
+ export const ensuring: {
2149
+ <R2>(finalizer: Effect.Effect<R2, never, unknown>): <R, E, A>(self: Fx<R, E, A>) => Fx<R2 | R, E, A>
2150
+ <R, E, A, R2>(self: Fx<R, E, A>, finalizer: Effect.Effect<R2, never, unknown>): Fx<R | R2, E, A>
2151
+ } = internal.ensuring
2152
+
2153
+ /**
2154
+ * Capture the errors and success values as Exit
2155
+ * @since 1.18.0
2156
+ * @category combinators
2157
+ */
2158
+ export const exit: <R, E, A>(fx: Fx<R, E, A>) => Fx<R, never, Exit.Exit<E, A>> = internal.exit
2159
+
2160
+ /**
2161
+ * Capture the errors and success values as Either
2162
+ * @since 1.18.0
2163
+ * @category combinators
2164
+ */
2165
+ export const either: <R, E, A>(fx: Fx<R, E, A>) => Fx<R, never, Either.Either<E, A>> = internal.either
2166
+
2167
+ /**
2168
+ * Run an Fx until finding a value which satisfies the predicate.
2169
+ * @since 1.18.0
2170
+ * @category running
2171
+ */
2172
+ export const findFirst: {
2173
+ <A, R2, E2>(
2174
+ f: (a: A) => Effect.Effect<R2, E2, boolean>
2175
+ ): <R, E>(fx: Fx<R, E, A>) => Effect.Effect<R2 | R, E2 | E, Option.Option<A>>
2176
+ <R, E, A, R2, E2>(
2177
+ fx: Fx<R, E, A>,
2178
+ f: (a: A) => Effect.Effect<R2, E2, boolean>
2179
+ ): Effect.Effect<R | R2, E | E2, Option.Option<A>>
2180
+ } = internal.findFirst
2181
+
2182
+ /**
2183
+ * Grab the first value emitted by an Fx
2184
+ * @since 1.18.0
2185
+ * @category running
2186
+ */
2187
+ export const first: <R, E, A>(fx: Fx<R, E, A>) => Effect.Effect<R, E, Option.Option<A>> = findFirst(
2188
+ constant(Effect.succeed(true))
2189
+ )
2190
+
2191
+ /**
2192
+ * Transform success values into failures and failures into successes.
2193
+ * @since 1.18.0
2194
+ * @category combinators
2195
+ */
2196
+ export const flip: <R, E, A>(fx: Fx<R, E, A>) => Fx<R, A, E> = internal.flip
2197
+
2198
+ /**
2199
+ * Lift a nullable value into an Fx
2200
+ * @since 1.18.0
2201
+ * @category constructors
2202
+ */
2203
+ export const fromNullable: <A>(value: void | A | null | undefined) => Fx<never, never, NonNullable<A>> =
2204
+ internal.fromNullable
2205
+
2206
+ const if_: {
2207
+ <R2, E2, B, R3, E3, C>(
2208
+ onTrue: Fx<R2, E2, B>,
2209
+ onFalse: Fx<R3, E3, C>
2210
+ ): {
2211
+ <R, E>(bool: Fx<R, E, boolean>): Fx<R2 | R3 | R, E2 | E3 | E, B | C>
2212
+ (bool: boolean): Fx<R2 | R3, E2 | E3, B | C>
2213
+ }
2214
+ <R, E, R2, E2, B, R3, E3, C>(
2215
+ bool: Fx<R, E, boolean>,
2216
+ onTrue: Fx<R2, E2, B>,
2217
+ onFalse: Fx<R3, E3, C>
2218
+ ): Fx<R | R2 | R3, E | E2 | E3, B | C>
2219
+ <R2, E2, B, R3, E3, C>(
2220
+ bool: boolean,
2221
+ onTrue: Fx<R2, E2, B>,
2222
+ onFalse: Fx<R3, E3, C>
2223
+ ): Fx<R2 | R3, E2 | E3, B | C>
2224
+ } = internal.if
2225
+
2226
+ export {
2227
+ /**
2228
+ * Logical if/else using Fx.
2229
+ * @since 1.18.0
2230
+ * @category combinators
2231
+ */
2232
+ if_ as if
66
2233
  }
67
2234
 
68
- export { Sink } from './Sink.js'
2235
+ /**
2236
+ * Logical if/else using static values.
2237
+ * @since 1.18.0
2238
+ * @category combinators
2239
+ */
2240
+ export const when: {
2241
+ <B, C>(
2242
+ onTrue: B,
2243
+ onFalse: C
2244
+ ): { <R, E>(bool: Fx<R, E, boolean>): Fx<R, E, B | C>; (bool: boolean): Fx<never, never, B | C> }
2245
+ <R, E, B, C>(bool: Fx<R, E, boolean>, onTrue: B, onFalse: C): Fx<R, E, B | C>
2246
+ <B, C>(bool: boolean, onTrue: B, onFalse: C): Fx<never, never, B | C>
2247
+ } = internal.when
2248
+
2249
+ /**
2250
+ * Mark an Fx as interruptible
2251
+ * @since 1.18.0
2252
+ * @category combinators
2253
+ */
2254
+ export const interruptible: <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A> = internal.interruptible
2255
+
2256
+ /**
2257
+ * Mark an Fx as uninterruptible
2258
+ * @since 1.18.0
2259
+ * @category combinators
2260
+ */
2261
+ export const uninterruptible: <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A> = internal.uninterruptible
2262
+
2263
+ /**
2264
+ * Locally set the value of a FiberRef
2265
+ * @since 1.18.0
2266
+ * @category FiberRef
2267
+ */
2268
+ export const locally: {
2269
+ <A>(self: FiberRef<A>, value: A): <R, E, B>(use: Fx<R, E, B>) => Fx<R, E, B>
2270
+ <R, E, B, A>(use: Fx<R, E, B>, self: FiberRef<A>, value: A): Fx<R, E, B>
2271
+ } = internal.locally
2272
+
2273
+ /**
2274
+ * Locally set the value of a FiberRef by updating the current value
2275
+ * @since 1.18.0
2276
+ * @category FiberRef
2277
+ */
2278
+ export const locallyWith: {
2279
+ <A>(self: FiberRef<A>, f: (a: A) => A): <R, E, B>(use: Fx<R, E, B>) => Fx<R, E, B>
2280
+ <R, E, B, A>(use: Fx<R, E, B>, self: FiberRef<A>, f: (a: A) => A): Fx<R, E, B>
2281
+ } = internal.locallyWith
2282
+
2283
+ /**
2284
+ * Enable/disable tracer timing for an Fx
2285
+ * @since 1.18.0
2286
+ * @category tracing
2287
+ */
2288
+ export const withTracerTiming: {
2289
+ (enabled: boolean): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
2290
+ <R, E, A>(fx: Fx<R, E, A>, enabled: boolean): Fx<R, E, A>
2291
+ } = internal.withTracerTiming
2292
+
2293
+ /**
2294
+ * Configure the concurreny limit of Fibers running within an Fx
2295
+ * @since 1.18.0
2296
+ * @category concurrency
2297
+ */
2298
+ export const withConcurrency: {
2299
+ (concurrency: number | "unbounded"): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
2300
+ <R, E, A>(fx: Fx<R, E, A>, concurrency: number | "unbounded"): Fx<R, E, A>
2301
+ } = internal.withConcurrency
2302
+
2303
+ /**
2304
+ * Add a span to your log messages
2305
+ * @since 1.18.0
2306
+ * @category logging
2307
+ */
2308
+ export const withLogSpan: {
2309
+ (span: string): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
2310
+ <R, E, A>(fx: Fx<R, E, A>, span: string): Fx<R, E, A>
2311
+ } = internal.withLogSpan
2312
+
2313
+ /**
2314
+ * Configure the maximum number of operations to run before yielding to the runtime
2315
+ * @since 1.18.0
2316
+ * @category concurrency
2317
+ */
2318
+ export const withMaxOpsBeforeYield: {
2319
+ (maxOps: number): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
2320
+ <R, E, A>(fx: Fx<R, E, A>, maxOps: number): Fx<R, E, A>
2321
+ } = internal.withMaxOpsBeforeYield
2322
+
2323
+ /**
2324
+ * Set the parent Span of an Fx
2325
+ * @since 1.18.0
2326
+ * @category tracing
2327
+ */
2328
+ export const withParentSpan: {
2329
+ (parentSpan: Tracer.ParentSpan): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
2330
+ <R, E, A>(fx: Fx<R, E, A>, parentSpan: Tracer.ParentSpan): Fx<R, E, A>
2331
+ } = internal.withParentSpan
2332
+
2333
+ /**
2334
+ * Enable/disable request batching within an Fx
2335
+ * @since 1.18.0
2336
+ * @category batching
2337
+ */
2338
+ export const withRequestBatching: {
2339
+ (requestBatching: boolean): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
2340
+ <R, E, A>(fx: Fx<R, E, A>, requestBatching: boolean): Fx<R, E, A>
2341
+ } = internal.withRequestBatching
2342
+
2343
+ /**
2344
+ * Set the request cache Effects running within an Fx
2345
+ * @since 1.18.0
2346
+ * @category batching
2347
+ */
2348
+ export const withRequestCache: {
2349
+ (cache: Request.Cache): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
2350
+ <R, E, A>(fx: Fx<R, E, A>, cache: Request.Cache): Fx<R, E, A>
2351
+ } = internal.withRequestCache
2352
+
2353
+ /**
2354
+ * Enable/disable request caching within an Fx
2355
+ * @since 1.18.0
2356
+ * @category batching
2357
+ */
2358
+ export const withRequestCaching: {
2359
+ (requestCaching: boolean): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
2360
+ <R, E, A>(fx: Fx<R, E, A>, requestCaching: boolean): Fx<R, E, A>
2361
+ } = internal.withRequestCaching
2362
+
2363
+ /**
2364
+ * Configure the scheduler to use within an Fx
2365
+ * @since 1.18.0
2366
+ * @category concurrency
2367
+ */
2368
+ export const withScheduler: {
2369
+ (scheduler: Scheduler): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
2370
+ <R, E, A>(fx: Fx<R, E, A>, scheduler: Scheduler): Fx<R, E, A>
2371
+ } = internal.withScheduler
2372
+
2373
+ /**
2374
+ * Set the span of an Fx
2375
+ * @since 1.18.0
2376
+ * @category tracing
2377
+ */
2378
+ export const withSpan: {
2379
+ (
2380
+ name: string,
2381
+ options?: {
2382
+ readonly attributes?: Record<string, unknown>
2383
+ readonly links?: ReadonlyArray<Tracer.SpanLink>
2384
+ readonly parent?: Tracer.ParentSpan
2385
+ readonly root?: boolean
2386
+ readonly context?: Context.Context<never>
2387
+ }
2388
+ ): <R, E, A>(self: Fx<R, E, A>) => Fx<R, E, A>
2389
+ <R, E, A>(
2390
+ self: Fx<R, E, A>,
2391
+ name: string,
2392
+ options?: {
2393
+ readonly attributes?: Record<string, unknown>
2394
+ readonly links?: ReadonlyArray<Tracer.SpanLink>
2395
+ readonly parent?: Tracer.ParentSpan
2396
+ readonly root?: boolean
2397
+ readonly context?: Context.Context<never>
2398
+ }
2399
+ ): Fx<R, E, A>
2400
+ } = internal.withSpan
2401
+
2402
+ /**
2403
+ * Set the tracer used within an Fx
2404
+ * @since 1.18.0
2405
+ * @category tracing
2406
+ */
2407
+ export const withTracer: {
2408
+ (tracer: Tracer.Tracer): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
2409
+ <R, E, A>(fx: Fx<R, E, A>, tracer: Tracer.Tracer): Fx<R, E, A>
2410
+ } = internal.withTracer
2411
+
2412
+ /**
2413
+ * Partition an Fx into two Fx's based on a either-returning function.
2414
+ * @since 1.18.0
2415
+ * @category combinators
2416
+ */
2417
+ export const partitionMap: {
2418
+ <A, B, C>(f: (a: A) => Either.Either<B, C>): <R, E>(self: Fx<R, E, A>) => readonly [Fx<R, E, B>, Fx<R, E, C>]
2419
+ <R, E, A, B, C>(self: Fx<R, E, A>, f: (a: A) => Either.Either<B, C>): readonly [Fx<R, E, B>, Fx<R, E, C>]
2420
+ } = internal.partitionMap
2421
+
2422
+ /**
2423
+ * Convert a list of keyed values into persistent workflows for given each key of the list
2424
+ * even when the list has been re-ordered.
2425
+ *
2426
+ * @since 1.18.0
2427
+ * @category combinators
2428
+ */
2429
+ export const keyed: {
2430
+ <A, B, R2, E2, C>(
2431
+ getKey: (a: A) => B,
2432
+ f: (
2433
+ ref: RefSubject<never, never, A>,
2434
+ key: B
2435
+ ) => FxInput<R2, E2, C>
2436
+ ): <R, E>(fx: Fx<R, E, ReadonlyArray<A>>) => Fx<R | R2, E | E2, ReadonlyArray<C>>
2437
+
2438
+ <R, E, A, B, R2, E2, C>(
2439
+ fx: Fx<R, E, ReadonlyArray<A>>,
2440
+ getKey: (a: A) => B,
2441
+ f: (
2442
+ ref: RefSubject<never, never, A>,
2443
+ key: B
2444
+ ) => FxInput<R2, E2, C>
2445
+ ): Fx<R | R2, E | E2, ReadonlyArray<C>>
2446
+ } = dual(3, internalKeyed.keyed)
2447
+
2448
+ /**
2449
+ * Map an Fx of values into workflows similar to Fx.switchMap, but
2450
+ * instead of providing the value directly, it is exposed as a RefSubject to
2451
+ * allow creating a persistent workflows similar to Fx.keyed but for a single value.
2452
+ *
2453
+ * @since 1.18.0
2454
+ * @category combinators
2455
+ */
2456
+ export const withKey: {
2457
+ <A, B, R2, E2, C>(
2458
+ getKey: (a: A) => B,
2459
+ f: (
2460
+ ref: RefSubject<never, never, A>,
2461
+ key: B
2462
+ ) => FxInput<R2, E2, C>
2463
+ ): <R, E>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, C>
2464
+
2465
+ <R, E, A, B, R2, E2, C>(
2466
+ fx: Fx<R, E, A>,
2467
+ getKey: (a: A) => B,
2468
+ f: (
2469
+ ref: RefSubject<never, never, A>,
2470
+ key: B
2471
+ ) => FxInput<R2, E2, C>
2472
+ ): Fx<R | R2, E | E2, C>
2473
+ } = dual(3, internalWithKey.withKey)
2474
+
2475
+ const getTag = (a: { readonly _tag: string }): string => a._tag
2476
+
2477
+ /**
2478
+ * Match over a tagged union of values into a set of persistent workflows
2479
+ * that allow listening to changes of values with the same tag using the same
2480
+ * Fx.
2481
+ *
2482
+ * @since 1.18.0
2483
+ * @category combinators
2484
+ */
2485
+ export const matchTags: {
2486
+ <A extends { readonly _tag: string }, Matchers extends DefaultMatchersFrom<A>>(
2487
+ matchers: Matchers
2488
+ ): <R, E>(fx: Fx<R, E, A>) => Fx<
2489
+ R | Fx.Context<Fx.FromInput<ReturnType<Matchers[keyof Matchers]>>>,
2490
+ E | Fx.Error<Fx.FromInput<ReturnType<Matchers[keyof Matchers]>>>,
2491
+ Fx.Success<Fx.FromInput<ReturnType<Matchers[keyof Matchers]>>>
2492
+ >
2493
+
2494
+ <R, E, A extends { readonly _tag: string }, Matchers extends DefaultMatchersFrom<A>>(
2495
+ fx: Fx<R, E, A>,
2496
+ matchers: Matchers
2497
+ ): Fx<
2498
+ R | Fx.Context<Fx.FromInput<ReturnType<Matchers[keyof Matchers]>>>,
2499
+ E | Fx.Error<Fx.FromInput<ReturnType<Matchers[keyof Matchers]>>>,
2500
+ Fx.Success<Fx.FromInput<ReturnType<Matchers[keyof Matchers]>>>
2501
+ >
2502
+ } = dual(
2503
+ 2,
2504
+ function matchTags<R, E, A extends { readonly _tag: string }, Matchers extends DefaultMatchersFrom<A>>(
2505
+ fx: Fx<R, E, A>,
2506
+ matchers: Matchers
2507
+ ): Fx<
2508
+ R | Fx.Context<Fx.FromInput<ReturnType<Matchers[keyof Matchers]>>>,
2509
+ E | Fx.Error<Fx.FromInput<ReturnType<Matchers[keyof Matchers]>>>,
2510
+ Fx.Success<Fx.FromInput<ReturnType<Matchers[keyof Matchers]>>>
2511
+ > {
2512
+ return withKey(fx, getTag, (ref, tag: A["_tag"]) => matchers[tag](ref as any))
2513
+ }
2514
+ )
2515
+
2516
+ /**
2517
+ * @since 1.18.0
2518
+ */
2519
+ export type DefaultMatchersFrom<A extends { readonly _tag: string }> = {
2520
+ readonly [Tag in A["_tag"]]: (
2521
+ value: RefSubject<never, never, Extract<A, { readonly _tag: Tag }>>
2522
+ ) => FxInput<any, any, any>
2523
+ }
2524
+
2525
+ /**
2526
+ * @since 1.18.0
2527
+ */
2528
+ export const drainLayer: <FXS extends ReadonlyArray<Fx<any, never, any>>>(...fxs: FXS) => Layer.Layer<
2529
+ Exclude<Fx.Context<FXS[number]>, Scope.Scope>,
2530
+ never,
2531
+ never
2532
+ > = internal.drainLayer
2533
+
2534
+ /* #endregion */
2535
+
2536
+ /**
2537
+ * @since 1.18.0
2538
+ */
2539
+ export function isFx<R = unknown, E = unknown, A = unknown>(u: unknown): u is Fx<R, E, A> {
2540
+ return typeof u === "object" && u !== null && TypeId in u
2541
+ }
2542
+
2543
+ /**
2544
+ * @since 1.18.0
2545
+ */
2546
+ export const matchOption: {
2547
+ <A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
2548
+ onNone: () => FxInput<R2, E2, B>,
2549
+ onSome: (a: RefSubject<never, never, A>) => FxInput<R3, E3, C>
2550
+ ): <R, E>(fx: Fx<R, E, Option.Option<A>>) => Fx<R | R2, E | E2, B | C>
2551
+
2552
+ <R, E, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
2553
+ fx: Fx<R, E, Option.Option<A>>,
2554
+ onNone: () => FxInput<R2, E2, B>,
2555
+ onSome: (a: RefSubject<never, never, A>) => FxInput<R3, E3, C>
2556
+ ): Fx<R | R2, E | E2, B | C>
2557
+ } = dual(
2558
+ 3,
2559
+ function matchOption<R, E, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
2560
+ fx: Fx<R, E, Option.Option<A>>,
2561
+ onNone: () => FxInput<R2, E2, B>,
2562
+ onSome: (a: RefSubject<never, never, A>) => FxInput<R3, E3, C>
2563
+ ): Fx<R | R2, E | E2, B | C> {
2564
+ return matchTags(fx, {
2565
+ None: onNone,
2566
+ Some: (some) => onSome(transform(some, (s) => s.value, (value) => Option.some(value) as Option.Some<A>))
2567
+ })
2568
+ }
2569
+ )
2570
+
2571
+ /**
2572
+ * @since 1.18.0
2573
+ */
2574
+ export const getOrElse: {
2575
+ <A, R2 = never, E2 = never, B = never>(
2576
+ orElse: () => FxInput<R2, E2, B>
2577
+ ): <R, E>(fx: Fx<R, E, Option.Option<A>>) => Fx<R | R2, E | E2, A | B>
2578
+
2579
+ <R, E, A, R2 = never, E2 = never, B = never>(
2580
+ fx: Fx<R, E, Option.Option<A>>,
2581
+ orElse: () => FxInput<R2, E2, B>
2582
+ ): Fx<R | R2, E | E2, A | B>
2583
+ } = dual(
2584
+ 2,
2585
+ function getOrElse<R, E, A, R2 = never, E2 = never, B = never>(
2586
+ fx: Fx<R, E, Option.Option<A>>,
2587
+ orElse: () => FxInput<R2, E2, B>
2588
+ ): Fx<R | R2, E | E2, A | B> {
2589
+ return matchOption(fx, orElse, identity)
2590
+ }
2591
+ )
2592
+
2593
+ /**
2594
+ * @since 1.18.0
2595
+ */
2596
+ export const matchEither: {
2597
+ <E1, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
2598
+ onLeft: (e: RefSubject<never, never, E1>) => FxInput<R2, E2, B>,
2599
+ onRight: (a: RefSubject<never, never, A>) => FxInput<R3, E3, C>
2600
+ ): <R, E>(fx: Fx<R, E, Either.Either<E1, A>>) => Fx<R | R2, E | E2, B | C>
2601
+
2602
+ <R, E, E1, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
2603
+ fx: Fx<R, E, Either.Either<E1, A>>,
2604
+ onLeft: (e: RefSubject<never, never, E1>) => FxInput<R2, E2, B>,
2605
+ onRight: (a: RefSubject<never, never, A>) => FxInput<R3, E3, C>
2606
+ ): Fx<R | R2, E | E2, B | C>
2607
+ } = dual(
2608
+ 3,
2609
+ function matchEither<R, E, E1, A, R2 = never, E2 = never, B = never, R3 = never, E3 = never, C = never>(
2610
+ fx: Fx<R, E, Either.Either<E1, A>>,
2611
+ onLeft: (e: RefSubject<never, never, E1>) => FxInput<R2, E2, B>,
2612
+ onRight: (a: RefSubject<never, never, A>) => FxInput<R3, E3, C>
2613
+ ): Fx<R | R2, E | E2, B | C> {
2614
+ return matchTags(fx, {
2615
+ Left: (left) => onLeft(transform(left, (a) => a.left, (a) => Either.left(a) as Either.Left<E1, A>)),
2616
+ Right: (right) => onRight(transform(right, (s) => s.right, (value) => Either.right(value) as Either.Right<E1, A>))
2617
+ })
2618
+ }
2619
+ )
2620
+
2621
+ /**
2622
+ * @since 1.18.0
2623
+ */
2624
+ export const fork = <R, E, A>(fx: Fx<R, E, A>): Effect.Effect<R, never, Fiber.RuntimeFiber<E, void>> =>
2625
+ Effect.fork(drain(fx))
2626
+
2627
+ /**
2628
+ * @since 1.18.0
2629
+ */
2630
+ export const forkScoped = <R, E, A>(
2631
+ fx: Fx<R, E, A>
2632
+ ): Effect.Effect<R | Scope.Scope, never, Fiber.RuntimeFiber<E, void>> => Effect.forkScoped(drain(fx))
2633
+
2634
+ /**
2635
+ * @since 1.18.0
2636
+ */
2637
+ export const forkDaemon = <R, E, A>(fx: Fx<R, E, A>): Effect.Effect<R, never, Fiber.RuntimeFiber<E, void>> =>
2638
+ Effect.forkDaemon(drain(fx))
2639
+
2640
+ /**
2641
+ * @since 1.18.0
2642
+ */
2643
+ export const forkIn: {
2644
+ (scope: Scope.Scope): <R, E, A>(fx: Fx<R, E, A>) => Effect.Effect<R, never, Fiber.RuntimeFiber<E, void>>
2645
+ <R, E, A>(fx: Fx<R, E, A>, scope: Scope.Scope): Effect.Effect<R, never, Fiber.RuntimeFiber<E, void>>
2646
+ } = dual(2, <R, E, A>(
2647
+ fx: Fx<R, E, A>,
2648
+ scope: Scope.Scope
2649
+ ): Effect.Effect<R, never, Fiber.RuntimeFiber<E, void>> => Effect.forkIn(drain(fx), scope))
2650
+
2651
+ /**
2652
+ * @since 1.18.0
2653
+ */
2654
+ export const mergeRace: {
2655
+ <R2, E2, B>(other: Fx<R2, E2, B>): <R, E, A>(fx: Fx<R, E, A>) => Fx<R2 | R, E2 | E, B | A>
2656
+ <R, E, A, R2, E2, B>(fx: Fx<R, E, A>, other: Fx<R2, E2, B>): Fx<R | R2, E | E2, A | B>
2657
+ } = internal.mergeRace