@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
@@ -1,619 +0,0 @@
1
- import * as Chainable from "@effect/typeclass/Chainable"
2
- import * as Covariant from "@effect/typeclass/Covariant"
3
- import * as Invariant from "@effect/typeclass/Invariant"
4
- import type * as Context from "@typed/context"
5
- import { Fiber } from "effect"
6
- import type * as Cause from "effect/Cause"
7
- import * as Clock from "effect/Clock"
8
- import type { ConfigProvider } from "effect/ConfigProvider"
9
- import type { DurationInput } from "effect/Duration"
10
- import * as Effect from "effect/Effect"
11
- import * as Either from "effect/Either"
12
- import * as Exit from "effect/Exit"
13
- import type * as FiberId from "effect/FiberId"
14
- import type * as FiberRef from "effect/FiberRef"
15
- import { dual } from "effect/Function"
16
- import type * as HashSet from "effect/HashSet"
17
- import * as Layer from "effect/Layer"
18
- import * as Option from "effect/Option"
19
- import type * as PubSub from "effect/PubSub"
20
- import * as Queue from "effect/Queue"
21
- import type * as Request from "effect/Request"
22
- import type { Scheduler } from "effect/Scheduler"
23
- import type * as Scope from "effect/Scope"
24
- import * as Tracer from "effect/Tracer"
25
- import type { Fx, FxInput } from "../Fx.js"
26
- import * as Sink from "../Sink.js"
27
- import * as Typeclass from "../Typeclass.js"
28
- import * as core from "./core.js"
29
- import { run } from "./run.js"
30
- import { multicast } from "./share.js"
31
-
32
- /**
33
- * Create an Fx which will emit a value after waiting for a specified duration.
34
- * @since 1.18.0
35
- */
36
- export const at: {
37
- (delay: DurationInput): <A>(value: A) => Fx<never, never, A>
38
- <A>(value: A, delay: DurationInput): Fx<never, never, A>
39
- } = dual(2, function<A>(value: A, delay: DurationInput): Fx<never, never, A> {
40
- return core.fromEffect(Effect.delay(Effect.succeed(value), delay))
41
- })
42
-
43
- /**
44
- * Create an Fx which will wait a specified duration of time where no
45
- * events have occurred before emitting a value.
46
- * @since 1.18.0
47
- */
48
- export const debounce: {
49
- (delay: DurationInput): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
50
- <R, E, A>(fx: Fx<R, E, A>, delay: DurationInput): Fx<R, E, A>
51
- } = dual(2, function<R, E, A>(fx: Fx<R, E, A>, delay: DurationInput): Fx<R, E, A> {
52
- return core.switchMap(fx, (a) => core.fromEffect(Effect.delay(Effect.succeed(a), delay)))
53
- })
54
-
55
- /**
56
- * Create an Fx which will wait a specified duration of time before emitting
57
- * an event after the last event.
58
- * @since 1.18.0
59
- */
60
- export const throttle: {
61
- (delay: DurationInput): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
62
- <R, E, A>(fx: Fx<R, E, A>, delay: DurationInput): Fx<R, E, A>
63
- } = dual(2, function<R, E, A>(fx: Fx<R, E, A>, delay: DurationInput): Fx<R, E, A> {
64
- return core.exhaustMap(fx, (a) => core.fromEffect(Effect.delay(Effect.succeed(a), delay)))
65
- })
66
-
67
- /**
68
- * Create an Fx which will wait a specified duration of time where no
69
- * events have occurred before emitting a value.
70
- * @since 1.18.0
71
- */
72
- export const delay: {
73
- (delay: DurationInput): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
74
- <R, E, A>(fx: Fx<R, E, A>, delay: DurationInput): Fx<R, E, A>
75
- } = dual(2, function<R, E, A>(fx: Fx<R, E, A>, delay: DurationInput): Fx<R, E, A> {
76
- return core.flatMap(fx, (a) => core.fromEffect(Effect.delay(Effect.succeed(a), delay)))
77
- })
78
-
79
- /**
80
- * Run an Effect to produce an Fx to run.
81
- * @since 1.18.0
82
- */
83
- export const fromFxEffect = <R, E, R2, E2, B>(fxEffect: Effect.Effect<R, E, Fx<R2, E2, B>>): Fx<R | R2, E | E2, B> =>
84
- core.fromSink((sink) => Effect.flatMap(fxEffect, (fx) => run(fx, sink)))
85
-
86
- /**
87
- * Run an Effect when an Fx exits
88
- * @since 1.18.0
89
- */
90
- export const onExit: {
91
- <R2>(
92
- f: (exit: Exit.Exit<never, unknown>) => Effect.Effect<R2, never, unknown>
93
- ): <R, E, A>(fx: Fx<R, E, A>) => Fx<R | R2, E, A>
94
- <R, E, A, R2>(
95
- fx: Fx<R, E, A>,
96
- f: (exit: Exit.Exit<never, unknown>) => Effect.Effect<R2, never, unknown>
97
- ): Fx<R | R2, E, A>
98
- } = dual(2, function onExit<R, E, A, R2>(
99
- fx: Fx<R, E, A>,
100
- f: (exit: Exit.Exit<never, unknown>) => Effect.Effect<R2, never, unknown>
101
- ): Fx<R | R2, E, A> {
102
- return core.middleware(fx, Effect.onExit(f))
103
- })
104
-
105
- /**
106
- * Run an Effect when an Fx is interrupted
107
- * @since 1.18.0
108
- */
109
- export const onInterrupt: {
110
- <R2>(
111
- f: (interruptors: HashSet.HashSet<FiberId.FiberId>) => Effect.Effect<R2, never, unknown>
112
- ): <R, E, A>(fx: Fx<R, E, A>) => Fx<R | R2, E, A>
113
- <R, E, A, R2>(
114
- fx: Fx<R, E, A>,
115
- f: (interruptors: HashSet.HashSet<FiberId.FiberId>) => Effect.Effect<R2, never, unknown>
116
- ): Fx<R | R2, E, A>
117
- } = dual(2, function onInterrupt<R, E, A, R2>(
118
- fx: Fx<R, E, A>,
119
- f: (interruptors: HashSet.HashSet<FiberId.FiberId>) => Effect.Effect<R2, never, unknown>
120
- ): Fx<R | R2, E, A> {
121
- return core.middleware(fx, Effect.onInterrupt(f))
122
- })
123
-
124
- /**
125
- * Run an Effect when an Fx ends with an error
126
- * @since 1.18.0
127
- */
128
- export const onError: {
129
- <R2>(
130
- f: (cause: Cause.Cause<never>) => Effect.Effect<R2, never, unknown>
131
- ): <R, E, A>(fx: Fx<R, E, A>) => Fx<R | R2, E, A>
132
- <R, E, A, R2>(
133
- fx: Fx<R, E, A>,
134
- f: (cause: Cause.Cause<never>) => Effect.Effect<R2, never, unknown>
135
- ): Fx<R | R2, E, A>
136
- } = dual(2, function onError<R, E, A, R2>(
137
- fx: Fx<R, E, A>,
138
- f: (cause: Cause.Cause<never>) => Effect.Effect<R2, never, unknown>
139
- ): Fx<R | R2, E, A> {
140
- return core.middleware(fx, Effect.onError(f))
141
- })
142
-
143
- export const scoped = <R, E, A>(fx: Fx<R, E, A>): Fx<Exclude<R, Scope.Scope>, E, A> =>
144
- core.middleware(fx, Effect.scoped)
145
-
146
- export const annotateLogs: {
147
- (key: string, value: unknown): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
148
- (values: Record<string, unknown>): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
149
- <R, E, A>(fx: Fx<R, E, A>, key: string, value: unknown): Fx<R, E, A>
150
- <R, E, A>(fx: Fx<R, E, A>, values: Record<string, unknown>): Fx<R, E, A>
151
- } = dual(3, function annotateLogs<R, E, A>(
152
- fx: Fx<R, E, A>,
153
- key: string | Record<string, unknown>,
154
- value?: unknown
155
- ): Fx<R, E, A> {
156
- return core.middleware(fx, (effect) => Effect.annotateLogs(effect, key as string, value as unknown))
157
- })
158
-
159
- export const annotateSpans: {
160
- (key: string, value: unknown): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
161
- (values: Record<string, unknown>): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
162
- <R, E, A>(fx: Fx<R, E, A>, key: string, value: unknown): Fx<R, E, A>
163
- <R, E, A>(fx: Fx<R, E, A>, values: Record<string, unknown>): Fx<R, E, A>
164
- } = dual(3, function annotateSpans<R, E, A>(
165
- fx: Fx<R, E, A>,
166
- key: string | Record<string, unknown>,
167
- value?: unknown
168
- ): Fx<R, E, A> {
169
- return core.middleware(fx, (effect) => Effect.annotateSpans(effect, key as string, value as unknown))
170
- })
171
-
172
- export const succeedNone = <A = never>(): Fx<never, never, Option.Option<A>> => core.succeed(Option.none<A>())
173
-
174
- export const succeedSome = <A>(value: A): Fx<never, never, Option.Option<A>> => core.succeed(Option.some<A>(value))
175
-
176
- export const asSome: <R, E, A>(self: Fx<R, E, A>) => Fx<R, E, Option.Option<A>> = (self) => core.map(self, Option.some)
177
-
178
- export const asSomeError: <R, E, A>(self: Fx<R, E, A>) => Fx<R, Option.Option<E>, A> = (self) =>
179
- core.mapError(self, Option.some)
180
-
181
- export const Do: Fx<never, never, {}> = core.succeed<{}>({})
182
-
183
- export const bind: {
184
- <N extends string, A extends object, R2, E2, B>(
185
- name: Exclude<N, keyof A>,
186
- f: (a: A) => Fx<R2, E2, B>
187
- ): <R1, E1>(self: Fx<R1, E1, A>) => Fx<R1 | R2, E1 | E2, { [K in N | keyof A]: K extends keyof A ? A[K] : B }>
188
- <R1, E1, A1 extends object, N extends string, R2, E2, B>(
189
- self: Fx<R1, E1, A1>,
190
- name: Exclude<N, keyof A1>,
191
- f: (a: A1) => Fx<R2, E2, B>
192
- ): Fx<R1 | R2, E1 | E2, { [K in N | keyof A1]: K extends keyof A1 ? A1[K] : B }>
193
- } = Chainable.bind(Typeclass.Monad)
194
-
195
- export const bindTo: {
196
- <N extends string>(name: N): <R, E, A>(self: Fx<R, E, A>) => Fx<R, E, { [K in N]: A }>
197
- <R, E, A, N extends string>(self: Fx<R, E, A>, name: N): Fx<R, E, { [K_1 in N]: A }>
198
- } = Invariant.bindTo(Typeclass.Invariant)
199
-
200
- const let_: {
201
- <N extends string, A extends object, B>(
202
- name: Exclude<N, keyof A>,
203
- f: (a: A) => B
204
- ): <R1, E1>(self: Fx<R1, E1, A>) => Fx<R1, E1, { [K in N | keyof A]: K extends keyof A ? A[K] : B }>
205
- <R1, E1, A1 extends object, N extends string, B>(
206
- self: Fx<R1, E1, A1>,
207
- name: Exclude<N, keyof A1>,
208
- f: (a: A1) => B
209
- ): Fx<R1, E1, { [K in N | keyof A1]: K extends keyof A1 ? A1[K] : B }>
210
- } = Covariant.let(Typeclass.Monad)
211
-
212
- export { let_ as let }
213
-
214
- export const ensuring: {
215
- <R2>(finalizer: Effect.Effect<R2, never, unknown>): <R, E, A>(self: Fx<R, E, A>) => Fx<R | R2, E, A>
216
- <R, E, A, R2>(self: Fx<R, E, A>, finalizer: Effect.Effect<R2, never, unknown>): Fx<R | R2, E, A>
217
- } = dual(2, function<R, E, A, R2>(
218
- self: Fx<R, E, A>,
219
- finalizer: Effect.Effect<R2, never, unknown>
220
- ): Fx<R | R2, E, A> {
221
- return core.middleware(self, (effect) => Effect.ensuring(effect, finalizer))
222
- })
223
-
224
- export const exit = <R, E, A>(fx: Fx<R, E, A>): Fx<R, never, Exit.Exit<E, A>> =>
225
- core.matchCause(fx, {
226
- onFailure: (cause) => core.succeed(Exit.failCause(cause)),
227
- onSuccess: (a) => core.succeed(Exit.succeed(a))
228
- })
229
-
230
- export const either = <R, E, A>(fx: Fx<R, E, A>): Fx<R, never, Either.Either<E, A>> =>
231
- core.match(fx, {
232
- onFailure: (error) => core.succeed(Either.left(error)),
233
- onSuccess: (a) => core.succeed(Either.right(a))
234
- })
235
-
236
- export const findFirst: {
237
- <A, R2, E2>(
238
- f: (a: A) => Effect.Effect<R2, E2, boolean>
239
- ): <R, E>(fx: Fx<R, E, A>) => Effect.Effect<R | R2, E | E2, Option.Option<A>>
240
- <R, E, A, R2, E2>(
241
- fx: Fx<R, E, A>,
242
- f: (a: A) => Effect.Effect<R2, E2, boolean>
243
- ): Effect.Effect<R | R2, E | E2, Option.Option<A>>
244
- } = dual(2, function findFirst<R, E, A, R2, E2>(
245
- fx: Fx<R, E, A>,
246
- f: (a: A) => Effect.Effect<R2, E2, boolean>
247
- ): Effect.Effect<R | R2, E | E2, Option.Option<A>> {
248
- return Effect.asyncEffect((resume) =>
249
- Effect.zipRight(
250
- run(
251
- fx,
252
- Sink.WithContext(
253
- (cause) => Effect.sync(() => resume(Effect.failCause(cause))),
254
- (a) =>
255
- Effect.matchCause(f(a), {
256
- onFailure: (cause) => resume(Effect.failCause(cause)),
257
- onSuccess: (b) => b ? resume(Effect.succeedSome(a)) : Effect.unit
258
- })
259
- )
260
- ),
261
- Effect.sync(() => resume(Effect.succeedNone))
262
- )
263
- )
264
- })
265
-
266
- export const flip = <R, E, A>(fx: Fx<R, E, A>): Fx<R, A, E> =>
267
- core.match(fx, {
268
- onFailure: (error: E) => core.succeed(error),
269
- onSuccess: (a) => core.fail(a)
270
- })
271
-
272
- export const fromNullable = <A>(value: A | null | undefined | void): Fx<never, never, NonNullable<A>> => {
273
- if (value === null || value === undefined) {
274
- return core.empty
275
- } else {
276
- return core.succeed(value)
277
- }
278
- }
279
-
280
- const if_: {
281
- <R2, E2, B, R3, E3, C>(
282
- onTrue: FxInput<R2, E2, B>,
283
- onFalse: FxInput<R3, E3, C>
284
- ): {
285
- <R, E>(bool: Fx<R, E, boolean>): Fx<R | R2 | R3, E | E2 | E3, B | C>
286
- (bool: boolean): Fx<R2 | R3, E2 | E3, B | C>
287
- }
288
-
289
- <R, E, R2, E2, B, R3, E3, C>(
290
- bool: Fx<R, E, boolean>,
291
- onTrue: FxInput<R2, E2, B>,
292
- onFalse: FxInput<R3, E3, C>
293
- ): Fx<R | R2 | R3, E | E2 | E3, B | C>
294
-
295
- <R2, E2, B, R3, E3, C>(
296
- bool: boolean,
297
- onTrue: FxInput<R2, E2, B>,
298
- onFalse: FxInput<R3, E3, C>
299
- ): Fx<R2 | R3, E2 | E3, B | C>
300
- } = dual(3, function if_<R, E, R2, E2, B, R3, E3, C>(
301
- bool: boolean | Fx<R, E, boolean>,
302
- onTrue: FxInput<R2, E2, B>,
303
- onFalse: FxInput<R3, E3, C>
304
- ): Fx<R | R2 | R3, E | E2 | E3, B | C> {
305
- if (typeof bool === "boolean") {
306
- return bool ? core.from(onTrue) : core.from(onFalse)
307
- } else {
308
- return core.switchMap(
309
- bool,
310
- (bool): FxInput<R2 | R3, E2 | E3, B | C> => (bool ? onTrue : onFalse)
311
- )
312
- }
313
- })
314
-
315
- export { if_ as if }
316
-
317
- export const when: {
318
- <B, C>(
319
- onTrue: B,
320
- onFalse: C
321
- ): {
322
- <R, E>(bool: Fx<R, E, boolean>): Fx<R, E, B | C>
323
- (bool: boolean): Fx<never, never, B | C>
324
- }
325
-
326
- <R, E, B, C>(
327
- bool: Fx<R, E, boolean>,
328
- onTrue: B,
329
- onFalse: C
330
- ): Fx<R, E, B | C>
331
-
332
- <B, C>(
333
- bool: boolean,
334
- onTrue: B,
335
- onFalse: C
336
- ): Fx<never, never, B | C>
337
- } = dual(3, function when_<R, E, B, C>(
338
- bool: boolean | Fx<R, E, boolean>,
339
- onTrue: B,
340
- onFalse: C
341
- ): Fx<R, E, B | C> {
342
- if (typeof bool === "boolean") {
343
- return bool ? core.from(onTrue) : core.from(onFalse)
344
- } else {
345
- return core.map(
346
- bool,
347
- (bool): B | C => (bool ? onTrue : onFalse)
348
- )
349
- }
350
- })
351
-
352
- export const interruptible = <R, E, A>(fx: Fx<R, E, A>): Fx<R, E, A> => core.middleware(fx, Effect.interruptible)
353
-
354
- export const uninterruptible = <R, E, A>(fx: Fx<R, E, A>): Fx<R, E, A> => core.middleware(fx, Effect.uninterruptible)
355
-
356
- export const locally: {
357
- <A>(self: FiberRef.FiberRef<A>, value: A): <R, E, B>(use: Fx<R, E, B>) => Fx<R, E, B>
358
- <R, E, B, A>(use: Fx<R, E, B>, self: FiberRef.FiberRef<A>, value: A): Fx<R, E, B>
359
- } = dual(3, function locally<R, E, B, A>(
360
- use: Fx<R, E, B>,
361
- self: FiberRef.FiberRef<A>,
362
- value: A
363
- ): Fx<R, E, B> {
364
- return core.middleware(use, (effect) => Effect.locally(effect, self, value))
365
- })
366
-
367
- export const locallyWith: {
368
- <A>(self: FiberRef.FiberRef<A>, f: (a: A) => A): <R, E, B>(use: Fx<R, E, B>) => Fx<R, E, B>
369
- <R, E, B, A>(use: Fx<R, E, B>, self: FiberRef.FiberRef<A>, f: (a: A) => A): Fx<R, E, B>
370
- } = dual(3, function locally<R, E, B, A>(
371
- use: Fx<R, E, B>,
372
- self: FiberRef.FiberRef<A>,
373
- f: (a: A) => A
374
- ): Fx<R, E, B> {
375
- return core.middleware(use, (effect) => Effect.locallyWith(effect, self, f))
376
- })
377
-
378
- export const withTracerTiming: {
379
- (enabled: boolean): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
380
- <R, E, A>(fx: Fx<R, E, A>, enabled: boolean): Fx<R, E, A>
381
- } = dual(2, function withTracerTiming<R, E, A>(
382
- fx: Fx<R, E, A>,
383
- enabled: boolean
384
- ): Fx<R, E, A> {
385
- return core.middleware(fx, (effect) => Effect.withTracerTiming(effect, enabled))
386
- })
387
-
388
- export const withConcurrency: {
389
- (concurrency: number | "unbounded"): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
390
- <R, E, A>(fx: Fx<R, E, A>, concurrency: number | "unbounded"): Fx<R, E, A>
391
- } = dual(2, function withConcurrency<R, E, A>(
392
- fx: Fx<R, E, A>,
393
- concurrency: number | "unbounded"
394
- ): Fx<R, E, A> {
395
- return core.middleware(fx, (effect) => Effect.withConcurrency(effect, concurrency))
396
- })
397
-
398
- export const withConfigProvider: {
399
- (configProvider: ConfigProvider): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
400
- <R, E, A>(fx: Fx<R, E, A>, configProvider: ConfigProvider): Fx<R, E, A>
401
- } = dual(2, function withConfigProvider<R, E, A>(
402
- fx: Fx<R, E, A>,
403
- configProvider: ConfigProvider
404
- ): Fx<R, E, A> {
405
- return core.middleware(fx, (effect) => Effect.withConfigProvider(effect, configProvider))
406
- })
407
-
408
- export const withLogSpan: {
409
- (span: string): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
410
- <R, E, A>(fx: Fx<R, E, A>, span: string): Fx<R, E, A>
411
- } = dual(2, function withLogSpan<R, E, A>(
412
- fx: Fx<R, E, A>,
413
- span: string
414
- ): Fx<R, E, A> {
415
- return core.middleware(fx, (effect) => Effect.withLogSpan(effect, span))
416
- })
417
-
418
- export const withMaxOpsBeforeYield: {
419
- (maxOps: number): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
420
- <R, E, A>(fx: Fx<R, E, A>, maxOps: number): Fx<R, E, A>
421
- } = dual(2, function withMaxOpsBeforeYield<R, E, A>(
422
- fx: Fx<R, E, A>,
423
- maxOps: number
424
- ): Fx<R, E, A> {
425
- return core.middleware(fx, (effect) => Effect.withMaxOpsBeforeYield(effect, maxOps))
426
- })
427
-
428
- export const withParentSpan: {
429
- (parentSpan: Tracer.ParentSpan): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
430
- <R, E, A>(fx: Fx<R, E, A>, parentSpan: Tracer.ParentSpan): Fx<R, E, A>
431
- } = dual(2, function withParentSpan<R, E, A>(
432
- fx: Fx<R, E, A>,
433
- parentSpan: Tracer.ParentSpan
434
- ): Fx<R, E, A> {
435
- return core.middleware(fx, (effect) => Effect.withParentSpan(effect, parentSpan))
436
- })
437
-
438
- export const withRequestBatching: {
439
- (requestBatching: boolean): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
440
- <R, E, A>(fx: Fx<R, E, A>, requestBatching: boolean): Fx<R, E, A>
441
- } = dual(2, function withRequestBatching<R, E, A>(
442
- fx: Fx<R, E, A>,
443
- requestBatching: boolean
444
- ): Fx<R, E, A> {
445
- return core.middleware(fx, (effect) => Effect.withRequestBatching(effect, requestBatching))
446
- })
447
-
448
- export const withRequestCache: {
449
- (cache: Request.Cache): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
450
- <R, E, A>(fx: Fx<R, E, A>, cache: Request.Cache): Fx<R, E, A>
451
- } = dual(2, function withRequestCache<R, E, A>(
452
- fx: Fx<R, E, A>,
453
- cache: Request.Cache
454
- ): Fx<R, E, A> {
455
- return core.middleware(fx, (effect) => Effect.withRequestCache(effect, cache))
456
- })
457
-
458
- export const withRequestCaching: {
459
- (requestCaching: boolean): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
460
- <R, E, A>(fx: Fx<R, E, A>, requestCaching: boolean): Fx<R, E, A>
461
- } = dual(2, function withRequestCaching<R, E, A>(
462
- fx: Fx<R, E, A>,
463
- requestCaching: boolean
464
- ): Fx<R, E, A> {
465
- return core.middleware(fx, (effect) => Effect.withRequestCaching(effect, requestCaching))
466
- })
467
-
468
- export const withScheduler: {
469
- (scheduler: Scheduler): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
470
- <R, E, A>(fx: Fx<R, E, A>, scheduler: Scheduler): Fx<R, E, A>
471
- } = dual(2, function withScheduler<R, E, A>(
472
- fx: Fx<R, E, A>,
473
- scheduler: Scheduler
474
- ): Fx<R, E, A> {
475
- return core.middleware(fx, (effect) => Effect.withScheduler(effect, scheduler))
476
- })
477
-
478
- export const withSpan: {
479
- (
480
- name: string,
481
- options?: {
482
- readonly attributes?: Record<string, unknown>
483
- readonly links?: ReadonlyArray<Tracer.SpanLink>
484
- readonly parent?: Tracer.ParentSpan
485
- readonly root?: boolean
486
- readonly context?: Context.Context<never>
487
- }
488
- ): <R, E, A>(self: Fx<R, E, A>) => Fx<R, E, A>
489
- <R, E, A>(
490
- self: Fx<R, E, A>,
491
- name: string,
492
- options?: {
493
- readonly attributes?: Record<string, unknown>
494
- readonly links?: ReadonlyArray<Tracer.SpanLink>
495
- readonly parent?: Tracer.ParentSpan
496
- readonly root?: boolean
497
- readonly context?: Context.Context<never>
498
- }
499
- ): Fx<R, E, A>
500
- } = dual(3, function withSpan<R, E, A>(
501
- self: Fx<R, E, A>,
502
- name: string,
503
- options: {
504
- readonly attributes?: Record<string, unknown>
505
- readonly links?: ReadonlyArray<Tracer.SpanLink>
506
- readonly parent?: Tracer.ParentSpan
507
- readonly root?: boolean
508
- readonly context?: Context.Context<never>
509
- } = {}
510
- ): Fx<R, E, A> {
511
- return core.acquireUseRelease(
512
- Effect.flatMap(
513
- Effect.currentSpan,
514
- (parent) => Effect.makeSpan(name, { ...options, parent: options?.parent || Option.getOrUndefined(parent) } as any)
515
- ),
516
- (span) =>
517
- core.middleware(
518
- self,
519
- (effect) => Effect.provideService(effect, Tracer.ParentSpan, span),
520
- Sink.setSpan(span)
521
- ),
522
- (span, exit) => Effect.flatMap(Clock.currentTimeNanos, (time) => Effect.sync(() => span.end(time, exit)))
523
- )
524
- })
525
-
526
- export const withTracer: {
527
- (tracer: Tracer.Tracer): <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>
528
- <R, E, A>(fx: Fx<R, E, A>, tracer: Tracer.Tracer): Fx<R, E, A>
529
- } = dual(2, function withTracer<R, E, A>(
530
- fx: Fx<R, E, A>,
531
- tracer: Tracer.Tracer
532
- ): Fx<R, E, A> {
533
- return core.middleware(fx, (effect) => Effect.withTracer(effect, tracer))
534
- })
535
-
536
- export const partitionMap: {
537
- <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>]
538
- <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>]
539
- } = dual(2, <R, E, A, B, C>(self: Fx<R, E, A>, f: (a: A) => Either.Either<B, C>) => {
540
- // Multicast such that listening to both streams only runs the Fx once.
541
- const m = multicast(core.map(self, f))
542
-
543
- return [
544
- core.filterMap(m, Either.getLeft),
545
- core.filterMap(m, Either.getRight)
546
- ] as const
547
- })
548
-
549
- export function fromDequeue<A>(dequeue: Queue.Dequeue<A>): Fx<never, never, A>
550
- export function fromDequeue<I, A>(dequeue: Context.Dequeue<I, A>): Fx<I, never, A>
551
- export function fromDequeue<I, A>(dequeue: Context.Dequeue<I, A> | Queue.Dequeue<A>): Fx<I, never, A> {
552
- return core.fromSink((sink) =>
553
- Effect.repeatWhileEffect(
554
- Effect.matchCauseEffect(dequeue.take, sink),
555
- () => dequeueIsActive(dequeue)
556
- )
557
- )
558
- }
559
-
560
- /**
561
- * @internal
562
- */
563
- export function dequeueIsActive<I, A>(
564
- dequeue: Context.Dequeue<I, A> | Queue.Dequeue<A>
565
- ): Effect.Effect<I, never, boolean> {
566
- if (Queue.DequeueTypeId in dequeue) {
567
- return Effect.sync(() => dequeue.isActive())
568
- } else {
569
- return dequeue.isActive
570
- }
571
- }
572
-
573
- export const toEnqueue: {
574
- <A, B>(enqueue: Queue.Enqueue<A | B>): <R, E>(fx: Fx<R, E, A>) => Effect.Effect<R, E, void>
575
- <I, A, B>(enqueue: Context.Enqueue<I, A | B>): <R, E>(fx: Fx<R, E, A>) => Effect.Effect<R | I, E, void>
576
- <R, E, A, B>(fx: Fx<R, E, A>, enqueue: Queue.Enqueue<A | B>): Effect.Effect<R, E, void>
577
- <R, E, I, A, B>(fx: Fx<R, E, A>, enqueue: Context.Enqueue<I, A | B>): Effect.Effect<R, E, void>
578
- } = dual(
579
- 2,
580
- function toEnqueue<R, E, I, A, B>(
581
- fx: Fx<R, E, A>,
582
- enqueue: Context.Enqueue<I, A | B> | Queue.Enqueue<A | B>
583
- ): Effect.Effect<R | I, E, void> {
584
- return core.observe(fx, (a) => enqueue.offer(a))
585
- }
586
- )
587
-
588
- export function fromPubSub<A>(PubSub: PubSub.PubSub<A>): Fx<Scope.Scope, never, A>
589
- export function fromPubSub<I, A>(PubSub: Context.PubSub<I, A>): Fx<I | Scope.Scope, never, A>
590
- export function fromPubSub<I, A>(PubSub: Context.PubSub<I, A> | PubSub.PubSub<A>): Fx<I | Scope.Scope, never, A> {
591
- return core.acquireUseRelease(
592
- PubSub.subscribe,
593
- (q) => fromDequeue(q),
594
- (d) => d.shutdown
595
- )
596
- }
597
-
598
- export function drainLayer<FXS extends ReadonlyArray<Fx<any, never, any>>>(...fxs: FXS): Layer.Layer<
599
- Exclude<Fx.Context<FXS[number]>, Scope.Scope>,
600
- never,
601
- never
602
- > {
603
- return Layer.scopedDiscard(Effect.forkScoped(core.drain(core.merge(fxs))))
604
- }
605
-
606
- export const mergeRace: {
607
- <R2, E2, B>(other: Fx<R2, E2, B>): <R, E, A>(fx: Fx<R, E, A>) => Fx<R | R2, E | E2, A | B>
608
- <R, E, A, R2, E2, B>(fx: Fx<R, E, A>, other: Fx<R2, E2, B>): Fx<R | R2, E | E2, A | B>
609
- } = dual(
610
- 2,
611
- function mergeRace<R, E, A, R2, E2, B>(fx: Fx<R, E, A>, other: Fx<R2, E2, B>): Fx<R | R2, E | E2, A | B> {
612
- return core.withScopedFork(({ fork, sink }) =>
613
- Effect.flatMap(
614
- fork(run(other, sink)),
615
- (otherFiber) => run(core.tap(fx, () => Fiber.interrupt(otherFiber)), sink)
616
- )
617
- )
618
- }
619
- )
@@ -1,83 +0,0 @@
1
- import * as Cause from "effect/Cause"
2
- import * as Effect from "effect/Effect"
3
- import * as TypeId from "../TypeId.js"
4
-
5
- import type * as Sink from "../Sink.js"
6
-
7
- import type { Fx, FxInput } from "../Fx.js"
8
- import type { RefSubject } from "../RefSubject.js"
9
- import type * as Primitive from "./fx-primitive.js"
10
-
11
- export function matchFxPrimitive<B>(
12
- matchers: {
13
- readonly Empty: <R2>(fx: Primitive.Empty, sink: Sink.WithContext<R2, never, never>) => B
14
- readonly Fail: <E, R2>(fx: Primitive.Fail<E>, sink: Sink.WithContext<R2, E, never>) => B
15
- readonly FromIterable: <A, R2>(fx: Primitive.FromIterable<A>, sink: Sink.WithContext<R2, never, A>) => B
16
- readonly FromSink: <R, E, A, R2>(fx: Primitive.FromSink<R, E, A>, sink: Sink.WithContext<R2, E, A>) => B
17
- readonly Never: <R2>(fx: Primitive.Never, sink: Sink.WithContext<R2, never, never>) => B
18
- readonly Succeed: <A, R2>(fx: Primitive.Succeed<A>, sink: Sink.WithContext<R2, never, A>) => B
19
- readonly Suspend: <R, E, A, R2>(fx: Primitive.Suspend<R, E, A>, sink: Sink.WithContext<R2, E, A>) => B
20
- readonly Sync: <A, R2>(fx: Primitive.Sync<A>, sink: Sink.WithContext<R2, never, A>) => B
21
- readonly ToFx: <R, E, A, R2>(fx: Primitive.ToFx<R, E, A>, sink: Sink.WithContext<R2, E, A>) => B
22
- readonly WithEarlyExit: <R, E, A, R2>(fx: Primitive.WithEarlyExit<R, E, A>, sink: Sink.WithContext<R2, E, A>) => B
23
- readonly WithScopedFork: <R, E, A, R2>(
24
- fx: Primitive.WithScopedFork<R, E, A>,
25
- sink: Sink.WithContext<R2, E, A>
26
- ) => B
27
- readonly WithFlattenStrategy: <R, E, A, R2>(
28
- fx: Primitive.WithFlattenStrategy<R, E, A>,
29
- sink: Sink.WithContext<R2, E, A>
30
- ) => B
31
- readonly Transformer: <R, E, A, R2>(fx: Primitive.Transformer<R, E, A>, sink: Sink.WithContext<R2, E, A>) => B
32
- readonly TransformerEffect: <R, E, A, R2>(
33
- fx: Primitive.TransformerEffect<R, E, A>,
34
- sink: Sink.WithContext<R2, E, A>
35
- ) => B
36
- readonly TransformerCause: <R, E, A, R2>(
37
- fx: Primitive.TransformerCause<R, E, A>,
38
- sink: Sink.WithContext<R2, E, A>
39
- ) => B
40
- readonly TransformerCauseEffect: <R, E, A, R2>(
41
- fx: Primitive.TransformerCauseEffect<R, E, A>,
42
- sink: Sink.WithContext<R2, E, A>
43
- ) => B
44
- }
45
- ) {
46
- return <R, E, A, R2>(fx: Fx<R, E, A>, sink: Sink.WithContext<R2, E, A>): B => {
47
- return (matchers as any)[(fx as Primitive.Primitive)._fxTag](fx as any, sink)
48
- }
49
- }
50
-
51
- export function matchFxInput<R, E, A, B>(fx: FxInput<R, E, A>, matchers: {
52
- RefSubject: (fx: RefSubject<R, E, A>) => B
53
- Fx: (fx: Fx<R, E, A>) => B
54
- Effect: (effect: Effect.Effect<R, E, A>) => B
55
- Cause: (cause: Cause.Cause<E>) => B
56
- Iterable: (iterable: Iterable<A>) => B
57
- Otherwise: (value: A) => B
58
- }): B {
59
- const type = typeof fx
60
- if (!fx || !(type === "object" || type === "function")) return matchers.Otherwise(fx as A)
61
- else if (isRefSubject(fx)) return matchers.RefSubject(fx)
62
- else if (isFx(fx)) return matchers.Fx(fx)
63
- else if (isEffect(fx)) return matchers.Effect(fx)
64
- else if (isCause(fx)) return matchers.Cause(fx)
65
- else if (Symbol.iterator in fx) return matchers.Iterable(fx)
66
- else return matchers.Otherwise(fx as A)
67
- }
68
-
69
- function isFx<R, E, A>(input: FxInput<R, E, A>): input is Fx<R, E, A> {
70
- return TypeId.TypeId in input
71
- }
72
-
73
- function isRefSubject<R, E, A>(input: FxInput<R, E, A>): input is RefSubject<R, E, A> {
74
- return TypeId.RefSubjectTypeId in input
75
- }
76
-
77
- function isEffect<R, E, A>(input: FxInput<R, E, A>): input is Effect.Effect<R, E, A> {
78
- return Effect.EffectTypeId in input
79
- }
80
-
81
- function isCause<R, E, A>(input: FxInput<R, E, A>): input is Cause.Cause<E> {
82
- return Cause.CauseTypeId in input
83
- }