@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/src/Form.ts CHANGED
@@ -2,27 +2,28 @@
2
2
  * @since 1.18.0
3
3
  */
4
4
  import { AST } from "@effect/schema"
5
- import type { ParseOptions } from "@effect/schema/AST"
6
- import { from } from "@effect/schema/Equivalence"
5
+ import { type ParseOptions } from "@effect/schema/AST"
6
+ import { make } from "@effect/schema/Equivalence"
7
7
  import type { ParseError } from "@effect/schema/ParseResult"
8
8
  import * as S from "@effect/schema/Schema"
9
- import type { Scope } from "effect"
10
- import { Effect } from "effect"
11
- import { Computed } from "./Computed.js"
12
- import type * as Filtered from "./Filtered.js"
9
+ import * as Cause from "effect/Cause"
10
+ import * as Effect from "effect/Effect"
11
+ import { hasProperty } from "effect/Predicate"
12
+ import type * as Scope from "effect/Scope"
13
13
  import * as FormEntry from "./FormEntry.js"
14
14
  import type { Fx } from "./Fx.js"
15
15
  import * as core from "./internal/core.js"
16
16
  import { FxEffectBase } from "./internal/protos.js"
17
17
  import { hold } from "./internal/share.js"
18
- import type { RefSubject } from "./RefSubject.js"
18
+ import * as RefSubject from "./RefSubject.js"
19
+ import type * as Sink from "./Sink.js"
19
20
  import { ComputedTypeId, FilteredTypeId, RefSubjectTypeId, TypeId } from "./TypeId.js"
20
21
  import type * as Versioned from "./Versioned.js"
21
22
 
22
23
  /**
23
24
  * @since 1.18.0
24
25
  */
25
- export const FormTypeId = Symbol.for("./Form.js")
26
+ export const FormTypeId = Symbol.for("@typed/fx/Form")
26
27
  /**
27
28
  * @since 1.18.0
28
29
  */
@@ -34,9 +35,10 @@ type AnyObjectWithKeys<K extends PropertyKey> = Readonly<Record<K, any>>
34
35
  /**
35
36
  * @since 1.18.0
36
37
  */
37
- export interface Form<Entries extends Form.AnyEntries> extends
38
+ export interface Form<R, Entries extends Form.AnyEntries> extends
38
39
  Form.Base<
39
- Form.Error<Entries[keyof Entries]>,
40
+ R | Form.Context<Entries>,
41
+ Form.Error<Entries>,
40
42
  Form.Input<Entries>,
41
43
  Form.Output<Entries>,
42
44
  Entries
