@fncts/io 0.0.35 → 0.0.37

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 (76) hide show
  1. package/Fiber/constructors.d.ts +5 -0
  2. package/Push/api.d.ts +70 -41
  3. package/Push/definition.d.ts +11 -13
  4. package/Push/internal.d.ts +7 -11
  5. package/RefSubject/Atomic.d.ts +8 -11
  6. package/RefSubject/Synchronized/definition.d.ts +4 -6
  7. package/RefSubject/api.d.ts +0 -1
  8. package/RefSubject/definition.d.ts +6 -8
  9. package/STM/definition.d.ts +17 -0
  10. package/Sink/api.d.ts +6 -6
  11. package/Subject/Atomic.d.ts +4 -6
  12. package/Subject/definition.d.ts +2 -2
  13. package/_cjs/Fiber/constructors.cjs +10 -2
  14. package/_cjs/Fiber/constructors.cjs.map +1 -1
  15. package/_cjs/IO/definition.cjs.map +1 -1
  16. package/_cjs/Layer/api.cjs.map +1 -1
  17. package/_cjs/Push/api.cjs +206 -175
  18. package/_cjs/Push/api.cjs.map +1 -1
  19. package/_cjs/Push/definition.cjs +12 -13
  20. package/_cjs/Push/definition.cjs.map +1 -1
  21. package/_cjs/Push/internal.cjs +37 -29
  22. package/_cjs/Push/internal.cjs.map +1 -1
  23. package/_cjs/RefSubject/Atomic.cjs +15 -19
  24. package/_cjs/RefSubject/Atomic.cjs.map +1 -1
  25. package/_cjs/RefSubject/Synchronized/definition.cjs +9 -10
  26. package/_cjs/RefSubject/Synchronized/definition.cjs.map +1 -1
  27. package/_cjs/RefSubject/api.cjs +5 -6
  28. package/_cjs/RefSubject/api.cjs.map +1 -1
  29. package/_cjs/RefSubject/definition.cjs.map +1 -1
  30. package/_cjs/STM/api.cjs +2 -2
  31. package/_cjs/STM/api.cjs.map +1 -1
  32. package/_cjs/STM/definition.cjs.map +1 -1
  33. package/_cjs/Sink/api.cjs +13 -13
  34. package/_cjs/Sink/api.cjs.map +1 -1
  35. package/_cjs/Subject/Atomic.cjs +4 -5
  36. package/_cjs/Subject/Atomic.cjs.map +1 -1
  37. package/_mjs/Fiber/constructors.mjs +7 -1
  38. package/_mjs/Fiber/constructors.mjs.map +1 -1
  39. package/_mjs/IO/definition.mjs.map +1 -1
  40. package/_mjs/Layer/api.mjs.map +1 -1
  41. package/_mjs/Push/api.mjs +194 -173
  42. package/_mjs/Push/api.mjs.map +1 -1
  43. package/_mjs/Push/definition.mjs +9 -10
  44. package/_mjs/Push/definition.mjs.map +1 -1
  45. package/_mjs/Push/internal.mjs +33 -22
  46. package/_mjs/Push/internal.mjs.map +1 -1
  47. package/_mjs/RefSubject/Atomic.mjs +15 -19
  48. package/_mjs/RefSubject/Atomic.mjs.map +1 -1
  49. package/_mjs/RefSubject/Synchronized/definition.mjs +9 -10
  50. package/_mjs/RefSubject/Synchronized/definition.mjs.map +1 -1
  51. package/_mjs/RefSubject/api.mjs +6 -7
  52. package/_mjs/RefSubject/api.mjs.map +1 -1
  53. package/_mjs/RefSubject/definition.mjs.map +1 -1
  54. package/_mjs/STM/api.mjs +2 -2
  55. package/_mjs/STM/api.mjs.map +1 -1
  56. package/_mjs/STM/definition.mjs.map +1 -1
  57. package/_mjs/Sink/api.mjs +10 -10
  58. package/_mjs/Sink/api.mjs.map +1 -1
  59. package/_mjs/Subject/Atomic.mjs +4 -5
  60. package/_mjs/Subject/Atomic.mjs.map +1 -1
  61. package/_src/Fiber/constructors.ts +5 -0
  62. package/_src/IO/definition.ts +0 -1
  63. package/_src/Layer/api.ts +0 -1
  64. package/_src/Push/api.ts +270 -335
  65. package/_src/Push/definition.ts +13 -17
  66. package/_src/Push/internal.ts +63 -31
  67. package/_src/RefSubject/Atomic.ts +16 -22
  68. package/_src/RefSubject/Synchronized/definition.ts +6 -9
  69. package/_src/RefSubject/api.ts +9 -12
  70. package/_src/RefSubject/definition.ts +6 -8
  71. package/_src/STM/api.ts +0 -5
  72. package/_src/STM/definition.ts +6 -0
  73. package/_src/Sink/api.ts +9 -9
  74. package/_src/Subject/Atomic.ts +6 -8
  75. package/_src/Subject/definition.ts +2 -2
  76. package/package.json +2 -2
package/_cjs/Push/api.cjs CHANGED
@@ -10,6 +10,12 @@ exports.combineLatest = exports.asyncInterrupt = void 0;
10
10
  exports.combineLatestWith = combineLatestWith;
11
11
  exports.debounce = debounce;
12
12
  exports.defer = defer;
13
+ exports.exhaustMap = void 0;
14
+ exports.exhaustMapIO = exhaustMapIO;
15
+ exports.filter = filter;
16
+ exports.filterIO = filterIO;
17
+ exports.filterMap = filterMap;
18
+ exports.filterMapIO = filterMapIO;
13
19
  exports.flatMap = void 0;
14
20
  exports.flatMapConcurrent = flatMapConcurrent;
15
21
  exports.flatten = exports.flatMapConcurrentUnbounded = exports.flatMapConcurrentBounded = void 0;
@@ -24,14 +30,14 @@ exports.mapIO = void 0;
24
30
  exports.merge = merge;
25
31
  exports.mergeAll = void 0;
26
32
  exports.multicast = multicast;
27
- exports.never = void 0;
28
- exports.observe = observe;
33
+ exports.observe = exports.never = void 0;
29
34
  exports.repeatIOMaybe = repeatIOMaybe;
30
35
  exports.runCollect = runCollect;
31
36
  exports.runDrain = runDrain;
32
37
  exports.scoped = void 0;
33
38
  exports.succeed = succeed;
34
- exports.switchMap = switchMap;
39
+ exports.switchMapIO = exports.switchMap = void 0;
40
+ exports.tap = tap;
35
41
  exports.transform = void 0;
36
42
  exports.unfold = unfold;
37
43
  exports.unfoldIO = void 0;
@@ -48,38 +54,34 @@ var tsplus_module_6 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require
48
54
  var tsplus_module_7 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/IO/runtime"));
49
55
  var tsplus_module_8 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/IO/api/scope"));
50
56
  var tsplus_module_9 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/Future/constructors"));
51
- var tsplus_module_10 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/Push/definition"));
52
- var tsplus_module_11 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/base/data/Either/constructors"));
53
- var tsplus_module_12 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/IO/api/forkScoped"));
54
- var tsplus_module_13 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/CountdownLatch"));
55
- var tsplus_module_14 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/base/collection/Iterable/api"));
57
+ var tsplus_module_10 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/IO/api/scoped"));
58
+ var tsplus_module_11 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/Push/definition"));
59
+ var tsplus_module_12 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/base/data/Either/constructors"));
60
+ var tsplus_module_13 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/base/collection/Iterable/api"));
61
+ var tsplus_module_14 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/IO/api/foreachConcurrent"));
56
62
  var tsplus_module_15 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/IO/api/delay"));
