@fncts/io 0.0.49 → 0.0.50

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 (226) hide show
  1. package/IO/api/foreachExec.d.ts +18 -0
  2. package/Push/Bounds.d.ts +4 -0
  3. package/Push/FlattenStrategy.d.ts +47 -0
  4. package/Push/IndexedBuffer.d.ts +19 -0
  5. package/Push/MergeStrategy.d.ts +19 -0
  6. package/Push/Operator/IOLoopOperator.d.ts +61 -0
  7. package/Push/Operator/IOOperator.d.ts +63 -0
  8. package/Push/Operator/LoopOperator.d.ts +50 -0
  9. package/Push/Operator/SyncOperator.d.ts +41 -0
  10. package/Push/Operator.d.ts +4 -0
  11. package/Push/Producer/IOProducer.d.ts +41 -0
  12. package/Push/Producer/SyncProducer.d.ts +61 -0
  13. package/Push/Producer.d.ts +1 -0
  14. package/Push/Sink.d.ts +65 -0
  15. package/Push/api.d.ts +78 -161
  16. package/Push/definition.d.ts +92 -19
  17. package/Push/internal.d.ts +3 -0
  18. package/Push.d.ts +6 -0
  19. package/Ref/Synchronized/definition.d.ts +32 -9
  20. package/Ref/definition.d.ts +12 -0
  21. package/Scope/api.d.ts +16 -1
  22. package/Sink/definition.d.ts +5 -6
  23. package/Subject/Atomic.d.ts +19 -9
  24. package/Subject/DeferredRef.d.ts +17 -0
  25. package/Subject/Hold.d.ts +19 -0
  26. package/Subject/RefSubject/Atomic.d.ts +41 -0
  27. package/Subject/RefSubject/Derived.d.ts +43 -0
  28. package/Subject/RefSubject/RefSubject.d.ts +27 -0
  29. package/Subject/definition.d.ts +14 -2
  30. package/Subject.d.ts +2 -0
  31. package/SubscriptionRef.d.ts +0 -1
  32. package/_cjs/IO/api/foreachExec.cjs +29 -4
  33. package/_cjs/IO/api/foreachExec.cjs.map +1 -1
  34. package/_cjs/Push/Bounds.cjs +2 -0
  35. package/_cjs/Push/Bounds.cjs.map +1 -0
  36. package/_cjs/Push/FlattenStrategy.cjs +95 -0
  37. package/_cjs/Push/FlattenStrategy.cjs.map +1 -0
  38. package/_cjs/Push/IndexedBuffer.cjs +70 -0
  39. package/_cjs/Push/IndexedBuffer.cjs.map +1 -0
  40. package/_cjs/Push/MergeStrategy.cjs +45 -0
  41. package/_cjs/Push/MergeStrategy.cjs.map +1 -0
  42. package/_cjs/Push/Operator/IOLoopOperator.cjs +225 -0
  43. package/_cjs/Push/Operator/IOLoopOperator.cjs.map +1 -0
  44. package/_cjs/Push/Operator/IOOperator.cjs +104 -0
  45. package/_cjs/Push/Operator/IOOperator.cjs.map +1 -0
  46. package/_cjs/Push/Operator/LoopOperator.cjs +165 -0
  47. package/_cjs/Push/Operator/LoopOperator.cjs.map +1 -0
  48. package/_cjs/Push/Operator/SyncOperator.cjs +78 -0
  49. package/_cjs/Push/Operator/SyncOperator.cjs.map +1 -0
  50. package/_cjs/Push/Operator.cjs +2 -0
  51. package/_cjs/Push/Operator.cjs.map +1 -0
  52. package/_cjs/Push/Producer/IOProducer.cjs +67 -0
  53. package/_cjs/Push/Producer/IOProducer.cjs.map +1 -0
  54. package/_cjs/Push/Producer/SyncProducer.cjs +107 -0
  55. package/_cjs/Push/Producer/SyncProducer.cjs.map +1 -0
  56. package/_cjs/Push/Producer.cjs +2 -0
  57. package/_cjs/Push/Producer.cjs.map +1 -0
  58. package/_cjs/Push/Sink.cjs +219 -0
  59. package/_cjs/Push/Sink.cjs.map +1 -0
  60. package/_cjs/Push/api.cjs +339 -383
  61. package/_cjs/Push/api.cjs.map +1 -1
  62. package/_cjs/Push/definition.cjs +79 -22
  63. package/_cjs/Push/definition.cjs.map +1 -1
  64. package/_cjs/Push/internal.cjs +31 -26
  65. package/_cjs/Push/internal.cjs.map +1 -1
  66. package/_cjs/Push.cjs +66 -0
  67. package/_cjs/Push.cjs.map +1 -1
  68. package/_cjs/Ref/Synchronized/definition.cjs +12 -12
  69. package/_cjs/Ref/Synchronized/definition.cjs.map +1 -1
  70. package/_cjs/Ref/definition.cjs.map +1 -1
  71. package/_cjs/Scope/api.cjs +28 -7
  72. package/_cjs/Scope/api.cjs.map +1 -1
  73. package/_cjs/Sink/definition.cjs +2 -3
  74. package/_cjs/Sink/definition.cjs.map +1 -1
  75. package/_cjs/Stream/definition.cjs.map +1 -1
  76. package/_cjs/Subject/Atomic.cjs +45 -10
  77. package/_cjs/Subject/Atomic.cjs.map +1 -1
  78. package/_cjs/Subject/DeferredRef.cjs +53 -0
  79. package/_cjs/Subject/DeferredRef.cjs.map +1 -0
  80. package/_cjs/Subject/Hold.cjs +41 -0
  81. package/_cjs/Subject/Hold.cjs.map +1 -0
  82. package/_cjs/Subject/RefSubject/Atomic.cjs +130 -0
  83. package/_cjs/Subject/RefSubject/Atomic.cjs.map +1 -0
  84. package/_cjs/Subject/RefSubject/Derived.cjs +98 -0
  85. package/_cjs/Subject/RefSubject/Derived.cjs.map +1 -0
  86. package/_cjs/Subject/RefSubject/RefSubject.cjs +19 -0
  87. package/_cjs/Subject/RefSubject/RefSubject.cjs.map +1 -0
  88. package/_cjs/Subject/definition.cjs +16 -1
  89. package/_cjs/Subject/definition.cjs.map +1 -1
  90. package/_cjs/Subject.cjs +22 -0
  91. package/_cjs/Subject.cjs.map +1 -1
  92. package/_cjs/SubscriptionRef.cjs +0 -1
  93. package/_cjs/SubscriptionRef.cjs.map +1 -1
  94. package/_mjs/IO/api/foreachExec.mjs +27 -4
  95. package/_mjs/IO/api/foreachExec.mjs.map +1 -1
  96. package/_mjs/Push/Bounds.mjs +2 -0
  97. package/_mjs/Push/Bounds.mjs.map +1 -0
  98. package/_mjs/Push/FlattenStrategy.mjs +86 -0
  99. package/_mjs/Push/FlattenStrategy.mjs.map +1 -0
  100. package/_mjs/Push/IndexedBuffer.mjs +61 -0
  101. package/_mjs/Push/IndexedBuffer.mjs.map +1 -0
  102. package/_mjs/Push/MergeStrategy.mjs +34 -0
  103. package/_mjs/Push/MergeStrategy.mjs.map +1 -0
  104. package/_mjs/Push/Operator/IOLoopOperator.mjs +208 -0
  105. package/_mjs/Push/Operator/IOLoopOperator.mjs.map +1 -0
  106. package/_mjs/Push/Operator/IOOperator.mjs +91 -0
  107. package/_mjs/Push/Operator/IOOperator.mjs.map +1 -0
  108. package/_mjs/Push/Operator/LoopOperator.mjs +151 -0
  109. package/_mjs/Push/Operator/LoopOperator.mjs.map +1 -0
  110. package/_mjs/Push/Operator/SyncOperator.mjs +67 -0
  111. package/_mjs/Push/Operator/SyncOperator.mjs.map +1 -0
  112. package/_mjs/Push/Operator.mjs +2 -0
  113. package/_mjs/Push/Operator.mjs.map +1 -0
  114. package/_mjs/Push/Producer/IOProducer.mjs +55 -0
  115. package/_mjs/Push/Producer/IOProducer.mjs.map +1 -0
  116. package/_mjs/Push/Producer/SyncProducer.mjs +90 -0
  117. package/_mjs/Push/Producer/SyncProducer.mjs.map +1 -0
  118. package/_mjs/Push/Producer.mjs +2 -0
  119. package/_mjs/Push/Producer.mjs.map +1 -0
  120. package/_mjs/Push/Sink.mjs +206 -0
  121. package/_mjs/Push/Sink.mjs.map +1 -0
  122. package/_mjs/Push/api.mjs +311 -344
  123. package/_mjs/Push/api.mjs.map +1 -1
  124. package/_mjs/Push/definition.mjs +73 -18
  125. package/_mjs/Push/definition.mjs.map +1 -1
  126. package/_mjs/Push/internal.mjs +30 -26
  127. package/_mjs/Push/internal.mjs.map +1 -1
  128. package/_mjs/Push.mjs +7 -1
  129. package/_mjs/Push.mjs.map +1 -1
  130. package/_mjs/Ref/Synchronized/definition.mjs +12 -12
  131. package/_mjs/Ref/Synchronized/definition.mjs.map +1 -1
  132. package/_mjs/Ref/definition.mjs.map +1 -1
  133. package/_mjs/Scope/api.mjs +22 -4
  134. package/_mjs/Scope/api.mjs.map +1 -1
  135. package/_mjs/Sink/definition.mjs +2 -3
  136. package/_mjs/Sink/definition.mjs.map +1 -1
  137. package/_mjs/Stream/definition.mjs.map +1 -1
  138. package/_mjs/Subject/Atomic.mjs +46 -10
  139. package/_mjs/Subject/Atomic.mjs.map +1 -1
  140. package/_mjs/Subject/DeferredRef.mjs +45 -0
  141. package/_mjs/Subject/DeferredRef.mjs.map +1 -0
  142. package/_mjs/Subject/Hold.mjs +33 -0
  143. package/_mjs/Subject/Hold.mjs.map +1 -0
  144. package/_mjs/Subject/RefSubject/Atomic.mjs +122 -0
  145. package/_mjs/Subject/RefSubject/Atomic.mjs.map +1 -0
  146. package/_mjs/Subject/RefSubject/Derived.mjs +90 -0
  147. package/_mjs/Subject/RefSubject/Derived.mjs.map +1 -0
  148. package/_mjs/Subject/RefSubject/RefSubject.mjs +12 -0
  149. package/_mjs/Subject/RefSubject/RefSubject.mjs.map +1 -0
  150. package/_mjs/Subject/definition.mjs +14 -0
  151. package/_mjs/Subject/definition.mjs.map +1 -1
  152. package/_mjs/Subject.mjs +2 -0
  153. package/_mjs/Subject.mjs.map +1 -1
  154. package/_mjs/SubscriptionRef.mjs +0 -1
  155. package/_mjs/SubscriptionRef.mjs.map +1 -1
  156. package/_src/IO/api/foreachExec.ts +47 -0
  157. package/_src/Push/Bounds.ts +4 -0
  158. package/_src/Push/FlattenStrategy.ts +137 -0
  159. package/_src/Push/IndexedBuffer.ts +79 -0
  160. package/_src/Push/MergeStrategy.ts +59 -0
  161. package/_src/Push/Operator/IOLoopOperator.ts +413 -0
  162. package/_src/Push/Operator/IOOperator.ts +173 -0
  163. package/_src/Push/Operator/LoopOperator.ts +242 -0
  164. package/_src/Push/Operator/SyncOperator.ts +107 -0
  165. package/_src/Push/Operator.ts +7 -0
  166. package/_src/Push/Producer/IOProducer.ts +83 -0
  167. package/_src/Push/Producer/SyncProducer.ts +105 -0
  168. package/_src/Push/Producer.ts +0 -0
  169. package/_src/Push/Sink.ts +302 -0
  170. package/_src/Push/api.ts +387 -513
  171. package/_src/Push/definition.ts +216 -23
  172. package/_src/Push/internal.ts +11 -0
  173. package/_src/Push.ts +7 -1
  174. package/_src/Ref/Synchronized/definition.ts +81 -37
  175. package/_src/Ref/definition.ts +26 -0
  176. package/_src/Scope/api.ts +22 -0
  177. package/_src/Sink/definition.ts +4 -5
  178. package/_src/Stream/definition.ts +0 -1
  179. package/_src/Subject/Atomic.ts +68 -11
  180. package/_src/Subject/DeferredRef.ts +44 -0
  181. package/_src/Subject/Hold.ts +48 -0
  182. package/_src/Subject/RefSubject/Atomic.ts +193 -0
  183. package/_src/Subject/RefSubject/Derived.ts +179 -0
  184. package/_src/Subject/RefSubject/RefSubject.ts +90 -0
  185. package/_src/Subject/definition.ts +21 -3
  186. package/_src/Subject.ts +5 -3
  187. package/_src/SubscriptionRef.ts +1 -1
  188. package/_src/index.ts +49 -50
  189. package/index.d.ts +0 -1
  190. package/package.json +4 -4
  191. package/RefSubject/Atomic.d.ts +0 -34
  192. package/RefSubject/Synchronized/api.d.ts +0 -9
  193. package/RefSubject/Synchronized/definition.d.ts +0 -39
  194. package/RefSubject/api.d.ts +0 -120
  195. package/RefSubject/definition.d.ts +0 -52
  196. package/RefSubject.d.ts +0 -3
  197. package/_cjs/RefSubject/Atomic.cjs +0 -107
  198. package/_cjs/RefSubject/Atomic.cjs.map +0 -1
  199. package/_cjs/RefSubject/Synchronized/api.cjs +0 -22
  200. package/_cjs/RefSubject/Synchronized/api.cjs.map +0 -1
  201. package/_cjs/RefSubject/Synchronized/definition.cjs +0 -55
  202. package/_cjs/RefSubject/Synchronized/definition.cjs.map +0 -1
  203. package/_cjs/RefSubject/api.cjs +0 -251
  204. package/_cjs/RefSubject/api.cjs.map +0 -1
  205. package/_cjs/RefSubject/definition.cjs +0 -26
  206. package/_cjs/RefSubject/definition.cjs.map +0 -1
  207. package/_cjs/RefSubject.cjs +0 -39
  208. package/_cjs/RefSubject.cjs.map +0 -1
  209. package/_mjs/RefSubject/Atomic.mjs +0 -99
  210. package/_mjs/RefSubject/Atomic.mjs.map +0 -1
  211. package/_mjs/RefSubject/Synchronized/api.mjs +0 -15
  212. package/_mjs/RefSubject/Synchronized/api.mjs.map +0 -1
  213. package/_mjs/RefSubject/Synchronized/definition.mjs +0 -47
  214. package/_mjs/RefSubject/Synchronized/definition.mjs.map +0 -1
  215. package/_mjs/RefSubject/api.mjs +0 -229
  216. package/_mjs/RefSubject/api.mjs.map +0 -1
  217. package/_mjs/RefSubject/definition.mjs +0 -19
  218. package/_mjs/RefSubject/definition.mjs.map +0 -1
  219. package/_mjs/RefSubject.mjs +0 -5
  220. package/_mjs/RefSubject.mjs.map +0 -1
  221. package/_src/RefSubject/Atomic.ts +0 -129
  222. package/_src/RefSubject/Synchronized/api.ts +0 -14
  223. package/_src/RefSubject/Synchronized/definition.ts +0 -76
  224. package/_src/RefSubject/api.ts +0 -253
  225. package/_src/RefSubject/definition.ts +0 -70
  226. package/_src/RefSubject.ts +0 -5