@@ -53,8 +55,8 @@ export namespace Form {
53
55
  /**
54
56
  * @since 1.18.0
55
57
  */
56
- export interface Base<E, I, O, Entries extends Form.AnyEntries>
57
- extends Versioned.Versioned<never, never, never, E | ParseError, I, never, E | ParseError, I>
58
+ export interface Base<R, E, I, O, Entries extends Form.AnyEntries>
59
+ extends Versioned.Versioned<R, never, R | Scope.Scope, E | ParseError, I, R, E | ParseError, I>
58
60
  {
59
61
  readonly [FormTypeId]: FormTypeId
60
62
 
@@ -67,8 +69,8 @@ export namespace Form {
67
69
 
68
70
  readonly get: <K extends keyof Entries>(key: K) => Entries[K]
69
71
 
70
- readonly decoded: Computed<
71
- never,
72
+ readonly decoded: RefSubject.Computed<
73
+ R,
72
74
  E | ParseError,
73
75
  O
74
76
  >
@@ -78,29 +80,40 @@ export namespace Form {
78
80
  * @since 1.18.0
79
81
  */
80
82
  export type AnyEntry =
81
- | FormEntry.FormEntry<any, any, any>
82
- | FormEntry.FormEntry<never, any, any>
83
- | FormEntry.FormEntry<any, never, any>
84
- | FormEntry.FormEntry<never, never, any>
85
- | Base<any, any, any, any>
83
+ | FormEntry.FormEntry<any, any, any, any>
84
+ | FormEntry.FormEntry<any, never, any, any>
85
+ | FormEntry.FormEntry<any, any, never, any>
86
+ | FormEntry.FormEntry<any, never, never, any>
87
+ | Base<any, any, any, any, any>
88
+ | Base<any, never, any, any, any>
89
+ | Base<any, any, never, any, any>
90
+ | Base<any, never, never, any, any>
86
91
 
87
92
  /**
88
93
  * @since 1.18.0
89
94
  */
90
95
  export type AnyEntries = Readonly<Record<PropertyKey, AnyEntry>>
91
96
 
97
+ /**
98
+ * @since 1.20.0
99
+ */
100
+ export type Context<T> = [T] extends [FormEntry.FormEntry<infer R, infer _E, infer _I, infer _>] ? R :
101
+ [T] extends [Base<infer _R, infer _E, infer _I, infer _O, infer _Entries>] ?
102
+ _R | Context<_Entries[keyof _Entries]> :
103
+ never
104
+
92
105
  /**
93
106
  * @since 1.18.0
94
107
  */
95
- export type Error<T> = [T] extends [FormEntry.FormEntry<infer E, infer _I, infer _>] ? E :
96
- [T] extends [Base<infer _E, infer _I, infer _O, infer _Entries>] ? _E :
108
+ export type Error<T> = [T] extends [FormEntry.FormEntry<infer _R, infer E, infer _I, infer _>] ? E :
109
+ [T] extends [Base<infer _R, infer _E, infer _I, infer _O, infer _Entries>] ? _E :
97
110
  never
98
111
 
99
112
  /**
100
113
  * @since 1.18.0
101
114
  */
102
- export type Input<T> = [T] extends [FormEntry.FormEntry<infer _E, infer I, infer _>] ? I :
103
- T extends Form<infer Entries> ? {
115
+ export type Input<T> = [T] extends [FormEntry.FormEntry<infer _R, infer _E, infer I, infer _>] ? I :
116
+ T extends Form<infer _R, infer Entries> ? {
104
117
  readonly [K in keyof Entries]: Input<Entries[K]>
105
118
  } :
106
119
  T extends AnyEntries ? {
@@ -111,8 +124,8 @@ export namespace Form {
111
124
  /**
112
125
  * @since 1.18.0
113
126
  */
114
- export type Output<T> = [T] extends [FormEntry.FormEntry<infer _E, infer _I, infer O>] ? O :
115
- T extends Form<infer Entries> ? {
127
+ export type Output<T> = [T] extends [FormEntry.FormEntry<infer _R, infer _E, infer _I, infer O>] ? O :
128
+ T extends Form<infer _R, infer Entries> ? {
116
129
  readonly [K in keyof Entries]: Output<Entries[K]>
117
130
  } :
118
131
  T extends AnyEntries ? {
@@ -123,9 +136,9 @@ export namespace Form {
123
136
  /**
124
137
  * @since 1.18.0
125
138
  */
126
- export interface Derived<R, Entries extends AnyEntries> extends Form<Entries> {
139
+ export interface Derived<R, R2, Entries extends AnyEntries> extends Form<R, Entries> {
127
140
  readonly persist: Effect.Effect<
128
- R,
141
+ R2,
129
142
  Error<Entries>,
130
143
  Output<Entries>
131
144
  >
@@ -135,7 +148,7 @@ export namespace Form {
135
148
  /**
136
149
  * @since 1.18.0
137
150
  */
138
- export function Form<Entries extends Form.AnyEntries>(entries: Entries): Form<Entries> {
151
+ export function Form<Entries extends Form.AnyEntries>(entries: Entries): Form<Form.Context<Entries>, Entries> {
139
152
  return new FormImpl(entries) as any
140
153
  }
141
154
 
@@ -146,22 +159,38 @@ export type MakeForm<
146
159
  I extends AnyObject,
147
160
  O extends AnyObjectWithKeys<keyof I>
148
161
  > = {
149
- <R, E>(fx: RefSubject<R, E, O>): Effect.Effect<
162
+ <R, E>(fx: RefSubject.RefSubject<R, E, O>): Effect.Effect<
163
+ R | Scope.Scope,
164
+ never,
165
+ [DerivedFromIO<R, never, E, I, O>] extends [Form.Derived<infer R, never, infer R2>] ? Form.Derived<R, never, R2>
166
+ : never
167
+ >
168
+
169
+ <R, E>(fx: Fx<R, E, O> | Effect.Effect<R, E, O>): Effect.Effect<
150
170
  R | Scope.Scope,
151
171
  never,
152
- [DerivedFromIO<R, E, I, O>] extends [Form.Derived<infer R, infer R2>] ? Form.Derived<R, R2> : never
172
+ [FormFromIO<E, I, O>] extends [Form<never, infer R>] ? Form<never, R> : never
153
173
  >
174
+ }
154
175
 
155
- <R, E>(fx: Fx<R, E, O>): Effect.Effect<
176
+ /**
177
+ * @since 1.20.0
178
+ */
179
+ export type MakeInputForm<
180
+ I extends AnyObject,
181
+ O extends AnyObjectWithKeys<keyof I>
182
+ > = {
183
+ <R, E>(fx: RefSubject.RefSubject<R, E, I>): Effect.Effect<
156
184
  R | Scope.Scope,
157
185
  never,
158
- [FormFromIO<E, I, O>] extends [Form<infer R>] ? Form<R> : never
186
+ [DerivedFromIO<R, never, E, I, O>] extends [Form.Derived<infer R, never, infer R2>] ? Form.Derived<R, never, R2>
187
+ : never
159
188
  >
160
189
 
161
- <R, E>(effect: Effect.Effect<R, E, O>): Effect.Effect<
162
- R,
190
+ <R, E>(fx: Fx<R, E, I> | Effect.Effect<R, E, I>): Effect.Effect<
191
+ R | Scope.Scope,
163
192
  never,
164
- [FormFromIO<E, I, O>] extends [Form<infer R>] ? Form<R> : never
193
+ [FormFromIO<E, I, O>] extends [Form<never, infer R>] ? Form<never, R> : never
165
194
  >
166
195
  }
167
196
 
@@ -173,6 +202,7 @@ export type FormFromIO<
173
202
  I extends AnyObject,
174
203
  O extends AnyObjectWithKeys<keyof I>
175
204
  > = Form<
205
+ never,
176
206
  [FormEntriesFromIO<E, I, O>] extends [infer R] ? { readonly [K in keyof R]: R[K] } : never
177
207
  >
178
208
 
@@ -185,9 +215,10 @@ export type FormEntriesFromIO<
185
215
  O extends AnyObjectWithKeys<keyof I>
186
216
  > = {
187
217
  readonly [K in keyof I]-?: [I[K], O[K]] extends [AnyObject, AnyObjectWithKeys<keyof I[K]>] ? Form<
218
+ never,
188
219
  [FormEntriesFromIO<E, I[K], O[K]>] extends [infer R] ? { readonly [K in keyof R]: R[K] } : never
189
220
  > :
190
- FormEntry.FormEntry<E, I[K], O[K]>
221
+ FormEntry.FormEntry<never, E, I[K], O[K]>
191
222
  }
192
223
 
193
224
  /**
@@ -195,20 +226,22 @@ export type FormEntriesFromIO<
195
226
  */
196
227
  export type DerivedFromIO<
197
228
  R,
229
+ R2,
198
230
  E,
199
231
  I extends Readonly<Record<PropertyKey, any>>,
200
232
  O extends Readonly<Record<keyof I, any>>
201
233
  > = Form.Derived<
202
234
  R,
235
+ R2,
203
236
  {
204
- readonly [K in keyof I]-?: FormEntry.FormEntry<E, I[K], O[K]>
237
+ readonly [K in keyof I]-?: FormEntry.FormEntry<never, E, I[K], O[K]>
205
238
  }
206
239
  >
207
240
 
208
241
  /**
209
- * @since 1.18.0
242
+ * @since 1.20.0
210
243
  */
211
- export function make<
244
+ export function derive<
212
245
  I extends Partial<Readonly<Record<PropertyKey, any>>>,
213
246
  O extends Partial<AnyObjectWithKeys<keyof I>>
214
247
  >(schema: S.Schema<I, O>): MakeForm<I, O> {
@@ -218,7 +251,11 @@ export function make<
218
251
 
219
252
  if (RefSubjectTypeId in input) {
220
253
  return Object.assign(form, {
221
- persist: Effect.matchCauseEffect(form.decoded, input)
254
+ persist: Effect.matchEffect(form.decoded, {
255
+ onFailure: (error: Fx.Error<typeof input> | ParseError) =>
256
+ isParseError(error) ? Effect.unit : input.onFailure(Cause.fail(error)),
257
+ onSuccess: (a: O) => input.onSuccess(a)
258
+ })
222
259
  })
223
260
  }
224
261
 
@@ -226,19 +263,48 @@ export function make<
226
263
  })
227
264
  }
228
265
 
266
+ /**
267
+ * @since 1.18.0
268
+ */
269
+ export function deriveInput<
270
+ I extends Partial<Readonly<Record<PropertyKey, any>>>,
271
+ O extends Partial<AnyObjectWithKeys<keyof I>>
272
+ >(schema: S.Schema<I, O>): MakeInputForm<I, O> {
273
+ return <R, E>(input: RefSubject.RefSubject<R, E, I> | Fx<R, E, I> | Effect.Effect<R, E, I>) =>
274
+ Effect.map(deriveMakeInputEntries(input, schema.ast), (entries) => {
275
+ const form = (Form as any)(entries)
276
+
277
+ if (RefSubjectTypeId in input) {
278
+ return Object.assign(form, {
279
+ persist: Effect.matchEffect(form, {
280
+ onFailure: (error: E | ParseError) =>
281
+ isParseError(error) ? Effect.unit : input.onFailure(Cause.fail(error)),
282
+ onSuccess: (a: I) => input.onSuccess(a)
283
+ })
284
+ })
285
+ }
286
+
287
+ return form
288
+ })
289
+ }
290
+
291
+ function isParseError(u: unknown): u is ParseError {
292
+ return hasProperty(u, "_tag") && u["_tag"] === "ParseError"
293
+ }
294
+
229
295
  const parseOptions: ParseOptions = { errors: "all", onExcessProperty: "ignore" }
230
296
 
231
- // @ts-expect-error
232
297
  class FormImpl<Entries extends Form.AnyEntries> extends FxEffectBase<
233
- never,
234
- never,
298
+ Form.Context<Entries> | Scope.Scope,
235
299
  Form.Error<Entries> | ParseError,
236
300
  Form.Input<Entries>,
237
- never,
301
+ Form.Context<Entries>,
238
302
  Form.Error<Entries> | ParseError,
239
303
  Form.Input<Entries>
240
- > implements Form<Entries> {
304
+ > implements Form<Form.Context<Entries>, Entries> {
241
305
  readonly [FormTypeId]: FormTypeId = FormTypeId
306
+ private _fx: Fx<Scope.Scope, ParseError | Form.Error<Entries>, Form.Input<Entries>>
307
+ readonly version: Effect.Effect<never, never, number>
242
308
 
243
309
  constructor(readonly entries: Entries) {
244
310
  super()
@@ -253,20 +319,23 @@ class FormImpl<Entries extends Form.AnyEntries> extends FxEffectBase<
253
319
  >,
254
320
  (versions) => versions.reduce((a, b) => a + b, 0)
255
321
  )
256
- }
257
322
 
258
- get: Form<Entries>["get"] = (k) => this.entries[k]
323
+ this._fx = hold(
324
+ core.skipRepeatsWith(
325
+ core.struct(this.entries as any) as Fx<never, Form.Error<Entries> | ParseError, Form.Input<Entries>>,
326
+ make(S.from(this.schema))
327
+ )
328
+ )
329
+ }
259
330
 
260
- schema: Form<Entries>["schema"]
331
+ get: Form<Form.Context<Entries>, Entries>["get"] = (k) => this.entries[k]
261
332
 
262
- version: Form<Entries>["version"]
333
+ schema: Form<Form.Context<Entries>, Entries>["schema"]
263
334
 
264
- toFx(): Fx<
265
- never,
266
- Form.Error<Entries> | ParseError,
267
- Form.Input<Entries>
268
- > {
269
- return hold(core.skipRepeatsWith(core.struct(this.entries as any) as any, from(this.schema))) as any
335
+ run<R3>(
336
+ sink: Sink.Sink<R3, Form.Error<Entries> | ParseError, Form.Input<Entries>>
337
+ ): Effect.Effect<R3 | Scope.Scope, never, unknown> {
338
+ return this._fx.run(sink)
270
339
  }
271
340
 
272
341
  toEffect(): Effect.Effect<
@@ -275,12 +344,12 @@ class FormImpl<Entries extends Form.AnyEntries> extends FxEffectBase<
275
344
  Form.Input<Entries>
276
345
  > {
277
346
  return (
278
- Effect.all(this.entries as any, { concurrency: "unbounded" }) as any
347
+ Effect.all(this.entries, { concurrency: "unbounded" }) as any
279
348
  )
280
349
  }
281
350
 
282
- decoded: Form<Entries>["decoded"] = Computed(
283
- this as any as Form<Entries>,
351
+ decoded: Form<Form.Context<Entries>, Entries>["decoded"] = RefSubject.mapEffect(
352
+ this,
284
353
  (i) => S.decode(this.schema)(i, parseOptions)
285
354
  )
286
355
  }
@@ -305,7 +374,7 @@ function buildSchema<Entries extends Form.AnyEntries>(
305
374
 
306
375
  type DeriveEntries<E, I extends Readonly<Record<PropertyKey, any>>, O extends Readonly<Record<keyof I, any>>> = {
307
376
  readonly [K in keyof I]: I[K] extends Readonly<Record<PropertyKey, any>> ? DeriveEntries<E, I[K], O[K]>
308
- : FormEntry.FormEntry<E, I[K], O[K]>
377
+ : FormEntry.FormEntry<never, E, I[K], O[K]>
309
378
  }
310
379
 
311
380
  const deriveMakeEntries = <
@@ -314,7 +383,7 @@ const deriveMakeEntries = <
314
383
  I extends Readonly<Record<PropertyKey, any>>,
315
384
  O extends Readonly<Record<keyof I, any>>
316
385
  >(
317
- input: RefSubject<R, E, O> | Fx<R, E, O> | Effect.Effect<R, E, O>,
386
+ input: RefSubject.RefSubject<R, E, O> | Fx<R, E, O> | Effect.Effect<R, E, O>,
318
387
  ast: AST.AST
319
388
  ): Effect.Effect<R | Scope.Scope, never, DeriveEntries<E, I, O>> =>
320
389
  Effect.suspend(() => {
@@ -340,7 +409,57 @@ const deriveMakeEntries = <
340
409
  )
341
410
  } else {
342
411
  entries[prop.name] = yield* _(
343
- FormEntry.make<any, any>({
412
+ FormEntry.derive<any, any>({
413
+ name: prop.name,
414
+ schema: S.make(ast)
415
+ })(nested as Fx<R, E, any>)
416
+ )
417
+ }
418
+ }
419
+
420
+ return entries
421
+ })
422
+ }
423
+ default: {
424
+ // TODO: Wrap in an error
425
+ return Effect.die(new TypeError("Form.deriveMakeEntries only supports TypeLiteral schemas."))
426
+ }
427
+ }
428
+ })
429
+
430
+ const deriveMakeInputEntries = <
431
+ R,
432
+ E,
433
+ I extends Readonly<Record<PropertyKey, any>>,
434
+ O extends Readonly<Record<keyof I, any>>
435
+ >(
436
+ input: RefSubject.RefSubject<R, E, I> | Fx<R, E, I> | Effect.Effect<R, E, I>,
437
+ ast: AST.AST
438
+ ): Effect.Effect<R | Scope.Scope, never, DeriveEntries<E, I, O>> =>
439
+ Effect.suspend(() => {
440
+ switch (ast._tag) {
441
+ case "TypeLiteral": {
442
+ const propertySignatures = ast.propertySignatures
443
+
444
+ return Effect.gen(function*(_) {
445
+ const entries: any = {}
446
+
447
+ for (const prop of propertySignatures) {
448
+ const nested = propOf(input, prop.name)
449
+ const ast = prop.isOptional ? AST.createUnion([prop.type, AST.undefinedKeyword]) : prop.type
450
+
451
+ if (prop.type._tag === "TypeLiteral") {
452
+ entries[prop.name] = Form(
453
+ (yield* _(
454
+ deriveMakeInputEntries(
455
+ nested,
456
+ ast
457
+ )
458
+ )) as any
459
+ )
460
+ } else {
461
+ entries[prop.name] = yield* _(
462
+ FormEntry.deriveInput<any, any>({
344
463
  name: prop.name,
345
464
  schema: S.make(ast)
346
465
  })(nested as Fx<R, E, any>)
@@ -352,6 +471,7 @@ const deriveMakeEntries = <
352
471
  })
353
472
  }
354
473
  default: {
474
+ // TODO: Wrap in an error
355
475
  return Effect.die(new TypeError("Form.deriveMakeEntries only supports TypeLiteral schemas."))
356
476
  }
357
477
  }
@@ -359,15 +479,15 @@ const deriveMakeEntries = <
359
479
 
360
480
  const propOf = <R, E, O>(
361
481
  input:
362
- | RefSubject<R, E, O>
363
- | Computed<R, E, O>
364
- | Filtered.Filtered<R, E, O>
482
+ | RefSubject.RefSubject<R, E, O>
483
+ | RefSubject.Computed<R, E, O>
484
+ | RefSubject.Filtered<R, E, O>
365
485
  | Fx<R, E, O>
366
486
  | Effect.Effect<R, E, O>,
367
487
  key: keyof O
368
488
  ) => {
369
489
  if (RefSubjectTypeId in input || ComputedTypeId in input || FilteredTypeId in input) {
370
- return input.map((o) => o[key])
490
+ return RefSubject.map(input, (o) => o[key])
371
491
  } else if (TypeId in input) return core.map(input, (o) => o[key])
372
492
  else return Effect.map(input, (o) => o[key])
373
493
  }