@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
package/Scope/api.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { Lazy } from "@fncts/base/data/function/definition";
2
2
  import { UIO, IO } from "@fncts/io/IO/definition";
3
3
  import { Scope } from "@fncts/io/Scope/definition";
4
- import { Finalizer } from "@fncts/io/Scope/Finalizer";
5
4
  import { Exit } from "@fncts/base/data/Exit/definition";
5
+ import { Finalizer } from "@fncts/io/Scope/Finalizer";
6
6
  import { ExecutionStrategy } from "@fncts/base/data/ExecutionStrategy";
7
7
  import { Closeable } from "./definition.js";
8
8
  /**
@@ -15,6 +15,11 @@ export declare function addFinalizer(finalizer: Lazy<UIO<any>>, __tsplusTrace?:
15
15
  * @tsplus location "@fncts/io/Scope/api"
16
16
  */
17
17
  export declare function makeAddFinalizer(finalizer: Lazy<UIO<void>>, __tsplusTrace?: string): IO<Scope, never, void>;
18
+ /**
19
+ * @tsplus static fncts.io.ScopeOps addFinalizerExit
20
+ * @tsplus location "@fncts/io/Scope/api"
21
+ */
22
+ export declare function makeAddFinalizerExit(finalizer: (exit: Exit<any, any>) => UIO<any>, __tsplusTrace?: string): IO<Scope, never, void>;
18
23
  /**
19
24
  * @tsplus static fncts.io.ScopeOps concurrent
20
25
  * @tsplus static fncts.io.Scope.CloseableOps concurrent
@@ -63,3 +68,13 @@ export declare function unsafeMakeWith(executionStrategy: ExecutionStrategy, __t
63
68
  * @tsplus location "@fncts/io/Scope/api"
64
69
  */
65
70
  export declare function use<R, E, A>(io: Lazy<IO<R, E, A>>, __tsplusTrace?: string): (self: Scope.Closeable) => IO<Exclude<R, Scope>, E, A>;
71
+ /**
72
+ * @tsplus getter fncts.io.Scope awaitClose
73
+ * @tsplus location "@fncts/io/Scope/api"
74
+ */
75
+ export declare function awaitClose(scope: Scope): UIO<void>;
76
+ /**
77
+ * @tsplus static fncts.io.ScopeOps awaitClose
78
+ * @tsplus location "@fncts/io/Scope/api"
79
+ */
80
+ export declare const wait: IO<Scope, never, void>;
@@ -2,14 +2,13 @@ import { Channel } from "@fncts/io/Channel";
2
2
  import { Conc } from "@fncts/base/collection/immutable/Conc";
3
3
  /**
4
4
  * Sink is a data type that represent a channel that reads elements
5
- * of type `In`, handles input errors of type `InErr`, emits errors
6
- * of type `OutErr`, emits outputs of type `L` and ends with a value
7
- * of type `Z`.
5
+ * of type `In`, emits errors of type `OutErr`, emits outputs of type `Out` and ends with a value
6
+ * of type `Done`.
8
7
  *
9
8
  * @tsplus type fncts.io.Sink
10
9
  * @tsplus companion fncts.io.SinkOps
11
10
  */
