@typed/fx 1.11.7 → 1.11.8
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/cjs/multicast.d.ts +4 -3
- package/dist/cjs/multicast.d.ts.map +1 -1
- package/dist/cjs/multicast.js +13 -7
- package/dist/cjs/multicast.js.map +1 -1
- package/dist/cjs/switchMap.d.ts.map +1 -1
- package/dist/cjs/switchMap.js +16 -13
- package/dist/cjs/switchMap.js.map +1 -1
- package/dist/multicast.d.ts +4 -3
- package/dist/multicast.d.ts.map +1 -1
- package/dist/multicast.js +14 -8
- package/dist/multicast.js.map +1 -1
- package/dist/switchMap.d.ts.map +1 -1
- package/dist/switchMap.js +17 -14
- package/dist/switchMap.js.map +1 -1
- package/dist/tsconfig.cjs.build.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/src/RefSubject.test.ts +1 -3
- package/src/multicast.ts +25 -16
- package/src/switchMap.ts +30 -29
- package/tsconfig.build.tsbuildinfo +1 -1
package/dist/cjs/multicast.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { Trace } from '@effect/data/Debug';
|
|
2
2
|
import type { Fx, Sink } from './Fx.js';
|
|
3
3
|
import { FxTypeId } from './Fx.js';
|
|
4
|
-
import
|
|
5
|
-
import { Effect, Fiber } from './externals.js';
|
|
4
|
+
import { Cause, Context, Deferred, Effect, Fiber } from './externals.js';
|
|
6
5
|
export declare function multicast<R, E, A>(fx: Fx<R, E, A>): Fx<R, E, A>;
|
|
7
6
|
export interface MulticastObserver<R, E, A> {
|
|
8
7
|
readonly sink: Sink<R, E, A>;
|
|
9
8
|
readonly context: Context.Context<R>;
|
|
9
|
+
readonly deferred: Deferred.Deferred<never, void>;
|
|
10
10
|
}
|
|
11
11
|
export declare class MulticastFx<R, E, A> implements Fx<R, E, A>, Sink<never, E, A> {
|
|
12
12
|
readonly fx: Fx<R, E, A>;
|
|
@@ -21,9 +21,10 @@ export declare class MulticastFx<R, E, A> implements Fx<R, E, A>, Sink<never, E,
|
|
|
21
21
|
run<R2>(sink: Sink<R2, E, A>): Effect.Effect<R | R2, never, void>;
|
|
22
22
|
readonly addTrace: (trace: Trace) => Fx<R, E, A>;
|
|
23
23
|
event(a: A): Effect.Effect<never, never, void>;
|
|
24
|
-
error
|
|
24
|
+
error(cause: Cause.Cause<E>): Effect.Effect<never, never, void>;
|
|
25
25
|
protected runEvent<R>(observer: MulticastObserver<R, E, A>, a: A): Effect.Effect<never, never, void>;
|
|
26
26
|
protected runError<R>(observer: MulticastObserver<R, E, A>, cause: Cause.Cause<E>): Effect.Effect<never, never, void>;
|
|
27
|
+
protected runEnd(): Effect.Effect<never, never, void>;
|
|
27
28
|
protected removeSink(sink: Sink<any, E, A>): Effect.Effect<never, never, void>;
|
|
28
29
|
}
|
|
29
30
|
//# sourceMappingURL=multicast.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multicast.d.ts","sourceRoot":"","sources":["../../src/multicast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAG/C,OAAO,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAU,MAAM,SAAS,CAAA;AAC1C,OAAO,
|
|
1
|
+
{"version":3,"file":"multicast.d.ts","sourceRoot":"","sources":["../../src/multicast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAG/C,OAAO,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAU,MAAM,SAAS,CAAA;AAC1C,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAExE,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAE/D;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACxC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IACpC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;CAClD;AAED,qBAAa,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,YAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAU7D,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IATpC,QAAQ,CAAC,CAAC,QAAQ,CAAC;;;;MAIlB;IAED,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAK;IAC7D,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,SAAS,CAAA;gBAEvC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAMpC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IA4B5B,QAAQ,CAAC,QAAQ,UAAW,KAAK,KAAG,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAE9C;IAED,KAAK,CAAC,CAAC,EAAE,CAAC;IAMV,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAM3B,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAIhE,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAIjF,SAAS,CAAC,MAAM;IAQhB,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;CAuB3C"}
|
package/dist/cjs/multicast.js
CHANGED
|
@@ -21,7 +21,6 @@ class MulticastFx {
|
|
|
21
21
|
this.addTrace = (trace) => {
|
|
22
22
|
return multicast((0, Fx_js_1.Traced)(this.fx, trace));
|
|
23
23
|
};
|
|
24
|
-
this.error = (cause) => externals_js_1.Effect.suspend(() => externals_js_1.Effect.forEachDiscard(this.observers.slice(0), (observer) => this.runError(observer, cause)));
|
|
25
24
|
this.run = this.run.bind(this);
|
|
26
25
|
this.event = this.event.bind(this);
|
|
27
26
|
this.error = this.error.bind(this);
|
|
@@ -32,22 +31,29 @@ class MulticastFx {
|
|
|
32
31
|
const that = this;
|
|
33
32
|
return externals_js_1.Effect.uninterruptibleMask((restore) => externals_js_1.Effect.gen(function* ($) {
|
|
34
33
|
const context = yield* $(externals_js_1.Effect.context());
|
|
35
|
-
const
|
|
34
|
+
const deferred = yield* $(externals_js_1.Deferred.make());
|
|
35
|
+
const observer = { sink, context, deferred };
|
|
36
36
|
if (observers.push(observer) === 1) {
|
|
37
|
-
that.fiber = yield* $(externals_js_1.Effect.
|
|
37
|
+
that.fiber = yield* $(that.fx.run(that), restore, externals_js_1.Effect.onExit(() => that.runEnd()), externals_js_1.Effect.uninterruptible, externals_js_1.Effect.forkDaemon);
|
|
38
38
|
}
|
|
39
|
-
|
|
40
|
-
yield* $(
|
|
39
|
+
yield* $(externals_js_1.Deferred.await(deferred));
|
|
40
|
+
yield* $(that.removeSink(sink));
|
|
41
41
|
}));
|
|
42
42
|
}
|
|
43
43
|
event(a) {
|
|
44
44
|
return externals_js_1.Effect.suspend(() => externals_js_1.Effect.forEachDiscard(this.observers.slice(0), (observer) => this.runEvent(observer, a)));
|
|
45
45
|
}
|
|
46
|
+
error(cause) {
|
|
47
|
+
return externals_js_1.Effect.suspend(() => externals_js_1.Effect.forEachDiscard(this.observers.slice(0), (observer) => this.runError(observer, cause)));
|
|
48
|
+
}
|
|
46
49
|
runEvent(observer, a) {
|
|
47
|
-
return externals_js_1.Effect.
|
|
50
|
+
return externals_js_1.Effect.provideContext(observer.sink.event(a), observer.context);
|
|
48
51
|
}
|
|
49
52
|
runError(observer, cause) {
|
|
50
|
-
return externals_js_1.Effect.
|
|
53
|
+
return externals_js_1.Effect.provideContext(observer.sink.error(cause), observer.context);
|
|
54
|
+
}
|
|
55
|
+
runEnd() {
|
|
56
|
+
return externals_js_1.Effect.suspend(() => externals_js_1.Effect.forEachDiscard(this.observers.slice(0), (observer) => externals_js_1.Deferred.succeed(observer.deferred, void 0)));
|
|
51
57
|
}
|
|
52
58
|
removeSink(sink) {
|
|
53
59
|
return externals_js_1.Effect.suspend(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multicast.js","sourceRoot":"","sources":["../../src/multicast.ts"],"names":[],"mappings":";;;;AACA,oDAAgD;AAGhD,mCAA0C;
|
|
1
|
+
{"version":3,"file":"multicast.js","sourceRoot":"","sources":["../../src/multicast.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switchMap.d.ts","sourceRoot":"","sources":["../../src/switchMap.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"switchMap.d.ts","sourceRoot":"","sources":["../../src/switchMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAQ,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,MAAM,EAAsB,MAAM,gBAAgB,CAAA;AAG3D,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC1C,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,CAsCvB;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,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,YAAY,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,CAEhG;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAChD,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/switchMap.js
CHANGED
|
@@ -1,25 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.switchLatestEffect = exports.switchLatest = exports.switchMapEffect = exports.switchMap = void 0;
|
|
4
|
-
const Function_1 = require("@effect/data/Function");
|
|
5
4
|
const Fx_js_1 = require("./Fx.js");
|
|
6
5
|
const externals_js_1 = require("./externals.js");
|
|
7
6
|
const fromEffect_js_1 = require("./fromEffect.js");
|
|
8
7
|
function switchMap(fx, f) {
|
|
9
8
|
return (0, Fx_js_1.Fx)((sink) => externals_js_1.Effect.gen(function* ($) {
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
const scope = yield* $(externals_js_1.Scope.make());
|
|
10
|
+
const ref = yield* $(externals_js_1.RefS.make(null));
|
|
11
|
+
const reset = externals_js_1.RefS.set(ref, null);
|
|
12
|
+
const switchEvent = (a) => externals_js_1.RefS.updateEffect(ref, (fiber) => externals_js_1.Effect.gen(function* ($) {
|
|
13
|
+
if (fiber) {
|
|
14
|
+
yield* $(externals_js_1.Fiber.interrupt(fiber));
|
|
15
15
|
}
|
|
16
|
-
|
|
17
|
-
});
|
|
18
|
-
yield* $(
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
16
|
+
return yield* $(f(a).run(sink), externals_js_1.Effect.zipLeft(reset), externals_js_1.Effect.catchAllCause(sink.error), externals_js_1.Effect.forkIn(scope));
|
|
17
|
+
}));
|
|
18
|
+
yield* $(externals_js_1.Effect.gen(function* ($) {
|
|
19
|
+
yield* $(fx.run((0, Fx_js_1.Sink)(switchEvent, sink.error)));
|
|
20
|
+
const fiber = yield* $(externals_js_1.RefS.get(ref));
|
|
21
|
+
// Wait for the last fiber to finish
|
|
22
|
+
if (fiber) {
|
|
23
|
+
yield* $(externals_js_1.Fiber.join(fiber));
|
|
24
|
+
}
|
|
25
|
+
}), externals_js_1.Effect.onExit((exit) => externals_js_1.Scope.close(scope, exit)));
|
|
23
26
|
}));
|
|
24
27
|
}
|
|
25
28
|
exports.switchMap = switchMap;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switchMap.js","sourceRoot":"","sources":["../../src/switchMap.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"switchMap.js","sourceRoot":"","sources":["../../src/switchMap.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAClC,iDAA2D;AAC3D,mDAA4C;AAE5C,SAAgB,SAAS,CACvB,EAAe,EACf,CAA0B;IAE1B,OAAO,IAAA,UAAE,EAAC,CAAK,IAAyB,EAAE,EAAE,CAC1C,qBAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,oBAAK,CAAC,IAAI,EAAE,CAAC,CAAA;QACpC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,mBAAI,CAAC,IAAI,CAAyC,IAAI,CAAC,CAAC,CAAA;QAC7E,MAAM,KAAK,GAAG,mBAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAEjC,MAAM,WAAW,GAAG,CAAC,CAAI,EAAE,EAAE,CAC3B,mBAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CAC/B,qBAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrB,IAAI,KAAK,EAAE;gBACT,KAAK,CAAC,CAAC,CAAC,CAAC,oBAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;aACjC;YAED,OAAO,KAAK,CAAC,CAAC,CAAC,CACb,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EACd,qBAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EACrB,qBAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAChC,qBAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CACrB,CAAA;QACH,CAAC,CAAC,CACH,CAAA;QAEH,KAAK,CAAC,CAAC,CAAC,CACN,qBAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrB,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAA,YAAI,EAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAE/C,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,mBAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;YAErC,oCAAoC;YACpC,IAAI,KAAK,EAAE;gBACT,KAAK,CAAC,CAAC,CAAC,CAAC,oBAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;aAC5B;QACH,CAAC,CAAC,EACF,qBAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,oBAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAClD,CAAA;IACH,CAAC,CAAC,CACH,CAAA;AACH,CAAC;AAzCD,8BAyCC;AAED,SAAgB,eAAe,CAC7B,EAAe,EACf,CAAqC;IAErC,OAAO,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,0BAAU,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC/C,CAAC;AALD,0CAKC;AAED,SAAgB,YAAY,CAAkB,EAA2B;IACvE,OAAO,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;AAChC,CAAC;AAFD,oCAEC;AAED,SAAgB,kBAAkB,CAChC,EAAsC;IAEtC,OAAO,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;AACtC,CAAC;AAJD,gDAIC"}
|
package/dist/multicast.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { Trace } from '@effect/data/Debug';
|
|
2
2
|
import type { Fx, Sink } from './Fx.js';
|
|
3
3
|
import { FxTypeId } from './Fx.js';
|
|
4
|
-
import
|
|
5
|
-
import { Effect, Fiber } from './externals.js';
|
|
4
|
+
import { Cause, Context, Deferred, Effect, Fiber } from './externals.js';
|
|
6
5
|
export declare function multicast<R, E, A>(fx: Fx<R, E, A>): Fx<R, E, A>;
|
|
7
6
|
export interface MulticastObserver<R, E, A> {
|
|
8
7
|
readonly sink: Sink<R, E, A>;
|
|
9
8
|
readonly context: Context.Context<R>;
|
|
9
|
+
readonly deferred: Deferred.Deferred<never, void>;
|
|
10
10
|
}
|
|
11
11
|
export declare class MulticastFx<R, E, A> implements Fx<R, E, A>, Sink<never, E, A> {
|
|
12
12
|
readonly fx: Fx<R, E, A>;
|
|
@@ -21,9 +21,10 @@ export declare class MulticastFx<R, E, A> implements Fx<R, E, A>, Sink<never, E,
|
|
|
21
21
|
run<R2>(sink: Sink<R2, E, A>): Effect.Effect<R | R2, never, void>;
|
|
22
22
|
readonly addTrace: (trace: Trace) => Fx<R, E, A>;
|
|
23
23
|
event(a: A): Effect.Effect<never, never, void>;
|
|
24
|
-
error
|
|
24
|
+
error(cause: Cause.Cause<E>): Effect.Effect<never, never, void>;
|
|
25
25
|
protected runEvent<R>(observer: MulticastObserver<R, E, A>, a: A): Effect.Effect<never, never, void>;
|
|
26
26
|
protected runError<R>(observer: MulticastObserver<R, E, A>, cause: Cause.Cause<E>): Effect.Effect<never, never, void>;
|
|
27
|
+
protected runEnd(): Effect.Effect<never, never, void>;
|
|
27
28
|
protected removeSink(sink: Sink<any, E, A>): Effect.Effect<never, never, void>;
|
|
28
29
|
}
|
|
29
30
|
//# sourceMappingURL=multicast.d.ts.map
|
package/dist/multicast.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multicast.d.ts","sourceRoot":"","sources":["../src/multicast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAG/C,OAAO,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAU,MAAM,SAAS,CAAA;AAC1C,OAAO,
|
|
1
|
+
{"version":3,"file":"multicast.d.ts","sourceRoot":"","sources":["../src/multicast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAG/C,OAAO,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAU,MAAM,SAAS,CAAA;AAC1C,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAExE,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAE/D;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACxC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IACpC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;CAClD;AAED,qBAAa,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,YAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAU7D,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IATpC,QAAQ,CAAC,CAAC,QAAQ,CAAC;;;;MAIlB;IAED,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAK;IAC7D,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,SAAS,CAAA;gBAEvC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAMpC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IA4B5B,QAAQ,CAAC,QAAQ,UAAW,KAAK,KAAG,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAE9C;IAED,KAAK,CAAC,CAAC,EAAE,CAAC;IAMV,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAM3B,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAIhE,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAIjF,SAAS,CAAC,MAAM;IAQhB,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;CAuB3C"}
|
package/dist/multicast.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var _a;
|
|
2
2
|
import { identity } from '@effect/data/Function';
|
|
3
3
|
import { FxTypeId, Traced } from './Fx.js';
|
|
4
|
-
import { Effect, Fiber } from './externals.js';
|
|
4
|
+
import { Deferred, Effect, Fiber } from './externals.js';
|
|
5
5
|
export function multicast(fx) {
|
|
6
6
|
return new MulticastFx(fx);
|
|
7
7
|
}
|
|
@@ -17,7 +17,6 @@ export class MulticastFx {
|
|
|
17
17
|
this.addTrace = (trace) => {
|
|
18
18
|
return multicast(Traced(this.fx, trace));
|
|
19
19
|
};
|
|
20
|
-
this.error = (cause) => Effect.suspend(() => Effect.forEachDiscard(this.observers.slice(0), (observer) => this.runError(observer, cause)));
|
|
21
20
|
this.run = this.run.bind(this);
|
|
22
21
|
this.event = this.event.bind(this);
|
|
23
22
|
this.error = this.error.bind(this);
|
|
@@ -28,22 +27,29 @@ export class MulticastFx {
|
|
|
28
27
|
const that = this;
|
|
29
28
|
return Effect.uninterruptibleMask((restore) => Effect.gen(function* ($) {
|
|
30
29
|
const context = yield* $(Effect.context());
|
|
31
|
-
const
|
|
30
|
+
const deferred = yield* $(Deferred.make());
|
|
31
|
+
const observer = { sink, context, deferred };
|
|
32
32
|
if (observers.push(observer) === 1) {
|
|
33
|
-
that.fiber = yield* $(
|
|
33
|
+
that.fiber = yield* $(that.fx.run(that), restore, Effect.onExit(() => that.runEnd()), Effect.uninterruptible, Effect.forkDaemon);
|
|
34
34
|
}
|
|
35
|
-
|
|
36
|
-
yield* $(
|
|
35
|
+
yield* $(Deferred.await(deferred));
|
|
36
|
+
yield* $(that.removeSink(sink));
|
|
37
37
|
}));
|
|
38
38
|
}
|
|
39
39
|
event(a) {
|
|
40
40
|
return Effect.suspend(() => Effect.forEachDiscard(this.observers.slice(0), (observer) => this.runEvent(observer, a)));
|
|
41
41
|
}
|
|
42
|
+
error(cause) {
|
|
43
|
+
return Effect.suspend(() => Effect.forEachDiscard(this.observers.slice(0), (observer) => this.runError(observer, cause)));
|
|
44
|
+
}
|
|
42
45
|
runEvent(observer, a) {
|
|
43
|
-
return Effect.
|
|
46
|
+
return Effect.provideContext(observer.sink.event(a), observer.context);
|
|
44
47
|
}
|
|
45
48
|
runError(observer, cause) {
|
|
46
|
-
return Effect.
|
|
49
|
+
return Effect.provideContext(observer.sink.error(cause), observer.context);
|
|
50
|
+
}
|
|
51
|
+
runEnd() {
|
|
52
|
+
return Effect.suspend(() => Effect.forEachDiscard(this.observers.slice(0), (observer) => Deferred.succeed(observer.deferred, void 0)));
|
|
47
53
|
}
|
|
48
54
|
removeSink(sink) {
|
|
49
55
|
return Effect.suspend(() => {
|
package/dist/multicast.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multicast.js","sourceRoot":"","sources":["../src/multicast.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAGhD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"multicast.js","sourceRoot":"","sources":["../src/multicast.ts"],"names":[],"mappings":"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"}
|
package/dist/switchMap.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switchMap.d.ts","sourceRoot":"","sources":["../src/switchMap.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"switchMap.d.ts","sourceRoot":"","sources":["../src/switchMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAQ,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,MAAM,EAAsB,MAAM,gBAAgB,CAAA;AAG3D,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC1C,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,CAsCvB;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,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,YAAY,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,CAEhG;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAChD,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/switchMap.js
CHANGED
|
@@ -1,22 +1,25 @@
|
|
|
1
|
-
import { pipe } from '@effect/data/Function';
|
|
2
1
|
import { Fx, Sink } from './Fx.js';
|
|
3
|
-
import {
|
|
2
|
+
import { Effect, Fiber, RefS, Scope } from './externals.js';
|
|
4
3
|
import { fromEffect } from './fromEffect.js';
|
|
5
4
|
export function switchMap(fx, f) {
|
|
6
5
|
return Fx((sink) => Effect.gen(function* ($) {
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
const scope = yield* $(Scope.make());
|
|
7
|
+
const ref = yield* $(RefS.make(null));
|
|
8
|
+
const reset = RefS.set(ref, null);
|
|
9
|
+
const switchEvent = (a) => RefS.updateEffect(ref, (fiber) => Effect.gen(function* ($) {
|
|
10
|
+
if (fiber) {
|
|
11
|
+
yield* $(Fiber.interrupt(fiber));
|
|
12
12
|
}
|
|
13
|
-
|
|
14
|
-
});
|
|
15
|
-
yield* $(
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
13
|
+
return yield* $(f(a).run(sink), Effect.zipLeft(reset), Effect.catchAllCause(sink.error), Effect.forkIn(scope));
|
|
14
|
+
}));
|
|
15
|
+
yield* $(Effect.gen(function* ($) {
|
|
16
|
+
yield* $(fx.run(Sink(switchEvent, sink.error)));
|
|
17
|
+
const fiber = yield* $(RefS.get(ref));
|
|
18
|
+
// Wait for the last fiber to finish
|
|
19
|
+
if (fiber) {
|
|
20
|
+
yield* $(Fiber.join(fiber));
|
|
21
|
+
}
|
|
22
|
+
}), Effect.onExit((exit) => Scope.close(scope, exit)));
|
|
20
23
|
}));
|
|
21
24
|
}
|
|
22
25
|
export function switchMapEffect(fx, f) {
|
package/dist/switchMap.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switchMap.js","sourceRoot":"","sources":["../src/switchMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"switchMap.js","sourceRoot":"","sources":["../src/switchMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,MAAM,UAAU,SAAS,CACvB,EAAe,EACf,CAA0B;IAE1B,OAAO,EAAE,CAAC,CAAK,IAAyB,EAAE,EAAE,CAC1C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;QACpC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAyC,IAAI,CAAC,CAAC,CAAA;QAC7E,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAEjC,MAAM,WAAW,GAAG,CAAC,CAAI,EAAE,EAAE,CAC3B,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CAC/B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrB,IAAI,KAAK,EAAE;gBACT,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;aACjC;YAED,OAAO,KAAK,CAAC,CAAC,CAAC,CACb,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EACd,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EACrB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAChC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CACrB,CAAA;QACH,CAAC,CAAC,CACH,CAAA;QAEH,KAAK,CAAC,CAAC,CAAC,CACN,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrB,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAE/C,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;YAErC,oCAAoC;YACpC,IAAI,KAAK,EAAE;gBACT,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;aAC5B;QACH,CAAC,CAAC,EACF,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAClD,CAAA;IACH,CAAC,CAAC,CACH,CAAA;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,EAAe,EACf,CAAqC;IAErC,OAAO,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC/C,CAAC;AAED,MAAM,UAAU,YAAY,CAAkB,EAA2B;IACvE,OAAO,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,EAAsC;IAEtC,OAAO,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;AACtC,CAAC"}
|