@typed/fx 1.11.9 → 1.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/RefSubject.d.ts.map +1 -1
- package/dist/RefSubject.js +19 -9
- package/dist/RefSubject.js.map +1 -1
- package/dist/_internal.d.ts +7 -2
- package/dist/_internal.d.ts.map +1 -1
- package/dist/_internal.js +34 -3
- package/dist/_internal.js.map +1 -1
- package/dist/catchAllCause.d.ts.map +1 -1
- package/dist/catchAllCause.js +3 -22
- package/dist/catchAllCause.js.map +1 -1
- package/dist/cjs/RefSubject.d.ts.map +1 -1
- package/dist/cjs/RefSubject.js +19 -9
- package/dist/cjs/RefSubject.js.map +1 -1
- package/dist/cjs/catchAllCause.d.ts.map +1 -1
- package/dist/cjs/catchAllCause.js +2 -21
- package/dist/cjs/catchAllCause.js.map +1 -1
- package/dist/cjs/combineAll.d.ts.map +1 -1
- package/dist/cjs/combineAll.js +1 -3
- package/dist/cjs/combineAll.js.map +1 -1
- package/dist/cjs/data-first.d.ts +1 -0
- package/dist/cjs/data-first.d.ts.map +1 -1
- package/dist/cjs/data-first.js +1 -0
- package/dist/cjs/data-first.js.map +1 -1
- package/dist/cjs/exhaustMap.d.ts.map +1 -1
- package/dist/cjs/exhaustMap.js +2 -21
- package/dist/cjs/exhaustMap.js.map +1 -1
- package/dist/cjs/exhaustMapCause.d.ts.map +1 -1
- package/dist/cjs/exhaustMapCause.js +2 -19
- package/dist/cjs/exhaustMapCause.js.map +1 -1
- package/dist/cjs/exhaustMapLatest.d.ts.map +1 -1
- package/dist/cjs/exhaustMapLatest.js +2 -71
- package/dist/cjs/exhaustMapLatest.js.map +1 -1
- package/dist/cjs/exhaustMapLatestCause.d.ts.map +1 -1
- package/dist/cjs/exhaustMapLatestCause.js +2 -69
- package/dist/cjs/exhaustMapLatestCause.js.map +1 -1
- package/dist/cjs/flatMap.d.ts.map +1 -1
- package/dist/cjs/flatMap.js +2 -20
- package/dist/cjs/flatMap.js.map +1 -1
- package/dist/cjs/helpers.d.ts +10 -0
- package/dist/cjs/helpers.d.ts.map +1 -0
- package/dist/cjs/helpers.js +103 -0
- package/dist/cjs/helpers.js.map +1 -0
- package/dist/cjs/index.d.ts +4 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/keyed.d.ts +4 -0
- package/dist/cjs/keyed.d.ts.map +1 -0
- package/dist/cjs/keyed.js +144 -0
- package/dist/cjs/keyed.js.map +1 -0
- package/dist/cjs/multicast.d.ts +1 -1
- package/dist/cjs/multicast.d.ts.map +1 -1
- package/dist/cjs/multicast.js +14 -6
- package/dist/cjs/multicast.js.map +1 -1
- package/dist/cjs/switchMap.d.ts.map +1 -1
- package/dist/cjs/switchMap.js +2 -17
- package/dist/cjs/switchMap.js.map +1 -1
- package/dist/cjs/switchMapCause.d.ts.map +1 -1
- package/dist/cjs/switchMapCause.js +2 -12
- package/dist/cjs/switchMapCause.js.map +1 -1
- package/dist/cjs/switchMatch.d.ts.map +1 -1
- package/dist/cjs/switchMatch.js +2 -12
- package/dist/cjs/switchMatch.js.map +1 -1
- package/dist/cjs/throttle.d.ts.map +1 -1
- package/dist/cjs/throttle.js +2 -19
- package/dist/cjs/throttle.js.map +1 -1
- package/dist/cjs/toReadonlyArray.d.ts.map +1 -1
- package/dist/cjs/toReadonlyArray.js +2 -7
- package/dist/cjs/toReadonlyArray.js.map +1 -1
- package/dist/combineAll.d.ts.map +1 -1
- package/dist/combineAll.js +1 -3
- package/dist/combineAll.js.map +1 -1
- package/dist/data-first.d.ts +1 -0
- package/dist/data-first.d.ts.map +1 -1
- package/dist/data-first.js +1 -0
- package/dist/data-first.js.map +1 -1
- package/dist/exhaustMap.d.ts.map +1 -1
- package/dist/exhaustMap.js +2 -21
- package/dist/exhaustMap.js.map +1 -1
- package/dist/exhaustMapCause.d.ts.map +1 -1
- package/dist/exhaustMapCause.js +3 -20
- package/dist/exhaustMapCause.js.map +1 -1
- package/dist/exhaustMapLatest.d.ts.map +1 -1
- package/dist/exhaustMapLatest.js +2 -48
- package/dist/exhaustMapLatest.js.map +1 -1
- package/dist/exhaustMapLatestCause.d.ts.map +1 -1
- package/dist/exhaustMapLatestCause.js +3 -47
- package/dist/exhaustMapLatestCause.js.map +1 -1
- package/dist/flatMap.d.ts.map +1 -1
- package/dist/flatMap.js +2 -20
- package/dist/flatMap.js.map +1 -1
- package/dist/helpers.d.ts +10 -0
- package/dist/helpers.d.ts.map +1 -0
- package/dist/helpers.js +95 -0
- package/dist/helpers.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/keyed.d.ts +4 -0
- package/dist/keyed.d.ts.map +1 -0
- package/dist/keyed.js +114 -0
- package/dist/keyed.js.map +1 -0
- package/dist/multicast.d.ts +1 -1
- package/dist/multicast.d.ts.map +1 -1
- package/dist/multicast.js +14 -6
- package/dist/multicast.js.map +1 -1
- package/dist/switchMap.d.ts.map +1 -1
- package/dist/switchMap.js +2 -17
- package/dist/switchMap.js.map +1 -1
- package/dist/switchMapCause.d.ts.map +1 -1
- package/dist/switchMapCause.js +3 -13
- package/dist/switchMapCause.js.map +1 -1
- package/dist/switchMatch.d.ts.map +1 -1
- package/dist/switchMatch.js +3 -13
- package/dist/switchMatch.js.map +1 -1
- package/dist/throttle.d.ts.map +1 -1
- package/dist/throttle.js +3 -20
- package/dist/throttle.js.map +1 -1
- package/dist/toReadonlyArray.d.ts.map +1 -1
- package/dist/toReadonlyArray.js +2 -7
- package/dist/toReadonlyArray.js.map +1 -1
- package/dist/tsconfig.cjs.build.tsbuildinfo +1 -1
- package/package.json +5 -4
- package/src/RefSubject.test.ts +3 -1
- package/src/RefSubject.ts +38 -23
- package/src/catchAllCause.ts +5 -44
- package/src/combineAll.ts +1 -3
- package/src/data-first.ts +1 -0
- package/src/exhaustMap.ts +3 -41
- package/src/exhaustMapCause.ts +3 -39
- package/src/exhaustMapLatest.ts +3 -72
- package/src/exhaustMapLatestCause.ts +3 -70
- package/src/flatMap.ts +3 -46
- package/src/helpers.ts +171 -0
- package/src/index.ts +21 -0
- package/src/keyed.test.ts +43 -0
- package/src/keyed.ts +212 -0
- package/src/multicast.test.ts +25 -0
- package/src/multicast.ts +21 -14
- package/src/switchMap.ts +3 -37
- package/src/switchMapCause.ts +4 -38
- package/src/switchMatch.ts +10 -43
- package/src/throttle.ts +5 -33
- package/src/toReadonlyArray.ts +2 -8
- package/tsconfig.build.tsbuildinfo +1 -1
package/dist/cjs/data-first.js
CHANGED
|
@@ -38,6 +38,7 @@ __exportStar(require("./fromIterable.js"), exports);
|
|
|
38
38
|
__exportStar(require("./Fx.js"), exports);
|
|
39
39
|
__exportStar(require("./gen.js"), exports);
|
|
40
40
|
__exportStar(require("./hold.js"), exports);
|
|
41
|
+
__exportStar(require("./keyed.js"), exports);
|
|
41
42
|
__exportStar(require("./map.js"), exports);
|
|
42
43
|
__exportStar(require("./mergeAll.js"), exports);
|
|
43
44
|
__exportStar(require("./multicast.js"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-first.js","sourceRoot":"","sources":["../../src/data-first.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAuB;AACvB,qDAAkC;AAClC,kDAA+B;AAC/B,yDAAsC;AACtC,oDAAiC;AACjC,gDAA6B;AAC7B,6CAA0B;AAC1B,6CAA0B;AAC1B,kDAA+B;AAC/B,uDAAoC;AACpC,wDAAqC;AACrC,6DAA0C;AAC1C,iDAA8B;AAC9B,8CAA2B;AAC3B,iDAA8B;AAC9B,+CAA4B;AAC5B,iDAA8B;AAC9B,kDAA+B;AAC/B,mDAAgC;AAChC,oDAAiC;AACjC,oDAAiC;AACjC,0CAAuB;AACvB,2CAAwB;AACxB,4CAAyB;AACzB,2CAAwB;AACxB,gDAA6B;AAC7B,iDAA8B;AAC9B,6CAA0B;AAC1B,+CAA4B;AAC5B,mDAAgC;AAChC,+CAA4B;AAC5B,+CAA4B;AAC5B,8CAA2B;AAC3B,kDAA+B;AAC/B,4CAAyB;AACzB,8CAA2B;AAC3B,mDAAgC;AAChC,iDAA8B;AAC9B,6CAA0B;AAC1B,sDAAmC;AACnC,+CAA4B;AAC5B,+CAA4B;AAC5B,+CAA4B;AAC5B,iDAA8B;AAC9B,sDAAmC;AACnC,mDAAgC;AAChC,iDAA8B;AAC9B,2CAAwB;AACxB,gDAA6B;AAC7B,gDAA6B;AAC7B,+CAA4B;AAC5B,+CAA4B;AAC5B,uDAAoC"}
|
|
1
|
+
{"version":3,"file":"data-first.js","sourceRoot":"","sources":["../../src/data-first.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAuB;AACvB,qDAAkC;AAClC,kDAA+B;AAC/B,yDAAsC;AACtC,oDAAiC;AACjC,gDAA6B;AAC7B,6CAA0B;AAC1B,6CAA0B;AAC1B,kDAA+B;AAC/B,uDAAoC;AACpC,wDAAqC;AACrC,6DAA0C;AAC1C,iDAA8B;AAC9B,8CAA2B;AAC3B,iDAA8B;AAC9B,+CAA4B;AAC5B,iDAA8B;AAC9B,kDAA+B;AAC/B,mDAAgC;AAChC,oDAAiC;AACjC,oDAAiC;AACjC,0CAAuB;AACvB,2CAAwB;AACxB,4CAAyB;AACzB,6CAA0B;AAC1B,2CAAwB;AACxB,gDAA6B;AAC7B,iDAA8B;AAC9B,6CAA0B;AAC1B,+CAA4B;AAC5B,mDAAgC;AAChC,+CAA4B;AAC5B,+CAA4B;AAC5B,8CAA2B;AAC3B,kDAA+B;AAC/B,4CAAyB;AACzB,8CAA2B;AAC3B,mDAAgC;AAChC,iDAA8B;AAC9B,6CAA0B;AAC1B,sDAAmC;AACnC,+CAA4B;AAC5B,+CAA4B;AAC5B,+CAA4B;AAC5B,iDAA8B;AAC9B,sDAAmC;AACnC,mDAAgC;AAChC,iDAA8B;AAC9B,2CAAwB;AACxB,gDAA6B;AAC7B,gDAA6B;AAC7B,+CAA4B;AAC5B,+CAA4B;AAC5B,uDAAoC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exhaustMap.d.ts","sourceRoot":"","sources":["../../src/exhaustMap.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"exhaustMap.d.ts","sourceRoot":"","sources":["../../src/exhaustMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAQ,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAIvC,wBAAgB,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC3C,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACzB,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAIvB;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACjD,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACpC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAEvB;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAE3F;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC3C,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GACrC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAEvB"}
|
package/dist/cjs/exhaustMap.js
CHANGED
|
@@ -1,30 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.exhaustEffect = exports.exhaust = exports.exhaustMapEffect = exports.exhaustMap = void 0;
|
|
4
|
-
const Function_1 = require("@effect/data/Function");
|
|
5
4
|
const Fx_js_1 = require("./Fx.js");
|
|
6
|
-
const externals_js_1 = require("./externals.js");
|
|
7
5
|
const fromEffect_js_1 = require("./fromEffect.js");
|
|
6
|
+
const helpers_js_1 = require("./helpers.js");
|
|
8
7
|
function exhaustMap(fx, f) {
|
|
9
|
-
return (0, Fx_js_1.Fx)((sink) =>
|
|
10
|
-
const runFork = externals_js_1.Runtime.runFork(yield* $(externals_js_1.Effect.runtime()));
|
|
11
|
-
const ref = yield* $(externals_js_1.Ref.make(void 0));
|
|
12
|
-
const reset = externals_js_1.Ref.set(ref, void 0);
|
|
13
|
-
const exhaustMapEvent = (a) => externals_js_1.Effect.gen(function* ($) {
|
|
14
|
-
const currentFiber = yield* $(externals_js_1.Ref.get(ref));
|
|
15
|
-
if (currentFiber) {
|
|
16
|
-
return;
|
|
17
|
-
}
|
|
18
|
-
const fiber = (0, Function_1.pipe)(f(a).run((0, Fx_js_1.Sink)(sink.event, (cause) => externals_js_1.Cause.isInterruptedOnly(cause) ? externals_js_1.Effect.unit() : sink.error(cause))), externals_js_1.Effect.zipLeft(reset), externals_js_1.Effect.catchAllCause((cause) => externals_js_1.Cause.isInterruptedOnly(cause) ? externals_js_1.Effect.unit() : sink.error(cause)), runFork);
|
|
19
|
-
yield* $(externals_js_1.Ref.set(ref, fiber));
|
|
20
|
-
});
|
|
21
|
-
yield* $(fx.run((0, Fx_js_1.Sink)(exhaustMapEvent, sink.error)));
|
|
22
|
-
// Wait for the last fiber to finish
|
|
23
|
-
const fiber = yield* $(externals_js_1.Ref.get(ref));
|
|
24
|
-
if (fiber) {
|
|
25
|
-
yield* $(externals_js_1.Fiber.join(fiber));
|
|
26
|
-
}
|
|
27
|
-
}));
|
|
8
|
+
return (0, Fx_js_1.Fx)((sink) => (0, helpers_js_1.withExhaust)((fork) => fx.run((0, Fx_js_1.Sink)((a) => fork(f(a).run(sink)), sink.error))));
|
|
28
9
|
}
|
|
29
10
|
exports.exhaustMap = exhaustMap;
|
|
30
11
|
function exhaustMapEffect(fx, f) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exhaustMap.js","sourceRoot":"","sources":["../../src/exhaustMap.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"exhaustMap.js","sourceRoot":"","sources":["../../src/exhaustMap.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAElC,mDAA4C;AAC5C,6CAA0C;AAE1C,SAAgB,UAAU,CACxB,EAAe,EACf,CAA0B;IAE1B,OAAO,IAAA,UAAE,EAAC,CAAK,IAAyB,EAAE,EAAE,CAC1C,IAAA,wBAAW,EAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAA,YAAI,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAC7E,CAAA;AACH,CAAC;AAPD,gCAOC;AAED,SAAgB,gBAAgB,CAC9B,EAAe,EACf,CAAqC;IAErC,OAAO,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,0BAAU,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAChD,CAAC;AALD,4CAKC;AAED,SAAgB,OAAO,CAAkB,EAA2B;IAClE,OAAO,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;AACjC,CAAC;AAFD,0BAEC;AAED,SAAgB,aAAa,CAC3B,EAAsC;IAEtC,OAAO,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;AACvC,CAAC;AAJD,sCAIC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exhaustMapCause.d.ts","sourceRoot":"","sources":["../../src/exhaustMapCause.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAQ,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"exhaustMapCause.d.ts","sourceRoot":"","sources":["../../src/exhaustMapCause.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAQ,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAU,MAAM,gBAAgB,CAAA;AAKtD,wBAAgB,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAChD,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GAC1C,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAIvB;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACtD,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACrD,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAE3B;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAChD,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACzB,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAIvB;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACtD,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACxC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAEvB"}
|
|
@@ -6,26 +6,9 @@ const Fx_js_1 = require("./Fx.js");
|
|
|
6
6
|
const externals_js_1 = require("./externals.js");
|
|
7
7
|
const failCause_js_1 = require("./failCause.js");
|
|
8
8
|
const fromEffect_js_1 = require("./fromEffect.js");
|
|
9
|
+
const helpers_js_1 = require("./helpers.js");
|
|
9
10
|
function exhaustMapCause(fx, f) {
|
|
10
|
-
return (0, Fx_js_1.Fx)((sink) =>
|
|
11
|
-
const runFork = externals_js_1.Runtime.runFork(yield* $(externals_js_1.Effect.runtime()));
|
|
12
|
-
const ref = yield* $(externals_js_1.Ref.make(void 0));
|
|
13
|
-
const reset = externals_js_1.Ref.set(ref, void 0);
|
|
14
|
-
const exhaustMapError = (cause) => externals_js_1.Effect.gen(function* ($) {
|
|
15
|
-
const currentFiber = yield* $(externals_js_1.Ref.get(ref));
|
|
16
|
-
if (currentFiber) {
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
const fiber = (0, Function_1.pipe)(f(cause).run((0, Fx_js_1.Sink)(sink.event, (cause) => externals_js_1.Cause.isInterruptedOnly(cause) ? externals_js_1.Effect.unit() : sink.error(cause))), externals_js_1.Effect.zipLeft(reset), externals_js_1.Effect.catchAllCause((cause) => externals_js_1.Cause.isInterruptedOnly(cause) ? externals_js_1.Effect.unit() : sink.error(cause)), runFork);
|
|
20
|
-
yield* $(externals_js_1.Ref.set(ref, fiber));
|
|
21
|
-
});
|
|
22
|
-
yield* $(fx.run((0, Fx_js_1.Sink)(sink.event, exhaustMapError)));
|
|
23
|
-
// Wait for the last fiber to finish
|
|
24
|
-
const fiber = yield* $(externals_js_1.Ref.get(ref));
|
|
25
|
-
if (fiber) {
|
|
26
|
-
yield* $(externals_js_1.Fiber.join(fiber));
|
|
27
|
-
}
|
|
28
|
-
}));
|
|
11
|
+
return (0, Fx_js_1.Fx)((sink) => (0, helpers_js_1.withExhaust)((fork) => fx.run((0, Fx_js_1.Sink)(sink.event, (cause) => fork(f(cause).run(sink))))));
|
|
29
12
|
}
|
|
30
13
|
exports.exhaustMapCause = exhaustMapCause;
|
|
31
14
|
function exhaustMapCauseEffect(fx, f) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exhaustMapCause.js","sourceRoot":"","sources":["../../src/exhaustMapCause.ts"],"names":[],"mappings":";;;AAAA,oDAA4C;AAE5C,mCAAkC;AAClC,
|
|
1
|
+
{"version":3,"file":"exhaustMapCause.js","sourceRoot":"","sources":["../../src/exhaustMapCause.ts"],"names":[],"mappings":";;;AAAA,oDAA4C;AAE5C,mCAAkC;AAClC,iDAAsD;AACtD,iDAA0C;AAC1C,mDAA4C;AAC5C,6CAA0C;AAE1C,SAAgB,eAAe,CAC7B,EAAe,EACf,CAA2C;IAE3C,OAAO,IAAA,UAAE,EAAC,CAAK,IAAyB,EAAE,EAAE,CAC1C,IAAA,wBAAW,EAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAA,YAAI,EAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CACrF,CAAA;AACH,CAAC;AAPD,0CAOC;AAED,SAAgB,qBAAqB,CACnC,EAAe,EACf,CAAsD;IAEtD,OAAO,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,0BAAU,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACrD,CAAC;AALD,sDAKC;AAED,SAAgB,eAAe,CAC7B,EAAe,EACf,CAA0B;IAE1B,OAAO,eAAe,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CACnC,IAAA,eAAI,EAAC,KAAK,EAAE,oBAAK,CAAC,cAAc,EAAE,qBAAM,CAAC,KAAK,CAAC,CAAC,EAAE,wBAAS,CAAC,CAAC,CAC9D,CAAA;AACH,CAAC;AAPD,0CAOC;AAED,SAAgB,qBAAqB,CACnC,EAAe,EACf,CAAyC;IAEzC,OAAO,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,0BAAU,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACrD,CAAC;AALD,sDAKC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exhaustMapLatest.d.ts","sourceRoot":"","sources":["../../src/exhaustMapLatest.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"exhaustMapLatest.d.ts","sourceRoot":"","sources":["../../src/exhaustMapLatest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAQ,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAIvC,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACjD,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACzB,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAIvB;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACvD,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACpC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAEvB;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAEjG;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACjD,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GACrC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAEvB"}
|
|
@@ -1,80 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
3
|
exports.exhaustLatestEffect = exports.exhaustLatest = exports.exhaustMapLatestEffect = exports.exhaustMapLatest = void 0;
|
|
27
|
-
const Function_1 = require("@effect/data/Function");
|
|
28
|
-
const Option = __importStar(require("@effect/data/Option"));
|
|
29
4
|
const Fx_js_1 = require("./Fx.js");
|
|
30
|
-
const externals_js_1 = require("./externals.js");
|
|
31
5
|
const fromEffect_js_1 = require("./fromEffect.js");
|
|
6
|
+
const helpers_js_1 = require("./helpers.js");
|
|
32
7
|
function exhaustMapLatest(fx, f) {
|
|
33
|
-
return (0, Fx_js_1.Fx)((sink) =>
|
|
34
|
-
const runFork = externals_js_1.Runtime.runFork(yield* $(externals_js_1.Effect.runtime()));
|
|
35
|
-
const ref = yield* $(externals_js_1.Ref.make(void 0));
|
|
36
|
-
const nextValue = yield* $(externals_js_1.Ref.make(Option.none()));
|
|
37
|
-
const reset = externals_js_1.Ref.set(ref, void 0);
|
|
38
|
-
// Wait for the current fiber to finish
|
|
39
|
-
const awaitNext = externals_js_1.Effect.gen(function* ($) {
|
|
40
|
-
// Wait for the last fiber to finish
|
|
41
|
-
const fiber = yield* $(externals_js_1.Ref.get(ref));
|
|
42
|
-
if (fiber) {
|
|
43
|
-
// Wait for the fiber to end to check to see if we need to run another
|
|
44
|
-
yield* $(externals_js_1.Fiber.join(fiber));
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
// Run the next value that's be saved for replay if it exists
|
|
48
|
-
const runNext = externals_js_1.Effect.gen(function* ($) {
|
|
49
|
-
const next = yield* $(externals_js_1.Ref.get(nextValue));
|
|
50
|
-
if (Option.isSome(next)) {
|
|
51
|
-
// Clear the next A to be replayed
|
|
52
|
-
yield* $(externals_js_1.Ref.set(nextValue, Option.none()));
|
|
53
|
-
// Replay the next A
|
|
54
|
-
yield* $(exhaustMapLatestEvent(next.value));
|
|
55
|
-
// Ensure we don't close the scope until the last fiber completes
|
|
56
|
-
yield* $(awaitNext);
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
const exhaustMapLatestEvent = (a) => externals_js_1.Effect.gen(function* ($) {
|
|
60
|
-
const currentFiber = yield* $(externals_js_1.Ref.get(ref));
|
|
61
|
-
// Always allow the current fiber to continue
|
|
62
|
-
if (currentFiber) {
|
|
63
|
-
// Track the latest A to be replayed layer
|
|
64
|
-
return yield* $(externals_js_1.Ref.set(nextValue, Option.some(a)));
|
|
65
|
-
}
|
|
66
|
-
// Run our Fx with the current value
|
|
67
|
-
const fiber = (0, Function_1.pipe)(f(a).run((0, Fx_js_1.Sink)(sink.event, (cause) => externals_js_1.Cause.isInterruptedOnly(cause) ? externals_js_1.Effect.unit() : sink.error(cause))),
|
|
68
|
-
// Clear the current fiber when finished
|
|
69
|
-
externals_js_1.Effect.zipRight(reset),
|
|
70
|
-
// See if there's another value to replay
|
|
71
|
-
externals_js_1.Effect.zipRight(runNext), externals_js_1.Effect.catchAllCause((cause) => externals_js_1.Cause.isInterruptedOnly(cause) ? externals_js_1.Effect.unit() : sink.error(cause)), runFork);
|
|
72
|
-
yield* $(externals_js_1.Ref.set(ref, fiber));
|
|
73
|
-
});
|
|
74
|
-
yield* $(fx.run((0, Fx_js_1.Sink)(exhaustMapLatestEvent, sink.error)));
|
|
75
|
-
// Wait for the last fiber to finish
|
|
76
|
-
yield* $(awaitNext);
|
|
77
|
-
}));
|
|
8
|
+
return (0, Fx_js_1.Fx)((sink) => (0, helpers_js_1.withExhaustLatest)((fork) => fx.run((0, Fx_js_1.Sink)((a) => fork(f(a).run(sink)), sink.error))));
|
|
78
9
|
}
|
|
79
10
|
exports.exhaustMapLatest = exhaustMapLatest;
|
|
80
11
|
function exhaustMapLatestEffect(fx, f) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exhaustMapLatest.js","sourceRoot":"","sources":["../../src/exhaustMapLatest.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"exhaustMapLatest.js","sourceRoot":"","sources":["../../src/exhaustMapLatest.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAElC,mDAA4C;AAC5C,6CAAgD;AAEhD,SAAgB,gBAAgB,CAC9B,EAAe,EACf,CAA0B;IAE1B,OAAO,IAAA,UAAE,EAAC,CAAK,IAAyB,EAAE,EAAE,CAC1C,IAAA,8BAAiB,EAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAA,YAAI,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CACnF,CAAA;AACH,CAAC;AAPD,4CAOC;AAED,SAAgB,sBAAsB,CACpC,EAAe,EACf,CAAqC;IAErC,OAAO,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,0BAAU,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACtD,CAAC;AALD,wDAKC;AAED,SAAgB,aAAa,CAAkB,EAA2B;IACxE,OAAO,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;AACvC,CAAC;AAFD,sCAEC;AAED,SAAgB,mBAAmB,CACjC,EAAsC;IAEtC,OAAO,sBAAsB,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;AAC7C,CAAC;AAJD,kDAIC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exhaustMapLatestCause.d.ts","sourceRoot":"","sources":["../../src/exhaustMapLatestCause.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"exhaustMapLatestCause.d.ts","sourceRoot":"","sources":["../../src/exhaustMapLatestCause.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAQ,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAU,MAAM,gBAAgB,CAAA;AAKtD,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACtD,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GAC1C,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAIvB;AAED,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC5D,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACrD,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAE3B;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACtD,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACzB,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAIvB;AAED,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC5D,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACxC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAEvB"}
|
|
@@ -1,81 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
3
|
exports.exhaustMapLatestErrorEffect = exports.exhaustMapLatestError = exports.exhaustMapLatestCauseEffect = exports.exhaustMapLatestCause = void 0;
|
|
27
4
|
const Function_1 = require("@effect/data/Function");
|
|
28
|
-
const Option = __importStar(require("@effect/data/Option"));
|
|
29
5
|
const Fx_js_1 = require("./Fx.js");
|
|
30
6
|
const externals_js_1 = require("./externals.js");
|
|
31
7
|
const failCause_js_1 = require("./failCause.js");
|
|
32
8
|
const fromEffect_js_1 = require("./fromEffect.js");
|
|
9
|
+
const helpers_js_1 = require("./helpers.js");
|
|
33
10
|
function exhaustMapLatestCause(fx, f) {
|
|
34
|
-
return (0, Fx_js_1.Fx)((sink) =>
|
|
35
|
-
const runFork = externals_js_1.Runtime.runFork(yield* $(externals_js_1.Effect.runtime()));
|
|
36
|
-
const ref = yield* $(externals_js_1.Ref.make(void 0));
|
|
37
|
-
const nextValue = yield* $(externals_js_1.Ref.make(Option.none()));
|
|
38
|
-
const reset = externals_js_1.Ref.set(ref, void 0);
|
|
39
|
-
// Wait for the current fiber to finish
|
|
40
|
-
const awaitNext = externals_js_1.Effect.gen(function* ($) {
|
|
41
|
-
// Wait for the last fiber to finish
|
|
42
|
-
const fiber = yield* $(externals_js_1.Ref.get(ref));
|
|
43
|
-
if (fiber) {
|
|
44
|
-
// Wait for the fiber to end to check to see if we need to run another
|
|
45
|
-
yield* $(externals_js_1.Fiber.join(fiber));
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
// Run the next value that's be saved for replay if it exists
|
|
49
|
-
const runNext = externals_js_1.Effect.gen(function* ($) {
|
|
50
|
-
const next = yield* $(externals_js_1.Ref.get(nextValue));
|
|
51
|
-
if (Option.isSome(next)) {
|
|
52
|
-
// Clear the next A to be replayed
|
|
53
|
-
yield* $(externals_js_1.Ref.set(nextValue, Option.none()));
|
|
54
|
-
// Replay the next A
|
|
55
|
-
yield* $(exhaustMapLatestError(next.value));
|
|
56
|
-
// Ensure we don't close the scope until the last fiber completes
|
|
57
|
-
yield* $(awaitNext);
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
const exhaustMapLatestError = (cause) => externals_js_1.Effect.gen(function* ($) {
|
|
61
|
-
const currentFiber = yield* $(externals_js_1.Ref.get(ref));
|
|
62
|
-
// Always allow the current fiber to continue
|
|
63
|
-
if (currentFiber) {
|
|
64
|
-
// Track the latest A to be replayed layer
|
|
65
|
-
return yield* $(externals_js_1.Ref.set(nextValue, Option.some(cause)));
|
|
66
|
-
}
|
|
67
|
-
// Run our Fx with the current value
|
|
68
|
-
const fiber = (0, Function_1.pipe)(f(cause).run((0, Fx_js_1.Sink)(sink.event, (cause) => externals_js_1.Cause.isInterruptedOnly(cause) ? externals_js_1.Effect.unit() : sink.error(cause))),
|
|
69
|
-
// Clear the current fiber when finished
|
|
70
|
-
externals_js_1.Effect.zipRight(reset),
|
|
71
|
-
// See if there's another value to replay
|
|
72
|
-
externals_js_1.Effect.zipRight(runNext), externals_js_1.Effect.catchAllCause((cause) => externals_js_1.Cause.isInterruptedOnly(cause) ? externals_js_1.Effect.unit() : sink.error(cause)), runFork);
|
|
73
|
-
yield* $(externals_js_1.Ref.set(ref, fiber));
|
|
74
|
-
});
|
|
75
|
-
yield* $(fx.run((0, Fx_js_1.Sink)(sink.event, exhaustMapLatestError)));
|
|
76
|
-
// Wait for the last fiber to finish
|
|
77
|
-
yield* $(awaitNext);
|
|
78
|
-
}));
|
|
11
|
+
return (0, Fx_js_1.Fx)((sink) => (0, helpers_js_1.withExhaustLatest)((fork) => fx.run((0, Fx_js_1.Sink)(sink.event, (cause) => fork(f(cause).run(sink))))));
|
|
79
12
|
}
|
|
80
13
|
exports.exhaustMapLatestCause = exhaustMapLatestCause;
|
|
81
14
|
function exhaustMapLatestCauseEffect(fx, f) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exhaustMapLatestCause.js","sourceRoot":"","sources":["../../src/exhaustMapLatestCause.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"exhaustMapLatestCause.js","sourceRoot":"","sources":["../../src/exhaustMapLatestCause.ts"],"names":[],"mappings":";;;AAAA,oDAA4C;AAE5C,mCAAkC;AAClC,iDAAsD;AACtD,iDAA0C;AAC1C,mDAA4C;AAC5C,6CAAgD;AAEhD,SAAgB,qBAAqB,CACnC,EAAe,EACf,CAA2C;IAE3C,OAAO,IAAA,UAAE,EAAC,CAAK,IAAyB,EAAE,EAAE,CAC1C,IAAA,8BAAiB,EAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAA,YAAI,EAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAC3F,CAAA;AACH,CAAC;AAPD,sDAOC;AAED,SAAgB,2BAA2B,CACzC,EAAe,EACf,CAAsD;IAEtD,OAAO,qBAAqB,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,0BAAU,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC3D,CAAC;AALD,kEAKC;AAED,SAAgB,qBAAqB,CACnC,EAAe,EACf,CAA0B;IAE1B,OAAO,qBAAqB,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CACzC,IAAA,eAAI,EAAC,KAAK,EAAE,oBAAK,CAAC,cAAc,EAAE,qBAAM,CAAC,KAAK,CAAC,CAAC,EAAE,wBAAS,CAAC,CAAC,CAC9D,CAAA;AACH,CAAC;AAPD,sDAOC;AAED,SAAgB,2BAA2B,CACzC,EAAe,EACf,CAAyC;IAEzC,OAAO,qBAAqB,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,0BAAU,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC3D,CAAC;AALD,kEAKC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flatMap.d.ts","sourceRoot":"","sources":["../../src/flatMap.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"flatMap.d.ts","sourceRoot":"","sources":["../../src/flatMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAQ,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAIvC,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACxC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACzB,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAIvB;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC9C,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACpC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAEvB;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAE3F;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC3C,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GACrC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAEvB"}
|
package/dist/cjs/flatMap.js
CHANGED
|
@@ -1,29 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.flattenEffect = exports.flatten = exports.flatMapEffect = exports.flatMap = void 0;
|
|
4
|
-
const Function_1 = require("@effect/data/Function");
|
|
5
4
|
const Fx_js_1 = require("./Fx.js");
|
|
6
|
-
const externals_js_1 = require("./externals.js");
|
|
7
5
|
const fromEffect_js_1 = require("./fromEffect.js");
|
|
6
|
+
const helpers_js_1 = require("./helpers.js");
|
|
8
7
|
function flatMap(fx, f) {
|
|
9
|
-
return (0, Fx_js_1.Fx)((sink) =>
|
|
10
|
-
const runFork = externals_js_1.Runtime.runFork(yield* $(externals_js_1.Effect.runtime()));
|
|
11
|
-
const ref = yield* $(externals_js_1.Ref.make(new Set()));
|
|
12
|
-
yield* $(fx.run((0, Fx_js_1.Sink)((a) => externals_js_1.Effect.gen(function* ($) {
|
|
13
|
-
const fiber = runFork(f(a).run((0, Fx_js_1.Sink)(sink.event, (cause) => externals_js_1.Cause.isInterruptedOnly(cause) ? externals_js_1.Effect.unit() : sink.error(cause))));
|
|
14
|
-
// Add Fiber to fibers
|
|
15
|
-
yield* $(externals_js_1.Ref.update(ref, (fs) => fs.add(fiber)));
|
|
16
|
-
// When the fiber ends, we need to remove it from the list of fibers
|
|
17
|
-
(0, Function_1.pipe)(externals_js_1.Fiber.join(fiber), externals_js_1.Effect.flatMap(() => externals_js_1.Ref.update(ref, (fs) => (fs.delete(fiber), fs))), externals_js_1.Effect.catchAllCause((cause) => externals_js_1.Cause.isInterruptedOnly(cause) ? externals_js_1.Effect.unit() : sink.error(cause)),
|
|
18
|
-
// but don't allow this to be blocking
|
|
19
|
-
runFork);
|
|
20
|
-
}), sink.error)));
|
|
21
|
-
// Wait for the last fibers to finish
|
|
22
|
-
const fibers = yield* $(externals_js_1.Ref.get(ref));
|
|
23
|
-
if (fibers.size > 0) {
|
|
24
|
-
yield* $(externals_js_1.Fiber.joinAll(fibers));
|
|
25
|
-
}
|
|
26
|
-
}));
|
|
8
|
+
return (0, Fx_js_1.Fx)((sink) => (0, helpers_js_1.withUnboundedConcurrency)((fork) => fx.run((0, Fx_js_1.Sink)((a) => fork(f(a).run(sink)), sink.error))));
|
|
27
9
|
}
|
|
28
10
|
exports.flatMap = flatMap;
|
|
29
11
|
function flatMapEffect(fx, f) {
|
package/dist/cjs/flatMap.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flatMap.js","sourceRoot":"","sources":["../../src/flatMap.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"flatMap.js","sourceRoot":"","sources":["../../src/flatMap.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAElC,mDAA4C;AAC5C,6CAAuD;AAEvD,SAAgB,OAAO,CACrB,EAAe,EACf,CAA0B;IAE1B,OAAO,IAAA,UAAE,EAAC,CAAK,IAAyB,EAAE,EAAE,CAC1C,IAAA,qCAAwB,EAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAA,YAAI,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAC1F,CAAA;AACH,CAAC;AAPD,0BAOC;AAED,SAAgB,aAAa,CAC3B,EAAe,EACf,CAAqC;IAErC,OAAO,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,0BAAU,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC7C,CAAC;AALD,sCAKC;AAED,SAAgB,OAAO,CAAkB,EAA2B;IAClE,OAAO,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;AAC9B,CAAC;AAFD,0BAEC;AAED,SAAgB,aAAa,CAC3B,EAAsC;IAEtC,OAAO,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;AACpC,CAAC;AAJD,sCAIC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Effect, Fiber } from './externals.js';
|
|
2
|
+
export type ScopedFork = <R2, E2, B>(effect: Effect.Effect<R2, E2, B>) => Effect.Effect<R2, never, Fiber.RuntimeFiber<E2, B>>;
|
|
3
|
+
export declare function withScopedFork<R, E, A>(f: (fork: ScopedFork) => Effect.Effect<R, E, A>): Effect.Effect<R, E, A>;
|
|
4
|
+
export type ForkFxFiber = <R2>(effect: Effect.Effect<R2, never, void>) => Effect.Effect<R2, never, Fiber.RuntimeFiber<never, void>>;
|
|
5
|
+
export declare function withUnboundedConcurrency<R, E, A>(f: (fork: ForkFxFiber) => Effect.Effect<R, E, A>): Effect.Effect<R, E, void>;
|
|
6
|
+
export type ForkFx = <R2>(eff: Effect.Effect<R2, never, void>) => Effect.Effect<R2, never, void>;
|
|
7
|
+
export declare function withSwitch<R, E, A>(f: (switchFork: ForkFx) => Effect.Effect<R, E, A>): Effect.Effect<R, E, void>;
|
|
8
|
+
export declare function withExhaust<R, E, A>(f: (exhaustFork: ForkFx) => Effect.Effect<R, E, A>): Effect.Effect<R, E, void>;
|
|
9
|
+
export declare function withExhaustLatest<R, E, A>(f: (exhaustLatestFork: ForkFx) => Effect.Effect<R, E, A>): Effect.Effect<R, E, void>;
|
|
10
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,KAAK,EAA4B,MAAM,gBAAgB,CAAA;AAExE,MAAM,MAAM,UAAU,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EACjC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAC7B,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;AAExD,wBAAgB,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,0BAMtF;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,EAAE,EAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KACnC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;AAE9D,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAC9C,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,6BAgCjD;AAED,MAAM,MAAM,MAAM,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;AAEhG,wBAAgB,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,6BAuBpF;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,6BA6BtF;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACvC,CAAC,EAAE,CAAC,iBAAiB,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,6BAwDzD"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.withExhaustLatest = exports.withExhaust = exports.withSwitch = exports.withUnboundedConcurrency = exports.withScopedFork = void 0;
|
|
4
|
+
const Function_1 = require("@effect/data/Function");
|
|
5
|
+
const externals_js_1 = require("./externals.js");
|
|
6
|
+
function withScopedFork(f) {
|
|
7
|
+
return externals_js_1.Effect.acquireUseRelease(externals_js_1.Scope.make(), (scope) => f(externals_js_1.Effect.forkIn(scope)), (scope, exit) => externals_js_1.Scope.close(scope, exit));
|
|
8
|
+
}
|
|
9
|
+
exports.withScopedFork = withScopedFork;
|
|
10
|
+
function withUnboundedConcurrency(f) {
|
|
11
|
+
return withScopedFork((fork) => externals_js_1.Effect.gen(function* ($) {
|
|
12
|
+
const fibers = new Set();
|
|
13
|
+
yield* $(f((effect) => externals_js_1.Effect.gen(function* ($) {
|
|
14
|
+
const fiber = yield* $(fork(effect));
|
|
15
|
+
fibers.add(fiber);
|
|
16
|
+
// Ensure that the fiber is removed from the set when it finishes
|
|
17
|
+
yield* $(externals_js_1.Fiber.join(fiber), externals_js_1.Effect.ensuring(externals_js_1.Effect.sync(() => fibers.delete(fiber))),
|
|
18
|
+
// but don't allow this to be blocking
|
|
19
|
+
fork);
|
|
20
|
+
return fiber;
|
|
21
|
+
})));
|
|
22
|
+
// Wait for all fibers to complete
|
|
23
|
+
if (fibers.size > 0) {
|
|
24
|
+
yield* $(externals_js_1.Fiber.joinAll(fibers));
|
|
25
|
+
}
|
|
26
|
+
}));
|
|
27
|
+
}
|
|
28
|
+
exports.withUnboundedConcurrency = withUnboundedConcurrency;
|
|
29
|
+
function withSwitch(f) {
|
|
30
|
+
return withScopedFork((fork) => externals_js_1.Effect.gen(function* ($) {
|
|
31
|
+
const ref = yield* $(externals_js_1.RefS.make(externals_js_1.Fiber.unit()));
|
|
32
|
+
const switchFork = (eff) => externals_js_1.RefS.updateEffect(ref, (currentFiber) => (0, Function_1.pipe)(externals_js_1.Fiber.interruptFork(currentFiber), externals_js_1.Effect.flatMap(() => fork(eff))));
|
|
33
|
+
yield* $(f(switchFork));
|
|
34
|
+
const fiber = yield* $(externals_js_1.RefS.get(ref));
|
|
35
|
+
// Wait for last fiber to complete
|
|
36
|
+
if (fiber) {
|
|
37
|
+
yield* $(externals_js_1.Fiber.join(fiber));
|
|
38
|
+
}
|
|
39
|
+
}));
|
|
40
|
+
}
|
|
41
|
+
exports.withSwitch = withSwitch;
|
|
42
|
+
function withExhaust(f) {
|
|
43
|
+
return withScopedFork((fork) => externals_js_1.Effect.gen(function* ($) {
|
|
44
|
+
const ref = yield* $(externals_js_1.Ref.make(undefined));
|
|
45
|
+
const reset = externals_js_1.Ref.set(ref, undefined);
|
|
46
|
+
const exhaustFork = (eff) => externals_js_1.Effect.gen(function* ($) {
|
|
47
|
+
const currentFiber = yield* $(externals_js_1.Ref.get(ref));
|
|
48
|
+
if (currentFiber) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const fiber = yield* $(eff, externals_js_1.Effect.ensuring(reset), fork);
|
|
52
|
+
yield* $(externals_js_1.Ref.set(ref, fiber));
|
|
53
|
+
});
|
|
54
|
+
yield* $(f(exhaustFork));
|
|
55
|
+
const fiber = yield* $(externals_js_1.Ref.get(ref));
|
|
56
|
+
// Wait for last fiber to complete
|
|
57
|
+
if (fiber) {
|
|
58
|
+
yield* $(externals_js_1.Fiber.join(fiber));
|
|
59
|
+
}
|
|
60
|
+
}));
|
|
61
|
+
}
|
|
62
|
+
exports.withExhaust = withExhaust;
|
|
63
|
+
function withExhaustLatest(f) {
|
|
64
|
+
return withScopedFork((fork) => externals_js_1.Effect.gen(function* ($) {
|
|
65
|
+
const ref = yield* $(externals_js_1.Ref.make(undefined));
|
|
66
|
+
const nextEffect = yield* $(externals_js_1.Ref.make(externals_js_1.Option.none()));
|
|
67
|
+
const reset = externals_js_1.Ref.set(ref, undefined);
|
|
68
|
+
// Wait for the current fiber to finish
|
|
69
|
+
const awaitNext = externals_js_1.Effect.gen(function* ($) {
|
|
70
|
+
// Wait for the last fiber to finish
|
|
71
|
+
const fiber = yield* $(externals_js_1.Ref.get(ref));
|
|
72
|
+
if (fiber) {
|
|
73
|
+
// Wait for the fiber to end to check to see if we need to run another
|
|
74
|
+
yield* $(externals_js_1.Fiber.join(fiber));
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
// Run the next value that's be saved for replay if it exists
|
|
78
|
+
const runNext = externals_js_1.Effect.gen(function* ($) {
|
|
79
|
+
const next = yield* $(externals_js_1.Ref.get(nextEffect));
|
|
80
|
+
if (externals_js_1.Option.isSome(next)) {
|
|
81
|
+
// Clear the next A to be replayed
|
|
82
|
+
yield* $(externals_js_1.Ref.set(nextEffect, externals_js_1.Option.none()));
|
|
83
|
+
// Replay the next A
|
|
84
|
+
yield* $(exhaustLatestFork(next.value));
|
|
85
|
+
// Ensure we don't close the scope until the last fiber completes
|
|
86
|
+
yield* $(awaitNext);
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
const exhaustLatestFork = (eff) => externals_js_1.Effect.gen(function* ($) {
|
|
90
|
+
const currentFiber = yield* $(externals_js_1.Ref.get(ref));
|
|
91
|
+
if (currentFiber) {
|
|
92
|
+
return yield* $(externals_js_1.Ref.set(nextEffect, externals_js_1.Option.some(eff)));
|
|
93
|
+
}
|
|
94
|
+
const fiber = yield* $(eff, externals_js_1.Effect.ensuring(externals_js_1.Effect.zip(reset, runNext)), fork);
|
|
95
|
+
yield* $(externals_js_1.RefS.set(ref, fiber));
|
|
96
|
+
});
|
|
97
|
+
yield* $(f(exhaustLatestFork));
|
|
98
|
+
// Wait for last fibers to complete
|
|
99
|
+
yield* $(awaitNext);
|
|
100
|
+
}));
|
|
101
|
+
}
|
|
102
|
+
exports.withExhaustLatest = withExhaustLatest;
|
|
103
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -337,6 +337,10 @@ export declare const throttle: {
|
|
|
337
337
|
export declare const toArray: <R, E, A>(fx: Fx<R, E, A>) => Effect.Effect<R | Scope.Scope, E, Array<A>>;
|
|
338
338
|
export declare const toChunk: <R, E, A>(fx: Fx<R, E, A>) => Effect.Effect<R | Scope.Scope, E, Chunk.Chunk<A>>;
|
|
339
339
|
export declare const toReadonlyArray: <R, E, A>(fx: Fx<R, E, A>) => Effect.Effect<R | Scope.Scope, E, ReadonlyArray<A>>;
|
|
340
|
+
export declare const keyed: {
|
|
341
|
+
<A, R2, E2, B>(f: (value: Fx<never, never, A>) => Fx<R2, E2, B>, eq?: Equivalence<A>): <R, E>(fx: Fx<R, E, readonly A[]>) => Fx<R2, E2, readonly B[]>;
|
|
342
|
+
<R, E, A, R2, E2, B>(fx: Fx<R, E, readonly A[]>, f: (value: Fx<never, never, A>) => Fx<R2, E2, B>, eq?: Equivalence<A>): Fx<R | R2, E | E2, readonly B[]>;
|
|
343
|
+
};
|
|
340
344
|
export * from './RefSubject.js';
|
|
341
345
|
export * from './Subject.js';
|
|
342
346
|
//# sourceMappingURL=index.d.ts.map
|