12
- export declare class Sink<R, E, In, L, Z> {
13
- readonly channel: Channel<R, never, Conc<In>, unknown, E, Conc<L>, Z>;
14
- constructor(channel: Channel<R, never, Conc<In>, unknown, E, Conc<L>, Z>);
11
+ export declare class Sink<Env, OutErr, In, Out, Done> {
12
+ readonly channel: Channel<Env, never, Conc<In>, unknown, OutErr, Conc<Out>, Done>;
13
+ constructor(channel: Channel<Env, never, Conc<In>, unknown, OutErr, Conc<Out>, Done>);
15
14
  }
@@ -1,11 +1,15 @@
1
- import { IO } from "@fncts/io/IO/definition";
1
+ import { Environment } from "@fncts/base/data/Environment/definition";
2
+ import { Exit } from "@fncts/base/data/Exit/definition";
2
3
  import { Cause } from "@fncts/base/data/Cause/definition";
3
- import type { Sink } from "@fncts/io/Push/definition";
4
- import type { Subject } from "@fncts/io/Subject/definition";
5
- import { Multicast } from "@fncts/io/Push";
4
+ import { ExecutionStrategy } from "@fncts/base/data/ExecutionStrategy";
5
+ import type { Scope } from "../Scope.js";
6
+ import type { UnsafeSink } from "@fncts/io/Push/Sink";
7
+ import { HashSet as MutableHashSet } from "@fncts/base/collection/mutable/HashSet";
6
8
  import { PushTypeId, PushVariance } from "@fncts/io/Push/definition";
9
+ import { PSubject } from "@fncts/io/Subject/definition";
7
10
  import { SubjectTypeId } from "@fncts/io/Subject/definition";
8
- export declare class AtomicSubject<E, A> implements Subject<never, E, A> {
11
+ import { IO } from "../IO.js";
12
+ export declare class AtomicSubject<E, A> extends PSubject<Scope, never, E, E, A, A> {
9
13
  readonly [SubjectTypeId]: SubjectTypeId;
10
14
  readonly [PushTypeId]: PushTypeId;
11
15
  [PushVariance]: {
@@ -13,8 +17,14 @@ export declare class AtomicSubject<E, A> implements Subject<never, E, A> {
13
17
  readonly _E: (_: never) => E;
14
18
  readonly _A: (_: never) => A;
15
19
  };
16
- readonly stream: Multicast<never, E, A>;
17
- run<R>(emitter: Sink<R, E, A>): IO<R, never, unknown>;
18
- event(value: A): IO<never, never, void>;
19
- error(cause: Cause<E>): IO<never, never, void>;
20
+ get subscribers(): number;
21
+ protected sinks: MutableHashSet<readonly [UnsafeSink<any, E, A>, import("@fncts/base/data/Environment.js").Environment<any>, import("../Scope.js").Closeable]>;
22
+ protected interruptScopes: IO<never, never, void>;
23
+ readonly interrupt: IO<never, never, void>;
24
+ run<R1>(sink: UnsafeSink<R1, E, A>): IO<Scope | R1, never, void>;
25
+ onSuccess(value: A): IO<never, never, void>;
26
+ onFailure(cause: Cause<E>): IO<never, never, void>;
27
+ protected addSink<R, R1, B>(sink: UnsafeSink<R, E, A>, f: (scope: Scope) => IO<R1, never, B>): IO<Scope | R1, never, B>;
28
+ protected unsafeOnSuccess(a: A): import("../IO.js").UIO<void>;
29
+ protected unsafeOnFailure(cause: Cause<E>): import("../IO.js").UIO<void>;
20
30
  }
@@ -0,0 +1,17 @@
1
+ import { Future } from "@fncts/io/Future";
2
+ import { FiberId } from "@fncts/base/data/FiberId/definition";
3
+ import { Maybe, Nothing } from "@fncts/base/data/Maybe/definition";
4
+ import { Exit } from "@fncts/base/data/Exit/definition";
5
+ import { Equatable } from "@fncts/base/data/Equatable";
6
+ import type { AtomicReference } from "@fncts/base/internal/AtomicReference";
7
+ import { External, IO } from "../IO.js";
8
+ export declare class FutureRef<E, A> extends External<never, E, A> {
9
+ readonly fiberId: FiberId;
10
+ readonly current: AtomicReference<Maybe<Exit<E, A>>>;
11
+ version: number;
12
+ future: Future<E, A>;
13
+ constructor(fiberId: FiberId, current: AtomicReference<Maybe<Exit<E, A>>>);
14
+ toIO: IO<never, E, A>;
15
+ done(exit: Exit<E, A>): boolean;
16
+ reset(): void;
17
+ }
@@ -0,0 +1,19 @@
1
+ import { Maybe, Nothing, Just } from "@fncts/base/data/Maybe/definition";
2
+ import { Exit } from "@fncts/base/data/Exit/definition";
3
+ import type { Scope } from "../Scope.js";
4
+ import type { Subject } from "../Subject.js";
5
+ import type { Cause } from "@fncts/base/data/Cause";
6
+ import type { UnsafeSink } from "@fncts/io/Push/Sink";
7
+ import { AtomicReference } from "@fncts/base/internal/AtomicReference";
8
+ import { IO } from "../IO.js";
9
+ import { AtomicSubject } from "./Atomic.js";
10
+ export interface Hold<E, A> extends Subject<never, E, A> {
11
+ value: AtomicReference<Maybe<Exit<E, A>>>;
12
+ }
13
+ export declare class HoldSubject<E, A> extends AtomicSubject<E, A> implements Hold<E, A> {
14
+ readonly value: AtomicReference<Maybe<Exit<E, A>>>;
15
+ onSuccess(value: A): IO<never, never, void>;
16
+ onFailure(cause: Cause<E>): IO<never, never, void>;
17
+ run<R1>(sink: UnsafeSink<R1, E, A>): IO<Scope | R1, never, void>;
18
+ interrupt: IO<never, never, void>;
19
+ }
@@ -0,0 +1,41 @@
1
+ import { FiberId } from "@fncts/base/data/FiberId/definition";
2
+ import { Semaphore } from "@fncts/io/Semaphore";
3
+ import { Fiber } from "@fncts/io/Fiber/definition";
4
+ import { Exit } from "@fncts/base/data/Exit/definition";
5
+ import { Cause } from "@fncts/base/data/Cause/definition";
6
+ import { Either } from "@fncts/base/data/Either/definition";
7
+ import type { Runtime } from "@fncts/io/IO/runtime";
8
+ import type { UnsafeSink } from "@fncts/io/Push/Sink";
9
+ import type { Scope } from "@fncts/io/Scope";
10
+ import { IO } from "@fncts/io/IO";
11
+ import { PSynchronizedInternal } from "@fncts/io/Ref/Synchronized/definition";
12
+ import { PRefSubject } from "./RefSubject.js";
13
+ export declare class Atomic<R, E, A> extends PRefSubject<never, never, E, E, E, A, A> {
14
+ readonly fiberId: FiberId;
15
+ readonly initial: IO<R, E, A>;
16
+ readonly runtime: Runtime<R>;
17
+ readonly scope: Scope.Closeable;
18
+ constructor(fiberId: FiberId, initial: IO<R, E, A>, runtime: Runtime<R>, scope: Scope.Closeable);
19
+ readonly semaphore: import("../../Semaphore.js").Semaphore;
20
+ private subject;
21
+ private futureRef;
22
+ private fiber;
23
+ readonly interrupt: IO<never, never, void>;
24
+ readonly subscribers: number;
25
+ run<R1>(sink: UnsafeSink<R1, E, A>): IO<Scope | R1, never, void>;
26
+ onFailure(cause: Cause<E>): IO<never, never, void>;
27
+ onSuccess: (a: A, __tsplusTrace?: string) => IO<never, never, void>;
28
+ modify<C>(f: (a: A) => readonly [C, A], __tsplusTrace?: string): IO<never, E, C>;
29
+ modifyIO<R1, E1, B>(f: (a: A) => IO<R1, E1, readonly [B, A]>, __tsplusTrace?: string): IO<R1, E1 | E, B>;
30
+ match<EC, ED, C, D>(setError: (_: E) => EC, getError: (_: E) => ED, set: (_: C) => Either<EC, A>, get: (_: A) => Either<ED, D>, __tsplusTrace?: string): PSynchronizedInternal<never, never, EC, ED, C, D>;
31
+ matchAll<EC, ED, C, D>(setError: (_: E) => EC, getError: (_: E) => ED, setGetError: (_: E) => EC, set: (_: C) => (_: A) => Either<EC, A>, get: (_: A) => Either<ED, D>, __tsplusTrace?: string): PSynchronizedInternal<never, never, EC, ED, C, D>;
32
+ matchIO<RC, RD, EC, ED, C, D>(setError: (_: E) => EC, getError: (_: E) => ED, set: (_: C) => IO<RC, EC, A>, get: (_: A) => IO<RD, ED, D>, __tsplusTrace?: string): PSynchronizedInternal<RC, RD, EC, ED, C, D>;
33
+ matchAllIO<RC, RD, EC, ED, C, D>(setError: (_: E) => EC, getError: (_: E) => ED, setGetError: (_: E) => EC, set: (_: C) => (_: A) => IO<RC, EC, A>, get: (_: A) => IO<RD, ED, D>, __tsplusTrace?: string): PSynchronizedInternal<RC, RD, EC, ED, C, D>;
34
+ matchIOSubject<RC, RD, EI, EC, ED, C, D>(mapSetError: (_: E) => EC, mapGetError: (_: E) => ED, mapErrorInput: (_: EI) => E, mapSetErrorInput: (_: EC) => E, mapSet: (_: C) => IO<RC, EC, A>, mapGet: (_: A) => IO<RD, ED, D>, __tsplusTrace?: string): PRefSubject<RC, RD, EI, ED, EC, C, D>;
35
+ set(a: A, __tsplusTrace?: string): IO<never, never, void>;
36
+ get get(): IO<never, E, A>;
37
+ private sendEvent;
38
+ private getOrInit;
39
+ private interruptFiber;
40
+ private init;
41
+ }
@@ -0,0 +1,43 @@
1
+ import type { Atomic } from "./Atomic.js";
2
+ import type { Cause } from "@fncts/base/data/Cause";
3
+ import type { Either } from "@fncts/base/data/Either";
4
+ import type { UnsafeSink } from "@fncts/io/Push/Sink";
5
+ import type { PRef } from "@fncts/io/Ref";
6
+ import type { Scope } from "@fncts/io/Scope";
7
+ import { IO } from "@fncts/io/IO";
8
+ import { type PSynchronized } from "@fncts/io/Ref";
9
+ import { PRefSubject } from "./RefSubject.js";
10
+ export declare class Derived<EnvIn, EnvOut, ErrIn, ErrOut, ErrInRef, In, Out> extends PRefSubject<EnvIn, EnvOut, ErrIn, ErrOut, ErrInRef, In, Out> {
11
+ readonly use: <X>(f: <R, E0, A0>(_: {
12
+ ref: Atomic<R, E0, A0>;
13
+ mapSetError: (_: E0) => ErrInRef;
14
+ mapGetError: (_: E0) => ErrOut;
15
+ mapErrorInput: (_: ErrIn) => E0;
16
+ mapSetErrorInput: (_: ErrInRef) => E0;
17
+ mapSet: (a: In) => IO<EnvIn, ErrInRef, A0>;
18
+ mapGet: (a: A0) => IO<EnvOut, ErrOut, Out>;
19
+ }) => X) => X;
20
+ constructor(use: <X>(f: <R, E0, A0>(_: {
21
+ ref: Atomic<R, E0, A0>;
22
+ mapSetError: (_: E0) => ErrInRef;
23
+ mapGetError: (_: E0) => ErrOut;
24
+ mapErrorInput: (_: ErrIn) => E0;
25
+ mapSetErrorInput: (_: ErrInRef) => E0;
26
+ mapSet: (a: In) => IO<EnvIn, ErrInRef, A0>;
27
+ mapGet: (a: A0) => IO<EnvOut, ErrOut, Out>;
28
+ }) => X) => X);
29
+ subscribers: number;
30
+ interrupt: IO<never, never, void>;
31
+ onSuccess(value: In): IO<EnvIn, never, void>;
32
+ onFailure(cause: Cause<ErrIn>): IO<EnvIn, never, void>;
33
+ get get(): IO<EnvOut, ErrOut, Out>;
34
+ set(a: In, __tsplusTrace?: string): IO<EnvIn, ErrInRef, void>;
35
+ modify<C>(f: (b: Out) => readonly [C, In], __tsplusTrace?: string): IO<EnvIn | EnvOut, ErrOut | ErrInRef, C>;
36
+ modifyIO<R1, E1, C>(f: (b: Out) => IO<R1, E1, readonly [C, In]>, __tsplusTrace?: string): IO<EnvIn | EnvOut | R1, ErrOut | ErrInRef | E1, C>;
37
+ match<EC, ED, C, D>(ea: (_: ErrInRef) => EC, eb: (_: ErrOut) => ED, ca: (_: C) => Either<EC, In>, bd: (_: Out) => Either<ED, D>, __tsplusTrace?: string): PRef<EnvIn, EnvOut, EC, ED, C, D>;
38
+ matchAll<EC, ED, C, D>(ea: (_: ErrInRef) => EC, eb: (_: ErrOut) => ED, ec: (_: ErrOut) => EC, ca: (_: C) => (_: Out) => Either<EC, In>, bd: (_: Out) => Either<ED, D>, __tsplusTrace?: string): PRef<EnvIn | EnvOut, EnvOut, EC, ED, C, D>;
39
+ matchIO<RC, RD, EC, ED, C, D>(mapSetError: (_: ErrInRef) => EC, mapGetError: (_: ErrOut) => ED, mapSet: (_: C) => IO<RC, EC, In>, mapGet: (_: Out) => IO<RD, ED, D>, __tsplusTrace?: string): PSynchronized<EnvIn | RC, EnvOut | RD, EC, ED, C, D>;
40
+ matchAllIO<RC, RD, EC, ED, C, D>(mapSetError: (_: ErrInRef) => EC, mapGetError: (_: ErrOut) => ED, mapSetGetError: (_: ErrOut) => EC, mapSet: (_: C) => (_: Out) => IO<RC, EC, In>, mapGet: (_: Out) => IO<RD, ED, D>, __tsplusTrace?: string): PSynchronized<EnvIn | EnvOut | RC, EnvOut | RD, EC, ED, C, D>;
41
+ matchIOSubject<RC, RD, EI, EC, ED, C, D>(mapSetError: (_: ErrInRef) => EC, mapGetError: (_: ErrOut) => ED, mapErrorInput: (_: EI) => ErrIn, mapSetErrorInput: (_: EC) => ErrInRef, mapSet: (_: C) => IO<RC, EC, In>, mapGet: (_: Out) => IO<RD, ED, D>, __tsplusTrace?: string): PRefSubject<EnvIn | RC, EnvOut | RD, EI, ED, EC, C, D>;
42
+ run<R1>(sink: UnsafeSink<R1, ErrOut, Out>): IO<Scope | EnvOut | R1, never, void>;
43
+ }
@@ -0,0 +1,27 @@
1
+ import { PRef } from "@fncts/io/Ref/definition";
2
+ import { Either } from "@fncts/base/data/Either/definition";
3
+ import type { MappableRef, MappableSynchronized, ModifiableRef, ModifiableSynchronized, PSynchronized, ReadableRef, WritableRef } from "../../Ref.js";
4
+ import type { IO } from "@fncts/io/IO";
5
+ import { RefTypeId, RefVariance, SynchronizedTypeId } from "../../Ref.js";
6
+ import { PSubject } from "../definition.js";
7
+ export declare abstract class PRefSubject<EnvIn, EnvOut, ErrIn, ErrOut, ErrInRef, In, Out> extends PSubject<EnvIn, EnvOut, ErrIn, ErrOut, In, Out> implements PRef<EnvIn, EnvOut, ErrInRef, ErrOut, In, Out>, PSynchronized<EnvIn, EnvOut, ErrInRef, ErrOut, In, Out>, ReadableRef<EnvOut, ErrOut, Out>, WritableRef<EnvIn, ErrInRef, In>, ModifiableRef<EnvIn, EnvOut, ErrInRef, ErrOut, In, Out>, MappableRef<EnvIn, EnvOut, ErrInRef, ErrOut, In, Out>, ModifiableSynchronized<EnvIn, EnvOut, ErrInRef, ErrOut, In, Out>, MappableSynchronized<EnvIn, EnvOut, ErrInRef, ErrOut, In, Out> {
8
+ readonly [SynchronizedTypeId]: SynchronizedTypeId;
9
+ readonly [RefTypeId]: RefTypeId;
10
+ [RefVariance]: {
11
+ readonly _RA: (_: never) => EnvIn;
12
+ readonly _RB: (_: never) => EnvOut;
13
+ readonly _EA: (_: never) => ErrInRef;
14
+ readonly _EB: (_: never) => ErrOut;
15
+ readonly _A: (_: In) => void;
16
+ readonly _B: (_: never) => Out;
17
+ };
18
+ abstract get: IO<EnvOut, ErrOut, Out>;
19
+ abstract set(a: In, __tsplusTrace?: string): IO<EnvIn, ErrInRef, void>;
20
+ abstract modify<C>(f: (b: Out) => readonly [C, In], __tsplusTrace?: string): IO<EnvIn | EnvOut, ErrOut | ErrInRef, C>;
21
+ abstract modifyIO<R1, E1, C>(f: (b: Out) => IO<R1, E1, readonly [C, In]>, __tsplusTrace?: string): IO<EnvIn | EnvOut | R1, ErrOut | ErrInRef | E1, C>;
22
+ abstract match<EC, ED, C, D>(ea: (_: ErrInRef) => EC, eb: (_: ErrOut) => ED, ca: (_: C) => Either<EC, In>, bd: (_: Out) => Either<ED, D>): PRef<EnvIn, EnvOut, EC, ED, C, D>;
23
+ abstract matchAll<EC, ED, C, D>(ea: (_: ErrInRef) => EC, eb: (_: ErrOut) => ED, ec: (_: ErrOut) => EC, ca: (_: C) => (_: Out) => Either<EC, In>, bd: (_: Out) => Either<ED, D>): PRef<EnvIn | EnvOut, EnvOut, EC, ED, C, D>;
24
+ abstract matchIO<RC, RD, EC, ED, C, D>(mapSetError: (_: ErrInRef) => EC, mapGetError: (_: ErrOut) => ED, mapSet: (_: C) => IO<RC, EC, In>, mapGet: (_: Out) => IO<RD, ED, D>, __tsplusTrace?: string): PSynchronized<EnvIn | RC, EnvOut | RD, EC, ED, C, D>;
25
+ abstract matchAllIO<RC, RD, EC, ED, C, D>(mapSetError: (_: ErrInRef) => EC, mapGetError: (_: ErrOut) => ED, mapSetGetError: (_: ErrOut) => EC, mapSet: (_: C) => (_: Out) => IO<RC, EC, In>, mapGet: (_: Out) => IO<RD, ED, D>, __tsplusTrace?: string): PSynchronized<EnvIn | EnvOut | RC, EnvOut | RD, EC, ED, C, D>;
26
+ abstract matchIOSubject<RC, RD, EI, EC, ED, C, D>(mapSetError: (_: ErrInRef) => EC, mapGetError: (_: ErrOut) => ED, mapErrorInput: (_: EI) => ErrIn, mapSetErrorInput: (_: EC) => ErrInRef, mapSet: (_: C) => IO<RC, EC, In>, mapGet: (_: Out) => IO<RD, ED, D>, __tsplusTrace?: string): PRefSubject<EnvIn | RC, EnvOut | RD, EI, ED, EC, C, D>;
27
+ }
@@ -1,12 +1,24 @@
1
- import type { Push, Sink } from "../Push.js";
1
+ import { Scope } from "@fncts/io/Scope/definition";
2
+ import { URIO } from "@fncts/io/IO/definition";
3
+ import type { UnsafeSink } from "../Push/Sink.js";
4
+ import type { Cause } from "@fncts/base/data/Cause";
5
+ import type { IO } from "@fncts/io/IO";
6
+ import { Push, PushTypeId } from "../Push.js";
2
7
  export declare const SubjectTypeId: unique symbol;
3
8
  export type SubjectTypeId = typeof SubjectTypeId;
4
9
  /**
5
10
  * @tsplus type fncts.io.Push.Subject
6
11
  */
7
- export interface Subject<R, E, A> extends Push<R, E, A>, Sink<R, E, A> {
12
+ export declare abstract class PSubject<out EnvIn, out EnvOut, in ErrIn, out ErrOut, in In, Out> extends Push<EnvOut | Scope, ErrOut, Out> implements Push<EnvOut | Scope, ErrOut, Out>, UnsafeSink<EnvIn, ErrIn, In> {
13
+ readonly _pushOpCode: null;
14
+ readonly [PushTypeId]: PushTypeId;
8
15
  readonly [SubjectTypeId]: SubjectTypeId;
16
+ abstract onSuccess(value: In): IO<EnvIn, never, void>;
17
+ abstract onFailure(cause: Cause<ErrIn>): IO<EnvIn, never, void>;
18
+ abstract interrupt: URIO<EnvIn, void>;
19
+ abstract subscribers: number;
9
20
  }
21
+ export type Subject<R, E, A> = PSubject<R, R, E, E, A, A>;
10
22
  /**
11
23
  * @tsplus type fncts.io.Push.SubjectOps
12
24
  */
package/Subject.d.ts CHANGED
@@ -1,3 +1,5 @@
1
1
  export * from "./Subject/api.js";
2
2
  export * from "./Subject/Atomic.js";
3
+ export * from "./Subject/DeferredRef.js";
3
4
  export * from "./Subject/definition.js";
5
+ export * from "./Subject/Hold.js";
@@ -8,7 +8,6 @@ import { Stream } from "@fncts/io/Stream";
8
8
  export declare const SubscriptionRefTypeId: unique symbol;
9
9
  export type SubscriptionRefTypeId = typeof SubscriptionRefTypeId;
10
10
  export declare class SubscriptionRefInternal<A> extends PSynchronizedInternal<never, never, never, never, A, A> {
11
- readonly semaphore: Semaphore;
12
11
  readonly hub: Hub<A>;
13
12
  readonly ref: Ref<A>;
14
13
  readonly [SubscriptionRefTypeId]: SubscriptionRefTypeId;
@@ -3,12 +3,26 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.foreachDiscardExec = foreachDiscardExec;
6
7
  exports.foreachExec = foreachExec;
8
+ exports.foreachWithIndexDiscardExec = foreachWithIndexDiscardExec;
7
9
  var tsplus_module_1 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/io/IO/api"));
8
- var tsplus_module_2 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/io/IO/api/foreachConcurrent"));
9
- var tsplus_module_3 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/io/IO/api/concurrency"));
10
- var tsplus_module_4 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/data/ExecutionStrategy"));
10
+ var tsplus_module_2 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/collection/Iterable/api"));
11
+ var tsplus_module_3 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/io/IO/api/foreachConcurrent"));
12
+ var tsplus_module_4 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/io/IO/api/concurrency"));
13
+ var tsplus_module_5 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/data/ExecutionStrategy"));
11
14
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
15
+ /**
16
+ * Applies the function `f` to each element of the `Iterable<A>` in parallel,
17
+ * and returns the results in a new `Conc<B>`.
18
+ *
19
+ * For a sequential version of this method, see `foreach`.
20
+ *
21
+ * @tsplus static fncts.io.IOOps foreachWithIndexDiscardExec
22
+ */
23
+ function foreachWithIndexDiscardExec(as, es, f, __tsplusTrace) {
24
+ return tsplus_module_5.match_(() => tsplus_module_1.foreachWithIndexDiscard(as, f, __tsplusTrace), () => tsplus_module_4.withConcurrencyUnboundedMask(restore => tsplus_module_3.foreachConcurrent(tsplus_module_2.zipWithIndex(as), ([i, a]) => restore(f(i, a)), __tsplusTrace)), fiberBound => tsplus_module_4.withConcurrencyMask(fiberBound, restore => tsplus_module_3.foreachConcurrent(tsplus_module_2.zipWithIndex(as), ([i, a]) => restore(f(i, a)), __tsplusTrace)))(es);
25
+ }
12
26
  /**
13
27
  * Applies the function `f` to each element of the `Iterable<A>` in parallel,
14
28
  * and returns the results in a new `Conc<B>`.
@@ -18,6 +32,17 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
18
32
  * @tsplus static fncts.io.IOOps foreachExec
19
33
  */
20
34
  function foreachExec(as, es, f, __tsplusTrace) {
21
- return tsplus_module_4.match_(() => tsplus_module_1.foreach(as, f, __tsplusTrace), () => tsplus_module_3.withConcurrencyUnboundedMask(restore => tsplus_module_2.foreachConcurrent(as, a => restore(f(a)), __tsplusTrace)), fiberBound => tsplus_module_3.withConcurrencyMask(fiberBound, restore => tsplus_module_2.foreachConcurrent(as, a => restore(f(a)), __tsplusTrace)))(es);
35
+ return tsplus_module_5.match_(() => tsplus_module_1.foreach(as, f, __tsplusTrace), () => tsplus_module_4.withConcurrencyUnboundedMask(restore => tsplus_module_3.foreachConcurrent(as, a => restore(f(a)), __tsplusTrace)), fiberBound => tsplus_module_4.withConcurrencyMask(fiberBound, restore => tsplus_module_3.foreachConcurrent(as, a => restore(f(a)), __tsplusTrace)))(es);
36
+ }
37
+ /**
38
+ * Applies the function `f` to each element of the `Iterable<A>` in parallel,
39
+ * and returns the results in a new `Conc<B>`.
40
+ *
41
+ * For a sequential version of this method, see `foreach`.
42
+ *
43
+ * @tsplus static fncts.io.IOOps foreachExecDiscard
44
+ */
45
+ function foreachDiscardExec(as, es, f, __tsplusTrace) {
46
+ return tsplus_module_5.match_(() => tsplus_module_1.foreachDiscard(as, f, __tsplusTrace), () => tsplus_module_4.withConcurrencyUnboundedMask(restore => tsplus_module_3.foreachConcurrentDiscard(as, a => restore(f(a)), __tsplusTrace)), fiberBound => tsplus_module_4.withConcurrencyMask(fiberBound, restore => tsplus_module_3.foreachConcurrentDiscard(as, a => restore(f(a)), __tsplusTrace)))(es);
22
47
  }
23
48
  //# sourceMappingURL=foreachExec.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"foreachExec.cjs","names":["foreachExec","as","es","f","__tsplusTrace","tsplus_module_4","match_","tsplus_module_1","foreach","tsplus_module_3","withConcurrencyUnboundedMask","restore","tsplus_module_2","foreachConcurrent","a","fiberBound","withConcurrencyMask"],"sources":["../../../_src/IO/api/foreachExec.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;AAAA;;;;;;;;AAQM,SAAUA,WAAWA,CACzBC,EAAe,EACfC,EAAqB,EACrBC,CAAwB,EACxBC,aAAsB;EAEtB,OAAOC,eAAA,CAAAC,MAAA,CACL,MAAMC,eAAA,CAAAC,OAAA,CAAWP,EAAE,EAAEE,CAAC,EAHxBC,aAAA,CAGyB,EACvB,MAAMK,eAAA,CAAAC,4BAAA,CAAiCC,OAAO,IAAKC,eAAA,CAAAC,iBAAA,CAAqBZ,EAAE,EAAGa,CAAC,IAAKH,OAAO,CAACR,CAAC,CAACW,CAAC,CAAC,CAAC,EAJlGV,aAAA,CAImG,CAAC,EACjGW,UAAU,IAAKN,eAAA,CAAAO,mBAAA,CAAuBD,UAAU,EAAGJ,OAAO,IAAKC,eAAA,CAAAC,iBAAA,CAAqBZ,EAAE,EAAGa,CAAC,IAAKH,OAAO,CAACR,CAAC,CAACW,CAAC,CAAC,CAAC,EAL/GV,aAAA,CAKgH,CAAC,EAH1GF,EAAE,CAIR;AACH","ignoreList":[]}
1
+ {"version":3,"file":"foreachExec.cjs","names":["foreachWithIndexDiscardExec","as","es","f","__tsplusTrace","tsplus_module_5","match_","tsplus_module_1","foreachWithIndexDiscard","tsplus_module_4","withConcurrencyUnboundedMask","restore","tsplus_module_3","foreachConcurrent","tsplus_module_2","zipWithIndex","i","a","fiberBound","withConcurrencyMask","foreachExec","foreach","foreachDiscardExec","foreachDiscard","foreachConcurrentDiscard"],"sources":["../../../_src/IO/api/foreachExec.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;AAAA;;;;;;;;AAQM,SAAUA,2BAA2BA,CACzCC,EAAe,EACfC,EAAqB,EACrBC,CAAuC,EACvCC,aAAsB;EAEtB,OAAOC,eAAA,CAAAC,MAAA,CACL,MAAMC,eAAA,CAAAC,uBAAA,CAA2BP,EAAE,EAAEE,CAAC,EAHxCC,aAAA,CAGyC,EACvC,MACEK,eAAA,CAAAC,4BAAA,CAAiCC,OAAO,IAAKC,eAAA,CAAAC,iBAAA,CAAAC,eAAA,CAAAC,YAAA,CAAqBd,EAAE,GAAe,CAAC,CAACe,CAAC,EAAEC,CAAC,CAAC,KAAKN,OAAO,CAACR,CAAC,CAACa,CAAC,EAAEC,CAAC,CAAC,CAAC,EALnHb,aAAA,CAKoH,CAAC,EAClHc,UAAU,IACTT,eAAA,CAAAU,mBAAA,CAAuBD,UAAU,EAAGP,OAAO,IACzCC,eAAA,CAAAC,iBAAA,CAAAC,eAAA,CAAAC,YAAA,CAAqBd,EAAE,GAAe,CAAC,CAACe,CAAC,EAAEC,CAAC,CAAC,KAAKN,OAAO,CAACR,CAAC,CAACa,CAAC,EAAEC,CAAC,CAAC,CAAC,EARxEb,aAAA,CAQyE,CACpE,EAPEF,EAAE,CAQR;AACH;AAEA;;;;;;;;AAQM,SAAUkB,WAAWA,CACzBnB,EAAe,EACfC,EAAqB,EACrBC,CAAwB,EACxBC,aAAsB;EAEtB,OAAOC,eAAA,CAAAC,MAAA,CACL,MAAMC,eAAA,CAAAc,OAAA,CAAWpB,EAAE,EAAEE,CAAC,EAHxBC,aAAA,CAGyB,EACvB,MAAMK,eAAA,CAAAC,4BAAA,CAAiCC,OAAO,IAAKC,eAAA,CAAAC,iBAAA,CAAqBZ,EAAE,EAAGgB,CAAC,IAAKN,OAAO,CAACR,CAAC,CAACc,CAAC,CAAC,CAAC,EAJlGb,aAAA,CAImG,CAAC,EACjGc,UAAU,IAAKT,eAAA,CAAAU,mBAAA,CAAuBD,UAAU,EAAGP,OAAO,IAAKC,eAAA,CAAAC,iBAAA,CAAqBZ,EAAE,EAAGgB,CAAC,IAAKN,OAAO,CAACR,CAAC,CAACc,CAAC,CAAC,CAAC,EAL/Gb,aAAA,CAKgH,CAAC,EAH1GF,EAAE,CAIR;AACH;AAEA;;;;;;;;AAQM,SAAUoB,kBAAkBA,CAChCrB,EAAe,EACfC,EAAqB,EACrBC,CAAwB,EACxBC,aAAsB;EAEtB,OAAOC,eAAA,CAAAC,MAAA,CACL,MAAMC,eAAA,CAAAgB,cAAA,CAAkBtB,EAAE,EAAEE,CAAC,EAH/BC,aAAA,CAGgC,EAC9B,MAAMK,eAAA,CAAAC,4BAAA,CAAiCC,OAAO,IAAKC,eAAA,CAAAY,wBAAA,CAA4BvB,EAAE,EAAGgB,CAAC,IAAKN,OAAO,CAACR,CAAC,CAACc,CAAC,CAAC,CAAC,EAJzGb,aAAA,CAI0G,CAAC,EACxGc,UAAU,IACTT,eAAA,CAAAU,mBAAA,CAAuBD,UAAU,EAAGP,OAAO,IAAKC,eAAA,CAAAY,wBAAA,CAA4BvB,EAAE,EAAGgB,CAAC,IAAKN,OAAO,CAACR,CAAC,CAACc,CAAC,CAAC,CAAC,EANxGb,aAAA,CAMyG,CAAC,EAJnGF,EAAE,CAKR;AACH","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=Bounds.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Bounds.cjs","names":[],"sources":["../../_src/Push/Bounds.ts"],"sourcesContent":[null],"mappings":"","ignoreList":[]}
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.UnboundedStrategy = exports.SwitchStrategy = exports.FlattenStrategy = exports.ExhaustStrategy = void 0;
7
+ exports.makeBounded = makeBounded;
8
+ var tsplus_module_1 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/io/IO/api/forkIn"));
9
+ var tsplus_module_2 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/io/Fiber/api/interrupt"));
10
+ var tsplus_module_3 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/io/IO/api"));
11
+ var tsplus_module_4 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/io/Ref/Synchronized/api"));
12
+ var tsplus_module_5 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/io/Fiber/api/join"));
13
+ var tsplus_module_6 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/io/Ref/api/get"));
14
+ var tsplus_module_7 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/io/Fiber/constructors"));
15
+ var tsplus_module_8 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/io/Ref/Synchronized/constructors"));
16
+ var tsplus_module_9 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/io/Ref/api/set"));
17
+ var tsplus_module_10 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/io/IO/api/interrupt"));
18
+ var tsplus_module_11 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/io/FiberSet"));
19
+ var tsplus_module_12 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/io/Fiber/api/joinAll"));
20
+ var tsplus_module_13 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/io/IO/api/scopeWith"));
21
+ var tsplus_module_14 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/collection/immutable/HashSet/api"));
22
+ var tsplus_module_15 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/io/Ref/api/modify"));
23
+ var tsplus_module_16 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/io/Scope/api"));
24
+ var tsplus_module_17 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/io/Semaphore/constructors"));
25
+ var tsplus_module_18 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/io/Ref/constructors"));
26
+ var _internal = /*#__PURE__*/require("@fncts/io/Push/internal");
27
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
28
+ const fileName_1 = "(@fncts/io) src/Push/FlattenStrategy.ts";
29
+ /**
30
+ * @tsplus type fncts.io.Push.FlattenStrategy
31
+ * @tsplus companion fncts.io.Push.FlattenStrategyOps
32
+ */
33
+ class FlattenStrategy {}
34
+ exports.FlattenStrategy = FlattenStrategy;
35
+ function withScopedFork(f, executionStrategy) {
36
+ return (0, _internal.withScope)(scope => f(io => tsplus_module_1.forkIn(scope, fileName_1 + ":22:50")(io), scope), executionStrategy);
37
+ }
38
+ /**
39
+ * @tsplus static fncts.io.Push.FlattenStrategyOps Switch
40
+ */
41
+ const SwitchStrategy = exports.SwitchStrategy = /*#__PURE__*/new class SwitchStrategy extends FlattenStrategy {
42
+ withFork(f, executionStrategy) {
43
+ return withScopedFork((fork, scope) => tsplus_module_3.flatMap(ref => tsplus_module_3.zipRight(tsplus_module_3.flatMap(fiber => tsplus_module_5.join(fiber, fileName_1 + ":38:45"), fileName_1 + ":38:28")(tsplus_module_6.get(ref, fileName_1 + ":38:16")), fileName_1 + ":37:84")(f(io => tsplus_module_4.updateIO(fiber => tsplus_module_3.zipRight(fork(io), fileName_1 + ":37:64")(tsplus_module_2.interrupt(fiber)), fileName_1 + ":37:35")(ref), scope)), fileName_1 + ":35:70")(tsplus_module_8.makeSynchronized(() => tsplus_module_7.unit, fileName_1 + ":35:30")), executionStrategy);
44
+ }
45
+ }();
46
+ /**
47
+ * @tsplus static fncts.io.Push.FlattenStrategyOps Exhaust
48
+ */
49
+ const ExhaustStrategy = exports.ExhaustStrategy = /*#__PURE__*/new class ExhaustStrategy extends FlattenStrategy {
50
+ withFork(f, executionStrategy) {
51
+ return withScopedFork((fork, scope) => tsplus_module_3.flatMap(ref => tsplus_module_3.zipRight(tsplus_module_3.flatMap(fiber => {
52
+ if (fiber) {
53
+ return tsplus_module_5.join(fiber, fileName_1 + ":70:29");
54
+ } else {
55
+ return tsplus_module_3.unit;
56
+ }
57
+ }, fileName_1 + ":68:28")(tsplus_module_6.get(ref, fileName_1 + ":68:16")), fileName_1 + ":67:16")(f(io => tsplus_module_4.updateIO(fiber => {
58
+ if (fiber) {
59
+ return tsplus_module_3.succeedNow(fiber, fileName_1 + ":61:41");
60
+ } else {
61
+ return fork(tsplus_module_10.onExit(() => tsplus_module_9.set(null, fileName_1 + ":63:56")(ref), fileName_1 + ":63:42")(io));
62
+ }
63
+ }, fileName_1 + ":59:29")(ref), scope)), fileName_1 + ":55:79")(tsplus_module_8.makeSynchronized(() => null, fileName_1 + ":55:30")), executionStrategy);
64
+ }
65
+ }();
66
+ /**
67
+ * @tsplus static fncts.io.Push.FlattenStrategyOps Unbounded
68
+ */
69
+ const UnboundedStrategy = exports.UnboundedStrategy = /*#__PURE__*/new class UnboundedStrategy extends FlattenStrategy {
70
+ withFork(f) {
71
+ return tsplus_module_13.scopeWith(scope => tsplus_module_3.flatMap(fiberSet => tsplus_module_3.zipRight(tsplus_module_12.joinAll(fiberSet, fileName_1 + ":87:108"), fileName_1 + ":87:94")(f(io => tsplus_module_11.run(io)(fiberSet), scope)), fileName_1 + ":87:43")(tsplus_module_11.make()), fileName_1 + ":86:24");
72
+ }
73
+ }();
74
+ /**
75
+ * @tsplus static fncts.io.Push.FlattenStrategyOps Bounded
76
+ */
77
+ function makeBounded(capacity) {
78
+ return new BoundedStrategy(capacity);
79
+ }
80
+ class BoundedStrategy extends FlattenStrategy {
81
+ constructor(capacity) {
82
+ super();
83
+ this.capacity = capacity;
84
+ }
85
+ withFork(f, executionStrategy) {
86
+ return withScopedFork((fork, scope) => tsplus_module_3.flatMap(ref => tsplus_module_3.flatMap(fibers => {
87
+ if (fibers.size > 0) {
88
+ return tsplus_module_12.joinAll(fibers, fileName_1 + ":128:35");
89
+ } else {
90
+ return tsplus_module_3.unit;
91
+ }
92
+ }, fileName_1 + ":126:26")(tsplus_module_6.get(ref, fileName_1 + ":126:14")), fileName_1 + ":125:19")(tsplus_module_3.flatMap(ref => tsplus_module_3.flatMap(semaphore => tsplus_module_3.map(() => ref, fileName_1 + ":113:12")(f(io => tsplus_module_3.flatMap(fiber => tsplus_module_3.flatMap(() => tsplus_module_3.map(() => void 0, fileName_1 + ":119:20")(tsplus_module_16.addFinalizer(() => tsplus_module_15.update(set => tsplus_module_14.remove(fiber)(set), fileName_1 + ":119:50")(ref), fileName_1 + ":119:39")(scope)), fileName_1 + ":118:20")(tsplus_module_15.update(set => tsplus_module_14.add(fiber)(set), fileName_1 + ":118:31")(ref)), fileName_1 + ":117:34")(fork(semaphore.withPermit(io))), scope)), fileName_1 + ":112:30")(tsplus_module_17.makeSemaphore(this.capacity, fileName_1 + ":112:45")), fileName_1 + ":111:30")(tsplus_module_18.make(() => tsplus_module_14.empty(), fileName_1 + ":111:39"))), executionStrategy);
93
+ }
94
+ }
95
+ //# sourceMappingURL=FlattenStrategy.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlattenStrategy.cjs","names":["_internal","require","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","FlattenStrategy","exports","withScopedFork","executionStrategy","withScope","scope","io","tsplus_module_1","forkIn","fileName_1","SwitchStrategy","withFork","fork","tsplus_module_3","flatMap","ref","zipRight","fiber","tsplus_module_5","join","tsplus_module_6","tsplus_module_4","updateIO","tsplus_module_2","interrupt","tsplus_module_8","makeSynchronized","tsplus_module_7","unit","ExhaustStrategy","succeedNow","tsplus_module_10","onExit","tsplus_module_9","UnboundedStrategy","tsplus_module_13","scopeWith","fiberSet","tsplus_module_12","joinAll","tsplus_module_11","run","make","makeBounded","capacity","BoundedStrategy","constructor","fibers","size","semaphore","map","tsplus_module_16","addFinalizer","tsplus_module_15","update","tsplus_module_14","remove","add","withPermit","tsplus_module_17","makeSemaphore","tsplus_module_18","empty"],"sources":["../../_src/Push/FlattenStrategy.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.withBuffers = exports.IndexedBuffer = void 0;
7
+ var tsplus_module_1 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/io/IO/api"));
8
+ var tsplus_module_2 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/io/Future/api"));
9
+ var tsplus_module_3 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/io/Future/constructors"));
10
+ var tsplus_module_4 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/data/Exit/constructors"));
11
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
12
+ const fileName_1 = "(@fncts/io) src/Push/IndexedBuffer.ts";
13
+ class IndexedBuffer {
14
+ constructor(ready, future, sink, onDone) {
15
+ this.ready = ready;
16
+ this.future = future;
17
+ this.sink = sink;
18
+ this.onDone = onDone;
19
+ this.buffer = [];
20
+ }
21
+ onSuccess(value) {
22
+ if (this.ready) {
23
+ if (this.buffer.length === 0) {
24
+ return this.sink.onSuccess(value);
25
+ }
26
+ this.buffer.push(value);
27
+ const b = this.buffer;
28
+ this.buffer = [];
29
+ return tsplus_module_1.foreach(b, this.sink.onSuccess, fileName_1 + ":22:24");
30
+ } else {
31
+ this.buffer.push(value);
32
+ return tsplus_module_1.unit;
33
+ }
34
+ }
35
+ get onEnd() {
36
+ return tsplus_module_1.zipRight(tsplus_module_1.defer(() => {
37
+ if (this.buffer.length === 0) {
38
+ return this.onDone;
39
+ }
40
+ const b = this.buffer;
41
+ this.buffer = [];
42
+ return tsplus_module_1.zipRight(this.onDone, fileName_1 + ":38:52")(tsplus_module_1.foreach(b, this.sink.onSuccess, fileName_1 + ":38:26"));
43
+ }, fileName_1 + ":32:15"), fileName_1 + ":31:26")(tsplus_module_2.wait(this.future, fileName_1 + ":31:18"));
44
+ }
45
+ }
46
+ exports.IndexedBuffer = IndexedBuffer;
47
+ const withBuffers = (size, sink, id) => {
48
+ const buffers = new Map();
49
+ const last = size - 1;
50
+ for (let i = 0; i < size; i++) {
51
+ const future = tsplus_module_3.unsafeMake(id);
52
+ const ready = i === 0;
53
+ if (i === 0) {
54
+ tsplus_module_2.unsafeDone(tsplus_module_1.unit, fileName_1 + ":60:24")(future);
55
+ }
56
+ const onDone = i === last ? tsplus_module_1.unit : tsplus_module_1.defer(() => {
57
+ const next = buffers.get(i + 1);
58
+ next.ready = true;
59
+ return tsplus_module_2.done(tsplus_module_4.unit, fileName_1 + ":68:36")(next.future);
60
+ }, fileName_1 + ":65:19");
61
+ buffers.set(i, new IndexedBuffer(ready, future, sink, onDone));
62
+ }
63
+ return {
64
+ buffers,
65
+ onSuccess: (index, value) => buffers.get(index).onSuccess(value),
66
+ onEnd: index => buffers.get(index).onEnd
67
+ };
68
+ };
69
+ exports.withBuffers = withBuffers;
70
+ //# sourceMappingURL=IndexedBuffer.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndexedBuffer.cjs","names":["IndexedBuffer","constructor","ready","future","sink","onDone","buffer","onSuccess","value","length","push","b","tsplus_module_1","foreach","fileName_1","unit","onEnd","zipRight","defer","tsplus_module_2","wait","exports","withBuffers","size","id","buffers","Map","last","i","tsplus_module_3","unsafeMake","unsafeDone","next","get","done","tsplus_module_4","set","index"],"sources":["../../_src/Push/IndexedBuffer.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Unordered = exports.Switch = exports.Ordered = exports.MergeStrategy = void 0;
7
+ var tsplus_module_1 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/io/IO/api/foreachExec"));
8
+ var tsplus_module_2 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/data/Cause/api"));
9
+ var tsplus_module_3 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/io/Push/Sink"));
10
+ var tsplus_module_4 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/io/IO/api"));
11
+ var _IndexedBuffer = /*#__PURE__*/require("./IndexedBuffer.cjs");
12
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
13
+ const fileName_1 = "(@fncts/io) src/Push/MergeStrategy.ts";
14
+ class MergeStrategy {}
15
+ exports.MergeStrategy = MergeStrategy;
16
+ class Unordered extends MergeStrategy {
17
+ constructor(executionStrategy) {
18
+ super();
19
+ this.executionStrategy = executionStrategy;
20
+ }
21
+ runMerge(ps, sink) {
22
+ return tsplus_module_1.foreachDiscardExec(ps, this.executionStrategy, p => p.run(sink), fileName_1 + ":22:33");
23
+ }
24
+ }
25
+ exports.Unordered = Unordered;
26
+ class Ordered extends MergeStrategy {
27
+ constructor(executionStrategy) {
28
+ super();
29
+ this.executionStrategy = executionStrategy;
30
+ }
31
+ runMerge(ps, sink) {
32
+ return tsplus_module_4.fiberIdWith(fiberId => {
33
+ const buffers = (0, _IndexedBuffer.withBuffers)(ps.length, sink, fiberId);
34
+ return tsplus_module_1.foreachWithIndexDiscardExec(ps, this.executionStrategy, (index, p) => tsplus_module_4.zipRight(buffers.onEnd(index), fileName_1 + ":46:14")(p.run(tsplus_module_3.unsafeMakeSink(value => buffers.onSuccess(index, value), cause => tsplus_module_2.isInterruptedOnly(cause) ? buffers.onEnd(index) : sink.onFailure(cause)))), fileName_1 + ":37:44");
35
+ });
36
+ }
37
+ }
38
+ exports.Ordered = Ordered;
39
+ class Switch extends MergeStrategy {
40
+ runMerge(ps, sink) {
41
+ return tsplus_module_4.foreachDiscard(ps, p => p.run(sink), fileName_1 + ":57:29");
42
+ }
43
+ }
44
+ exports.Switch = Switch;
45
+ //# sourceMappingURL=MergeStrategy.cjs.map