@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.
@@ -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, Deferred, Effect, Fiber } from './externals.js';
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>): Effect.Effect<never, never, void>;
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,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"}
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"}
@@ -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 deferred = yield* $(externals_js_1.Deferred.make());
35
- const observer = { sink, context, deferred };
35
+ const observer = { sink, context };
36
36
  if (observers.push(observer) === 1) {
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);
37
+ that.fiber = yield* $(externals_js_1.Effect.forkDaemon(restore(that.fx.run(that))));
38
38
  }
39
- yield* $(externals_js_1.Deferred.await(deferred));
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":"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"}
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":"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"}
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"}
@@ -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 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));
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
- 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)));
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,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"}
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"}
@@ -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, Deferred, Effect, Fiber } from './externals.js';
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>): Effect.Effect<never, never, void>;
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,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"}
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 { Deferred, Effect, Fiber } from './externals.js';
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 deferred = yield* $(Deferred.make());
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), restore, Effect.onExit(() => that.runEnd()), Effect.uninterruptible, Effect.forkDaemon);
33
+ that.fiber = yield* $(Effect.forkDaemon(restore(that.fx.run(that))));
34
34
  }
35
- yield* $(Deferred.await(deferred));
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(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"multicast.js","sourceRoot":"","sources":["../src/multicast.ts"],"names":[],"mappings":"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"}
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":"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"}
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, RefS, Scope } from './externals.js';
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 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));
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
- 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)));
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) {
@@ -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,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"}
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"}