57
- var tsplus_module_16 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/IO/api/acquireRelease"));
58
- var tsplus_module_17 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/Fiber/api/interrupt"));
59
- var tsplus_module_18 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/Ref/Synchronized/api"));
60
- var tsplus_module_19 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/Ref/Synchronized/constructors"));
61
- var tsplus_module_20 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/Semaphore"));
62
- var tsplus_module_21 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/base/data/Maybe/destructors"));
63
- var tsplus_module_22 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/IO/api/concurrency"));
64
- var tsplus_module_23 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/base/data/function/api"));
65
- var tsplus_module_24 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/Schedule/api"));
66
- var tsplus_module_25 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/IO/api/schedule"));
67
- var tsplus_module_26 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/IO/api/environment"));
68
- var tsplus_module_27 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/base/data/Maybe/constructors"));
69
- var tsplus_module_28 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/base/data/Maybe/definition"));
70
- var tsplus_module_29 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/base/data/FiberId/constructors"));
71
- var tsplus_module_30 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/Fiber/api/interruptAs"));
72
- var tsplus_module_31 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/base/data/Cause/api"));
73
- var tsplus_module_32 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/IO/api/foreachConcurrent"));
74
- var tsplus_module_33 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/Fiber/api/interruptFork"));
75
- var tsplus_module_34 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/base/collection/immutable/Conc/definition"));
76
- var tsplus_module_35 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/IO/api/scoped"));
77
- var tsplus_module_36 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/Ref/api/set"));
78
- var tsplus_module_37 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/Fiber/api/joinAll"));
79
- var tsplus_module_38 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/IO/api/asyncInterrupt"));
63
+ var tsplus_module_16 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/base/data/Maybe/destructors"));
64
+ var tsplus_module_17 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/Semaphore"));
65
+ var tsplus_module_18 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/IO/api/concurrency"));
66
+ var tsplus_module_19 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/base/data/function/api"));
67
+ var tsplus_module_20 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/IO/api/asyncIO"));
68
+ var tsplus_module_21 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/IO/api/forkDaemon"));
69
+ var tsplus_module_22 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/Fiber/api/await"));
70
+ var tsplus_module_23 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/IO/api/environment"));
71
+ var tsplus_module_24 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/Fiber/api/interrupt"));
72
+ var tsplus_module_25 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/base/data/Maybe/constructors"));
73
+ var tsplus_module_26 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/base/data/Maybe/definition"));
74
+ var tsplus_module_27 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/base/data/Cause/api"));
75
+ var tsplus_module_28 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/Fiber/api/interruptFork"));
76
+ var tsplus_module_29 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/IO/api/forkScoped"));
77
+ var tsplus_module_30 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/base/collection/immutable/Conc/definition"));
78
+ var tsplus_module_31 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/Fiber/api/joinAll"));
79
+ var tsplus_module_32 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/IO/api/fork"));
80
+ var tsplus_module_33 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/io/IO/api/asyncInterrupt"));
80
81
  var _AtomicReference = /*#__PURE__*/require("@fncts/base/internal/AtomicReference");
82
+ var _IO = /*#__PURE__*/require("@fncts/io/IO");
83
+ var _internal = /*#__PURE__*/require("@fncts/io/Push/internal");
81
84
  var _definition4 = /*#__PURE__*/require("./definition.cjs");
82
- var _internal = /*#__PURE__*/require("./internal.cjs");
83
85
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
84
86
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
85
87
  var _a;
@@ -88,6 +90,8 @@ const asyncInterrupt = asyncInterrupt_1;
88
90
  exports.asyncInterrupt = asyncInterrupt;
89
91
  const combineLatest = combineLatest_1;
90
92
  exports.combineLatest = combineLatest;
93
+ const exhaustMap = exhaustMap_1;
94
+ exports.exhaustMap = exhaustMap;
91
95
  const flatMapConcurrentBounded = flatMapConcurrentBounded_1;
92
96
  exports.flatMapConcurrentBounded = flatMapConcurrentBounded;
93
97
  const flatMapConcurrentUnbounded = flatMapConcurrentUnbounded_1;
@@ -104,8 +108,14 @@ const mapIO = mapIO_1;
104
108
  exports.mapIO = mapIO;
105
109
  const mergeAll = mergeAll_1;
106
110
  exports.mergeAll = mergeAll;
111
+ const observe = observe_1;
112
+ exports.observe = observe;
107
113
  const scoped = scoped_1;
108
114
  exports.scoped = scoped;
115
+ const switchMap = switchMap_1;
116
+ exports.switchMap = switchMap;
117
+ const switchMapIO = switchMapIO_1;
118
+ exports.switchMapIO = switchMapIO;
109
119
  const transform = transform_1;
110
120
  exports.transform = transform;
111
121
  const unfoldIO = unfoldIO_1;