@@ -1,253 +0,0 @@
1
- import { tuple } from "@fncts/base/data/function";
2
- import { Sink } from "@fncts/io/Push";
3
- import { AtomicRefSubject } from "@fncts/io/RefSubject/Atomic";
4
-
5
- import { RefSubject } from "./definition.js";
6
- import { RefSubjectInternal } from "./definition.js";
7
- import { concrete } from "./definition.js";
8
-
9
- /**
10
- * @tsplus static fncts.io.Push.RefSubjectOps unsafeMake
11
- */
12
- export function unsafeMake<A>(initial: A): RefSubject<never, never, A, A> {
13
- return new AtomicRefSubject(initial);
14
- }
15
-
16
- /**
17
- * @tsplus static fncts.io.Push.RefSubjectOps make
18
- * @tsplus static fncts.io.Push.RefSubjectOps __call
19
- */
20
- export function make<A>(initial: Lazy<A>): UIO<RefSubject<never, never, A, A>> {
21
- return IO(RefSubject.unsafeMake(initial()));
22
- }
23
-
24
- /**
25
- * Reads the value from the `Ref`.
26
- *
27
- * @tsplus getter fncts.io.Push.RefSubject get
28
- */
29
- export function get<R, E, A, B>(self: RefSubject<R, E, A, B>, __tsplusTrace?: string): IO<R, never, B> {
30
- concrete(self);
31
- return self.get;
32
- }
33
-
34
- /**
35
- * Writes a new value to the `Ref`, with a guarantee of immediate
36
- * consistency (at some cost to performance).
37
- *
38
- * @tsplus pipeable fncts.io.Push.RefSubject set
39
- */
40
- export function set<A>(a: A, __tsplusTrace?: string) {
41
- return <R, E, B>(self: RefSubject<R, E, A, B>): IO<R, never, void> => {
42
- concrete(self);
43
- return self.set(a);
44
- };
45
- }
46
-
47
- class Dimap<R, E, A, B, C, D> extends RefSubjectInternal<R, E, C, D> {
48
- constructor(
49
- readonly ref: RefSubjectInternal<R, E, A, B>,
50
- readonly f: (c: C) => A,
51
- readonly g: (b: B) => D,
52
- ) {
53
- super();
54
- }
55
-
56
- get get(): IO<R, never, D> {
57
- return this.ref.get.map(this.g);
58
- }
59
-
60
- set(value: C): IO<R, never, void> {
61
- return this.ref.set(this.f(value));
62
- }
63
-
64
- modify<F>(f: (d: D) => readonly [F, C], __tsplusTrace?: string | undefined): IO<R, never, F> {
65
- return this.get.flatMap((c) => {
66
- const o = f(c);
67
- return this.set(o[1]) > IO.succeedNow(o[0]);
68
- });
69
- }
70
-
71
- run<R1>(emitter: Sink<R1, E, D>): IO<R | R1, never, void> {
72
- return this.ref.run(
73
- Sink(
74
- (value) => emitter.event(this.g(value)),
75
- (cause) => emitter.error(cause),
76
- ),
77
- );
78
- }
79
-
80
- event(value: C): IO<R, never, void> {
81
- return this.ref.event(this.f(value));
82
- }
83
-
84
- error(cause: Cause<E>): IO<R, never, void> {
85
- return this.ref.error(cause);
86
- }
87
-
88
- get unsafeGet(): D {
89
- return this.g(this.ref.unsafeGet);
90
- }
91
- }
92
-
93
- /**
94
- * Transforms both the `set` and `get` values of the `Ref` with the
95
- * specified functions.
96
- *
97
- * @tsplus pipeable fncts.io.Push.RefSubject dimap
98
- */
99
- export function dimap<A, B, C, D>(f: (_: C) => A, g: (_: B) => D, __tsplusTrace?: string) {
100
- return <R, E>(self: RefSubject<R, E, A, B>): RefSubject<R, E, C, D> => {
101
- concrete(self);
102
- return new Dimap(self, f, g);
103
- };
104
- }
105
-
106
- /**
107
- * Transforms the `set` value of the `Ref` with the specified function.
108
- *
109
- * @tsplus pipeable fncts.io.Push.RefSubject contramap
110
- */
111
- export function contramap<A, C>(f: (_: C) => A, __tsplusTrace?: string) {
112
- return <R, E, B>(self: RefSubject<R, E, A, B>): RefSubject<R, E, C, B> => {
113
- return self.dimap(f, Function.identity);
114
- };
115
- }
116
-
117
- /**
118
- * Transforms the `get` value of the `Ref` with the specified function.
119
- *
120
- * @tsplus pipeable fncts.io.Push.RefSubject map
121
- */
122
- export function map<B, C>(f: (_: B) => C, __tsplusTrace?: string) {
123
- return <R, E, A>(ref: RefSubject<R, E, A, B>): RefSubject<R, E, A, C> => {
124
- return ref.dimap(Function.identity, f);
125
- };
126
- }
127
-
128
- /**
129
- * Atomically modifies the `Ref` with the specified function, which
130
- * computes a return value for the modification. This is a more powerful
131
- * version of `update`.
132
- *
133
- * @tsplus pipeable fncts.io.Push.RefSubject modify
134
- */
135
- export function modify<B, A>(f: (a: A) => readonly [B, A], __tsplusTrace?: string) {
136
- return <R, E>(self: RefSubject<R, E, A, A>): IO<R, never, B> => {
137
- concrete(self);
138
- return self.modify(f);
139
- };
140
- }
141
-
142
- /**
143
- * Atomically modifies the `Ref` with the specified partial function,
144
- * which computes a return value for the modification if the function is
145
- * defined on the current value otherwise it returns a default value. This
146
- * is a more powerful version of `updateJust`.
147
- *
148
- * @tsplus pipeable fncts.io.Push.RefSubject modifyJust
149
- */
150
- export function modifyJust<A, B>(def: B, f: (a: A) => Maybe<readonly [B, A]>, __tsplusTrace?: string) {
151
- return <R, E>(self: RefSubject<R, E, A, A>): IO<R, never, B> => {
152
- return self.modify((a) => f(a).getOrElse(tuple(def, a)));
153
- };
154
- }
155
-
156
- /**
157
- * Atomically writes the specified value to the `Ref`, returning the value
158
- * immediately before modification.
159
- *
160
- * @tsplus pipeable fncts.io.Push.RefSubject getAndSet
161
- */
162
- export function getAndSet<A>(a: A, __tsplusTrace?: string) {
163
- return <R, E>(self: RefSubject<R, E, A, A>): IO<R, never, A> => {
164
- return self.modify((a0) => tuple(a0, a));
165
- };
166
- }
167
-
168
- /**
169
- * Atomically modifies the `Ref` with the specified function, returning
170
- * the value immediately before modification.
171
- *
172
- * @tsplus pipeable fncts.io.Push.RefSubject getAndUpdate
173
- */
174
- export function getAndUpdate<A>(f: (a: A) => A, __tsplusTrace?: string) {
175
- return <R, E>(self: RefSubject<R, E, A, A>): IO<R, E, A> => {
176
- return self.modify((a0) => tuple(a0, f(a0)));
177
- };
178
- }
179
-
180
- /**
181
- * Atomically modifies the `Ref` with the specified partial function,
182
- * returning the value immediately before modification. If the function is
183
- * undefined on the current value it doesn't change it.
184
- *
185
- * @tsplus pipeable fncts.io.Push.RefSubject getAndUpdateJust
186
- */
187
- export function getAndUpdateJust<A>(f: (a: A) => Maybe<A>, __tsplusTrace?: string) {
188
- return <R, E>(self: RefSubject<R, E, A, A>): IO<R, never, A> => {
189
- return self.modify((a0) => tuple(a0, f(a0).getOrElse(a0)));
190
- };
191
- }
192
-
193
- /**
194
- * Atomically modifies the `Ref` with the specified function.
195
- *
196
- * @tsplus pipeable fncts.io.Push.RefSubject update
197
- */
198
- export function update<A>(f: (a: A) => A, __tsplusTrace?: string) {
199
- return <R, E>(self: RefSubject<R, E, A, A>): IO<R, never, void> => {
200
- return self.modify((a0) => tuple(undefined, f(a0)));
201
- };
202
- }
203
-
204
- /**
205
- * Atomically modifies the `Ref` with the specified function and returns
206
- * the updated value.
207
- *
208
- * @tsplus pipeable fncts.io.Push.RefSubject updateAndGet
209
- */
210
- export function updateAndGet<A>(f: (a: A) => A, __tsplusTrace?: string) {
211
- return <R, E>(self: RefSubject<R, E, A, A>) => {
212
- return self.modify((a0) => {
213
- const r = f(a0);
214
- return tuple(r, r);
215
- });
216
- };
217
- }
218
-
219
- /**
220
- * Atomically modifies the `Ref` with the specified partial function. If
221
- * the function is undefined on the current value it doesn't change it.
222
- *
223
- * @tsplus pipeable fncts.io.Push.RefSubject updateJust
224
- */
225
- export function updateJust<A>(f: (a: A) => Maybe<A>, __tsplusTrace?: string) {
226
- return <R, E>(self: RefSubject<R, E, A, A>): IO<R, never, void> => {
227
- return self.modify((a0) => tuple(undefined, f(a0).getOrElse(a0)));
228
- };
229
- }
230
-
231
- /**
232
- * Atomically modifies the `Ref` with the specified partial function. If
233
- * the function is undefined on the current value it returns the old value
234
- * without changing it.
235
- *
236
- * @tsplus pipeable fncts.io.Push.RefSubject updateJustAndGet
237
- */
238
- export function updateJustAndGet<A>(f: (a: A) => Maybe<A>, __tsplusTrace?: string) {
239
- return <R, E>(self: RefSubject<R, E, A, A>): IO<R, never, A> => {
240
- return self.modify((a0) => {
241
- const r = f(a0).getOrElse(a0);
242
- return tuple(r, r);
243
- });
244
- };
245
- }
246
-
247
- /**
248
- * @tsplus getter fncts.io.Push.RefSubject unsafeGet
249
- */
250
- export function unsafeGet<R, E, A, B>(self: RefSubject<R, E, A, B>): B {
251
- concrete(self);
252
- return self.unsafeGet;
253
- }
@@ -1,70 +0,0 @@
1
- import type { Sink } from "../Push.js";
2
- import type { Push } from "../Push.js";
3
- import type { ModifiableRef, ReadableRef, WritableRef } from "../Ref.js";
4
- import type { SynchronizedRefSubject } from "@fncts/io/RefSubject/Synchronized/definition";
5
-
6
- import { PushTypeId } from "../Push.js";
7
- import { PushVariance } from "../Push.js";
8
- import { RefVariance } from "../Ref.js";
9
-
10
- /**
11
- * @tsplus type fncts.io.Push.RefSubject
12
- */
13
- export interface RefSubject<out R, in out E, in A, out B> extends Push<R, E, B>, Sink<R, E, A> {}
14
-
15
- /**
16
- * @tsplus type fncts.io.Push.RefSubjectOps
17
- */
18
- export interface RefSubjectOps {}
19
-
20
- export const RefSubject: RefSubjectOps = {};
21
-
22
- export declare namespace RefSubject {
23
- export type Synchronized<R, E, A, B> = SynchronizedRefSubject<R, E, A, B>;
24
- }
25
-
26
- export abstract class RefSubjectInternal<R, E, A, B>
27
- implements
28
- ReadableRef<R, never, B>,
29
- WritableRef<R, never, A>,
30
- ModifiableRef<R, R, never, never, A, B>,
31
- Push<R, E, B>,
32
- Sink<R, E, A>
33
- {
34
- readonly [PushTypeId]: PushTypeId = PushTypeId;
35
- declare [RefVariance]: {
36
- readonly _RA: (_: never) => R;
37
- readonly _RB: (_: never) => R;
38
- readonly _EA: (_: never) => never;
39
- readonly _EB: (_: never) => never;
40
- readonly _A: (_: A) => void;
41
- readonly _B: (_: never) => B;
42
- };
43
- declare [PushVariance]: {
44
- readonly _R: (_: never) => R;
45
- readonly _E: (_: never) => E;
46
- readonly _A: (_: A) => B;
47
- };
48
-
49
- abstract get get(): IO<R, never, B>;
50
-
51
- abstract set(value: A): IO<R, never, void>;
52
-
53
- abstract modify<C>(f: (b: B) => readonly [C, A], __tsplusTrace?: string): IO<R, never, C>;
54
-
55
- abstract run<R1>(emitter: Sink<R1, E, B>): IO<R | R1, never, void>;
56
-
57
- abstract error(cause: Cause<E>): IO<R, never, void>;
58
-
59
- abstract event(value: A): IO<R, never, void>;
60
-
61
- abstract get unsafeGet(): B;
62
- }
63
-
64
- /**
65
- * @tsplus static fncts.io.Push.RefSubjectOps concrete
66
- * @tsplus macro remove
67
- */
68
- export function concrete<R, E, A, B>(_: RefSubject<R, E, A, B>): asserts _ is RefSubjectInternal<R, E, A, B> {
69
- //
70
- }
@@ -1,5 +0,0 @@
1
- // codegen:start { preset: barrel, include: ./RefSubject/*.ts }
2
- export * from "./RefSubject/api.js";
3
- export * from "./RefSubject/Atomic.js";
4
- export * from "./RefSubject/definition.js";
5
- // codegen:end