@typed/fx 1.18.4 → 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 (423) hide show
  1. package/AsyncData/package.json +6 -0
  2. package/Emitter/package.json +6 -0
  3. package/Form/package.json +6 -0
  4. package/FormEntry/package.json +6 -0
  5. package/Fx/package.json +6 -0
  6. package/Guard/package.json +6 -0
  7. package/Idle/package.json +6 -0
  8. package/Match/package.json +6 -0
  9. package/Pull/package.json +6 -0
  10. package/Push/package.json +6 -0
  11. package/RefArray/package.json +6 -0
  12. package/RefChunk/package.json +6 -0
  13. package/RefHashMap/package.json +6 -0
  14. package/RefHashSet/package.json +6 -0
  15. package/RefSubject/package.json +6 -0
  16. package/Sink/package.json +6 -0
  17. package/Stream/package.json +6 -0
  18. package/Subject/package.json +6 -0
  19. package/TypeId/package.json +6 -0
  20. package/Typeclass/package.json +6 -0
  21. package/Versioned/package.json +6 -0
  22. package/dist/cjs/AsyncData.js +177 -0
  23. package/dist/cjs/AsyncData.js.map +1 -0
  24. package/dist/cjs/Emitter.js +24 -21
  25. package/dist/cjs/Emitter.js.map +1 -1
  26. package/dist/cjs/Form.js +78 -21
  27. package/dist/cjs/Form.js.map +1 -1
  28. package/dist/cjs/FormEntry.js +75 -48
  29. package/dist/cjs/FormEntry.js.map +1 -1
  30. package/dist/cjs/Fx.js +517 -872
  31. package/dist/cjs/Fx.js.map +1 -1
  32. package/dist/cjs/Guard.js +21 -13
  33. package/dist/cjs/Guard.js.map +1 -1
  34. package/dist/cjs/Idle.js +49 -37
  35. package/dist/cjs/Idle.js.map +1 -1
  36. package/dist/cjs/Match.js +99 -61
  37. package/dist/cjs/Match.js.map +1 -1
  38. package/dist/cjs/Pull.js.map +1 -1
  39. package/dist/cjs/Push.js +168 -0
  40. package/dist/cjs/Push.js.map +1 -0
  41. package/dist/cjs/RefArray.js +32 -30
  42. package/dist/cjs/RefArray.js.map +1 -1
  43. package/dist/cjs/RefChunk.js +26 -24
  44. package/dist/cjs/RefChunk.js.map +1 -1
  45. package/dist/cjs/RefHashMap.js +20 -20
  46. package/dist/cjs/RefHashMap.js.map +1 -1
  47. package/dist/cjs/RefHashSet.js +11 -8
  48. package/dist/cjs/RefHashSet.js.map +1 -1
  49. package/dist/cjs/RefSubject.js +899 -158
  50. package/dist/cjs/RefSubject.js.map +1 -1
  51. package/dist/cjs/Sink.js +588 -62
  52. package/dist/cjs/Sink.js.map +1 -1
  53. package/dist/cjs/Stream.js +15 -10
  54. package/dist/cjs/Stream.js.map +1 -1
  55. package/dist/cjs/Subject.js +153 -55
  56. package/dist/cjs/Subject.js.map +1 -1
  57. package/dist/cjs/TypeId.js +10 -5
  58. package/dist/cjs/TypeId.js.map +1 -1
  59. package/dist/cjs/Typeclass.js +28 -31
  60. package/dist/cjs/Typeclass.js.map +1 -1
  61. package/dist/cjs/Versioned.js +118 -57
  62. package/dist/cjs/Versioned.js.map +1 -1
  63. package/dist/cjs/index.js +44 -8
  64. package/dist/cjs/index.js.map +1 -1
  65. package/dist/cjs/internal/{deferred-ref.js → DeferredRef.js} +45 -13
  66. package/dist/cjs/internal/DeferredRef.js.map +1 -0
  67. package/dist/cjs/internal/UnionToTuple.js +6 -0
  68. package/dist/cjs/internal/UnionToTuple.js.map +1 -0
  69. package/dist/cjs/internal/core.js +1590 -779
  70. package/dist/cjs/internal/core.js.map +1 -1
  71. package/dist/cjs/internal/diff.js +114 -0
  72. package/dist/cjs/internal/diff.js.map +1 -0
  73. package/dist/cjs/internal/effect-loop-operator.js +288 -0
  74. package/dist/cjs/internal/effect-loop-operator.js.map +1 -0
  75. package/dist/cjs/internal/effect-operator.js +46 -37
  76. package/dist/cjs/internal/effect-operator.js.map +1 -1
  77. package/dist/cjs/internal/effect-producer.js +74 -0
  78. package/dist/cjs/internal/effect-producer.js.map +1 -0
  79. package/dist/cjs/internal/helpers.js +158 -128
  80. package/dist/cjs/internal/helpers.js.map +1 -1
  81. package/dist/cjs/internal/keyed.js +136 -173
  82. package/dist/cjs/internal/keyed.js.map +1 -1
  83. package/dist/cjs/internal/loop-operator.js +213 -0
  84. package/dist/cjs/internal/loop-operator.js.map +1 -0
  85. package/dist/cjs/internal/operator.js +79 -0
  86. package/dist/cjs/internal/operator.js.map +1 -0
  87. package/dist/cjs/internal/protos.js +19 -81
  88. package/dist/cjs/internal/protos.js.map +1 -1
  89. package/dist/cjs/internal/provide.js +47 -25
  90. package/dist/cjs/internal/provide.js.map +1 -1
  91. package/dist/cjs/internal/requestIdleCallback.js +5 -5
  92. package/dist/cjs/internal/requestIdleCallback.js.map +1 -1
  93. package/dist/cjs/internal/share.js +12 -15
  94. package/dist/cjs/internal/share.js.map +1 -1
  95. package/dist/cjs/internal/sync-operator.js +50 -22
  96. package/dist/cjs/internal/sync-operator.js.map +1 -1
  97. package/dist/cjs/internal/sync-producer.js +114 -0
  98. package/dist/cjs/internal/sync-producer.js.map +1 -0
  99. package/dist/cjs/internal/withKey.js +45 -51
  100. package/dist/cjs/internal/withKey.js.map +1 -1
  101. package/dist/dts/AsyncData.d.ts +185 -0
  102. package/dist/dts/AsyncData.d.ts.map +1 -0
  103. package/dist/dts/Emitter.d.ts +13 -20
  104. package/dist/dts/Emitter.d.ts.map +1 -1
  105. package/dist/dts/Form.d.ts +45 -28
  106. package/dist/dts/Form.d.ts.map +1 -1
  107. package/dist/dts/FormEntry.d.ts +25 -13
  108. package/dist/dts/FormEntry.d.ts.map +1 -1
  109. package/dist/dts/Fx.d.ts +983 -1387
  110. package/dist/dts/Fx.d.ts.map +1 -1
  111. package/dist/dts/Guard.d.ts +8 -1
  112. package/dist/dts/Guard.d.ts.map +1 -1
  113. package/dist/dts/Idle.d.ts +3 -3
  114. package/dist/dts/Idle.d.ts.map +1 -1
  115. package/dist/dts/Match.d.ts +8 -8
  116. package/dist/dts/Match.d.ts.map +1 -1
  117. package/dist/dts/Pull.d.ts +5 -5
  118. package/dist/dts/Pull.d.ts.map +1 -1
  119. package/dist/dts/Push.d.ts +170 -0
  120. package/dist/dts/Push.d.ts.map +1 -0
  121. package/dist/dts/RefArray.d.ts +21 -23
  122. package/dist/dts/RefArray.d.ts.map +1 -1
  123. package/dist/dts/RefChunk.d.ts +17 -19
  124. package/dist/dts/RefChunk.d.ts.map +1 -1
  125. package/dist/dts/RefHashMap.d.ts +19 -20
  126. package/dist/dts/RefHashMap.d.ts.map +1 -1
  127. package/dist/dts/RefHashSet.d.ts +12 -16
  128. package/dist/dts/RefHashSet.d.ts.map +1 -1
  129. package/dist/dts/RefSubject.d.ts +396 -187
  130. package/dist/dts/RefSubject.d.ts.map +1 -1
  131. package/dist/dts/Sink.d.ts +193 -93
  132. package/dist/dts/Sink.d.ts.map +1 -1
  133. package/dist/dts/Stream.d.ts +7 -1
  134. package/dist/dts/Stream.d.ts.map +1 -1
  135. package/dist/dts/Subject.d.ts +27 -36
  136. package/dist/dts/Subject.d.ts.map +1 -1
  137. package/dist/dts/TypeId.d.ts +10 -0
  138. package/dist/dts/TypeId.d.ts.map +1 -1
  139. package/dist/dts/Typeclass.d.ts +2 -2
  140. package/dist/dts/Typeclass.d.ts.map +1 -1
  141. package/dist/dts/Versioned.d.ts +50 -78
  142. package/dist/dts/Versioned.d.ts.map +1 -1
  143. package/dist/dts/index.d.ts +66 -6
  144. package/dist/dts/index.d.ts.map +1 -1
  145. package/dist/dts/internal/DeferredRef.d.ts +20 -0
  146. package/dist/dts/internal/DeferredRef.d.ts.map +1 -0
  147. package/dist/dts/internal/UnionToTuple.d.ts +6 -0
  148. package/dist/dts/internal/UnionToTuple.d.ts.map +1 -0
  149. package/dist/dts/internal/core.d.ts +218 -450
  150. package/dist/dts/internal/core.d.ts.map +1 -1
  151. package/dist/dts/internal/diff.d.ts +38 -0
  152. package/dist/dts/internal/diff.d.ts.map +1 -0
  153. package/dist/dts/internal/effect-loop-operator.d.ts +34 -0
  154. package/dist/dts/internal/effect-loop-operator.d.ts.map +1 -0
  155. package/dist/dts/internal/effect-operator.d.ts +8 -5
  156. package/dist/dts/internal/effect-operator.d.ts.map +1 -1
  157. package/dist/dts/internal/effect-producer.d.ts +25 -0
  158. package/dist/dts/internal/effect-producer.d.ts.map +1 -0
  159. package/dist/dts/internal/helpers.d.ts +33 -24
  160. package/dist/dts/internal/helpers.d.ts.map +1 -1
  161. package/dist/dts/internal/keyed.d.ts +3 -3
  162. package/dist/dts/internal/keyed.d.ts.map +1 -1
  163. package/dist/dts/internal/loop-operator.d.ts +40 -0
  164. package/dist/dts/internal/loop-operator.d.ts.map +1 -0
  165. package/dist/dts/internal/operator.d.ts +16 -0
  166. package/dist/dts/internal/operator.d.ts.map +1 -0
  167. package/dist/dts/internal/protos.d.ts +16 -43
  168. package/dist/dts/internal/protos.d.ts.map +1 -1
  169. package/dist/dts/internal/provide.d.ts +7 -1
  170. package/dist/dts/internal/provide.d.ts.map +1 -1
  171. package/dist/dts/internal/share.d.ts +12 -9
  172. package/dist/dts/internal/share.d.ts.map +1 -1
  173. package/dist/dts/internal/sync-operator.d.ts +7 -3
  174. package/dist/dts/internal/sync-operator.d.ts.map +1 -1
  175. package/dist/dts/internal/sync-producer.d.ts +36 -0
  176. package/dist/dts/internal/sync-producer.d.ts.map +1 -0
  177. package/dist/dts/internal/withKey.d.ts +3 -3
  178. package/dist/dts/internal/withKey.d.ts.map +1 -1
  179. package/dist/esm/AsyncData.js +151 -0
  180. package/dist/esm/AsyncData.js.map +1 -0
  181. package/dist/esm/Emitter.js +24 -21
  182. package/dist/esm/Emitter.js.map +1 -1
  183. package/dist/esm/Form.js +69 -14
  184. package/dist/esm/Form.js.map +1 -1
  185. package/dist/esm/FormEntry.js +77 -52
  186. package/dist/esm/FormEntry.js.map +1 -1
  187. package/dist/esm/Fx.js +509 -874
  188. package/dist/esm/Fx.js.map +1 -1
  189. package/dist/esm/Guard.js +5 -1
  190. package/dist/esm/Guard.js.map +1 -1
  191. package/dist/esm/Idle.js +49 -39
  192. package/dist/esm/Idle.js.map +1 -1
  193. package/dist/esm/Match.js +103 -63
  194. package/dist/esm/Match.js.map +1 -1
  195. package/dist/esm/Pull.js.map +1 -1
  196. package/dist/esm/Push.js +159 -0
  197. package/dist/esm/Push.js.map +1 -0
  198. package/dist/esm/RefArray.js +32 -30
  199. package/dist/esm/RefArray.js.map +1 -1
  200. package/dist/esm/RefChunk.js +26 -24
  201. package/dist/esm/RefChunk.js.map +1 -1
  202. package/dist/esm/RefHashMap.js +20 -20
  203. package/dist/esm/RefHashMap.js.map +1 -1
  204. package/dist/esm/RefHashSet.js +11 -8
  205. package/dist/esm/RefHashSet.js.map +1 -1
  206. package/dist/esm/RefSubject.js +873 -150
  207. package/dist/esm/RefSubject.js.map +1 -1
  208. package/dist/esm/Sink.js +608 -57
  209. package/dist/esm/Sink.js.map +1 -1
  210. package/dist/esm/Stream.js +13 -9
  211. package/dist/esm/Stream.js.map +1 -1
  212. package/dist/esm/Subject.js +151 -56
  213. package/dist/esm/Subject.js.map +1 -1
  214. package/dist/esm/TypeId.js +9 -4
  215. package/dist/esm/TypeId.js.map +1 -1
  216. package/dist/esm/Typeclass.js +29 -29
  217. package/dist/esm/Typeclass.js.map +1 -1
  218. package/dist/esm/Versioned.js +110 -53
  219. package/dist/esm/Versioned.js.map +1 -1
  220. package/dist/esm/index.js +66 -6
  221. package/dist/esm/index.js.map +1 -1
  222. package/dist/esm/internal/DeferredRef.js +54 -0
  223. package/dist/esm/internal/DeferredRef.js.map +1 -0
  224. package/dist/esm/internal/UnionToTuple.js +2 -0
  225. package/dist/esm/internal/UnionToTuple.js.map +1 -0
  226. package/dist/esm/internal/core.js +1439 -719
  227. package/dist/esm/internal/core.js.map +1 -1
  228. package/dist/esm/internal/diff.js +82 -0
  229. package/dist/esm/internal/diff.js.map +1 -0
  230. package/dist/esm/internal/effect-loop-operator.js +269 -0
  231. package/dist/esm/internal/effect-loop-operator.js.map +1 -0
  232. package/dist/esm/internal/effect-operator.js +44 -37
  233. package/dist/esm/internal/effect-operator.js.map +1 -1
  234. package/dist/esm/internal/effect-producer.js +47 -0
  235. package/dist/esm/internal/effect-producer.js.map +1 -0
  236. package/dist/esm/internal/helpers.js +157 -129
  237. package/dist/esm/internal/helpers.js.map +1 -1
  238. package/dist/esm/internal/keyed.js +128 -139
  239. package/dist/esm/internal/keyed.js.map +1 -1
  240. package/dist/esm/internal/loop-operator.js +186 -0
  241. package/dist/esm/internal/loop-operator.js.map +1 -0
  242. package/dist/esm/internal/operator.js +68 -0
  243. package/dist/esm/internal/operator.js.map +1 -0
  244. package/dist/esm/internal/protos.js +16 -75
  245. package/dist/esm/internal/protos.js.map +1 -1
  246. package/dist/esm/internal/provide.js +33 -25
  247. package/dist/esm/internal/provide.js.map +1 -1
  248. package/dist/esm/internal/requestIdleCallback.js +5 -5
  249. package/dist/esm/internal/requestIdleCallback.js.map +1 -1
  250. package/dist/esm/internal/share.js +12 -12
  251. package/dist/esm/internal/share.js.map +1 -1
  252. package/dist/esm/internal/sync-operator.js +49 -21
  253. package/dist/esm/internal/sync-operator.js.map +1 -1
  254. package/dist/esm/internal/sync-producer.js +88 -0
  255. package/dist/esm/internal/sync-producer.js.map +1 -0
  256. package/dist/esm/internal/withKey.js +46 -47
  257. package/dist/esm/internal/withKey.js.map +1 -1
  258. package/package.json +22 -62
  259. package/src/AsyncData.ts +447 -0
  260. package/src/Emitter.ts +47 -38
  261. package/src/Form.ts +185 -65
  262. package/src/FormEntry.ts +142 -109
  263. package/src/Fx.ts +1685 -1851
  264. package/src/Guard.ts +12 -1
  265. package/src/Idle.ts +76 -62
  266. package/src/Match.ts +149 -93
  267. package/src/Pull.ts +8 -8
  268. package/src/Push.ts +472 -0
  269. package/src/RefArray.ts +53 -51
  270. package/src/RefChunk.ts +44 -41
  271. package/src/RefHashMap.ts +57 -43
  272. package/src/RefHashSet.ts +21 -31
  273. package/src/RefSubject.ts +1984 -457
  274. package/src/Sink.ts +922 -171
  275. package/src/Stream.ts +32 -20
  276. package/src/Subject.ts +230 -87
  277. package/src/TypeId.ts +16 -4
  278. package/src/Typeclass.ts +31 -32
  279. package/src/Versioned.ts +220 -168
  280. package/src/index.ts +78 -6
  281. package/src/internal/DeferredRef.ts +62 -0
  282. package/src/internal/UnionToTuple.ts +11 -0
  283. package/src/internal/core.ts +2491 -1950
  284. package/src/internal/diff.ts +157 -0
  285. package/src/internal/effect-loop-operator.ts +466 -0
  286. package/src/internal/effect-operator.ts +89 -54
  287. package/src/internal/effect-producer.ts +125 -0
  288. package/src/internal/helpers.ts +275 -205
  289. package/src/internal/keyed.ts +192 -241
  290. package/src/internal/loop-operator.ts +266 -0
  291. package/src/internal/operator.ts +87 -0
  292. package/src/internal/protos.ts +29 -104
  293. package/src/internal/provide.ts +48 -40
  294. package/src/internal/requestIdleCallback.ts +5 -6
  295. package/src/internal/share.ts +26 -24
  296. package/src/internal/sync-operator.ts +68 -27
  297. package/src/internal/sync-producer.ts +146 -0
  298. package/src/internal/withKey.ts +64 -74
  299. package/dist/cjs/Computed.js +0 -115
  300. package/dist/cjs/Computed.js.map +0 -1
  301. package/dist/cjs/Filtered.js +0 -95
  302. package/dist/cjs/Filtered.js.map +0 -1
  303. package/dist/cjs/Model.js +0 -119
  304. package/dist/cjs/Model.js.map +0 -1
  305. package/dist/cjs/RefAsyncData.js +0 -187
  306. package/dist/cjs/RefAsyncData.js.map +0 -1
  307. package/dist/cjs/RefAsyncDataArray.js +0 -38
  308. package/dist/cjs/RefAsyncDataArray.js.map +0 -1
  309. package/dist/cjs/RefBoolean.js +0 -45
  310. package/dist/cjs/RefBoolean.js.map +0 -1
  311. package/dist/cjs/RefNumber.js +0 -49
  312. package/dist/cjs/RefNumber.js.map +0 -1
  313. package/dist/cjs/internal/core-ref-subject.js +0 -254
  314. package/dist/cjs/internal/core-ref-subject.js.map +0 -1
  315. package/dist/cjs/internal/core-subject.js +0 -108
  316. package/dist/cjs/internal/core-subject.js.map +0 -1
  317. package/dist/cjs/internal/deferred-ref.js.map +0 -1
  318. package/dist/cjs/internal/effect-primitive.js +0 -47
  319. package/dist/cjs/internal/effect-primitive.js.map +0 -1
  320. package/dist/cjs/internal/fx-effect-proto.js +0 -58
  321. package/dist/cjs/internal/fx-effect-proto.js.map +0 -1
  322. package/dist/cjs/internal/fx-primitive.js +0 -193
  323. package/dist/cjs/internal/fx-primitive.js.map +0 -1
  324. package/dist/cjs/internal/fx.js +0 -240
  325. package/dist/cjs/internal/fx.js.map +0 -1
  326. package/dist/cjs/internal/matchers.js +0 -34
  327. package/dist/cjs/internal/matchers.js.map +0 -1
  328. package/dist/cjs/internal/run.js +0 -54
  329. package/dist/cjs/internal/run.js.map +0 -1
  330. package/dist/cjs/internal/schema-ref-subject.js +0 -132
  331. package/dist/cjs/internal/schema-ref-subject.js.map +0 -1
  332. package/dist/cjs/internal/versioned-transform.js +0 -46
  333. package/dist/cjs/internal/versioned-transform.js.map +0 -1
  334. package/dist/dts/Computed.d.ts +0 -106
  335. package/dist/dts/Computed.d.ts.map +0 -1
  336. package/dist/dts/Filtered.d.ts +0 -97
  337. package/dist/dts/Filtered.d.ts.map +0 -1
  338. package/dist/dts/Model.d.ts +0 -200
  339. package/dist/dts/Model.d.ts.map +0 -1
  340. package/dist/dts/RefAsyncData.d.ts +0 -236
  341. package/dist/dts/RefAsyncData.d.ts.map +0 -1
  342. package/dist/dts/RefAsyncDataArray.d.ts +0 -56
  343. package/dist/dts/RefAsyncDataArray.d.ts.map +0 -1
  344. package/dist/dts/RefBoolean.d.ts +0 -47
  345. package/dist/dts/RefBoolean.d.ts.map +0 -1
  346. package/dist/dts/RefNumber.d.ts +0 -48
  347. package/dist/dts/RefNumber.d.ts.map +0 -1
  348. package/dist/dts/internal/core-ref-subject.d.ts +0 -100
  349. package/dist/dts/internal/core-ref-subject.d.ts.map +0 -1
  350. package/dist/dts/internal/core-subject.d.ts +0 -5
  351. package/dist/dts/internal/core-subject.d.ts.map +0 -1
  352. package/dist/dts/internal/deferred-ref.d.ts +0 -12
  353. package/dist/dts/internal/deferred-ref.d.ts.map +0 -1
  354. package/dist/dts/internal/effect-primitive.d.ts +0 -6
  355. package/dist/dts/internal/effect-primitive.d.ts.map +0 -1
  356. package/dist/dts/internal/fx-effect-proto.d.ts +0 -30
  357. package/dist/dts/internal/fx-effect-proto.d.ts.map +0 -1
  358. package/dist/dts/internal/fx-primitive.d.ts +0 -109
  359. package/dist/dts/internal/fx-primitive.d.ts.map +0 -1
  360. package/dist/dts/internal/fx.d.ts +0 -245
  361. package/dist/dts/internal/fx.d.ts.map +0 -1
  362. package/dist/dts/internal/matchers.d.ts +0 -33
  363. package/dist/dts/internal/matchers.d.ts.map +0 -1
  364. package/dist/dts/internal/run.d.ts +0 -8
  365. package/dist/dts/internal/run.d.ts.map +0 -1
  366. package/dist/dts/internal/schema-ref-subject.d.ts +0 -5
  367. package/dist/dts/internal/schema-ref-subject.d.ts.map +0 -1
  368. package/dist/dts/internal/versioned-transform.d.ts +0 -17
  369. package/dist/dts/internal/versioned-transform.d.ts.map +0 -1
  370. package/dist/esm/Computed.js +0 -103
  371. package/dist/esm/Computed.js.map +0 -1
  372. package/dist/esm/Filtered.js +0 -83
  373. package/dist/esm/Filtered.js.map +0 -1
  374. package/dist/esm/Model.js +0 -100
  375. package/dist/esm/Model.js.map +0 -1
  376. package/dist/esm/RefAsyncData.js +0 -163
  377. package/dist/esm/RefAsyncData.js.map +0 -1
  378. package/dist/esm/RefAsyncDataArray.js +0 -27
  379. package/dist/esm/RefAsyncDataArray.js.map +0 -1
  380. package/dist/esm/RefBoolean.js +0 -31
  381. package/dist/esm/RefBoolean.js.map +0 -1
  382. package/dist/esm/RefNumber.js +0 -35
  383. package/dist/esm/RefNumber.js.map +0 -1
  384. package/dist/esm/internal/core-ref-subject.js +0 -242
  385. package/dist/esm/internal/core-ref-subject.js.map +0 -1
  386. package/dist/esm/internal/core-subject.js +0 -90
  387. package/dist/esm/internal/core-subject.js.map +0 -1
  388. package/dist/esm/internal/deferred-ref.js +0 -23
  389. package/dist/esm/internal/deferred-ref.js.map +0 -1
  390. package/dist/esm/internal/effect-primitive.js +0 -41
  391. package/dist/esm/internal/effect-primitive.js.map +0 -1
  392. package/dist/esm/internal/fx-effect-proto.js +0 -43
  393. package/dist/esm/internal/fx-effect-proto.js.map +0 -1
  394. package/dist/esm/internal/fx-primitive.js +0 -175
  395. package/dist/esm/internal/fx-primitive.js.map +0 -1
  396. package/dist/esm/internal/fx.js +0 -216
  397. package/dist/esm/internal/fx.js.map +0 -1
  398. package/dist/esm/internal/matchers.js +0 -38
  399. package/dist/esm/internal/matchers.js.map +0 -1
  400. package/dist/esm/internal/run.js +0 -32
  401. package/dist/esm/internal/run.js.map +0 -1
  402. package/dist/esm/internal/schema-ref-subject.js +0 -121
  403. package/dist/esm/internal/schema-ref-subject.js.map +0 -1
  404. package/dist/esm/internal/versioned-transform.js +0 -37
  405. package/dist/esm/internal/versioned-transform.js.map +0 -1
  406. package/src/Computed.ts +0 -289
  407. package/src/Filtered.ts +0 -274
  408. package/src/Model.ts +0 -483
  409. package/src/RefAsyncData.ts +0 -547
  410. package/src/RefAsyncDataArray.ts +0 -135
  411. package/src/RefBoolean.ts +0 -71
  412. package/src/RefNumber.ts +0 -77
  413. package/src/internal/core-ref-subject.ts +0 -528
  414. package/src/internal/core-subject.ts +0 -143
  415. package/src/internal/deferred-ref.ts +0 -26
  416. package/src/internal/effect-primitive.ts +0 -230
  417. package/src/internal/fx-effect-proto.ts +0 -56
  418. package/src/internal/fx-primitive.ts +0 -223
  419. package/src/internal/fx.ts +0 -619
  420. package/src/internal/matchers.ts +0 -83
  421. package/src/internal/run.ts +0 -51
  422. package/src/internal/schema-ref-subject.ts +0 -163
  423. 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