@typed/fx 1.19.0 → 1.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (411) hide show
  1. package/AsyncData/package.json +6 -0
  2. package/Push/package.json +6 -0
  3. package/dist/cjs/AsyncData.js +177 -0
  4. package/dist/cjs/AsyncData.js.map +1 -0
  5. package/dist/cjs/Emitter.js +24 -21
  6. package/dist/cjs/Emitter.js.map +1 -1
  7. package/dist/cjs/Form.js +78 -21
  8. package/dist/cjs/Form.js.map +1 -1
  9. package/dist/cjs/FormEntry.js +75 -48
  10. package/dist/cjs/FormEntry.js.map +1 -1
  11. package/dist/cjs/Fx.js +517 -872
  12. package/dist/cjs/Fx.js.map +1 -1
  13. package/dist/cjs/Guard.js +21 -13
  14. package/dist/cjs/Guard.js.map +1 -1
  15. package/dist/cjs/Idle.js +49 -37
  16. package/dist/cjs/Idle.js.map +1 -1
  17. package/dist/cjs/Match.js +99 -61
  18. package/dist/cjs/Match.js.map +1 -1
  19. package/dist/cjs/Pull.js.map +1 -1
  20. package/dist/cjs/Push.js +168 -0
  21. package/dist/cjs/Push.js.map +1 -0
  22. package/dist/cjs/RefArray.js +32 -30
  23. package/dist/cjs/RefArray.js.map +1 -1
  24. package/dist/cjs/RefChunk.js +26 -24
  25. package/dist/cjs/RefChunk.js.map +1 -1
  26. package/dist/cjs/RefHashMap.js +20 -20
  27. package/dist/cjs/RefHashMap.js.map +1 -1
  28. package/dist/cjs/RefHashSet.js +11 -8
  29. package/dist/cjs/RefHashSet.js.map +1 -1
  30. package/dist/cjs/RefSubject.js +899 -158
  31. package/dist/cjs/RefSubject.js.map +1 -1
  32. package/dist/cjs/Sink.js +588 -62
  33. package/dist/cjs/Sink.js.map +1 -1
  34. package/dist/cjs/Stream.js +15 -10
  35. package/dist/cjs/Stream.js.map +1 -1
  36. package/dist/cjs/Subject.js +153 -55
  37. package/dist/cjs/Subject.js.map +1 -1
  38. package/dist/cjs/TypeId.js +10 -5
  39. package/dist/cjs/TypeId.js.map +1 -1
  40. package/dist/cjs/Typeclass.js +28 -31
  41. package/dist/cjs/Typeclass.js.map +1 -1
  42. package/dist/cjs/Versioned.js +118 -57
  43. package/dist/cjs/Versioned.js.map +1 -1
  44. package/dist/cjs/index.js +44 -8
  45. package/dist/cjs/index.js.map +1 -1
  46. package/dist/cjs/internal/{deferred-ref.js → DeferredRef.js} +45 -13
  47. package/dist/cjs/internal/DeferredRef.js.map +1 -0
  48. package/dist/cjs/internal/UnionToTuple.js +6 -0
  49. package/dist/cjs/internal/UnionToTuple.js.map +1 -0
  50. package/dist/cjs/internal/core.js +1590 -779
  51. package/dist/cjs/internal/core.js.map +1 -1
  52. package/dist/cjs/internal/diff.js +114 -0
  53. package/dist/cjs/internal/diff.js.map +1 -0
  54. package/dist/cjs/internal/effect-loop-operator.js +288 -0
  55. package/dist/cjs/internal/effect-loop-operator.js.map +1 -0
  56. package/dist/cjs/internal/effect-operator.js +46 -37
  57. package/dist/cjs/internal/effect-operator.js.map +1 -1
  58. package/dist/cjs/internal/effect-producer.js +74 -0
  59. package/dist/cjs/internal/effect-producer.js.map +1 -0
  60. package/dist/cjs/internal/helpers.js +158 -128
  61. package/dist/cjs/internal/helpers.js.map +1 -1
  62. package/dist/cjs/internal/keyed.js +136 -173
  63. package/dist/cjs/internal/keyed.js.map +1 -1
  64. package/dist/cjs/internal/loop-operator.js +213 -0
  65. package/dist/cjs/internal/loop-operator.js.map +1 -0
  66. package/dist/cjs/internal/operator.js +79 -0
  67. package/dist/cjs/internal/operator.js.map +1 -0
  68. package/dist/cjs/internal/protos.js +19 -81
  69. package/dist/cjs/internal/protos.js.map +1 -1
  70. package/dist/cjs/internal/provide.js +47 -25
  71. package/dist/cjs/internal/provide.js.map +1 -1
  72. package/dist/cjs/internal/requestIdleCallback.js +5 -5
  73. package/dist/cjs/internal/requestIdleCallback.js.map +1 -1
  74. package/dist/cjs/internal/share.js +12 -15
  75. package/dist/cjs/internal/share.js.map +1 -1
  76. package/dist/cjs/internal/sync-operator.js +50 -22
  77. package/dist/cjs/internal/sync-operator.js.map +1 -1
  78. package/dist/cjs/internal/sync-producer.js +114 -0
  79. package/dist/cjs/internal/sync-producer.js.map +1 -0
  80. package/dist/cjs/internal/withKey.js +45 -51
  81. package/dist/cjs/internal/withKey.js.map +1 -1
  82. package/dist/dts/AsyncData.d.ts +185 -0
  83. package/dist/dts/AsyncData.d.ts.map +1 -0
  84. package/dist/dts/Emitter.d.ts +13 -20
  85. package/dist/dts/Emitter.d.ts.map +1 -1
  86. package/dist/dts/Form.d.ts +45 -28
  87. package/dist/dts/Form.d.ts.map +1 -1
  88. package/dist/dts/FormEntry.d.ts +25 -13
  89. package/dist/dts/FormEntry.d.ts.map +1 -1
  90. package/dist/dts/Fx.d.ts +980 -1390
  91. package/dist/dts/Fx.d.ts.map +1 -1
  92. package/dist/dts/Guard.d.ts +8 -1
  93. package/dist/dts/Guard.d.ts.map +1 -1
  94. package/dist/dts/Idle.d.ts +3 -3
  95. package/dist/dts/Idle.d.ts.map +1 -1
  96. package/dist/dts/Match.d.ts +8 -8
  97. package/dist/dts/Match.d.ts.map +1 -1
  98. package/dist/dts/Pull.d.ts +5 -5
  99. package/dist/dts/Pull.d.ts.map +1 -1
  100. package/dist/dts/Push.d.ts +170 -0
  101. package/dist/dts/Push.d.ts.map +1 -0
  102. package/dist/dts/RefArray.d.ts +21 -23
  103. package/dist/dts/RefArray.d.ts.map +1 -1
  104. package/dist/dts/RefChunk.d.ts +17 -19
  105. package/dist/dts/RefChunk.d.ts.map +1 -1
  106. package/dist/dts/RefHashMap.d.ts +19 -20
  107. package/dist/dts/RefHashMap.d.ts.map +1 -1
  108. package/dist/dts/RefHashSet.d.ts +12 -16
  109. package/dist/dts/RefHashSet.d.ts.map +1 -1
  110. package/dist/dts/RefSubject.d.ts +396 -187
  111. package/dist/dts/RefSubject.d.ts.map +1 -1
  112. package/dist/dts/Sink.d.ts +193 -93
  113. package/dist/dts/Sink.d.ts.map +1 -1
  114. package/dist/dts/Stream.d.ts +7 -1
  115. package/dist/dts/Stream.d.ts.map +1 -1
  116. package/dist/dts/Subject.d.ts +27 -36
  117. package/dist/dts/Subject.d.ts.map +1 -1
  118. package/dist/dts/TypeId.d.ts +10 -0
  119. package/dist/dts/TypeId.d.ts.map +1 -1
  120. package/dist/dts/Typeclass.d.ts +2 -2
  121. package/dist/dts/Typeclass.d.ts.map +1 -1
  122. package/dist/dts/Versioned.d.ts +50 -78
  123. package/dist/dts/Versioned.d.ts.map +1 -1
  124. package/dist/dts/index.d.ts +66 -6
  125. package/dist/dts/index.d.ts.map +1 -1
  126. package/dist/dts/internal/DeferredRef.d.ts +20 -0
  127. package/dist/dts/internal/DeferredRef.d.ts.map +1 -0
  128. package/dist/dts/internal/UnionToTuple.d.ts +6 -0
  129. package/dist/dts/internal/UnionToTuple.d.ts.map +1 -0
  130. package/dist/dts/internal/core.d.ts +218 -450
  131. package/dist/dts/internal/core.d.ts.map +1 -1
  132. package/dist/dts/internal/diff.d.ts +38 -0
  133. package/dist/dts/internal/diff.d.ts.map +1 -0
  134. package/dist/dts/internal/effect-loop-operator.d.ts +34 -0
  135. package/dist/dts/internal/effect-loop-operator.d.ts.map +1 -0
  136. package/dist/dts/internal/effect-operator.d.ts +8 -5
  137. package/dist/dts/internal/effect-operator.d.ts.map +1 -1
  138. package/dist/dts/internal/effect-producer.d.ts +25 -0
  139. package/dist/dts/internal/effect-producer.d.ts.map +1 -0
  140. package/dist/dts/internal/helpers.d.ts +33 -24
  141. package/dist/dts/internal/helpers.d.ts.map +1 -1
  142. package/dist/dts/internal/keyed.d.ts +3 -3
  143. package/dist/dts/internal/keyed.d.ts.map +1 -1
  144. package/dist/dts/internal/loop-operator.d.ts +40 -0
  145. package/dist/dts/internal/loop-operator.d.ts.map +1 -0
  146. package/dist/dts/internal/operator.d.ts +16 -0
  147. package/dist/dts/internal/operator.d.ts.map +1 -0
  148. package/dist/dts/internal/protos.d.ts +16 -43
  149. package/dist/dts/internal/protos.d.ts.map +1 -1
  150. package/dist/dts/internal/provide.d.ts +7 -1
  151. package/dist/dts/internal/provide.d.ts.map +1 -1
  152. package/dist/dts/internal/share.d.ts +12 -9
  153. package/dist/dts/internal/share.d.ts.map +1 -1
  154. package/dist/dts/internal/sync-operator.d.ts +7 -3
  155. package/dist/dts/internal/sync-operator.d.ts.map +1 -1
  156. package/dist/dts/internal/sync-producer.d.ts +36 -0
  157. package/dist/dts/internal/sync-producer.d.ts.map +1 -0
  158. package/dist/dts/internal/withKey.d.ts +3 -3
  159. package/dist/dts/internal/withKey.d.ts.map +1 -1
  160. package/dist/esm/AsyncData.js +151 -0
  161. package/dist/esm/AsyncData.js.map +1 -0
  162. package/dist/esm/Emitter.js +24 -21
  163. package/dist/esm/Emitter.js.map +1 -1
  164. package/dist/esm/Form.js +69 -14
  165. package/dist/esm/Form.js.map +1 -1
  166. package/dist/esm/FormEntry.js +77 -52
  167. package/dist/esm/FormEntry.js.map +1 -1
  168. package/dist/esm/Fx.js +509 -874
  169. package/dist/esm/Fx.js.map +1 -1
  170. package/dist/esm/Guard.js +5 -1
  171. package/dist/esm/Guard.js.map +1 -1
  172. package/dist/esm/Idle.js +49 -39
  173. package/dist/esm/Idle.js.map +1 -1
  174. package/dist/esm/Match.js +103 -63
  175. package/dist/esm/Match.js.map +1 -1
  176. package/dist/esm/Pull.js.map +1 -1
  177. package/dist/esm/Push.js +159 -0
  178. package/dist/esm/Push.js.map +1 -0
  179. package/dist/esm/RefArray.js +32 -30
  180. package/dist/esm/RefArray.js.map +1 -1
  181. package/dist/esm/RefChunk.js +26 -24
  182. package/dist/esm/RefChunk.js.map +1 -1
  183. package/dist/esm/RefHashMap.js +20 -20
  184. package/dist/esm/RefHashMap.js.map +1 -1
  185. package/dist/esm/RefHashSet.js +11 -8
  186. package/dist/esm/RefHashSet.js.map +1 -1
  187. package/dist/esm/RefSubject.js +873 -150
  188. package/dist/esm/RefSubject.js.map +1 -1
  189. package/dist/esm/Sink.js +608 -57
  190. package/dist/esm/Sink.js.map +1 -1
  191. package/dist/esm/Stream.js +13 -9
  192. package/dist/esm/Stream.js.map +1 -1
  193. package/dist/esm/Subject.js +151 -56
  194. package/dist/esm/Subject.js.map +1 -1
  195. package/dist/esm/TypeId.js +9 -4
  196. package/dist/esm/TypeId.js.map +1 -1
  197. package/dist/esm/Typeclass.js +29 -29
  198. package/dist/esm/Typeclass.js.map +1 -1
  199. package/dist/esm/Versioned.js +110 -53
  200. package/dist/esm/Versioned.js.map +1 -1
  201. package/dist/esm/index.js +66 -6
  202. package/dist/esm/index.js.map +1 -1
  203. package/dist/esm/internal/DeferredRef.js +54 -0
  204. package/dist/esm/internal/DeferredRef.js.map +1 -0
  205. package/dist/esm/internal/UnionToTuple.js +2 -0
  206. package/dist/esm/internal/UnionToTuple.js.map +1 -0
  207. package/dist/esm/internal/core.js +1439 -719
  208. package/dist/esm/internal/core.js.map +1 -1
  209. package/dist/esm/internal/diff.js +82 -0
  210. package/dist/esm/internal/diff.js.map +1 -0
  211. package/dist/esm/internal/effect-loop-operator.js +269 -0
  212. package/dist/esm/internal/effect-loop-operator.js.map +1 -0
  213. package/dist/esm/internal/effect-operator.js +44 -37
  214. package/dist/esm/internal/effect-operator.js.map +1 -1
  215. package/dist/esm/internal/effect-producer.js +47 -0
  216. package/dist/esm/internal/effect-producer.js.map +1 -0
  217. package/dist/esm/internal/helpers.js +157 -129
  218. package/dist/esm/internal/helpers.js.map +1 -1
  219. package/dist/esm/internal/keyed.js +128 -139
  220. package/dist/esm/internal/keyed.js.map +1 -1
  221. package/dist/esm/internal/loop-operator.js +186 -0
  222. package/dist/esm/internal/loop-operator.js.map +1 -0
  223. package/dist/esm/internal/operator.js +68 -0
  224. package/dist/esm/internal/operator.js.map +1 -0
  225. package/dist/esm/internal/protos.js +16 -75
  226. package/dist/esm/internal/protos.js.map +1 -1
  227. package/dist/esm/internal/provide.js +33 -25
  228. package/dist/esm/internal/provide.js.map +1 -1
  229. package/dist/esm/internal/requestIdleCallback.js +5 -5
  230. package/dist/esm/internal/requestIdleCallback.js.map +1 -1
  231. package/dist/esm/internal/share.js +12 -12
  232. package/dist/esm/internal/share.js.map +1 -1
  233. package/dist/esm/internal/sync-operator.js +49 -21
  234. package/dist/esm/internal/sync-operator.js.map +1 -1
  235. package/dist/esm/internal/sync-producer.js +88 -0
  236. package/dist/esm/internal/sync-producer.js.map +1 -0
  237. package/dist/esm/internal/withKey.js +46 -47
  238. package/dist/esm/internal/withKey.js.map +1 -1
  239. package/package.json +22 -62
  240. package/src/AsyncData.ts +447 -0
  241. package/src/Emitter.ts +47 -38
  242. package/src/Form.ts +185 -65
  243. package/src/FormEntry.ts +142 -109
  244. package/src/Fx.ts +1682 -1854
  245. package/src/Guard.ts +12 -1
  246. package/src/Idle.ts +76 -62
  247. package/src/Match.ts +149 -93
  248. package/src/Pull.ts +8 -8
  249. package/src/Push.ts +472 -0
  250. package/src/RefArray.ts +53 -51
  251. package/src/RefChunk.ts +44 -41
  252. package/src/RefHashMap.ts +57 -43
  253. package/src/RefHashSet.ts +21 -31
  254. package/src/RefSubject.ts +1984 -457
  255. package/src/Sink.ts +922 -171
  256. package/src/Stream.ts +32 -20
  257. package/src/Subject.ts +230 -87
  258. package/src/TypeId.ts +16 -4
  259. package/src/Typeclass.ts +31 -32
  260. package/src/Versioned.ts +220 -168
  261. package/src/index.ts +78 -6
  262. package/src/internal/DeferredRef.ts +62 -0
  263. package/src/internal/UnionToTuple.ts +11 -0
  264. package/src/internal/core.ts +2491 -1950
  265. package/src/internal/diff.ts +157 -0
  266. package/src/internal/effect-loop-operator.ts +466 -0
  267. package/src/internal/effect-operator.ts +89 -54
  268. package/src/internal/effect-producer.ts +125 -0
  269. package/src/internal/helpers.ts +275 -205
  270. package/src/internal/keyed.ts +192 -241
  271. package/src/internal/loop-operator.ts +266 -0
  272. package/src/internal/operator.ts +87 -0
  273. package/src/internal/protos.ts +29 -104
  274. package/src/internal/provide.ts +48 -40
  275. package/src/internal/requestIdleCallback.ts +5 -6
  276. package/src/internal/share.ts +26 -24
  277. package/src/internal/sync-operator.ts +68 -27
  278. package/src/internal/sync-producer.ts +146 -0
  279. package/src/internal/withKey.ts +64 -74
  280. package/Computed/package.json +0 -6
  281. package/Filtered/package.json +0 -6
  282. package/Model/package.json +0 -6
  283. package/RefAsyncData/package.json +0 -6
  284. package/RefAsyncDataArray/package.json +0 -6
  285. package/RefBoolean/package.json +0 -6
  286. package/RefNumber/package.json +0 -6
  287. package/dist/cjs/Computed.js +0 -115
  288. package/dist/cjs/Computed.js.map +0 -1
  289. package/dist/cjs/Filtered.js +0 -95
  290. package/dist/cjs/Filtered.js.map +0 -1
  291. package/dist/cjs/Model.js +0 -119
  292. package/dist/cjs/Model.js.map +0 -1
  293. package/dist/cjs/RefAsyncData.js +0 -187
  294. package/dist/cjs/RefAsyncData.js.map +0 -1
  295. package/dist/cjs/RefAsyncDataArray.js +0 -38
  296. package/dist/cjs/RefAsyncDataArray.js.map +0 -1
  297. package/dist/cjs/RefBoolean.js +0 -45
  298. package/dist/cjs/RefBoolean.js.map +0 -1
  299. package/dist/cjs/RefNumber.js +0 -49
  300. package/dist/cjs/RefNumber.js.map +0 -1
  301. package/dist/cjs/internal/core-ref-subject.js +0 -254
  302. package/dist/cjs/internal/core-ref-subject.js.map +0 -1
  303. package/dist/cjs/internal/core-subject.js +0 -108
  304. package/dist/cjs/internal/core-subject.js.map +0 -1
  305. package/dist/cjs/internal/deferred-ref.js.map +0 -1
  306. package/dist/cjs/internal/effect-primitive.js +0 -47
  307. package/dist/cjs/internal/effect-primitive.js.map +0 -1
  308. package/dist/cjs/internal/fx-effect-proto.js +0 -58
  309. package/dist/cjs/internal/fx-effect-proto.js.map +0 -1
  310. package/dist/cjs/internal/fx-primitive.js +0 -193
  311. package/dist/cjs/internal/fx-primitive.js.map +0 -1
  312. package/dist/cjs/internal/fx.js +0 -240
  313. package/dist/cjs/internal/fx.js.map +0 -1
  314. package/dist/cjs/internal/matchers.js +0 -34
  315. package/dist/cjs/internal/matchers.js.map +0 -1
  316. package/dist/cjs/internal/run.js +0 -54
  317. package/dist/cjs/internal/run.js.map +0 -1
  318. package/dist/cjs/internal/schema-ref-subject.js +0 -132
  319. package/dist/cjs/internal/schema-ref-subject.js.map +0 -1
  320. package/dist/cjs/internal/versioned-transform.js +0 -46
  321. package/dist/cjs/internal/versioned-transform.js.map +0 -1
  322. package/dist/dts/Computed.d.ts +0 -106
  323. package/dist/dts/Computed.d.ts.map +0 -1
  324. package/dist/dts/Filtered.d.ts +0 -97
  325. package/dist/dts/Filtered.d.ts.map +0 -1
  326. package/dist/dts/Model.d.ts +0 -200
  327. package/dist/dts/Model.d.ts.map +0 -1
  328. package/dist/dts/RefAsyncData.d.ts +0 -236
  329. package/dist/dts/RefAsyncData.d.ts.map +0 -1
  330. package/dist/dts/RefAsyncDataArray.d.ts +0 -56
  331. package/dist/dts/RefAsyncDataArray.d.ts.map +0 -1
  332. package/dist/dts/RefBoolean.d.ts +0 -47
  333. package/dist/dts/RefBoolean.d.ts.map +0 -1
  334. package/dist/dts/RefNumber.d.ts +0 -48
  335. package/dist/dts/RefNumber.d.ts.map +0 -1
  336. package/dist/dts/internal/core-ref-subject.d.ts +0 -100
  337. package/dist/dts/internal/core-ref-subject.d.ts.map +0 -1
  338. package/dist/dts/internal/core-subject.d.ts +0 -5
  339. package/dist/dts/internal/core-subject.d.ts.map +0 -1
  340. package/dist/dts/internal/deferred-ref.d.ts +0 -12
  341. package/dist/dts/internal/deferred-ref.d.ts.map +0 -1
  342. package/dist/dts/internal/effect-primitive.d.ts +0 -6
  343. package/dist/dts/internal/effect-primitive.d.ts.map +0 -1
  344. package/dist/dts/internal/fx-effect-proto.d.ts +0 -30
  345. package/dist/dts/internal/fx-effect-proto.d.ts.map +0 -1
  346. package/dist/dts/internal/fx-primitive.d.ts +0 -109
  347. package/dist/dts/internal/fx-primitive.d.ts.map +0 -1
  348. package/dist/dts/internal/fx.d.ts +0 -245
  349. package/dist/dts/internal/fx.d.ts.map +0 -1
  350. package/dist/dts/internal/matchers.d.ts +0 -33
  351. package/dist/dts/internal/matchers.d.ts.map +0 -1
  352. package/dist/dts/internal/run.d.ts +0 -8
  353. package/dist/dts/internal/run.d.ts.map +0 -1
  354. package/dist/dts/internal/schema-ref-subject.d.ts +0 -5
  355. package/dist/dts/internal/schema-ref-subject.d.ts.map +0 -1
  356. package/dist/dts/internal/versioned-transform.d.ts +0 -17
  357. package/dist/dts/internal/versioned-transform.d.ts.map +0 -1
  358. package/dist/esm/Computed.js +0 -103
  359. package/dist/esm/Computed.js.map +0 -1
  360. package/dist/esm/Filtered.js +0 -83
  361. package/dist/esm/Filtered.js.map +0 -1
  362. package/dist/esm/Model.js +0 -100
  363. package/dist/esm/Model.js.map +0 -1
  364. package/dist/esm/RefAsyncData.js +0 -163
  365. package/dist/esm/RefAsyncData.js.map +0 -1
  366. package/dist/esm/RefAsyncDataArray.js +0 -27
  367. package/dist/esm/RefAsyncDataArray.js.map +0 -1
  368. package/dist/esm/RefBoolean.js +0 -31
  369. package/dist/esm/RefBoolean.js.map +0 -1
  370. package/dist/esm/RefNumber.js +0 -35
  371. package/dist/esm/RefNumber.js.map +0 -1
  372. package/dist/esm/internal/core-ref-subject.js +0 -242
  373. package/dist/esm/internal/core-ref-subject.js.map +0 -1
  374. package/dist/esm/internal/core-subject.js +0 -90
  375. package/dist/esm/internal/core-subject.js.map +0 -1
  376. package/dist/esm/internal/deferred-ref.js +0 -23
  377. package/dist/esm/internal/deferred-ref.js.map +0 -1
  378. package/dist/esm/internal/effect-primitive.js +0 -41
  379. package/dist/esm/internal/effect-primitive.js.map +0 -1
  380. package/dist/esm/internal/fx-effect-proto.js +0 -43
  381. package/dist/esm/internal/fx-effect-proto.js.map +0 -1
  382. package/dist/esm/internal/fx-primitive.js +0 -175
  383. package/dist/esm/internal/fx-primitive.js.map +0 -1
  384. package/dist/esm/internal/fx.js +0 -216
  385. package/dist/esm/internal/fx.js.map +0 -1
  386. package/dist/esm/internal/matchers.js +0 -38
  387. package/dist/esm/internal/matchers.js.map +0 -1
  388. package/dist/esm/internal/run.js +0 -32
  389. package/dist/esm/internal/run.js.map +0 -1
  390. package/dist/esm/internal/schema-ref-subject.js +0 -121
  391. package/dist/esm/internal/schema-ref-subject.js.map +0 -1
  392. package/dist/esm/internal/versioned-transform.js +0 -37
  393. package/dist/esm/internal/versioned-transform.js.map +0 -1
  394. package/src/Computed.ts +0 -289
  395. package/src/Filtered.ts +0 -274
  396. package/src/Model.ts +0 -483
  397. package/src/RefAsyncData.ts +0 -547
  398. package/src/RefAsyncDataArray.ts +0 -135
  399. package/src/RefBoolean.ts +0 -71
  400. package/src/RefNumber.ts +0 -77
  401. package/src/internal/core-ref-subject.ts +0 -528
  402. package/src/internal/core-subject.ts +0 -143
  403. package/src/internal/deferred-ref.ts +0 -26
  404. package/src/internal/effect-primitive.ts +0 -230
  405. package/src/internal/fx-effect-proto.ts +0 -56
  406. package/src/internal/fx-primitive.ts +0 -223
  407. package/src/internal/fx.ts +0 -619
  408. package/src/internal/matchers.ts +0 -83
  409. package/src/internal/run.ts +0 -51
  410. package/src/internal/schema-ref-subject.ts +0 -163
  411. package/src/internal/versioned-transform.ts +0 -48
