@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/src/Model.ts DELETED
@@ -1,483 +0,0 @@
1
- /**
2
- * @typed/context/Model provides a way to group Refs together into a single Ref
3
- * that is utilized as a single unit from the Effect Context.
4
- * @since 1.18.0
5
- */
6
-
7
- import { type Context, ContextBuilder } from "@typed/context"
8
- import * as Effect from "effect/Effect"
9
- import type { Equivalence } from "effect/Equivalence"
10
- import * as Layer from "effect/Layer"
11
- import * as Option from "effect/Option"
12
- import type { Scope } from "effect/Scope"
13
- import { Computed } from "./Computed.js"
14
- import { Filtered } from "./Filtered.js"
15
- import type { Fx, FxInput } from "./Fx.js"
16
- import { struct } from "./Fx.js"
17
- import { FxEffectBase } from "./internal/protos.js"
18
- import type { RefSubject } from "./RefSubject.js"
19
- import type { Versioned } from "./Versioned.js"
20
-
21
- /**
22
- * @since 1.18.0
23
- * @category symbols
24
- */
25
- export const ModelTypeId = Symbol.for("./Model.js")
26
-
27
- /**
28
- * @since 1.18.0
29
- * @category symbols
30
- */
31
- export type ModelTypeId = typeof ModelTypeId
32
-
33
- type Any = RefSubject<any, any, any> | RefSubject<any, never, any> | Model<any>
34
-
35
- /**
36
- * A Model is a collection of Refs that can be utilized as a single unit from the Effect Context.
37
- * @since 1.18.0
38
- * @category models
39
- */
40
- export interface Model<Refs extends Readonly<Record<string, Any>>> extends
41
- Versioned<
42
- Model.Identifier<Refs[keyof Refs]>,
43
- never,
44
- Model.Identifier<Refs[keyof Refs]>,
45
- Model.Error<Refs[keyof Refs]>,
46
- {
47
- readonly [K in keyof Refs]: Model.State<Refs[K]>
48
- },
49
- Model.Identifier<Refs[keyof Refs]>,
50
- Model.Error<Refs[keyof Refs]>,
51
- {
52
- readonly [K in keyof Refs]: Model.State<Refs[K]>
53
- }
54
- >
55
- {
56
- readonly [ModelTypeId]: ModelTypeId
57
-
58
- /**
59
- * A Lens into a Ref from any given model at a particular key.
60
- * @since 1.18.0
61
- */
62
- readonly fromKey: <K extends keyof Refs>(key: K) => Refs[K]
63
-
64
- /**
65
- * Get the current state of the Model
66
- * @since 1.18.0
67
- */
68
- readonly get: Effect.Effect<
69
- Model.Identifier<Refs[keyof Refs]>,
70
- never,
71
- {
72
- readonly [K in keyof Refs]: Model.State<Refs[K]>
73
- }
74
- >
75
-
76
- /**
77
- * Set the state of the Model
78
- * @since 1.18.0
79
- */
80
- readonly set: (
81
- state: {
82
- readonly [K in keyof Refs]: Model.State<Refs[K]>
83
- }
84
- ) => Effect.Effect<Model.Identifier<Refs[keyof Refs]>, never, void>
85
-
86
- /**
87
- * Update the state of the Model
88
- * @since 1.18.0
89
- */
90
- readonly update: (
91
- f: (
92
- state: {
93
- readonly [K in keyof Refs]: Model.State<Refs[K]>
94
- }
95
- ) => {
96
- readonly [K in keyof Refs]: Model.State<Refs[K]>
97
- }
98
- ) => Effect.Effect<Model.Identifier<Refs[keyof Refs]>, never, void>
99
-
100
- /**
101
- * Modify the state of the Model and return a value
102
- * @since 1.18.0
103
- */
104
- readonly modify: <B>(
105
- f: (
106
- state: {
107
- readonly [K in keyof Refs]: Model.State<Refs[K]>
108
- }
109
- ) => readonly [
110
- B,
111
- {
112
- readonly [K in keyof Refs]: Model.State<Refs[K]>
113
- }
114
- ]
115
- ) => Effect.Effect<Model.Identifier<Refs[keyof Refs]>, never, B>
116
-
117
- /**
118
- * Delete the model's state
119
- */
120
- readonly delete: Effect.Effect<
121
- Model.Identifier<Refs[keyof Refs]>,
122
- never,
123
- Option.Option<
124
- {
125
- readonly [K in keyof Refs]: Model.State<Refs[K]>
126
- }
127
- >
128
- >
129
-
130
- readonly mapEffect: <R2, E2, B>(
131
- f: (
132
- state: {
133
- readonly [K in keyof Refs]: Model.State<Refs[K]>
134
- }
135
- ) => Effect.Effect<R2, E2, B>
136
- ) => Computed<Model.Identifier<Refs[keyof Refs]> | R2, Model.Error<Refs[keyof Refs]> | E2, B>
137
-
138
- readonly map: <B>(
139
- f: (
140
- state: {
141
- readonly [K in keyof Refs]: Model.State<Refs[K]>
142
- }
143
- ) => B
144
- ) => Computed<Model.Identifier<Refs[keyof Refs]>, Model.Error<Refs[keyof Refs]>, B>
145
-
146
- readonly filterMapEffect: <R2, E2, B>(
147
- f: (
148
- state: {
149
- readonly [K in keyof Refs]: Model.State<Refs[K]>
150
- }
151
- ) => Effect.Effect<R2, E2, Option.Option<B>>
152
- ) => Filtered<Model.Identifier<Refs[keyof Refs]> | R2, Model.Error<Refs[keyof Refs]> | E2, B>
153
-
154
- readonly filterMap: <B>(
155
- f: (
156
- state: {
157
- readonly [K in keyof Refs]: Model.State<Refs[K]>
158
- }
159
- ) => Option.Option<B>
160
- ) => Filtered<Model.Identifier<Refs[keyof Refs]>, Model.Error<Refs[keyof Refs]>, B>
161
-
162
- readonly filterEffect: <R2, E2>(
163
- f: (
164
- state: {
165
- readonly [K in keyof Refs]: Model.State<Refs[K]>
166
- }
167
- ) => Effect.Effect<R2, E2, boolean>
168
- ) => Filtered<
169
- Model.Identifier<Refs[keyof Refs]> | R2,
170
- Model.Error<Refs[keyof Refs]> | E2,
171
- {
172
- readonly [K in keyof Refs]: Model.State<Refs[K]>
173
- }
174
- >
175
-
176
- readonly filter: (
177
- f: (
178
- state: {
179
- readonly [K in keyof Refs]: Model.State<Refs[K]>
180
- }
181
- ) => boolean
182
- ) => Filtered<
183
- Model.Identifier<Refs[keyof Refs]>,
184
- Model.Error<Refs[keyof Refs]>,
185
- {
186
- readonly [K in keyof Refs]: Model.State<Refs[K]>
187
- }
188
- >
189
- }
190
-
191
- /**
192
- * @since 1.18.0
193
- */
194
- export namespace Model {
195
- /**
196
- * @since 1.18.0
197
- */
198
- export type AnyTagged = RefSubject.Tagged<any, any, any> | RefSubject.Tagged<any, never, any> | Model.Tagged<any>
199
-
200
- /**
201
- * @since 1.18.0
202
- */
203
- export interface Tagged<Refs extends Readonly<Record<string, AnyTagged>>> extends Model<Refs> {
204
- /**
205
- * Provide a Model to an Effect
206
- * @since 1.18.0
207
- */
208
- readonly of: (
209
- state: {
210
- readonly [K in keyof Refs]: Model.State<Refs[K]>
211
- },
212
- eqs?: MakeEqivalenceOptions<Refs>
213
- ) => Layer.Layer<never, never, Model.Identifier<Refs[keyof Refs]>>
214
-
215
- /**
216
- * Construct a Layer to provide a Model to an Effect
217
- * @since 1.18.0
218
- */
219
- readonly fromEffect: <R, E>(
220
- effect: Effect.Effect<
221
- R,
222
- E,
223
- {
224
- readonly [K in keyof Refs]: Model.State<Refs[K]>
225
- }
226
- >,
227
- eqs?: MakeEqivalenceOptions<Refs>
228
- ) => Layer.Layer<Exclude<R, Scope>, E, Model.Identifier<Refs[keyof Refs]>>
229
-
230
- /**
231
- * Create a Layer from a Model using the Layers of each Ref
232
- * @since 1.18.0
233
- */
234
- readonly makeWith: <
235
- Opts extends {
236
- readonly [K in keyof Refs]: (
237
- ref: Refs[K]
238
- ) => Layer.Layer<any, any, Model.Identifier<Refs[K]>> | Layer.Layer<any, never, Model.Identifier<Refs[K]>>
239
- }
240
- >(
241
- options: Opts
242
- ) => Layer.Layer<
243
- Exclude<Layer.Layer.Context<ReturnType<Opts[keyof Refs]>>, Scope>,
244
- Layer.Layer.Error<ReturnType<Opts[keyof Refs]>>,
245
- Model.Identifier<Refs[keyof Refs]>
246
- >
247
-
248
- /**
249
- * Create a Layer from a Model using the Layers of each Ref
250
- * @since 1.18.0
251
- */
252
- readonly make: <
253
- Opts extends MakeOptions<Refs>
254
- >(
255
- options: Opts,
256
- eqs?: MakeEqivalenceOptions<Refs>
257
- ) => Layer.Layer<
258
- Exclude<Fx.Context<Opts[keyof Refs]>, Scope>,
259
- never,
260
- Model.Identifier<Refs[keyof Refs]>
261
- >
262
- }
263
- }
264
-
265
- type MakeOptions<Refs extends Readonly<Record<string, Any>>> = {
266
- readonly [K in keyof Refs]: Refs[K] extends Model.Tagged<infer Refs2> ? MakeOptions<Refs2> :
267
- Refs[K] extends Model<infer Refs2> ? MakeOptions<Refs2>
268
- : FxInput<any, Model.Error<Refs[K]>, Model.State<Refs[K]>>
269
- }
270
-
271
- type MakeEqivalenceOptions<Refs extends Readonly<Record<string, Any>>> = {
272
- readonly [K in keyof Refs]?: Refs[K] extends Model.Tagged<infer Refs2> ? MakeEqivalenceOptions<Refs2> :
273
- Refs[K] extends Model<infer Refs2> ? MakeEqivalenceOptions<Refs2>
274
- : Equivalence<Model.State<Refs[K]>>
275
- }
276
-
277
- /**
278
- * Create a Model from a collection of Refs.
279
- * @since 1.18.0
280
- * @category constructors
281
- */
282
- export function Model<const Refs extends Readonly<Record<string, Any>>>(
283
- refs: Refs
284
- ): Model<Refs> {
285
- return new ModelImpl(refs) as any
286
- }
287
-
288
- /**
289
- * Create a Model from a collection of Refs.
290
- * @since 1.18.0
291
- * @category constructors
292
- */
293
- export function tagged<const Refs extends Readonly<Record<string, Model.AnyTagged>>>(
294
- refs: Refs
295
- ): Model.Tagged<Refs> {
296
- return new TaggedImpl(refs) as any
297
- }
298
-
299
- /**
300
- * @since 1.18.0
301
- */
302
- export namespace Model {
303
- /**
304
- * Extract the Identifier of a Model
305
- * @since 1.18.0
306
- */
307
- export type Identifier<T> = T extends RefSubject<infer I, infer _, infer __> ? I :
308
- [T] extends [Model.Tagged<infer R>] ? { readonly [K in keyof R]: Identifier<R[K]> }[keyof R] :
309
- T extends Model<infer R> ? { readonly [K in keyof R]: Identifier<R[K]> }[keyof R]
310
- : never
311
-
312
- /**
313
- * Extract the Error of a Model
314
- * @since 1.18.0
315
- */
316
- export type Error<T> = T extends RefSubject<infer _, infer E, infer _> ? E
317
- : T extends Model.Tagged<infer R> ? { readonly [K in keyof R]: Error<R[K]> }[keyof R]
318
- : T extends Model<infer R> ? { readonly [K in keyof R]: Error<R[K]> }[keyof R]
319
- : never
320
-
321
- /**
322
- * Extract the State of a Model
323
- * @since 1.18.0
324
- */
325
- export type State<T> = T extends RefSubject<infer _, infer __, infer S> ? S
326
- : T extends Model.Tagged<infer R> ? [keyof R] extends [never] ? R : { readonly [K in keyof R]: State<R[K]> } :
327
- T extends Model<infer R> ? [keyof R] extends [never] ? R : { readonly [K in keyof R]: State<R[K]> }
328
- : never
329
- }
330
-
331
- class ModelImpl<Refs extends Readonly<Record<string, Any>>> extends FxEffectBase<
332
- Model.Identifier<Refs[keyof Refs]>,
333
- Model.Error<Refs[keyof Refs]>,
334
- {
335
- readonly [K in keyof Refs]: Model.State<Refs[K]>
336
- },
337
- Model.Identifier<Refs[keyof Refs]>,
338
- Model.Error<Refs[keyof Refs]>,
339
- {
340
- readonly [K in keyof Refs]: Model.State<Refs[K]>
341
- }
342
- > implements Model<Refs> {
343
- get: Model<Refs>["get"]
344
- set: Model<Refs>["set"]
345
- delete: Model<Refs>["delete"]
346
- version: Effect.Effect<any, never, number>
347
-
348
- constructor(readonly refs: Refs) {
349
- super()
350
-
351
- const entries = Object.entries(refs)
352
-
353
- this.get = Effect.map(
354
- Effect.all(entries.map(([key, ref]) => Effect.map(ref.get, (v) => [key, v])), { concurrency: "unbounded" }),
355
- Object.fromEntries
356
- ) as Model<Refs>["get"]
357
-
358
- this.set = (
359
- state: {
360
- readonly [K in keyof Refs]: Model.State<Refs[K]>
361
- }
362
- ) =>
363
- Effect.all(
364
- entries.map(([k, ref]) => ref.set(state[k])),
365
- { concurrency: "unbounded" }
366
- )
367
-
368
- this.delete = Effect.map(
369
- Effect.all(entries.map(([k, ref]) => Effect.map(ref.delete, Option.map((v) => [k, v] as const)))),
370
- (options) => Option.map(Option.all(options), Object.fromEntries)
371
- ) as Model<Refs>["delete"]
372
-
373
- this.version = Effect.map(
374
- Effect.all(Object.values(this.refs).map((ref) => ref.version)),
375
- (versions) => versions.reduce((a, b) => a + b, 0)
376
- )
377
- }
378
-
379
- toFx() {
380
- return struct(this.refs) as any
381
- }
382
-
383
- toEffect() {
384
- return this.get
385
- }
386
-
387
- readonly [ModelTypeId]: ModelTypeId = ModelTypeId
388
-
389
- fromKey<K extends keyof Refs>(key: K): Refs[K] {
390
- return this.refs[key]
391
- }
392
-
393
- update = (
394
- f: (
395
- state: { readonly [K in keyof Refs]: Model.State<Refs[K]> }
396
- ) => { readonly [K in keyof Refs]: Model.State<Refs[K]> }
397
- ) => Effect.flatMap(this.get, (state) => this.set(f(state)))
398
-
399
- modify: <B>(
400
- f: (
401
- state: { readonly [K in keyof Refs]: Model.State<Refs[K]> }
402
- ) => readonly [B, { readonly [K in keyof Refs]: Model.State<Refs[K]> }]
403
- ) => Effect.Effect<Model.Identifier<Refs[keyof Refs]>, never, B> = (f) =>
404
- Effect.flatMap(this.get, (state) =>
405
- Effect.suspend(() => {
406
- const [b, newState] = f(state)
407
-
408
- return Effect.as(this.set(newState), b)
409
- }))
410
-
411
- mapEffect: Model<Refs>["mapEffect"] = (f) => Computed(this as any, f)
412
-
413
- map: Model<Refs>["map"] = (f) => this.mapEffect((state) => Effect.sync(() => f(state)))
414
-
415
- filterMapEffect: Model<Refs>["filterMapEffect"] = (f) => Filtered(this as any, f)
416
-
417
- filterMap: Model<Refs>["filterMap"] = (f) => this.filterMapEffect((state) => Effect.sync(() => f(state)))
418
-
419
- filterEffect: Model<Refs>["filterEffect"] = (f) =>
420
- this.filterMapEffect((state) => Effect.map(f(state), (b) => (b ? Option.some(state) : Option.none())))
421
-
422
- filter: Model<Refs>["filter"] = (f) => this.filterMap((state) => (f(state) ? Option.some(state) : Option.none()))
423
- }
424
-
425
- class TaggedImpl<Refs extends Readonly<Record<string, Model.AnyTagged>>> extends ModelImpl<Refs> {
426
- of: Model.Tagged<Refs>["of"] = (state, eqs) => {
427
- const [first, ...rest] = Object.entries(this.refs).map(
428
- ([k, ref]) =>
429
- ModelTypeId in ref ? ref.of(state[k], eqs?.[k] as any) : ref.make(Effect.succeed(state[k]), eqs?.[k] as any)
430
- )
431
-
432
- return Layer.mergeAll(
433
- first,
434
- ...rest
435
- ) as any
436
- }
437
-
438
- fromEffect: Model.Tagged<Refs>["fromEffect"] = (effect, eq) => {
439
- const { of } = this
440
-
441
- return Layer.scopedContext(Effect.gen(function*(_) {
442
- const scope = yield* _(Effect.scope)
443
- const initial = yield* _(effect)
444
- const layer = of(initial, eq)
445
- const context = yield* _(Layer.buildWithScope(
446
- layer,
447
- scope
448
- ))
449
-
450
- return context as Context<Model.Identifier<Refs[keyof Refs]>>
451
- }))
452
- }
453
-
454
- makeWith: Model.Tagged<Refs>["makeWith"] = (options) => {
455
- const { refs } = this
456
-
457
- return Layer.scopedContext(Effect.gen(function*(_) {
458
- const scope = yield* _(Effect.scope)
459
-
460
- let context = ContextBuilder.empty
461
-
462
- for (const [k, ref] of Object.entries(refs)) {
463
- context = context.mergeContext(
464
- yield* _(Layer.buildWithScope(
465
- options[k](ref as any),
466
- scope
467
- ))
468
- )
469
- }
470
-
471
- return context.context as Context<Model.Identifier<Refs[keyof Refs]>>
472
- }))
473
- }
474
-
475
- make: Model.Tagged<Refs>["make"] = (options, eqs) =>
476
- this.makeWith(
477
- Object.fromEntries(
478
- Object.entries(options).map(([k, fx]) => [k, (ref: RefSubject.Tagged<any, any, any>) =>
479
- ref.make(fx, eqs?.[k] as any)]
480
- )
481
- ) as any
482
- ) as any
483
- }