@@ -124,31 +134,30 @@ function as(b) {
124
134
  * @tsplus static fncts.io.PushOps asyncInterrupt
125
135
  */
126
136
  function asyncInterrupt_1(make) {
127
- return tsplus_module_10.makePush(emitter => tsplus_module_4.flatMap(future => tsplus_module_4.flatMap(scope => tsplus_module_4.flatMap(runtime => {
128
- const unsafeEmitter = {
129
- emit: value => runtime.unsafeRunOrFork(tsplus_module_5.forkIn(scope, fileName_1 + ":35:76")(emitter.emit(value)), fileName_1 + ":35:49"),
130
- failCause: cause => runtime.unsafeRunOrFork(tsplus_module_5.forkIn(scope, fileName_1 + ":36:102")(tsplus_module_6.fulfill(future, fileName_1 + ":36:87")(emitter.failCause(cause))), fileName_1 + ":36:54"),
131
- end: () => runtime.unsafeRunOrFork(tsplus_module_4.zipRight(tsplus_module_1.succeed_(undefined, fileName_1 + ":37:72")(future), fileName_1 + ":37:57")(emitter.end), fileName_1 + ":37:43")
137
+ return tsplus_module_11.makePush(sink => tsplus_module_10.scoped(tsplus_module_4.flatMap(future => tsplus_module_4.flatMap(scope => tsplus_module_4.flatMap(runtime => {
138
+ const unsafeSink = {
139
+ event: value => runtime.unsafeRunOrFork(tsplus_module_5.forkIn(scope, fileName_1 + ":34:77")(sink.event(value)), fileName_1 + ":34:52"),
140
+ error: cause => runtime.unsafeRunOrFork(tsplus_module_5.forkIn(scope, fileName_1 + ":35:93")(tsplus_module_6.fulfill(future, fileName_1 + ":35:78")(sink.error(cause))), fileName_1 + ":35:52")
132
141
  };
133
- return tsplus_module_4.flatMap(eitherPush => tsplus_module_4.map(() => void 0, fileName_1 + ":40:8")(tsplus_module_3.match(canceller => tsplus_module_2.onInterrupt(() => canceller, fileName_1 + ":42:50")(tsplus_module_1.wait(future, fileName_1 + ":42:32")), push => push.run(emitter))(eitherPush)), fileName_1 + ":39:27")(tsplus_module_4.succeed(() => make(unsafeEmitter), fileName_1 + ":39:30"));
134
- }, fileName_1 + ":33:24")(tsplus_module_7.runtime(fileName_1 + ":33:35")), fileName_1 + ":32:24")(tsplus_module_8.scope), fileName_1 + ":31:24")(tsplus_module_9.make(fileName_1 + ":31:36")));
142
+ return tsplus_module_4.flatMap(eitherPush => tsplus_module_4.map(() => void 0, fileName_1 + ":38:10")(tsplus_module_3.match(canceller => tsplus_module_2.onInterrupt(() => canceller, fileName_1 + ":40:52")(tsplus_module_1.wait(future, fileName_1 + ":40:34")), push => push.run(sink))(eitherPush)), fileName_1 + ":37:29")(tsplus_module_4.succeed(() => make(unsafeSink), fileName_1 + ":37:32"));
143
+ }, fileName_1 + ":32:26")(tsplus_module_7.runtime(fileName_1 + ":32:37")), fileName_1 + ":31:26")(tsplus_module_8.scope), fileName_1 + ":30:26")(tsplus_module_9.make(fileName_1 + ":30:38")), fileName_1 + ":44:9"));
135
144
  }
136
145
  /**
137
146
  * @tsplus static fncts.io.PushOps async
138
147
  */
139
148
  function async(make) {
140
- return asyncInterrupt_1(emitter => {
141
- make(emitter);
142
- return tsplus_module_11.left(tsplus_module_4.unit, fileName_1 + ":56:23");
149
+ return asyncInterrupt_1(sink => {
150
+ make(sink);
151
+ return tsplus_module_12.left(tsplus_module_4.unit, fileName_1 + ":54:23");
143
152
  });
144
153
  }
145
154
  function combineLatest_1(streams) {
146
- return tsplus_module_10.makePush(emitter => (() => {
147
- const size = tsplus_module_14.size(streams);
148
- return tsplus_module_4.flatMap(ref => tsplus_module_4.flatMap(latch => {
149
- const emitIfReady = tsplus_module_4.flatMap(as => as.length === size ? emitter.emit(as) : tsplus_module_4.unit, fileName_1 + ":73:69")(tsplus_module_4.succeed(() => ref.filter(a => a != null), fileName_1 + ":73:31"));
150
- return tsplus_module_4.flatMap(() => tsplus_module_4.map(() => void 0, fileName_1 + ":89:8")(tsplus_module_4.zipRight(emitter.end, fileName_1 + ":89:22")(latch.await)), fileName_1 + ":76:8")(tsplus_module_4.foreachWithIndex(streams, (i, stream) => tsplus_module_12.forkScoped(stream.run(tsplus_module_10.makeEmitter(value => tsplus_module_4.zipRight(emitIfReady, fileName_1 + ":82:50")(tsplus_module_4.succeed(() => ref[i] = value, fileName_1 + ":82:30")), cause => emitter.failCause(cause), latch.countDown)), fileName_1 + ":86:14"), fileName_1 + ":77:28"));
151
- }, fileName_1 + ":72:30")(tsplus_module_13.make(size)), fileName_1 + ":71:30")(tsplus_module_4.succeed(() => Array(size), fileName_1 + ":71:33"));
155
+ return tsplus_module_11.makePush(emitter => (() => {
156
+ const size = tsplus_module_13.size(streams);
157
+ return tsplus_module_4.flatMap(ref => {
158
+ const emitIfReady = tsplus_module_4.flatMap(as => as.length === size ? emitter.event(as) : tsplus_module_4.unit, fileName_1 + ":70:69")(tsplus_module_4.succeed(() => ref.filter(a => a != null), fileName_1 + ":70:31"));
159
+ return tsplus_module_4.map(() => void 0, fileName_1 + ":73:8")(tsplus_module_14.foreachConcurrent(tsplus_module_13.zipWithIndex(streams), ([i, stream]) => stream.run(tsplus_module_11.makeSink(value => tsplus_module_4.zipRight(emitIfReady, fileName_1 + ":77:48")(tsplus_module_4.succeed(() => ref[i] = value, fileName_1 + ":77:28")), cause => emitter.error(cause))), fileName_1 + ":74:29"));
160
+ }, fileName_1 + ":69:30")(tsplus_module_4.succeed(() => Array(size), fileName_1 + ":69:33"));
152
161
  })());
153
162
  }
154
163
  /**
@@ -164,21 +173,66 @@ function combineLatestWith(that, f) {
164
173
  */
165
174
  function debounce(duration) {
166
175
  return self => {
167
- return tsplus_module_10.makePush(emitter => tsplus_module_4.flatMap(ref => tsplus_module_4.flatMap(latch => tsplus_module_4.flatMap(() => tsplus_module_4.map(() => void 0, fileName_1 + ":127:10")(tsplus_module_4.zipRight(emitter.end, fileName_1 + ":127:24")(latch.await)), fileName_1 + ":112:10")(tsplus_module_12.forkScoped(self.run(tsplus_module_10.makeEmitter(value => tsplus_module_18.updateIO(previous => tsplus_module_4.flatMap(() => tsplus_module_12.forkScoped(tsplus_module_16.acquireRelease(() => tsplus_module_15.delay(duration)(emitter.emit(value)), () => latch.countDown, fileName_1 + ":119:47"), fileName_1 + ":119:107"), fileName_1 + ":118:22")(tsplus_module_4.defer(() => previous ? tsplus_module_17.interrupt(previous) : latch.increment, fileName_1 + ":118:31")), fileName_1 + ":116:29")(ref), cause => emitter.failCause(cause), latch.countDown)), fileName_1 + ":125:12")), fileName_1 + ":111:24")(tsplus_module_13.make(1)), fileName_1 + ":110:24")(tsplus_module_19.makeSynchronized(() => null, fileName_1 + ":110:46")));
176
+ return switchMapIO_1(a => tsplus_module_15.delay(duration)(tsplus_module_4.succeedNow(a, fileName_1 + ":101:49")))(self);
168
177
  };
169
178
  }
170
179
  /**
171
180
  * @tsplus static fncts.io.PushOps defer
172
181
  */
173
182
  function defer(self) {
174
- return tsplus_module_10.makePush(emitter => tsplus_module_4.flatMap(push => push.run(emitter), fileName_1 + ":137:44")(tsplus_module_4.succeed(self, fileName_1 + ":137:30")));
183
+ return tsplus_module_11.makePush(emitter => tsplus_module_4.flatMap(push => push.run(emitter), fileName_1 + ":109:44")(tsplus_module_4.succeed(self, fileName_1 + ":109:30")));
184
+ }
185
+ /**
186
+ * @tsplus pipeable fncts.io.Push exhaustMap
187
+ */
188
+ function exhaustMap_1(f) {
189
+ return self => {
190
+ return tsplus_module_11.makePush(sink => (0, _internal.withExhaust)(fork => self.run(tsplus_module_11.makeSink(a => fork(f(a).run(sink)), sink.error))));
191
+ };
192
+ }
193
+ /**
194
+ * @tsplus pipeable fncts.io.Push exhaustMapIO
195
+ */
196
+ function exhaustMapIO(f) {
197
+ return self => {
198
+ return exhaustMap_1(a => fromIO_1(() => f(a)))(self);
199
+ };
200
+ }
201
+ /**
202
+ * @tsplus pipeable fncts.io.Push filterIO
203
+ */
204
+ function filterIO(predicate) {
205
+ return self => {
206
+ return tsplus_module_11.makePush(sink => self.run(tsplus_module_11.makeSink(a => tsplus_module_4.catchAllCause(sink.error, fileName_1 + ":141:29")(tsplus_module_4.flatMap(b => b ? sink.event(a) : tsplus_module_4.unit, fileName_1 + ":140:23")(predicate(a))), sink.error)));
207
+ };
208
+ }
209
+ /**
210
+ * @tsplus pipeable fncts.io.Push filterMapIO
211
+ */
212
+ function filterMapIO(f) {
213
+ return self => {
214
+ return tsplus_module_11.makePush(sink => self.run(tsplus_module_11.makeSink(a => tsplus_module_4.catchAllCause(sink.error, fileName_1 + ":160:29")(tsplus_module_4.flatMap(mb => tsplus_module_16.match(() => tsplus_module_4.unit, sink.event)(mb), fileName_1 + ":159:23")(f(a))), sink.error)));
215
+ };
216
+ }
217
+ function filter(predicate) {
218
+ return self => {
219
+ return tsplus_module_11.makePush(sink => self.run(tsplus_module_11.makeSink(a => predicate(a) ? sink.event(a) : tsplus_module_4.unit, sink.error)));
220
+ };
221
+ }
222
+ /**
223
+ * @tsplus pipeable fncts.io.Push filterMap
224
+ */
225
+ function filterMap(f) {
226
+ return self => {
227
+ return tsplus_module_11.makePush(sink => self.run(tsplus_module_11.makeSink(a => tsplus_module_16.match(() => tsplus_module_4.unit, sink.event)(f(a)), sink.error)));
228
+ };
175
229
  }
176
230
  /**
177
231
  * @tsplus pipeable fncts.io.Push flatMapConcurrentBounded
178
232
  */
179
233
  function flatMapConcurrentBounded_1(f, concurrency) {
180
234
  return self => {
181
- return tsplus_module_10.makePush(emitter => tsplus_module_4.flatMap(semaphore => tsplus_module_4.map(() => void 0, fileName_1 + ":148:10")(flatMapConcurrentUnbounded_1(a => transform_1(io => semaphore.withPermit(io))(f(a)))(self).run(emitter)), fileName_1 + ":147:28")(tsplus_module_20.makeSemaphore(concurrency, fileName_1 + ":147:38")));
235
+ return tsplus_module_11.makePush(emitter => tsplus_module_4.flatMap(semaphore => tsplus_module_4.map(() => void 0, fileName_1 + ":196:10")(flatMapConcurrentUnbounded_1(a => transform_1(io => semaphore.withPermit(io))(f(a)))(self).run(emitter)), fileName_1 + ":195:28")(tsplus_module_17.makeSemaphore(concurrency, fileName_1 + ":195:38")));
182
236
  };
183
237
  }
184
238
  /**
@@ -186,7 +240,7 @@ function flatMapConcurrentBounded_1(f, concurrency) {
186
240
  */
187
241
  function flatMapConcurrentUnbounded_1(f) {
188
242
  return self => {
189
- return tsplus_module_10.makePush(emitter => tsplus_module_4.flatMap(latch => tsplus_module_4.flatMap(() => tsplus_module_4.map(() => void 0, fileName_1 + ":172:10")(tsplus_module_4.zipRight(emitter.end, fileName_1 + ":172:24")(latch.await)), fileName_1 + ":162:10")(tsplus_module_12.forkScoped(self.run(tsplus_module_10.makeEmitter(value => tsplus_module_4.zipRight(tsplus_module_12.forkScoped(f(value).run(tsplus_module_10.makeEmitter(emitter.emit, emitter.failCause, latch.countDown)), fileName_1 + ":166:106"), fileName_1 + ":166:34")(latch.increment), emitter.failCause, latch.countDown)), fileName_1 + ":170:12")), fileName_1 + ":161:24")(tsplus_module_13.make(1)));
243
+ return tsplus_module_11.makePush(sink => (0, _internal.withUnboundedConcurrency)(fork => self.run(tsplus_module_11.makeSink(a => fork(f(a).run(sink)), sink.error))));
190
244
  };
191
245
  }
192
246
  /**
@@ -194,7 +248,7 @@ function flatMapConcurrentUnbounded_1(f) {
194
248
  */
195
249
  function flatMapConcurrent(f) {
196
250
  return self => {
197
- return unwrap_1(tsplus_module_4.map(concurrency => tsplus_module_21.match(() => flatMapConcurrentUnbounded_1(f)(self), n => flatMapConcurrentBounded_1(f, n)(self))(concurrency), fileName_1 + ":184:25")(tsplus_module_22.concurrency));
251
+ return unwrap_1(tsplus_module_4.map(concurrency => tsplus_module_16.match(() => flatMapConcurrentUnbounded_1(f)(self), n => flatMapConcurrentBounded_1(f, n)(self))(concurrency), fileName_1 + ":217:25")(tsplus_module_18.concurrency));
198
252
  };
199
253
  }
200
254
  /**
@@ -209,34 +263,34 @@ function flatMap_1(f) {
209
263
  * @tsplus getter fncts.io.Push flatten
210
264
  */
211
265
  function flatten_1(self) {
212
- return flatMap_1(tsplus_module_23.identity)(self);
266
+ return flatMap_1(tsplus_module_19.identity)(self);
213
267
  }
214
268
  /**
215
269
  * @tsplus static fncts.io.PushOps fromIO
216
270
  */
217
271
  function fromIO_1(io) {
218
- return tsplus_module_10.makePush(emitter => tsplus_module_4.zipRight(emitter.end, fileName_1 + ":219:10")(tsplus_module_4.matchCauseIO(cause => emitter.failCause(cause), value => emitter.emit(value), fileName_1 + ":216:32")(tsplus_module_4.defer(io, fileName_1 + ":216:15"))));
272
+ return tsplus_module_11.makePush(emitter => tsplus_module_4.matchCauseIO(cause => emitter.error(cause), value => emitter.event(value), fileName_1 + ":248:30")(tsplus_module_4.defer(io, fileName_1 + ":248:13")));
219
273
  }
220
274
  /**
221
275
  * @tsplus static fncts.io.PushOps fromAsyncIterable
222
276
  */
223
277
  function fromAsyncIterable(iterable) {
224
- return tsplus_module_10.makePush(emitter => tsplus_module_4.defer(() => fromAsyncIterableLoop(iterable[Symbol.asyncIterator](), emitter, fileName_1 + ":227:58"), fileName_1 + ":227:36"));
278
+ return tsplus_module_11.makePush(sink => tsplus_module_20.asyncIO(cb => tsplus_module_4.defer(() => fromAsyncIterableLoop(iterable[Symbol.asyncIterator](), sink, cb, fileName_1 + ":260:70"), fileName_1 + ":260:48"), fileName_1 + ":260:15"));
225
279
  }
226
- function fromAsyncIterableLoop(iterator, emitter, __tsplusTrace) {
227
- return tsplus_module_4.matchCauseIO(cause => tsplus_module_4.zipRight(emitter.end, __tsplusTrace)(emitter.failCause(cause)), result => result.done ? emitter.end : tsplus_module_4.zipRight(fromAsyncIterableLoop(iterator, emitter, __tsplusTrace), __tsplusTrace)(emitter.emit(result.value)), __tsplusTrace)(tsplus_module_4.fromPromiseHalt(iterator.next, __tsplusTrace));
280
+ function fromAsyncIterableLoop(iterator, sink, cb, __tsplusTrace) {
281
+ return tsplus_module_4.matchCauseIO(cause => sink.error(cause), result => result.done ? tsplus_module_4.succeed(() => cb(tsplus_module_4.unit), __tsplusTrace) : tsplus_module_4.zipRight(fromAsyncIterableLoop(iterator, sink, cb, __tsplusTrace), __tsplusTrace)(sink.event(result.value)), __tsplusTrace)(tsplus_module_4.fromPromiseHalt(iterator.next, __tsplusTrace));
228
282
  }
229
283
  /**
230
284
  * @tsplus static fncts.io.PushOps fromIterable
231
285
  */
232
286
  function fromIterable(iterable) {
233
- return tsplus_module_10.makePush(emitter => tsplus_module_4.defer(() => fromIterableLoop(iterable[Symbol.iterator](), emitter), fileName_1 + ":245:36"));
287
+ return tsplus_module_11.makePush(sink => tsplus_module_20.asyncIO(cb => tsplus_module_4.defer(() => fromIterableLoop(iterable[Symbol.iterator](), sink, cb), fileName_1 + ":281:48"), fileName_1 + ":281:15"));
234
288
  }
235
- function fromIterableLoop(iterator, emitter) {
289
+ function fromIterableLoop(iterator, sink, cb) {
236
290
  return tsplus_module_4.defer(() => {
237
291
  const value = iterator.next();
238
- return value.done ? emitter.end : tsplus_module_4.zipRight(fromIterableLoop(iterator, emitter), fileName_1 + ":251:66")(emitter.emit(value.value));
239
- }, fileName_1 + ":249:18");
292
+ return value.done ? tsplus_module_4.succeed(() => cb(tsplus_module_4.unit), fileName_1 + ":292:27") : tsplus_module_4.zipRight(fromIterableLoop(iterator, sink, cb), fileName_1 + ":292:68")(sink.event(value.value));
293
+ }, fileName_1 + ":290:18");
240
294
  }
241
295
  /**
242
296
  * @tsplus getter fncts.io.Push multicast
@@ -250,45 +304,46 @@ class Multicast {
250
304
  this[_a] = _definition4.PushTypeId;
251
305
  this.observers = [];
252
306
  }
253
- run(emitter) {
254
- return tsplus_module_4.flatMap(environment => tsplus_module_4.flatMap(future => tsplus_module_4.flatMap(() => tsplus_module_1.wait(future, fileName_1 + ":296:22"), fileName_1 + ":283:8")(tsplus_module_4.defer(() => {
255
- this.observers.push({
256
- emitter,
257
- environment,
258
- future
259
- });
260
- if (this.fiber) {
261
- return tsplus_module_4.unit;
262
- } else {
263
- return tsplus_module_4.tap(fiber => tsplus_module_4.succeed(() => this.fiber = fiber, fileName_1 + ":292:44"), fileName_1 + ":292:30")(tsplus_module_12.forkScoped(tsplus_module_25.schedule(() => tsplus_module_24.asap, fileName_1 + ":291:24")(this.push.run(this)), fileName_1 + ":291:39"));
307
+ run(sink) {
308
+ return tsplus_module_4.flatMap(environment => tsplus_module_4.map(() => void 0, fileName_1 + ":322:8")(tsplus_module_4.defer(() => {
309
+ let io = tsplus_module_4.unit;
310
+ if (this.observers.push({
311
+ sink: sink,
312
+ environment
313
+ }) === 1) {
314
+ io = tsplus_module_4.flatMap(fiber => tsplus_module_4.succeed(() => this.fiber = fiber, fileName_1 + ":326:70"), fileName_1 + ":326:56")(tsplus_module_21.forkDaemon(this.push.run(this), fileName_1 + ":326:37"));
264
315
  }
265
- }, fileName_1 + ":284:17")), fileName_1 + ":282:28")(tsplus_module_9.make(fileName_1 + ":282:40")), fileName_1 + ":281:28")(tsplus_module_26.environment(fileName_1 + ":281:43"));
266
- }
267
- emit(value) {
268
- return tsplus_module_4.defer(() => tsplus_module_4.foreachDiscard(this.observers.slice(), observer => this.runEvent(value, observer), fileName_1 + ":301:38"), fileName_1 + ":301:20");
269
- }
270
- failCause(cause) {
271
- return tsplus_module_4.zipRight(tsplus_module_4.defer(() => this.cleanup(), fileName_1 + ":307:15"), fileName_1 + ":306:110")(tsplus_module_4.defer(() => tsplus_module_4.foreachDiscard(this.observers.slice(), observer => this.runFailCause(cause, observer), fileName_1 + ":306:33"), fileName_1 + ":306:15"));
316
+ return tsplus_module_4.zipRight(tsplus_module_2.ensuring(this.removeSink(sink), fileName_1 + ":328:49")(tsplus_module_22.wait(this.fiber, fileName_1 + ":328:34")), fileName_1 + ":328:22")(io);
317
+ }, fileName_1 + ":323:17")), fileName_1 + ":321:28")(tsplus_module_23.environment(fileName_1 + ":321:43"));
272
318
  }
273
- get end() {
274
- return tsplus_module_4.zipRight(tsplus_module_4.defer(() => this.cleanup(), fileName_1 + ":314:15"), fileName_1 + ":313:97")(tsplus_module_4.defer(() => tsplus_module_4.foreachDiscard(this.observers.slice(), observer => this.runEnd(observer), fileName_1 + ":313:33"), fileName_1 + ":313:15"));
319
+ event(value) {
320
+ return tsplus_module_4.defer(() => tsplus_module_4.foreachDiscard(this.observers.slice(), observer => this.runValue(value, observer), fileName_1 + ":335:38"), fileName_1 + ":335:20");
275
321
  }
276
- runEvent(value, observer) {
277
- return tsplus_module_26.provideEnvironment(observer.environment, fileName_1 + ":322:26")(tsplus_module_4.tapErrorCause(cause => this.runFailCause(cause, observer), fileName_1 + ":321:21")(observer.emitter.emit(value)));
322
+ error(cause) {
323
+ return tsplus_module_4.defer(() => tsplus_module_4.foreachDiscard(this.observers.slice(), observer => this.runError(cause, observer), fileName_1 + ":339:38"), fileName_1 + ":339:20");
278
324
  }
279
- runFailCause(cause, observer) {
280
- this.observers.splice(this.observers.indexOf(observer), 1);
281
- return tsplus_module_26.provideEnvironment(observer.environment, fileName_1 + ":327:89")(tsplus_module_6.fulfill(observer.future, fileName_1 + ":327:53")(observer.emitter.failCause(cause)));
325
+ runValue(value, observer) {
326
+ return tsplus_module_4.catchAllCause(() => this.removeSink(observer.sink), fileName_1 + ":346:21")(tsplus_module_23.provideEnvironment(observer.environment, fileName_1 + ":345:26")(observer.sink.event(value)));
282
327
  }
283
- runEnd(observer) {
284
- this.observers.splice(this.observers.indexOf(observer), 1);
285
- return tsplus_module_26.provideEnvironment(observer.environment, fileName_1 + ":332:76")(tsplus_module_6.fulfill(observer.future, fileName_1 + ":332:40")(observer.emitter.end));
328
+ runError(cause, observer) {
329
+ return tsplus_module_4.catchAllCause(() => this.removeSink(observer.sink), fileName_1 + ":353:21")(tsplus_module_23.provideEnvironment(observer.environment, fileName_1 + ":352:26")(observer.sink.error(cause)));
286
330
  }
287
- cleanup() {
288
- if (this.fiber) {
289
- return tsplus_module_4.zipRight(tsplus_module_4.succeed(() => this.fiber = undefined, fileName_1 + ":337:39"), fileName_1 + ":337:36")(tsplus_module_17.interrupt(this.fiber));
290
- }
291
- return tsplus_module_4.unit;
331
+ removeSink(sink) {
332
+ return tsplus_module_4.defer(() => {
333
+ if (this.observers.length === 0) {
334
+ return tsplus_module_4.unit;
335
+ }
336
+ const index = this.observers.findIndex(observer => observer.sink === sink);
337
+ if (index > -1) {
338
+ this.observers.splice(index, 1);
339
+ if (this.observers.length === 0) {
340
+ const interrupt = tsplus_module_24.interrupt(this.fiber);
341
+ this.fiber = undefined;
342
+ return interrupt;
343
+ }
344
+ }
345
+ return tsplus_module_4.unit;
346
+ }, fileName_1 + ":357:20");
292
347
  }
293
348
  }
294
349
  exports.Multicast = Multicast;
@@ -303,63 +358,20 @@ class Hold extends Multicast {
303
358
  constructor(push) {
304
359
  super(push);
305
360
  this.push = push;
306
- this.value = new _AtomicReference.AtomicReference(tsplus_module_27.nothing(fileName_1 + ":351:47"));
307
- this.pendingEmitters = [];
308
- this.scheduledFiber = null;
361
+ this.current = new _AtomicReference.AtomicReference(tsplus_module_25.nothing(fileName_1 + ":383:49"));
309
362
  }
310
- run(emitter) {
311
- if (this.shouldScheduleFlush()) {
312
- return tsplus_module_4.flatMap(() => super.run(emitter), fileName_1 + ":361:49")(this.scheduleFlush(emitter));
313
- }
314
- const value = this.value.get;
315
- if (tsplus_module_28.isJust(value) && this.observers.length === 0) {
316
- return tsplus_module_4.flatMap(() => super.run(emitter), fileName_1 + ":366:47")(emitter.emit(value.value));
363
+ run(sink) {
364
+ const current = this.current.get;
365
+ if (tsplus_module_26.isJust(current)) {
366
+ return tsplus_module_4.zipRight(super.run(sink), fileName_1 + ":393:41")(sink.event(current.value));
317
367
  }
318
- return super.run(emitter);
368
+ return super.run(sink);
319
369
  }
320
- emit(value) {
370
+ event(value) {
321
371
  return tsplus_module_4.defer(() => {
322
- this.addValue(value);
323
- return tsplus_module_4.flatMap(() => super.emit(value), fileName_1 + ":375:41")(this.flushPending());
324
- }, fileName_1 + ":373:20");
325
- }
326
- failCause(cause) {
327
- return tsplus_module_4.defer(() => tsplus_module_4.flatMap(() => super.failCause(cause), fileName_1 + ":380:48")(this.flushPending()), fileName_1 + ":380:20");
328
- }
329
- get end() {
330
- return tsplus_module_4.defer(() => tsplus_module_4.flatMap(() => super.end, fileName_1 + ":384:48")(this.flushPending()), fileName_1 + ":384:20");
331
- }
332
- shouldScheduleFlush() {
333
- return tsplus_module_28.isJust(this.value.get) && this.observers.length > 0;
334
- }
335
- scheduleFlush(observer) {
336
- this.pendingEmitters.push([observer, tsplus_module_21.match(() => [], a => [a])(this.value.get)]);
337
- const interrupt = this.scheduledFiber ? tsplus_module_30.interruptAsFork(this.scheduledFiber, tsplus_module_29.none) : tsplus_module_4.unit;
338
- this.scheduledFiber = null;
339
- return tsplus_module_4.tap(fiber => tsplus_module_4.succeed(() => this.scheduledFiber = fiber, fileName_1 + ":404:9"), fileName_1 + ":403:87")(tsplus_module_12.forkScoped(tsplus_module_4.zipRight(tsplus_module_4.flatMap(() => this.flushPending(), fileName_1 + ":403:44")(interrupt), fileName_1 + ":403:26")(tsplus_module_4.yieldNow), fileName_1 + ":403:72"));
340
- }
341
- flushPending() {
342
- if (this.pendingEmitters.length === 0) {
343
- return tsplus_module_4.unit;
344
- }
345
- const emitters = this.pendingEmitters;
346
- this.pendingEmitters = [];
347
- return tsplus_module_4.foreachDiscard(emitters, pendingEmitter => {
348
- return tsplus_module_4.defer(() => {
349
- const [emitter, values] = pendingEmitter;
350
- const observer = this.observers.find(observer => observer.emitter === emitter);
351
- if (!observer) {
352
- return tsplus_module_4.unit;
353
- }
354
- return tsplus_module_4.foreachDiscard(values, value => this.runEvent(value, observer), fileName_1 + ":423:33");
355
- }, fileName_1 + ":417:22");
356
- }, fileName_1 + ":416:29");
357
- }
358
- addValue(value) {
359
- this.value.set(tsplus_module_27.just(value, fileName_1 + ":429:24"));
360
- this.pendingEmitters.forEach(([, values]) => {
361
- values.push(value);
362
- });
372
+ this.current.set(tsplus_module_25.just(value, fileName_1 + ":401:28"));
373
+ return super.event(value);
374
+ }, fileName_1 + ":400:20");
363
375
  }
364
376
  }
365
377
  /**
@@ -368,7 +380,7 @@ class Hold extends Multicast {
368
380
  exports.Hold = Hold;
369
381
  function map_1(f) {
370
382
  return self => {
371
- return mapIO_1(a => tsplus_module_4.succeedNow(f(a), fileName_1 + ":441:43"))(self);
383
+ return mapIO_1(a => tsplus_module_4.succeedNow(f(a), fileName_1 + ":412:43"))(self);
372
384
  };
373
385
  }
374
386
  /**
@@ -376,7 +388,7 @@ function map_1(f) {
376
388
  */
377
389
  function mapError(f) {
378
390
  return self => {
379
- return tsplus_module_10.makePush(emitter => self.run(tsplus_module_10.makeEmitter(value => emitter.emit(value), cause => emitter.failCause(tsplus_module_31.map(f)(cause)), emitter.end)));
391
+ return tsplus_module_11.makePush(emitter => self.run(tsplus_module_11.makeSink(value => emitter.event(value), cause => emitter.error(tsplus_module_27.map(f)(cause)))));
380
392
  };
381
393
  }
382
394
  /**
@@ -384,14 +396,14 @@ function mapError(f) {
384
396
  */
385
397
  function mapErrorCause(f) {
386
398
  return self => {
387
- return tsplus_module_10.makePush(emitter => self.run(tsplus_module_10.makeEmitter(value => emitter.emit(value), cause => emitter.failCause(f(cause)), emitter.end)));
399
+ return tsplus_module_11.makePush(emitter => self.run(tsplus_module_11.makeSink(value => emitter.event(value), cause => emitter.error(f(cause)))));
388
400
  };
389
401
  }
390
402
  /**
391
403
  * @tsplus pipeable fncts.io.Push mapIO
392
404
  */
393
405
  function mapIO_1(f) {
394
- return self => tsplus_module_10.makePush(emitter => self.run(tsplus_module_10.makeEmitter(value => tsplus_module_4.matchCauseIO(cause => emitter.failCause(cause), b => emitter.emit(b), fileName_1 + ":488:34")(f(value)), cause => emitter.failCause(cause), emitter.end)));
406
+ return self => tsplus_module_11.makePush(emitter => self.run(tsplus_module_11.makeSink(value => tsplus_module_4.matchCauseIO(cause => emitter.error(cause), b => emitter.event(b), fileName_1 + ":457:34")(f(value)), cause => emitter.error(cause))));
395
407
  }
396
408
  /**
397
409
  * @tsplus pipeable fncts.io.Push merge
@@ -402,21 +414,21 @@ function merge(that) {
402
414
  };
403
415
  }
404
416
  function mergeAll_1(streams) {
405
- return tsplus_module_10.makePush(emitter => tsplus_module_4.flatMap(latch => tsplus_module_4.flatMap(() => tsplus_module_4.map(() => void 0, fileName_1 + ":531:8")(tsplus_module_4.zipRight(emitter.end, fileName_1 + ":531:22")(latch.await)), fileName_1 + ":519:8")(tsplus_module_32.foreachConcurrent(streams, stream => tsplus_module_12.forkScoped(stream.run(tsplus_module_10.makeEmitter(value => emitter.emit(value), cause => emitter.failCause(cause), latch.countDown)), fileName_1 + ":528:14"), fileName_1 + ":520:37")), fileName_1 + ":518:22")(tsplus_module_13.make(tsplus_module_14.size(streams))));
417
+ return tsplus_module_11.makePush(sink => tsplus_module_14.foreachConcurrentDiscard(streams, stream => stream.run(tsplus_module_11.makeSink(sink.event, cause => tsplus_module_27.isInterruptedOnly(cause) ? tsplus_module_4.unit : sink.error(cause))), fileName_1 + ":485:32"));
406
418
  }
407
419
  /**
408
420
  * @tsplus pipeable fncts.io.Push observe
409
421
  */
410
- function observe(f, __tsplusTrace) {
422
+ function observe_1(f, __tsplusTrace) {
411
423
  return self => {
412
- return tsplus_module_4.flatMap(future => tsplus_module_4.flatMap(fiber => tsplus_module_4.flatMap(() => tsplus_module_4.map(() => void 0, __tsplusTrace)(tsplus_module_33.interruptFork(fiber, __tsplusTrace)), __tsplusTrace)(tsplus_module_1.wait(future, __tsplusTrace)), __tsplusTrace)(tsplus_module_12.forkScoped(self.run(tsplus_module_10.makeEmitter(a => tsplus_module_4.catchAllCause(cause => tsplus_module_1.failCause(cause, __tsplusTrace)(future), __tsplusTrace)(f(a)), cause => tsplus_module_1.failCause(cause, __tsplusTrace)(future), tsplus_module_1.succeed_(undefined, __tsplusTrace)(future))), __tsplusTrace)), __tsplusTrace)(tsplus_module_9.make(__tsplusTrace));
424
+ return tsplus_module_4.flatMap(future => tsplus_module_4.flatMap(fiber => tsplus_module_4.flatMap(() => tsplus_module_4.map(() => void 0, __tsplusTrace)(tsplus_module_28.interruptFork(fiber, __tsplusTrace)), __tsplusTrace)(tsplus_module_1.wait(future, __tsplusTrace)), __tsplusTrace)(tsplus_module_29.forkScoped(tsplus_module_4.flatMap(() => tsplus_module_1.succeed_(undefined, __tsplusTrace)(future), __tsplusTrace)(self.run(tsplus_module_11.makeSink(a => tsplus_module_4.catchAllCause(cause => tsplus_module_1.failCause(cause, __tsplusTrace)(future), __tsplusTrace)(f(a)), cause => tsplus_module_1.failCause(cause, __tsplusTrace)(future)))), __tsplusTrace)), __tsplusTrace)(tsplus_module_9.make(__tsplusTrace));
413
425
  };
414
426
  }
415
427
  /**
416
428
  * @tsplus static fncts.io.PushOps repeatIOMaybe
417
429
  */
418
430
  function repeatIOMaybe(io, __tsplusTrace) {
419
- return unfoldIO_1(undefined, () => tsplus_module_4.catchAll(maybeError => tsplus_module_21.match(() => tsplus_module_4.succeedNow(tsplus_module_27.nothing(__tsplusTrace), __tsplusTrace), tsplus_module_4.failNow)(maybeError), __tsplusTrace)(tsplus_module_4.map(a => tsplus_module_27.just([a, undefined], __tsplusTrace), __tsplusTrace)(io)));
431
+ return unfoldIO_1(undefined, () => tsplus_module_4.catchAll(maybeError => tsplus_module_16.match(() => tsplus_module_4.succeedNow(tsplus_module_25.nothing(__tsplusTrace), __tsplusTrace), tsplus_module_4.failNow)(maybeError), __tsplusTrace)(tsplus_module_4.map(a => tsplus_module_25.just([a, undefined], __tsplusTrace), __tsplusTrace)(io)));
420
432
  }
421
433
  /**
422
434
  * @tsplus getter fncts.io.Push runCollect
@@ -424,68 +436,84 @@ function repeatIOMaybe(io, __tsplusTrace) {
424
436
  function runCollect(self) {
425
437
  return tsplus_module_4.defer(() => {
426
438
  const out = [];
427
- return tsplus_module_4.flatMap(future => tsplus_module_4.zipRight(tsplus_module_4.succeed(() => tsplus_module_34.fromArray(out), fileName_1 + ":586:11"), fileName_1 + ":585:23")(tsplus_module_4.zipRight(tsplus_module_1.wait(future, fileName_1 + ":585:15"), fileName_1 + ":584:12")(self.run(tsplus_module_10.makeEmitter(value => tsplus_module_4.succeed(() => out.push(value), fileName_1 + ":580:26"), cause => tsplus_module_1.failCause(cause, fileName_1 + ":581:40")(future), tsplus_module_1.succeed_(undefined, fileName_1 + ":582:27")(future))))), fileName_1 + ":576:42")(tsplus_module_9.make(fileName_1 + ":576:23"));
428
- }, fileName_1 + ":574:18");
439
+ return tsplus_module_4.as(() => tsplus_module_30.fromArray(out), fileName_1 + ":532:51")(observe_1(a => tsplus_module_4.succeed(() => out.push(a), fileName_1 + ":532:34"), fileName_1 + ":532:24")(self));
440
+ }, fileName_1 + ":530:18");
429
441
  }
430
442
  /**
431
443
  * @tsplus getter fncts.io.Push runDrain
432
444
  */
433
445
  function runDrain(self) {
434
- return tsplus_module_4.flatMap(future => tsplus_module_4.zipRight(tsplus_module_1.wait(future, fileName_1 + ":603:17"), fileName_1 + ":603:10")(self.run(tsplus_module_10.makeEmitter(() => tsplus_module_4.unit, cause => tsplus_module_1.failCause(cause, fileName_1 + ":600:38")(future), tsplus_module_1.succeed_(undefined, fileName_1 + ":601:25")(future)))), fileName_1 + ":595:40")(tsplus_module_9.make(fileName_1 + ":595:21"));
446
+ return observe_1(() => tsplus_module_4.unit, fileName_1 + ":540:22")(self);
435
447
  }
436
448
  /**
437
449
  * @tsplus static fncts.io.PushOps scoped
438
450
  */
439
451
  function scoped_1(io, __tsplusTrace) {
440
- return tsplus_module_10.makePush(emitter => tsplus_module_4.zipRight(emitter.end, __tsplusTrace)(tsplus_module_4.matchCauseIO(cause => emitter.failCause(cause), value => emitter.emit(value), __tsplusTrace)(tsplus_module_35.scoped(tsplus_module_4.defer(io, __tsplusTrace), __tsplusTrace))));
452
+ return tsplus_module_11.makePush(emitter => tsplus_module_4.matchCauseIO(cause => emitter.error(cause), value => emitter.event(value), __tsplusTrace)(tsplus_module_10.scoped(tsplus_module_4.defer(io, __tsplusTrace), __tsplusTrace)));
441
453
  }
442
454
  /**
443
455
  * @tsplus static fncts.io.PushOps succeed
444
456
  */
445
457
  function succeed(value) {
446
- return fromIO_1(() => tsplus_module_4.succeed(value, fileName_1 + ":624:32"));
458
+ return fromIO_1(() => tsplus_module_4.succeed(value, fileName_1 + ":559:32"));
459
+ }
460
+ /**
461
+ * @tsplus pipeable fncts.io.Push switchMap
462
+ */
463
+ function switchMap_1(f) {
464
+ return self => {
465
+ return tsplus_module_11.makePush(sink => (0, _internal.withSwitch)(fork => self.run(tsplus_module_11.makeSink(a => fork(f(a).run(sink)), sink.error))));
466
+ };
467
+ }
468
+ /**
469
+ * @tsplus pipeable fncts.io.Push switchMapIO
470
+ */
471
+ function switchMapIO_1(f) {
472
+ return self => {
473
+ return switchMap_1(a => fromIO_1(() => f(a)))(self);
474
+ };
447
475
  }
448
476
  /**
449
- * @tsplus pipeable fncts.io.PushOps switchMap
477
+ * @tsplus pipeable fncts.io.Push tap
450
478
  */
451
- function switchMap(f) {
479
+ function tap(f) {
452
480
  return self => {
453
- return tsplus_module_10.makePush(emitter => tsplus_module_4.flatMap(current => tsplus_module_4.flatMap(latch => {
454
- const innerEmitter = tsplus_module_10.makeEmitter(value => emitter.emit(value), cause => tsplus_module_4.zipRight(emitter.failCause(cause), fileName_1 + ":638:41")(tsplus_module_36.set(null, fileName_1 + ":638:33")(current)), latch.countDown);
455
- return tsplus_module_4.flatMap(() => tsplus_module_4.map(() => void 0, fileName_1 + ":653:10")(tsplus_module_4.zipRight(emitter.end, fileName_1 + ":653:24")(latch.await)), fileName_1 + ":641:10")(self.run(tsplus_module_10.makeEmitter(value => tsplus_module_18.updateIO(fiber => tsplus_module_4.zipRight(tsplus_module_12.forkScoped(f(value).run(innerEmitter), fileName_1 + ":646:98"), fileName_1 + ":646:71")(fiber ? tsplus_module_17.interrupt(fiber) : latch.increment), fileName_1 + ":645:33")(current), cause => emitter.failCause(cause), latch.countDown)));
456
- }, fileName_1 + ":635:31")(tsplus_module_13.make(1)), fileName_1 + ":634:31")(tsplus_module_19.makeSynchronized(() => null, fileName_1 + ":634:53")));
481
+ return tsplus_module_11.makePush(sink => self.run(tsplus_module_11.makeSink(a => tsplus_module_4.matchCauseIO(sink.error, () => sink.event(a), fileName_1 + ":585:65")(f(a)), sink.error)));
457
482
  };
458
483
  }
459
484
  /**
460
485
  * @tsplus pipeable fncts.io.Push transform
461
486
  */
462
487
  function transform_1(f) {
463
- return self => tsplus_module_10.makePush(emitter => f(self.run(emitter)));
488
+ return self => tsplus_module_11.makePush(emitter => f(self.run(emitter)));
464
489
  }
465
490
  function unfoldLoop(s, f, emitter) {
466
- return tsplus_module_21.match(() => emitter.end, ([a, s]) => tsplus_module_4.zipRight(unfoldLoop(s, f, emitter), fileName_1 + ":673:34")(emitter.emit(a)))(f(s));
491
+ return tsplus_module_16.match(() => tsplus_module_4.unit, ([a, s]) => tsplus_module_4.zipRight(unfoldLoop(s, f, emitter), fileName_1 + ":603:35")(emitter.event(a)))(f(s));
467
492
  }
468
493
  /**
469
494
  * @tsplus static fncts.io.PushOps unfold
470
495
  */
471
496
  function unfold(s, f) {
472
- return tsplus_module_10.makePush(emitter => unfoldLoop(s, f, emitter));
497
+ return tsplus_module_11.makePush(emitter => unfoldLoop(s, f, emitter));
473
498
  }
474
499
  function unfoldIOLoop(s, f, emitter) {
475
- return tsplus_module_4.catchAllCause(cause => emitter.failCause(cause), fileName_1 + ":696:19")(tsplus_module_4.flatMap(result => tsplus_module_21.match(() => emitter.end, ([a, s]) => tsplus_module_4.zipRight(unfoldIOLoop(s, f, emitter), fileName_1 + ":693:38")(emitter.emit(a)))(result), fileName_1 + ":690:13")(f(s)));
500
+ return tsplus_module_4.catchAllCause(cause => emitter.error(cause), fileName_1 + ":626:19")(tsplus_module_4.flatMap(result => tsplus_module_16.match(() => tsplus_module_4.unit, ([a, s]) => tsplus_module_4.zipRight(unfoldIOLoop(s, f, emitter), fileName_1 + ":623:39")(emitter.event(a)))(result), fileName_1 + ":620:13")(f(s)));
476
501
  }
477
502
  /**
478
503
  * @tsplus static fncts.io.PushOps unfoldIO
479
504
  */
480
505
  function unfoldIO_1(s, f) {
481
- return tsplus_module_10.makePush(emitter => unfoldIOLoop(s, f, emitter));
506
+ return tsplus_module_11.makePush(emitter => unfoldIOLoop(s, f, emitter));
482
507
  }
483
508
  /**
484
509
  * @tsplus pipeable fncts.io.Push untilFuture
485
510
  */
486
511
  function untilFuture(future) {
487
512
  return self => {
488
- return tsplus_module_10.makePush(emitter => tsplus_module_4.flatMap(futureFiber => tsplus_module_4.flatMap(streamFiber => tsplus_module_4.map(() => void 0, fileName_1 + ":722:10")(tsplus_module_4.via(tsplus_module_37.joinAll([futureFiber, streamFiber], fileName_1 + ":722:24"), (0, _internal.onEarlyExit)(emitter.end))), fileName_1 + ":721:30")(tsplus_module_12.forkScoped(self.run(emitter), fileName_1 + ":721:48")), fileName_1 + ":713:30")(tsplus_module_12.forkScoped(tsplus_module_4.zipRight(_internal.earlyExit, fileName_1 + ":719:22")(tsplus_module_4.matchCauseIO(cause => emitter.failCause(cause), () => tsplus_module_4.unit, fileName_1 + ":715:26")(tsplus_module_1.wait(future, fileName_1 + ":714:17"))), fileName_1 + ":719:33")));
513
+ return tsplus_module_11.makePush(sink => tsplus_module_20.asyncIO(cb => {
514
+ const exit = tsplus_module_4.succeed(() => cb(tsplus_module_4.unit), fileName_1 + ":643:24");
515
+ return tsplus_module_4.flatMap(streamFiber => tsplus_module_4.flatMap(futureFiber => tsplus_module_4.map(() => void 0, fileName_1 + ":654:12")(tsplus_module_31.joinAll([streamFiber, futureFiber], fileName_1 + ":654:26")), fileName_1 + ":646:32")(tsplus_module_32.fork(tsplus_module_4.zipRight(exit, fileName_1 + ":652:24")(tsplus_module_4.matchCauseIO(cause => sink.error(cause), () => tsplus_module_4.unit, fileName_1 + ":648:28")(tsplus_module_1.wait(future, fileName_1 + ":647:19"))), fileName_1 + ":652:30")), fileName_1 + ":645:32")(tsplus_module_32.fork(self.run(sink), fileName_1 + ":645:47"));
516
+ }, fileName_1 + ":642:17"));
489
517
  };
490
518
  }
491
519
  /**
@@ -493,7 +521,10 @@ function untilFuture(future) {
493
521
  */
494
522
  function untilPush(signal) {
495
523
  return self => {
496
- return tsplus_module_10.makePush(emitter => tsplus_module_4.flatMap(signalFiber => tsplus_module_4.flatMap(streamFiber => tsplus_module_4.map(() => void 0, fileName_1 + ":745:10")(tsplus_module_4.via(tsplus_module_37.joinAll([signalFiber, streamFiber], fileName_1 + ":745:24"), (0, _internal.onEarlyExit)(emitter.end))), fileName_1 + ":744:30")(tsplus_module_12.forkScoped(self.run(emitter), fileName_1 + ":744:48")), fileName_1 + ":735:30")(tsplus_module_12.forkScoped(signal.run(tsplus_module_10.makeEmitter(() => _internal.earlyExit, cause => emitter.failCause(cause), _internal.earlyExit)), fileName_1 + ":742:12")));
524
+ return tsplus_module_11.makePush(sink => tsplus_module_20.asyncIO(cb => {
525
+ const exit = tsplus_module_4.succeed(() => cb(tsplus_module_4.unit), fileName_1 + ":668:24");
526
+ return tsplus_module_4.flatMap(signalFiber => tsplus_module_4.flatMap(streamFiber => tsplus_module_4.map(() => void 0, fileName_1 + ":679:12")(tsplus_module_31.joinAll([signalFiber, streamFiber], fileName_1 + ":679:26")), fileName_1 + ":678:32")(tsplus_module_32.fork(self.run(sink), fileName_1 + ":678:47")), fileName_1 + ":670:32")(tsplus_module_32.fork(signal.run(tsplus_module_11.makeSink(() => exit, cause => sink.error(cause))), fileName_1 + ":676:14"));
527
+ }, fileName_1 + ":667:17"));
497
528
  };
498
529
  }
499
530
  /**
@@ -511,6 +542,6 @@ function unwrapScoped(self, __tsplusTrace) {
511
542
  /**
512
543
  * @tsplus static fncts.io.PushOps never
513
544
  */
514
- const never = /*#__PURE__*/fromIO_1(() => tsplus_module_38.never);
545
+ const never = /*#__PURE__*/fromIO_1(() => tsplus_module_33.never);
515
546
  exports.never = never;
516
547
  //# sourceMappingURL=api.cjs.map