package/dist/esm/Sink.js CHANGED
@@ -1,42 +1,37 @@
1
1
  /**
2
- * Sink is a data structure that represents a place to send failures and successes
3
- * over time in an effectful manner.
4
- * @since 1.18.0
2
+ * Sink is a data structure which can be used to consume values from a stream.
3
+ * @since 1.20.0
5
4
  */
5
+ import * as C from "@typed/context";
6
6
  import * as Cause from "effect/Cause";
7
7
  import * as Clock from "effect/Clock";
8
8
  import * as Effect from "effect/Effect";
9
- import * as Either from "effect/Either";
10
9
  import { dual } from "effect/Function";
10
+ import * as Layer from "effect/Layer";
11
+ import * as Option from "effect/Option";
11
12
  /**
12
- * Construct a Sink that can be used to handle failures and successes.
13
- * @since 1.18.0
14
- * @category constructors
13
+ * @since 1.20.0
15
14
  */
16
- export function Sink(onFailure, onSuccess) {
15
+ export function make(onFailure, onSuccess) {
17
16
  return {
18
17
  onFailure,
19
18
  onSuccess
20
19
  };
21
20
  }
22
21
  /**
23
- * Construct a Sink that can be used to handle failures and successes with a Context.
24
- * @since 1.18.0
25
- * @category constructors
22
+ * @since 1.20.0
26
23
  */
27
- export function WithContext(onFailure, onSuccess) {
28
- return {
29
- onFailure,
30
- onSuccess
31
- };
32
- }
33
- /**
34
- * Provide a Context to a Sink
35
- * @since 1.18.0
36
- * @category context
37
- */
38
- export function provide(sink, ctx) {
39
- return Sink((cause) => Effect.provide(sink.onFailure(cause), ctx), (a) => Effect.provide(sink.onSuccess(a), ctx));
24
+ export function withEarlyExit(sink, f) {
25
+ return Effect.asyncEffect((resume) => {
26
+ const earlyExit = {
27
+ ...sink,
28
+ earlyExit: Effect.sync(() => resume(Effect.unit))
29
+ };
30
+ return Effect.matchCauseEffect(f(earlyExit), {
31
+ onFailure: (cause) => sink.onFailure(cause),
32
+ onSuccess: () => earlyExit.earlyExit
33
+ });
34
+ });
40
35
  }
41
36
  /**
42
37
  * Transform the input value of a Sink.
@@ -44,58 +39,567 @@ export function provide(sink, ctx) {
44
39
  * @category combinators
45
40
  */
46
41
  export const map = dual(2, function map(sink, f) {
47
- return WithContext(sink.onFailure, (a) => sink.onSuccess(f(a)));
42
+ return new MapSink(sink, f);
48
43
  });
44
+ class MapSink {
45
+ sink;
46
+ f;
47
+ constructor(sink, f) {
48
+ this.sink = sink;
49
+ this.f = f;
50
+ this.onFailure = this.onFailure.bind(this);
51
+ this.onSuccess = this.onSuccess.bind(this);
52
+ }
53
+ onFailure(cause) {
54
+ return this.sink.onFailure(cause);
55
+ }
56
+ onSuccess(value) {
57
+ return this.sink.onSuccess(this.f(value));
58
+ }
59
+ }
49
60
  /**
50
- * Transform the input value of a Sink using an Effect.
51
- * @since 1.18.0
52
- * @category combinators
61
+ * @since 1.20.0
62
+ */
63
+ export function filter(sink, predicate) {
64
+ return new FilterSink(sink, predicate);
65
+ }
66
+ class FilterSink {
67
+ sink;
68
+ predicate;
69
+ constructor(sink, predicate) {
70
+ this.sink = sink;
71
+ this.predicate = predicate;
72
+ this.onFailure = this.onFailure.bind(this);
73
+ this.onSuccess = this.onSuccess.bind(this);
74
+ }
75
+ onFailure(cause) {
76
+ return this.sink.onFailure(cause);
77
+ }
78
+ onSuccess(value) {
79
+ if (this.predicate(value))
80
+ return this.sink.onSuccess(value);
81
+ else
82
+ return Effect.unit;
83
+ }
84
+ }
85
+ /**
86
+ * @since 1.20.0
87
+ */
88
+ export function filterMap(sink, f) {
89
+ return new FilterMapSink(sink, f);
90
+ }
91
+ class FilterMapSink {
92
+ sink;
93
+ f;
94
+ constructor(sink, f) {
95
+ this.sink = sink;
96
+ this.f = f;
97
+ this.onFailure = this.onFailure.bind(this);
98
+ this.onSuccess = this.onSuccess.bind(this);
99
+ }
100
+ onFailure(cause) {
101
+ return this.sink.onFailure(cause);
102
+ }
103
+ onSuccess(value) {
104
+ const option = this.f(value);
105
+ if (Option.isSome(option))
106
+ return this.sink.onSuccess(option.value);
107
+ else
108
+ return Effect.unit;
109
+ }
110
+ }
111
+ /**
112
+ * @since 1.20.0
53
113
  */
54
114
  export const mapEffect = dual(2, function mapEffect(sink, f) {
55
- return WithContext(sink.onFailure, (b) => Effect.matchCauseEffect(f(b), sink));
115
+ return new MapEffectSink(sink, f);
56
116
  });
117
+ class MapEffectSink {
118
+ sink;
119
+ f;
120
+ constructor(sink, f) {
121
+ this.sink = sink;
122
+ this.f = f;
123
+ this.onFailure = this.onFailure.bind(this);
124
+ this.onSuccess = this.onSuccess.bind(this);
125
+ }
126
+ onFailure(cause) {
127
+ return this.sink.onFailure(cause);
128
+ }
129
+ onSuccess(value) {
130
+ return Effect.matchCauseEffect(this.f(value), this.sink);
131
+ }
132
+ }
57
133
  /**
58
- * Transform the input Cause of a Sink.
59
- * @since 1.18.0
60
- * @category combinators
134
+ * @since 1.20.0
135
+ */
136
+ export const filterMapEffect = dual(2, function filterMapEffect(sink, f) {
137
+ return new FilterMapEffectSink(sink, f);
138
+ });
139
+ class FilterMapEffectSink {
140
+ sink;
141
+ f;
142
+ constructor(sink, f) {
143
+ this.sink = sink;
144
+ this.f = f;
145
+ this.onFailure = this.onFailure.bind(this);
146
+ this.onSuccess = this.onSuccess.bind(this);
147
+ }
148
+ onFailure(cause) {
149
+ return this.sink.onFailure(cause);
150
+ }
151
+ onSuccess(value) {
152
+ return Effect.matchCauseEffect(this.f(value), {
153
+ onFailure: (cause) => this.sink.onFailure(cause),
154
+ onSuccess: (option) => {
155
+ if (Option.isSome(option))
156
+ return this.sink.onSuccess(option.value);
157
+ else
158
+ return Effect.unit;
159
+ }
160
+ });
161
+ }
162
+ }
163
+ /**
164
+ * @since 1.20.0
61
165
  */
62
- export const mapErrorCause = dual(2, function mapErrorCause(sink, f) {
63
- return Sink((cause) => sink.onFailure(f(cause)), sink.onSuccess);
166
+ export const filterEffect = dual(2, function filterEffect(sink, f) {
167
+ return new FilterEffectSink(sink, f);
64
168
  });
169
+ class FilterEffectSink {
170
+ sink;
171
+ f;
172
+ constructor(sink, f) {
173
+ this.sink = sink;
174
+ this.f = f;
175
+ this.onFailure = this.onFailure.bind(this);
176
+ this.onSuccess = this.onSuccess.bind(this);
177
+ }
178
+ onFailure(cause) {
179
+ return this.sink.onFailure(cause);
180
+ }
181
+ onSuccess(value) {
182
+ return Effect.matchCauseEffect(this.f(value), {
183
+ onFailure: (cause) => this.sink.onFailure(cause),
184
+ onSuccess: (b) => {
185
+ if (b)
186
+ return this.sink.onSuccess(value);
187
+ else
188
+ return Effect.unit;
189
+ }
190
+ });
191
+ }
192
+ }
65
193
  /**
66
- * Transform the input Cause of a Sink using an Effect.
67
- * @since 1.18.0
68
- * @category combinators
194
+ * @since 1.20.0
69
195
  */
70
- export const mapErrorCauseEffect = dual(2, function mapErrorCauseEffect(sink, f) {
71
- return WithContext((cause) => Effect.matchCauseEffect(f(cause), WithContext(sink.onFailure, sink.onFailure)), sink.onSuccess);
196
+ export const tapEffect = dual(2, function tapEffect(sink, f) {
197
+ return new TapEffectSink(sink, f);
72
198
  });
199
+ class TapEffectSink {
200
+ sink;
201
+ f;
202
+ constructor(sink, f) {
203
+ this.sink = sink;
204
+ this.f = f;
205
+ this.onFailure = this.onFailure.bind(this);
206
+ this.onSuccess = this.onSuccess.bind(this);
207
+ }
208
+ onFailure(cause) {
209
+ return this.sink.onFailure(cause);
210
+ }
211
+ onSuccess(value) {
212
+ return Effect.matchCauseEffect(this.f(value), {
213
+ onFailure: (cause) => this.sink.onFailure(cause),
214
+ onSuccess: () => this.sink.onSuccess(value)
215
+ });
216
+ }
217
+ }
73
218
  /**
74
- * Transform the input Error of a Sink.
75
- * @since 1.18.0
76
- * @category combinators
219
+ * @since 1.20.0
77
220
  */
78
- export const mapError = dual(2, function mapError(sink, f) {
79
- return WithContext((cause) => sink.onFailure(Cause.map(cause, f)), sink.onSuccess);
221
+ export const loop = dual(3, function loop(sink, seed, f) {
222
+ return new LoopSink(sink, seed, f);
80
223
  });
224
+ class LoopSink {
225
+ sink;
226
+ seed;
227
+ f;
228
+ constructor(sink, seed, f) {
229
+ this.sink = sink;
230
+ this.seed = seed;
231
+ this.f = f;
232
+ this.onFailure = this.onFailure.bind(this);
233
+ this.onSuccess = this.onSuccess.bind(this);
234
+ }
235
+ onFailure(cause) {
236
+ return this.sink.onFailure(cause);
237
+ }
238
+ onSuccess(value) {
239
+ const [c, acc] = this.f(this.seed, value);
240
+ this.seed = acc;
241
+ return this.sink.onSuccess(c);
242
+ }
243
+ }
81
244
  /**
82
- * Transform the input Error of a Sink using an Effect.
83
- * @since 1.18.0
84
- * @category combinators
245
+ * @since 1.20.0
85
246
  */
86
- export const mapErrorEffect = dual(2, function mapErrorEffect(sink, f) {
87
- return mapErrorCauseEffect(sink, (cause) => Either.match(Cause.failureOrCause(cause), {
88
- onLeft: (e2) => Effect.map(f(e2), Cause.fail),
89
- onRight: (cause) => Effect.succeed(cause)
90
- }));
247
+ export const loopCause = dual(3, function loopCause(sink, seed, f) {
248
+ return new LoopCauseSink(sink, seed, f);
91
249
  });
250
+ class LoopCauseSink {
251
+ sink;
252
+ seed;
253
+ f;
254
+ constructor(sink, seed, f) {
255
+ this.sink = sink;
256
+ this.seed = seed;
257
+ this.f = f;
258
+ this.onFailure = this.onFailure.bind(this);
259
+ this.onSuccess = this.onSuccess.bind(this);
260
+ }
261
+ onFailure(cause) {
262
+ const [c, acc] = this.f(this.seed, cause);
263
+ this.seed = acc;
264
+ return this.sink.onFailure(c);
265
+ }
266
+ onSuccess(value) {
267
+ return this.sink.onSuccess(value);
268
+ }
269
+ }
92
270
  /**
93
- * Set the span a Sink will use to append events to.
94
- * @since 1.18.0
95
- * @category tracing
271
+ * @since 1.20.0
96
272
  */
97
- export const setSpan = dual(2, function withSpan(self, span) {
98
- return WithContext((cause) => addEvent(self.onFailure(cause), "fx.failure", span, {
273
+ export const filterMapLoop = dual(3, function filterMapLoop(sink, seed, f) {
274
+ return new FilterMapLoopSink(sink, seed, f);
275
+ });
276
+ class FilterMapLoopSink {
277
+ sink;
278
+ seed;
279
+ f;
280
+ constructor(sink, seed, f) {
281
+ this.sink = sink;
282
+ this.seed = seed;
283
+ this.f = f;
284
+ this.onFailure = this.onFailure.bind(this);
285
+ this.onSuccess = this.onSuccess.bind(this);
286
+ }
287
+ onFailure(cause) {
288
+ return this.sink.onFailure(cause);
289
+ }
290
+ onSuccess(value) {
291
+ const [option, acc] = this.f(this.seed, value);
292
+ this.seed = acc;
293
+ if (Option.isSome(option))
294
+ return this.sink.onSuccess(option.value);
295
+ else
296
+ return Effect.unit;
297
+ }
298
+ }
299
+ /**
300
+ * @since 1.20.0
301
+ */
302
+ export const filterMapLoopCause = dual(3, function filterMapLoopCause(sink, seed, f) {
303
+ return new FilterMapLoopCauseSink(sink, seed, f);
304
+ });
305
+ class FilterMapLoopCauseSink {
306
+ sink;
307
+ seed;
308
+ f;
309
+ constructor(sink, seed, f) {
310
+ this.sink = sink;
311
+ this.seed = seed;
312
+ this.f = f;
313
+ this.onFailure = this.onFailure.bind(this);
314
+ this.onSuccess = this.onSuccess.bind(this);
315
+ }
316
+ onFailure(cause) {
317
+ const [option, acc] = this.f(this.seed, cause);
318
+ this.seed = acc;
319
+ if (Option.isSome(option))
320
+ return this.sink.onFailure(option.value);
321
+ else
322
+ return Effect.unit;
323
+ }
324
+ onSuccess(value) {
325
+ return this.sink.onSuccess(value);
326
+ }
327
+ }
328
+ /**
329
+ * @since 1.20.0
330
+ */
331
+ export const loopEffect = dual(3, function loopEffect(sink, seed, f) {
332
+ return new LoopEffectSink(sink, seed, f);
333
+ });
334
+ class LoopEffectSink {
335
+ sink;
336
+ seed;
337
+ f;
338
+ constructor(sink, seed, f) {
339
+ this.sink = sink;
340
+ this.seed = seed;
341
+ this.f = f;
342
+ this.onFailure = this.onFailure.bind(this);
343
+ this.onSuccess = this.onSuccess.bind(this);
344
+ }
345
+ onFailure(cause) {
346
+ return this.sink.onFailure(cause);
347
+ }
348
+ onSuccess(value) {
349
+ return Effect.matchCauseEffect(this.f(this.seed, value), {
350
+ onFailure: (cause) => this.sink.onFailure(cause),
351
+ onSuccess: ([c, acc]) => {
352
+ this.seed = acc;
353
+ return this.sink.onSuccess(c);
354
+ }
355
+ });
356
+ }
357
+ }
358
+ /**
359
+ * @since 1.20.0
360
+ */
361
+ export const filterMapLoopEffect = dual(3, function filterMapLoopEffect(sink, seed, f) {
362
+ return new FilterMapLoopEffectSink(sink, seed, f);
363
+ });
364
+ class FilterMapLoopEffectSink {
365
+ sink;
366
+ seed;
367
+ f;
368
+ constructor(sink, seed, f) {
369
+ this.sink = sink;
370
+ this.seed = seed;
371
+ this.f = f;
372
+ this.onFailure = this.onFailure.bind(this);
373
+ this.onSuccess = this.onSuccess.bind(this);
374
+ }
375
+ onFailure(cause) {
376
+ return this.sink.onFailure(cause);
377
+ }
378
+ onSuccess(value) {
379
+ return Effect.matchCauseEffect(this.f(this.seed, value), {
380
+ onFailure: (cause) => this.sink.onFailure(cause),
381
+ onSuccess: ([option, acc]) => {
382
+ this.seed = acc;
383
+ if (Option.isSome(option))
384
+ return this.sink.onSuccess(option.value);
385
+ else
386
+ return Effect.unit;
387
+ }
388
+ });
389
+ }
390
+ }
391
+ /**
392
+ * @since 1.20.0
393
+ */
394
+ export const loopCauseEffect = dual(3, function loopCauseEffect(sink, seed, f) {
395
+ return new LoopCauseEffectSink(sink, seed, f);
396
+ });
397
+ class LoopCauseEffectSink {
398
+ sink;
399
+ seed;
400
+ f;
401
+ constructor(sink, seed, f) {
402
+ this.sink = sink;
403
+ this.seed = seed;
404
+ this.f = f;
405
+ this.onFailure = this.onFailure.bind(this);
406
+ this.onSuccess = this.onSuccess.bind(this);
407
+ }
408
+ onFailure(cause) {
409
+ return Effect.matchCauseEffect(this.f(this.seed, cause), {
410
+ onFailure: (cause2) => this.sink.onFailure(Cause.sequential(cause, cause2)),
411
+ onSuccess: ([c, acc]) => {
412
+ this.seed = acc;
413
+ return this.sink.onFailure(c);
414
+ }
415
+ });
416
+ }
417
+ onSuccess(value) {
418
+ return this.sink.onSuccess(value);
419
+ }
420
+ }
421
+ /**
422
+ * @since 1.20.0
423
+ */
424
+ export function filterMapLoopCauseEffect(sink, seed, f) {
425
+ return new FilterMapLoopCauseEffectSink(sink, seed, f);
426
+ }
427
+ class FilterMapLoopCauseEffectSink {
428
+ sink;
429
+ seed;
430
+ f;
431
+ constructor(sink, seed, f) {
432
+ this.sink = sink;
433
+ this.seed = seed;
434
+ this.f = f;
435
+ this.onFailure = this.onFailure.bind(this);
436
+ this.onSuccess = this.onSuccess.bind(this);
437
+ }
438
+ onFailure(cause) {
439
+ return Effect.matchCauseEffect(this.f(this.seed, cause), {
440
+ onFailure: (cause2) => this.sink.onFailure(cause2),
441
+ onSuccess: ([option, acc]) => {
442
+ this.seed = acc;
443
+ if (Option.isSome(option))
444
+ return this.sink.onFailure(option.value);
445
+ else
446
+ return Effect.unit;
447
+ }
448
+ });
449
+ }
450
+ onSuccess(value) {
451
+ return this.sink.onSuccess(value);
452
+ }
453
+ }
454
+ /**
455
+ * @since 1.20.0
456
+ */
457
+ export const slice = dual(3, function slice(sink, bounds, f) {
458
+ return withEarlyExit(sink, (s) => f(new SliceSink(s, bounds)));
459
+ });
460
+ class SliceSink {
461
+ sink;
462
+ bounds;
463
+ drop;
464
+ take;
465
+ constructor(sink, bounds) {
466
+ this.sink = sink;
467
+ this.bounds = bounds;
468
+ this.drop = this.bounds.min;
469
+ this.take = this.bounds.max;
470
+ this.onFailure = this.onFailure.bind(this);
471
+ this.onSuccess = this.onSuccess.bind(this);
472
+ }
473
+ onFailure(cause) {
474
+ return this.sink.onFailure(cause);
475
+ }
476
+ onSuccess(value) {
477
+ if (this.drop > 0) {
478
+ this.drop--;
479
+ return Effect.unit;
480
+ }
481
+ if (this.take-- > 0) {
482
+ return Effect.tap(this.sink.onSuccess(value), () => this.take === 0 ? this.sink.earlyExit : Effect.unit);
483
+ }
484
+ return this.sink.earlyExit;
485
+ }
486
+ }
487
+ /**
488
+ * @since 1.20.0
489
+ */
490
+ export const takeWhile = dual(3, function takeWhile(sink, predicate, f) {
491
+ return withEarlyExit(sink, (s) => f(new TakeWhileSink(s, predicate)));
492
+ });
493
+ class TakeWhileSink {
494
+ sink;
495
+ predicate;
496
+ take;
497
+ constructor(sink, predicate) {
498
+ this.sink = sink;
499
+ this.predicate = predicate;
500
+ this.take = true;
501
+ this.onFailure = this.onFailure.bind(this);
502
+ this.onSuccess = this.onSuccess.bind(this);
503
+ }
504
+ onFailure(cause) {
505
+ return this.sink.onFailure(cause);
506
+ }
507
+ onSuccess(value) {
508
+ if (this.take === true && (this.take = this.predicate(value)))
509
+ return this.sink.onSuccess(value);
510
+ else {
511
+ this.take = false;
512
+ return this.sink.earlyExit;
513
+ }
514
+ }
515
+ }
516
+ /**
517
+ * @since 1.20.0
518
+ */
519
+ export const dropWhile = dual(2, function dropWhile(sink, predicate) {
520
+ return filterMapLoop(sink, true, (drop, a) => {
521
+ const drop2 = drop && predicate(a);
522
+ return [drop2 ? Option.none() : Option.some(a), drop2];
523
+ });
524
+ });
525
+ /**
526
+ * @since 1.20.0
527
+ */
528
+ export const dropAfter = dual(2, function dropAfter(sink, predicate) {
529
+ return filterMapLoop(sink, false, (drop, a) => {
530
+ if (drop === true)
531
+ return [Option.none(), drop];
532
+ const drop2 = predicate(a);
533
+ return [Option.some(a), drop2];
534
+ });
535
+ });
536
+ /**
537
+ * @since 1.20.0
538
+ */
539
+ export const takeWhileEffect = dual(3, function takeWhileEffect(sink, predicate, f) {
540
+ return withEarlyExit(sink, (s) => f(new TakeWhileEffectSink(s, predicate)));
541
+ });
542
+ class TakeWhileEffectSink {
543
+ sink;
544
+ predicate;
545
+ take;
546
+ constructor(sink, predicate) {
547
+ this.sink = sink;
548
+ this.predicate = predicate;
549
+ this.take = true;
550
+ this.onFailure = this.onFailure.bind(this);
551
+ this.onSuccess = this.onSuccess.bind(this);
552
+ }
553
+ onFailure(cause) {
554
+ return this.sink.onFailure(cause);
555
+ }
556
+ onSuccess(value) {
557
+ if (this.take === true) {
558
+ return Effect.matchCauseEffect(this.predicate(value), {
559
+ onFailure: (cause) => this.sink.onFailure(cause),
560
+ onSuccess: (b) => {
561
+ if ((this.take = b))
562
+ return this.sink.onSuccess(value);
563
+ else
564
+ return this.sink.earlyExit;
565
+ }
566
+ });
567
+ }
568
+ else
569
+ return this.sink.earlyExit;
570
+ }
571
+ }
572
+ /**
573
+ * @since 1.20.0
574
+ */
575
+ export const dropWhileEffect = dual(2, function dropWhileEffect(sink, predicate) {
576
+ return filterMapLoopEffect(sink, true, (drop, a) => {
577
+ if (drop === false)
578
+ return Effect.succeed([Option.some(a), drop]);
579
+ return Effect.map(predicate(a), (b) => [b ? Option.none() : Option.some(a), b]);
580
+ });
581
+ });
582
+ /**
583
+ * @since 1.20.0
584
+ */
585
+ export const dropAfterEffect = dual(2, function dropAfterEffect(sink, predicate) {
586
+ return filterMapLoopEffect(sink, false, (drop, a) => {
587
+ if (drop === true)
588
+ return Effect.succeed([Option.none(), drop]);
589
+ return Effect.map(predicate(a), (b) => [Option.some(a), b]);
590
+ });
591
+ });
592
+ /**
593
+ * @since 1.20.0
594
+ */
595
+ export const provide = dual(2, function provide(sink, ctx) {
596
+ return make((cause) => Effect.provide(sink.onFailure(cause), ctx), (a) => Effect.provide(sink.onSuccess(a), ctx));
597
+ });
598
+ /**
599
+ * @since 1.20.0
600
+ */
601
+ export const setSpan = dual(2, function setSpan(self, span) {
602
+ return make((cause) => addEvent(self.onFailure(cause), "fx.failure", span, {
99
603
  "cause": Cause.pretty(cause)
100
604
  }), (a) => addEvent(self.onSuccess(a), "fx.success", span, {
101
605
  "value": JSON.stringify(a)
@@ -105,4 +609,51 @@ const addEvent = (effect, name, span, attributes) => Effect.flatMap(Clock.curren
105
609
  span.event(name, time, attributes);
106
610
  return effect;
107
611
  }));
612
+ /**
613
+ * @since 1.20.0
614
+ */
615
+ export function tagged() {
616
+ return (identifier) => new TaggedImpl(C.Tagged(identifier));
617
+ }
618
+ class TaggedImpl {
619
+ tag;
620
+ constructor(tag) {
621
+ this.tag = tag;
622
+ }
623
+ onSuccess(value) {
624
+ return this.tag.withEffect((sink) => sink.onSuccess(value));
625
+ }
626
+ onFailure(cause) {
627
+ return this.tag.withEffect((sink) => sink.onFailure(cause));
628
+ }
629
+ make = (sink) => Layer.flatMap(Layer.context(), (ctx) => this.tag.layer(provide(sink, ctx)));
630
+ }
631
+ /**
632
+ * @since 1.20.0
633
+ */
634
+ export const fromTag = dual(2, function fromTag(tag, f) {
635
+ return new FromTag(tag, f);
636
+ });
637
+ class FromTag {
638
+ tag;
639
+ f;
640
+ get;
641
+ constructor(tag, f) {
642
+ this.tag = tag;
643
+ this.f = f;
644
+ this.get = Effect.map(tag, f);
645
+ }
646
+ onSuccess(value) {
647
+ return Effect.flatMap(this.get, (sink) => sink.onSuccess(value));
648
+ }
649
+ onFailure(cause) {
650
+ return Effect.flatMap(this.get, (sink) => sink.onFailure(cause));
651
+ }
652
+ }
653
+ /**
654
+ * @since 1.20.0
655
+ */
656
+ export function ignoreInterrupt(sink) {
657
+ return make((cause) => Cause.isInterruptedOnly(cause) ? Effect.unit : sink.onFailure(cause), sink.onSuccess);
658
+ }
108
659
  //# sourceMappingURL=Sink.js.map