@typed/fx 1.11.8 → 1.11.9
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 +3 -4
- package/dist/cjs/multicast.d.ts.map +1 -1
- package/dist/cjs/multicast.js +7 -13
- package/dist/cjs/multicast.js.map +1 -1
- package/dist/cjs/switchMap.d.ts.map +1 -1
- package/dist/cjs/switchMap.js +13 -16
- package/dist/cjs/switchMap.js.map +1 -1
- package/dist/multicast.d.ts +3 -4
- package/dist/multicast.d.ts.map +1 -1
- package/dist/multicast.js +8 -14
- package/dist/multicast.js.map +1 -1
- package/dist/switchMap.d.ts.map +1 -1
- package/dist/switchMap.js +14 -17
- package/dist/switchMap.js.map +1 -1
- package/dist/tsconfig.cjs.build.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/multicast.ts +16 -25
- package/src/switchMap.ts +29 -30
- 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 { Cause, Context
|
|
4
|
+
import type { Cause, Context } from './externals.js';
|
|
5
|
+
import { Effect, Fiber } from './externals.js';
|
|
5
6
|
export declare function multicast<R, E, A>(fx: Fx<R, E, A>): Fx<R, E, A>;
|
|
6
7
|
export interface MulticastObserver<R, E, A> {
|
|
7
8
|
readonly sink: Sink<R, E, A>;
|
|
8
9
|
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,10 +21,9 @@ 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(cause: Cause.Cause<E>)
|
|
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>;
|
|
28
27
|
protected removeSink(sink: Sink<any, E, A>): Effect.Effect<never, never, void>;
|
|
29
28
|
}
|
|
30
29
|
//# 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,EAAE,KAAK,EAAE,OAAO,EAAE,
|
|
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,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAE9C,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;CACrC;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;IAqB5B,QAAQ,CAAC,QAAQ,UAAW,KAAK,KAAG,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAE9C;IAED,KAAK,CAAC,CAAC,EAAE,CAAC;IAMV,KAAK,UAAW,WAAW,CAAC,CAAC,CAAC,uCAG3B;IAEH,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAOhE,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;IAOjF,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;CAwB3C"}
|
package/dist/cjs/multicast.js
CHANGED
|
@@ -21,6 +21,7 @@ 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)));
|
|
24
25
|
this.run = this.run.bind(this);
|
|
25
26
|
this.event = this.event.bind(this);
|
|
26
27
|
this.error = this.error.bind(this);
|
|
@@ -31,29 +32,22 @@ class MulticastFx {
|
|
|
31
32
|
const that = this;
|
|
32
33
|
return externals_js_1.Effect.uninterruptibleMask((restore) => externals_js_1.Effect.gen(function* ($) {
|
|
33
34
|
const context = yield* $(externals_js_1.Effect.context());
|
|
34
|
-
const
|
|
35
|
-
const observer = { sink, context, deferred };
|
|
35
|
+
const observer = { sink, context };
|
|
36
36
|
if (observers.push(observer) === 1) {
|
|
37
|
-
that.fiber = yield* $(
|
|
37
|
+
that.fiber = yield* $(externals_js_1.Effect.forkDaemon(restore(that.fx.run(that))));
|
|
38
38
|
}
|
|
39
|
-
|
|
40
|
-
yield* $(that.removeSink(sink));
|
|
39
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
40
|
+
yield* $(externals_js_1.Effect.ensuring(restore(externals_js_1.Fiber.await(that.fiber)), 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
|
-
}
|
|
49
46
|
runEvent(observer, a) {
|
|
50
|
-
return externals_js_1.Effect.provideContext(observer.sink.event(a), observer.context);
|
|
47
|
+
return externals_js_1.Effect.catchAllCause(externals_js_1.Effect.provideContext(observer.sink.event(a), observer.context), () => this.removeSink(observer.sink));
|
|
51
48
|
}
|
|
52
49
|
runError(observer, cause) {
|
|
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)));
|
|
50
|
+
return externals_js_1.Effect.catchAllCause(externals_js_1.Effect.provideContext(observer.sink.error(cause), observer.context), () => this.removeSink(observer.sink));
|
|
57
51
|
}
|
|
58
52
|
removeSink(sink) {
|
|
59
53
|
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":"AAEA,OAAO,EAAE,EAAE,EAAQ,MAAM,SAAS,CAAA;AAClC,OAAO,EAAS,MAAM,EAAkB,MAAM,gBAAgB,CAAA;AAG9D,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,CAmCvB;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,28 +1,25 @@
|
|
|
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");
|
|
4
5
|
const Fx_js_1 = require("./Fx.js");
|
|
5
6
|
const externals_js_1 = require("./externals.js");
|
|
6
7
|
const fromEffect_js_1 = require("./fromEffect.js");
|
|
7
8
|
function switchMap(fx, f) {
|
|
8
9
|
return (0, Fx_js_1.Fx)((sink) => externals_js_1.Effect.gen(function* ($) {
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
yield* $(externals_js_1.Fiber.interrupt(fiber));
|
|
10
|
+
const runFork = externals_js_1.Runtime.runFork(yield* $(externals_js_1.Effect.runtime()));
|
|
11
|
+
let ref;
|
|
12
|
+
const switchEvent = (a) => externals_js_1.Effect.gen(function* ($) {
|
|
13
|
+
if (ref) {
|
|
14
|
+
yield* $(externals_js_1.Fiber.interruptFork(ref));
|
|
15
15
|
}
|
|
16
|
-
|
|
17
|
-
})
|
|
18
|
-
yield* $(
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
yield* $(externals_js_1.Fiber.join(fiber));
|
|
24
|
-
}
|
|
25
|
-
}), externals_js_1.Effect.onExit((exit) => externals_js_1.Scope.close(scope, exit)));
|
|
16
|
+
ref = runFork((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(externals_js_1.Effect.sync(() => (ref = undefined))), externals_js_1.Effect.catchAllCause((cause) => externals_js_1.Cause.isInterruptedOnly(cause) ? externals_js_1.Effect.unit() : sink.error(cause))));
|
|
17
|
+
});
|
|
18
|
+
yield* $(fx.run((0, Fx_js_1.Sink)(switchEvent, sink.error)));
|
|
19
|
+
// Wait for the last fiber to finish
|
|
20
|
+
if (ref) {
|
|
21
|
+
yield* $(externals_js_1.Fiber.join(ref));
|
|
22
|
+
}
|
|
26
23
|
}));
|
|
27
24
|
}
|
|
28
25
|
exports.switchMap = switchMap;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switchMap.js","sourceRoot":"","sources":["../../src/switchMap.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAClC,
|
|
1
|
+
{"version":3,"file":"switchMap.js","sourceRoot":"","sources":["../../src/switchMap.ts"],"names":[],"mappings":";;;AAAA,oDAA4C;AAE5C,mCAAkC;AAClC,iDAA8D;AAC9D,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,OAAO,GAAG,sBAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,qBAAM,CAAC,OAAO,EAAe,CAAC,CAAC,CAAA;QACxE,IAAI,GAAgD,CAAA;QAEpD,MAAM,WAAW,GAAG,CAAC,CAAI,EAAE,EAAE,CAC3B,qBAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrB,IAAI,GAAG,EAAE;gBACP,KAAK,CAAC,CAAC,CAAC,CAAC,oBAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAA;aACnC;YAED,GAAG,GAAG,OAAO,CACX,IAAA,eAAI,EACF,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CACN,IAAA,YAAI,EAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACzB,oBAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,qBAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CACnE,CACF,EACD,qBAAM,CAAC,OAAO,CAAC,qBAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,EACpD,qBAAM,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE,CAC7B,oBAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,qBAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CACnE,CACF,CACF,CAAA;QACH,CAAC,CAAC,CAAA;QAEJ,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAA,YAAI,EAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAE/C,oCAAoC;QACpC,IAAI,GAAG,EAAE;YACP,KAAK,CAAC,CAAC,CAAC,CAAC,oBAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;SAC1B;IACH,CAAC,CAAC,CACH,CAAA;AACH,CAAC;AAtCD,8BAsCC;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 { Cause, Context
|
|
4
|
+
import type { Cause, Context } from './externals.js';
|
|
5
|
+
import { Effect, Fiber } from './externals.js';
|
|
5
6
|
export declare function multicast<R, E, A>(fx: Fx<R, E, A>): Fx<R, E, A>;
|
|
6
7
|
export interface MulticastObserver<R, E, A> {
|
|
7
8
|
readonly sink: Sink<R, E, A>;
|
|
8
9
|
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,10 +21,9 @@ 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(cause: Cause.Cause<E>)
|
|
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>;
|
|
28
27
|
protected removeSink(sink: Sink<any, E, A>): Effect.Effect<never, never, void>;
|
|
29
28
|
}
|
|
30
29
|
//# 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,EAAE,KAAK,EAAE,OAAO,EAAE,
|
|
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,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAE9C,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;CACrC;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;IAqB5B,QAAQ,CAAC,QAAQ,UAAW,KAAK,KAAG,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAE9C;IAED,KAAK,CAAC,CAAC,EAAE,CAAC;IAMV,KAAK,UAAW,WAAW,CAAC,CAAC,CAAC,uCAG3B;IAEH,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAOhE,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;IAOjF,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;CAwB3C"}
|
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 {
|
|
4
|
+
import { Effect, Fiber } from './externals.js';
|
|
5
5
|
export function multicast(fx) {
|
|
6
6
|
return new MulticastFx(fx);
|
|
7
7
|
}
|
|
@@ -17,6 +17,7 @@ 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)));
|
|
20
21
|
this.run = this.run.bind(this);
|
|
21
22
|
this.event = this.event.bind(this);
|
|
22
23
|
this.error = this.error.bind(this);
|
|
@@ -27,29 +28,22 @@ export class MulticastFx {
|
|
|
27
28
|
const that = this;
|
|
28
29
|
return Effect.uninterruptibleMask((restore) => Effect.gen(function* ($) {
|
|
29
30
|
const context = yield* $(Effect.context());
|
|
30
|
-
const
|
|
31
|
-
const observer = { sink, context, deferred };
|
|
31
|
+
const observer = { sink, context };
|
|
32
32
|
if (observers.push(observer) === 1) {
|
|
33
|
-
that.fiber = yield* $(that.fx.run(that)
|
|
33
|
+
that.fiber = yield* $(Effect.forkDaemon(restore(that.fx.run(that))));
|
|
34
34
|
}
|
|
35
|
-
|
|
36
|
-
yield* $(that.removeSink(sink));
|
|
35
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
36
|
+
yield* $(Effect.ensuring(restore(Fiber.await(that.fiber)), 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
|
-
}
|
|
45
42
|
runEvent(observer, a) {
|
|
46
|
-
return Effect.provideContext(observer.sink.event(a), observer.context);
|
|
43
|
+
return Effect.catchAllCause(Effect.provideContext(observer.sink.event(a), observer.context), () => this.removeSink(observer.sink));
|
|
47
44
|
}
|
|
48
45
|
runError(observer, cause) {
|
|
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)));
|
|
46
|
+
return Effect.catchAllCause(Effect.provideContext(observer.sink.error(cause), observer.context), () => this.removeSink(observer.sink));
|
|
53
47
|
}
|
|
54
48
|
removeSink(sink) {
|
|
55
49
|
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":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAGhD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAE1C,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAE9C,MAAM,UAAU,SAAS,CAAU,EAAe;IAChD,OAAO,IAAI,WAAW,CAAC,EAAE,CAAC,CAAA;AAC5B,CAAC;AAOD,MAAM,OAAO,WAAW;IAUtB,YAAqB,EAAe;QAAf,OAAE,GAAF,EAAE,CAAa;QAT3B,QAAU,GAAG;YACpB,EAAE,EAAE,QAAQ;YACZ,EAAE,EAAE,QAAQ;YACZ,EAAE,EAAE,QAAQ;SACb,CAAA;QAES,cAAS,GAAwC,EAAE,CAAA;QA8BpD,aAAQ,GAAG,CAAC,KAAY,EAAe,EAAE;YAChD,OAAO,SAAS,CAAC,MAAM,CAAU,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAA;QACnD,CAAC,CAAA;QAQD,UAAK,GAAG,CAAC,KAAqB,EAAE,EAAE,CAChC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAClB,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAC7F,CAAA;QAvCD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAClC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACpC,CAAC;IAED,GAAG,CAAK,IAAoB;QAC1B,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAA;QAE1B,4DAA4D;QAC5D,MAAM,IAAI,GAAG,IAAI,CAAA;QAEjB,OAAO,MAAM,CAAC,mBAAmB,CAAC,CAAC,OAAO,EAAE,EAAE,CAC5C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAM,CAAC,CAAA;YAC9C,MAAM,QAAQ,GAAgC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;YAE/D,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBAClC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;aACrE;YAED,oEAAoE;YACpE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAM,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACrF,CAAC,CAAC,CACH,CAAA;IACH,CAAC;IAMD,KAAK,CAAC,CAAI;QACR,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CACzB,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CACzF,CAAA;IACH,CAAC;IAOS,QAAQ,CAAI,QAAoC,EAAE,CAAI;QAC9D,OAAO,MAAM,CAAC,aAAa,CACzB,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,EAC/D,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CACrC,CAAA;IACH,CAAC;IAES,QAAQ,CAAI,QAAoC,EAAE,KAAqB;QAC/E,OAAO,MAAM,CAAC,aAAa,CACzB,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,EACnE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CACrC,CAAA;IACH,CAAC;IAES,UAAU,CAAC,IAAqB;QACxC,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;YACzB,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAA;YAE1B,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,MAAM,CAAC,IAAI,EAAE,CAAA;YAEhD,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;YAEzD,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;gBACd,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;gBAE1B,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC1B,oEAAoE;oBACpE,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAM,CAAC,CAAA;oBAE9C,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;oBAEtB,OAAO,SAAS,CAAA;iBACjB;aACF;YAED,OAAO,MAAM,CAAC,IAAI,EAAE,CAAA;QACtB,CAAC,CAAC,CAAA;IACJ,CAAC;CACF;KAzFW,QAAQ"}
|
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":"AAEA,OAAO,EAAE,EAAE,EAAQ,MAAM,SAAS,CAAA;AAClC,OAAO,EAAS,MAAM,EAAkB,MAAM,gBAAgB,CAAA;AAG9D,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,CAmCvB;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,25 +1,22 @@
|
|
|
1
|
+
import { pipe } from '@effect/data/Function';
|
|
1
2
|
import { Fx, Sink } from './Fx.js';
|
|
2
|
-
import { Effect, Fiber,
|
|
3
|
+
import { Cause, Effect, Fiber, Runtime } from './externals.js';
|
|
3
4
|
import { fromEffect } from './fromEffect.js';
|
|
4
5
|
export function switchMap(fx, f) {
|
|
5
6
|
return Fx((sink) => Effect.gen(function* ($) {
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
yield* $(Fiber.interrupt(fiber));
|
|
7
|
+
const runFork = Runtime.runFork(yield* $(Effect.runtime()));
|
|
8
|
+
let ref;
|
|
9
|
+
const switchEvent = (a) => Effect.gen(function* ($) {
|
|
10
|
+
if (ref) {
|
|
11
|
+
yield* $(Fiber.interruptFork(ref));
|
|
12
12
|
}
|
|
13
|
-
|
|
14
|
-
})
|
|
15
|
-
yield* $(
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
yield* $(Fiber.join(fiber));
|
|
21
|
-
}
|
|
22
|
-
}), Effect.onExit((exit) => Scope.close(scope, exit)));
|
|
13
|
+
ref = runFork(pipe(f(a).run(Sink(sink.event, (cause) => Cause.isInterruptedOnly(cause) ? Effect.unit() : sink.error(cause))), Effect.zipLeft(Effect.sync(() => (ref = undefined))), Effect.catchAllCause((cause) => Cause.isInterruptedOnly(cause) ? Effect.unit() : sink.error(cause))));
|
|
14
|
+
});
|
|
15
|
+
yield* $(fx.run(Sink(switchEvent, sink.error)));
|
|
16
|
+
// Wait for the last fiber to finish
|
|
17
|
+
if (ref) {
|
|
18
|
+
yield* $(Fiber.join(ref));
|
|
19
|
+
}
|
|
23
20
|
}));
|
|
24
21
|
}
|
|
25
22
|
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,EAAE,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"switchMap.js","sourceRoot":"","sources":["../src/switchMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAE5C,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAC9D,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,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAe,CAAC,CAAC,CAAA;QACxE,IAAI,GAAgD,CAAA;QAEpD,MAAM,WAAW,GAAG,CAAC,CAAI,EAAE,EAAE,CAC3B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrB,IAAI,GAAG,EAAE;gBACP,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAA;aACnC;YAED,GAAG,GAAG,OAAO,CACX,IAAI,CACF,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CACN,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACzB,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CACnE,CACF,EACD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,EACpD,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE,CAC7B,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CACnE,CACF,CACF,CAAA;QACH,CAAC,CAAC,CAAA;QAEJ,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAE/C,oCAAoC;QACpC,IAAI,GAAG,EAAE;YACP,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;SAC1B;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"}
|