effect-app 0.180.6 → 0.180.7

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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @effect-app/prelude
2
2
 
3
+ ## 0.180.7
4
+
5
+ ### Patch Changes
6
+
7
+ - 6ece717: base FiberBag on FiberSet
8
+
3
9
  ## 0.180.6
4
10
 
5
11
  ### Patch Changes
@@ -7,16 +7,14 @@ exports.FiberBag = void 0;
7
7
  var _core = require("@effect-app/core");
8
8
  var _service = require("../service.cjs");
9
9
  const make = _core.Effect.gen(function* ($) {
10
- const ref = yield* $(_core.Ref.make([]));
11
- const join = ref.pipe(_core.Ref.get, _core.Effect.tap(bag => _core.Effect.logDebug("[FiberBag] Joining " + bag.length + " fibers")), _core.Effect.andThen(_core.Fiber.joinAll));
12
- const add = (...fibers) => ref.pipe(_core.Ref.update(_ => [..._, ...fibers]));
13
- const addAll = fibers => ref.pipe(_core.Ref.update(_ => [..._, ...fibers]));
14
- const forkDaemon = effect => effect.pipe(_core.Effect.forkDaemon, _core.Effect.andThen(add));
15
- const forkScoped = effect => effect.pipe(_core.Effect.forkScoped, _core.Effect.andThen(add));
10
+ const set = yield* $(_core.FiberSet.make());
11
+ const join = _core.Effect.sync(() => [...set]).pipe(_core.Effect.tap(bag => _core.Effect.logDebug("[FiberBag] Joining " + bag.length + " fibers")), _core.Effect.andThen(_core.Fiber.joinAll));
12
+ const add = (...fibers) => _core.Effect.sync(() => fibers.forEach(_ => _core.FiberSet.unsafeAdd(set, _)));
13
+ const addAll = fibers => _core.Effect.sync(() => fibers.forEach(_ => _core.FiberSet.unsafeAdd(set, _)));
14
+ const run = _core.FiberSet.run(set);
16
15
  return {
17
16
  join,
18
- forkDaemon,
19
- forkScoped,
17
+ run,
20
18
  add,
21
19
  addAll
22
20
  };
@@ -27,10 +25,8 @@ const make = _core.Effect.gen(function* ($) {
27
25
  * This way any errors will blow up the main program instead of fibers dying unknowingly.
28
26
  */
29
27
  class FiberBag extends (0, _service.TagClassMakeId)("FiberBag", make)() {
30
- static Live = this.toLayer();
28
+ static Live = this.toLayerScoped();
31
29
  static JoinLive = this.pipe(_core.Effect.andThen(_ => _.join), _core.Layer.effectDiscard, _core.Layer.provide(this.Live));
32
- static forkScoped = effect => _core.Effect.andThen(this, _ => _.forkScoped(effect));
33
- static forkDaemon = effect => _core.Effect.andThen(this, _ => _.forkDaemon(effect));
34
30
  }
35
31
  exports.FiberBag = FiberBag;
36
32
  //# sourceMappingURL=FiberBag.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"FiberBag.cjs","names":["_core","require","_service","make","Effect","gen","$","ref","Ref","join","pipe","get","tap","bag","logDebug","length","andThen","Fiber","joinAll","add","fibers","update","_","addAll","forkDaemon","effect","forkScoped","FiberBag","TagClassMakeId","Live","toLayer","JoinLive","Layer","effectDiscard","provide"],"sources":["../../src/services/FiberBag.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAEA,MAAME,IAAI,GAAGC,YAAM,CAACC,GAAG,CAAC,WAAUC,CAAC;EACjC,MAAMC,GAAG,GAAG,OAAOD,CAAC,CAACE,SAAG,CAACL,IAAI,CAAsC,EAAE,CAAC,CAAC;EACvE,MAAMM,IAAI,GAAGF,GAAG,CAACG,IAAI,CACnBF,SAAG,CAACG,GAAG,EACPP,YAAM,CAACQ,GAAG,CAAEC,GAAG,IAAKT,YAAM,CAACU,QAAQ,CAAC,qBAAqB,GAAGD,GAAG,CAACE,MAAM,GAAG,SAAS,CAAC,CAAC,EACpFX,YAAM,CAACY,OAAO,CAACC,WAAK,CAACC,OAAO,CAAC,CAC9B;EACD,MAAMC,GAAG,GAAGA,CAAC,GAAGC,MAAkC,KAAKb,GAAG,CAACG,IAAI,CAACF,SAAG,CAACa,MAAM,CAAEC,CAAC,IAAK,CAAC,GAAGA,CAAC,EAAE,GAAGF,MAAM,CAAC,CAAC,CAAC;EACrG,MAAMG,MAAM,GAAIH,MAA2C,IAAKb,GAAG,CAACG,IAAI,CAACF,SAAG,CAACa,MAAM,CAAEC,CAAC,IAAK,CAAC,GAAGA,CAAC,EAAE,GAAGF,MAAM,CAAC,CAAC,CAAC;EAE9G,MAAMI,UAAU,GAAOC,MAA+B,IAAKA,MAAM,CAACf,IAAI,CAACN,YAAM,CAACoB,UAAU,EAAEpB,YAAM,CAACY,OAAO,CAACG,GAAG,CAAC,CAAC;EAC9G,MAAMO,UAAU,GAAOD,MAA+B,IAAKA,MAAM,CAACf,IAAI,CAACN,YAAM,CAACsB,UAAU,EAAEtB,YAAM,CAACY,OAAO,CAACG,GAAG,CAAC,CAAC;EAE9G,OAAO;IACLV,IAAI;IACJe,UAAU;IACVE,UAAU;IACVP,GAAG;IACHI;GACD;AACH,CAAC,CAAC;AAEF;;;;;AAKM,MAAOI,QAAS,SAAQ,IAAAC,uBAAc,EAAC,UAAU,EAAEzB,IAAI,CAAC,EAAY;EACxE,OAAgB0B,IAAI,GAAG,IAAI,CAACC,OAAO,EAAE;EACrC,OAAgBC,QAAQ,GAAG,IAAI,CAACrB,IAAI,CAACN,YAAM,CAACY,OAAO,CAAEM,CAAC,IAAKA,CAAC,CAACb,IAAI,CAAC,EAAEuB,WAAK,CAACC,aAAa,EAAED,WAAK,CAACE,OAAO,CAAC,IAAI,CAACL,IAAI,CAAC,CAAC;EAElH,OAAyBH,UAAU,GAAOD,MAA+B,IACvErB,YAAM,CAACY,OAAO,CAAC,IAAI,EAAGM,CAAC,IAAKA,CAAC,CAACI,UAAU,CAACD,MAAM,CAAC,CAAC;EACnD,OAAyBD,UAAU,GAAOC,MAA+B,IACvErB,YAAM,CAACY,OAAO,CAAC,IAAI,EAAGM,CAAC,IAAKA,CAAC,CAACE,UAAU,CAACC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"FiberBag.cjs","names":["_core","require","_service","make","Effect","gen","$","set","FiberSet","join","sync","pipe","tap","bag","logDebug","length","andThen","Fiber","joinAll","add","fibers","forEach","_","unsafeAdd","addAll","run","FiberBag","TagClassMakeId","Live","toLayerScoped","JoinLive","Layer","effectDiscard","provide"],"sources":["../../src/services/FiberBag.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAKA,MAAME,IAAI,GAAGC,YAAM,CAACC,GAAG,CAAC,WAAUC,CAAC;EACjC,MAAMC,GAAG,GAAG,OAAOD,CAAC,CAACE,cAAQ,CAACL,IAAI,EAAgB,CAAC;EACnD,MAAMM,IAAI,GAAGL,YAAM,CAACM,IAAI,CAAC,MAAM,CAAC,GAAGH,GAAG,CAAC,CAAC,CAACI,IAAI,CAC3CP,YAAM,CAACQ,GAAG,CAAEC,GAAG,IAAKT,YAAM,CAACU,QAAQ,CAAC,qBAAqB,GAAGD,GAAG,CAACE,MAAM,GAAG,SAAS,CAAC,CAAC,EACpFX,YAAM,CAACY,OAAO,CAACC,WAAK,CAACC,OAAO,CAAC,CAC9B;EACD,MAAMC,GAAG,GAAGA,CAAC,GAAGC,MAA0C,KACxDhB,YAAM,CAACM,IAAI,CAAC,MAAMU,MAAM,CAACC,OAAO,CAAEC,CAAC,IAAKd,cAAQ,CAACe,SAAS,CAAChB,GAAG,EAAEe,CAAC,CAAC,CAAC,CAAC;EACtE,MAAME,MAAM,GAAIJ,MAAmD,IACjEhB,YAAM,CAACM,IAAI,CAAC,MAAMU,MAAM,CAACC,OAAO,CAAEC,CAAC,IAAKd,cAAQ,CAACe,SAAS,CAAChB,GAAG,EAAEe,CAAC,CAAC,CAAC,CAAC;EAEtE,MAAMG,GAAG,GAAGjB,cAAQ,CAACiB,GAAG,CAAClB,GAAG,CAAC;EAE7B,OAAO;IACLE,IAAI;IACJgB,GAAG;IACHN,GAAG;IACHK;GACD;AACH,CAAC,CAAC;AAEF;;;;;AAKM,MAAOE,QAAS,SAAQ,IAAAC,uBAAc,EAAC,UAAU,EAAExB,IAAI,CAAC,EAAY;EACxE,OAAgByB,IAAI,GAAG,IAAI,CAACC,aAAa,EAAE;EAC3C,OAAgBC,QAAQ,GAAG,IAAI,CAACnB,IAAI,CAACP,YAAM,CAACY,OAAO,CAAEM,CAAC,IAAKA,CAAC,CAACb,IAAI,CAAC,EAAEsB,WAAK,CAACC,aAAa,EAAED,WAAK,CAACE,OAAO,CAAC,IAAI,CAACL,IAAI,CAAC,CAAC"}
@@ -2,60 +2,53 @@ import { Effect, Fiber, Layer } from "@effect-app/core";
2
2
  declare const FiberBag_base: {
3
3
  new (service: {
4
4
  join: Effect.Effect<void, never, never>;
5
- forkDaemon: <R>(effect: Effect<never, never, R>) => Effect.Effect<void, never, R>;
6
- forkScoped: <R_1>(effect: Effect<never, never, R_1>) => Effect.Effect<void, never, R_1 | import("effect/Scope").Scope>;
7
- add: (...fibers: Fiber.Fiber<void, never>[]) => Effect.Effect<void, never, never>;
8
- addAll: (fibers: readonly Fiber.Fiber<void, never>[]) => Effect.Effect<void, never, never>;
5
+ run: <R, XE extends never, XA extends never>(effect: Effect.Effect<XA, XE, R>) => Effect.Effect<Fiber.RuntimeFiber<XA, XE>, never, R>;
6
+ add: (...fibers: Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
7
+ addAll: (fibers: readonly Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
9
8
  }): Readonly<{
10
9
  join: Effect.Effect<void, never, never>;
11
- forkDaemon: <R>(effect: Effect<never, never, R>) => Effect.Effect<void, never, R>;
12
- forkScoped: <R_1>(effect: Effect<never, never, R_1>) => Effect.Effect<void, never, R_1 | import("effect/Scope").Scope>;
13
- add: (...fibers: Fiber.Fiber<void, never>[]) => Effect.Effect<void, never, never>;
14
- addAll: (fibers: readonly Fiber.Fiber<void, never>[]) => Effect.Effect<void, never, never>;
10
+ run: <R, XE extends never, XA extends never>(effect: Effect.Effect<XA, XE, R>) => Effect.Effect<Fiber.RuntimeFiber<XA, XE>, never, R>;
11
+ add: (...fibers: Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
12
+ addAll: (fibers: readonly Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
15
13
  }> & import("effect/Context").TagClassShape<"FiberBag", {
16
14
  join: Effect.Effect<void, never, never>;
17
- forkDaemon: <R>(effect: Effect<never, never, R>) => Effect.Effect<void, never, R>;
18
- forkScoped: <R_1>(effect: Effect<never, never, R_1>) => Effect.Effect<void, never, R_1 | import("effect/Scope").Scope>;
19
- add: (...fibers: Fiber.Fiber<void, never>[]) => Effect.Effect<void, never, never>;
20
- addAll: (fibers: readonly Fiber.Fiber<void, never>[]) => Effect.Effect<void, never, never>;
15
+ run: <R, XE extends never, XA extends never>(effect: Effect.Effect<XA, XE, R>) => Effect.Effect<Fiber.RuntimeFiber<XA, XE>, never, R>;
16
+ add: (...fibers: Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
17
+ addAll: (fibers: readonly Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
21
18
  }>;
22
19
  toLayer: {
23
- (): Layer<FiberBag, never, never>;
24
- <E, R_2>(eff: Effect<{
20
+ (): Layer<FiberBag, never, import("effect/Scope").Scope>;
21
+ <E, R_1>(eff: Effect<{
25
22
  join: Effect.Effect<void, never, never>;
26
- forkDaemon: <R>(effect: Effect<never, never, R>) => Effect.Effect<void, never, R>;
27
- forkScoped: <R_1>(effect: Effect<never, never, R_1>) => Effect.Effect<void, never, R_1 | import("effect/Scope").Scope>;
28
- add: (...fibers: Fiber.Fiber<void, never>[]) => Effect.Effect<void, never, never>;
29
- addAll: (fibers: readonly Fiber.Fiber<void, never>[]) => Effect.Effect<void, never, never>;
30
- }, E, R_2>): Layer<FiberBag, E, R_2>;
23
+ run: <R, XE extends never, XA extends never>(effect: Effect.Effect<XA, XE, R>) => Effect.Effect<Fiber.RuntimeFiber<XA, XE>, never, R>;
24
+ add: (...fibers: Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
25
+ addAll: (fibers: readonly Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
26
+ }, E, R_1>): Layer<FiberBag, E, R_1>;
31
27
  };
32
28
  toLayerScoped: {
33
29
  (): Layer<FiberBag, never, never>;
34
- <E_1, R_3>(eff: Effect<{
30
+ <E_1, R_2>(eff: Effect<{
35
31
  join: Effect.Effect<void, never, never>;
36
- forkDaemon: <R>(effect: Effect<never, never, R>) => Effect.Effect<void, never, R>;
37
- forkScoped: <R_1>(effect: Effect<never, never, R_1>) => Effect.Effect<void, never, R_1 | import("effect/Scope").Scope>;
38
- add: (...fibers: Fiber.Fiber<void, never>[]) => Effect.Effect<void, never, never>;
39
- addAll: (fibers: readonly Fiber.Fiber<void, never>[]) => Effect.Effect<void, never, never>;
40
- }, E_1, R_3>): Layer<FiberBag, E_1, Exclude<R_3, import("effect/Scope").Scope>>;
32
+ run: <R, XE extends never, XA extends never>(effect: Effect.Effect<XA, XE, R>) => Effect.Effect<Fiber.RuntimeFiber<XA, XE>, never, R>;
33
+ add: (...fibers: Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
34
+ addAll: (fibers: readonly Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
35
+ }, E_1, R_2>): Layer<FiberBag, E_1, Exclude<R_2, import("effect/Scope").Scope>>;
41
36
  };
42
37
  wrap: (service: {
43
38
  join: Effect.Effect<void, never, never>;
44
- forkDaemon: <R>(effect: Effect<never, never, R>) => Effect.Effect<void, never, R>;
45
- forkScoped: <R_1>(effect: Effect<never, never, R_1>) => Effect.Effect<void, never, R_1 | import("effect/Scope").Scope>;
46
- add: (...fibers: Fiber.Fiber<void, never>[]) => Effect.Effect<void, never, never>;
47
- addAll: (fibers: readonly Fiber.Fiber<void, never>[]) => Effect.Effect<void, never, never>;
39
+ run: <R, XE extends never, XA extends never>(effect: Effect.Effect<XA, XE, R>) => Effect.Effect<Fiber.RuntimeFiber<XA, XE>, never, R>;
40
+ add: (...fibers: Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
41
+ addAll: (fibers: readonly Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
48
42
  }) => FiberBag;
49
- make: Effect<FiberBag, never, never>;
43
+ make: Effect<FiberBag, never, import("effect/Scope").Scope>;
50
44
  } & import("effect/Context").Tag<FiberBag, FiberBag> & {
51
45
  $: {
52
46
  join: Effect.Effect<void, never, FiberBag>;
53
47
  };
54
48
  } & {
55
- forkDaemon: (effect: Effect<never, never, unknown>) => Effect.Effect<void, never, unknown>;
56
- forkScoped: (effect: Effect<never, never, unknown>) => Effect.Effect<void, never, unknown>;
57
- add: (...args: Fiber.Fiber<void, never>[]) => Effect.Effect<void, never, FiberBag>;
58
- addAll: (fibers: readonly Fiber.Fiber<void, never>[]) => Effect.Effect<void, never, FiberBag>;
49
+ run: (effect: Effect.Effect<never, never, unknown>) => Effect.Effect<Fiber.RuntimeFiber<never, never>, never, unknown>;
50
+ add: (...args: Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, FiberBag>;
51
+ addAll: (fibers: readonly Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, FiberBag>;
59
52
  };
60
53
  /**
61
54
  * Whenever you fork long running fibers e.g via `Effect.forkScoped` or `Effect.forkDaemon`
@@ -65,8 +58,6 @@ declare const FiberBag_base: {
65
58
  export declare class FiberBag extends FiberBag_base {
66
59
  static readonly Live: Layer<FiberBag, never, never>;
67
60
  static readonly JoinLive: Layer.Layer<never, never, never>;
68
- static readonly forkScoped: <R>(effect: Effect<never, never, R>) => Effect.Effect<void, never, FiberBag | import("effect/Scope").Scope | R>;
69
- static readonly forkDaemon: <R>(effect: Effect<never, never, R>) => Effect.Effect<void, never, FiberBag | R>;
70
61
  }
71
62
  export {};
72
63
  //# sourceMappingURL=FiberBag.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FiberBag.d.ts","sourceRoot":"","sources":["../../src/services/FiberBag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAO,MAAM,kBAAkB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyB5D;;;;GAIG;AACH,qBAAa,QAAS,SAAQ,aAA4C;IACxE,MAAM,CAAC,QAAQ,CAAC,IAAI,gCAAiB;IACrC,MAAM,CAAC,QAAQ,CAAC,QAAQ,mCAA0F;IAElH,gBAAyB,UAAU,kHACgB;IACnD,gBAAyB,UAAU,mFACgB;CACpD"}
1
+ {"version":3,"file":"FiberBag.d.ts","sourceRoot":"","sources":["../../src/services/FiberBag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAY,KAAK,EAAE,MAAM,kBAAkB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BjE;;;;GAIG;AACH,qBAAa,QAAS,SAAQ,aAA4C;IACxE,MAAM,CAAC,QAAQ,CAAC,IAAI,gCAAuB;IAC3C,MAAM,CAAC,QAAQ,CAAC,QAAQ,mCAA0F;CACnH"}
@@ -1,16 +1,14 @@
1
- import { Effect, Fiber, Layer, Ref } from "@effect-app/core";
1
+ import { Effect, Fiber, FiberSet, Layer } from "@effect-app/core";
2
2
  import { TagClassMakeId } from "../service.js";
3
3
  const make = Effect.gen(function* ($) {
4
- const ref = yield* $(Ref.make([]));
5
- const join = ref.pipe(Ref.get, Effect.tap((bag) => Effect.logDebug("[FiberBag] Joining " + bag.length + " fibers")), Effect.andThen(Fiber.joinAll));
6
- const add = (...fibers) => ref.pipe(Ref.update((_) => [..._, ...fibers]));
7
- const addAll = (fibers) => ref.pipe(Ref.update((_) => [..._, ...fibers]));
8
- const forkDaemon = (effect) => effect.pipe(Effect.forkDaemon, Effect.andThen(add));
9
- const forkScoped = (effect) => effect.pipe(Effect.forkScoped, Effect.andThen(add));
4
+ const set = yield* $(FiberSet.make());
5
+ const join = Effect.sync(() => [...set]).pipe(Effect.tap((bag) => Effect.logDebug("[FiberBag] Joining " + bag.length + " fibers")), Effect.andThen(Fiber.joinAll));
6
+ const add = (...fibers) => Effect.sync(() => fibers.forEach((_) => FiberSet.unsafeAdd(set, _)));
7
+ const addAll = (fibers) => Effect.sync(() => fibers.forEach((_) => FiberSet.unsafeAdd(set, _)));
8
+ const run = FiberSet.run(set);
10
9
  return {
11
10
  join,
12
- forkDaemon,
13
- forkScoped,
11
+ run,
14
12
  add,
15
13
  addAll
16
14
  };
@@ -21,9 +19,7 @@ const make = Effect.gen(function* ($) {
21
19
  * This way any errors will blow up the main program instead of fibers dying unknowingly.
22
20
  */
23
21
  export class FiberBag extends TagClassMakeId("FiberBag", make)() {
24
- static Live = this.toLayer();
22
+ static Live = this.toLayerScoped();
25
23
  static JoinLive = this.pipe(Effect.andThen((_) => _.join), Layer.effectDiscard, Layer.provide(this.Live));
26
- static forkScoped = (effect) => Effect.andThen(this, (_) => _.forkScoped(effect));
27
- static forkDaemon = (effect) => Effect.andThen(this, (_) => _.forkDaemon(effect));
28
24
  }
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmliZXJCYWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvRmliZXJCYWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFOUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBQyxDQUFDO0lBQ2pDLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFzQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3ZFLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQ25CLEdBQUcsQ0FBQyxHQUFHLEVBQ1AsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsR0FBRyxHQUFHLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUFDLEVBQ3BGLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUM5QixDQUFBO0lBQ0QsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLE1BQWtDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNyRyxNQUFNLE1BQU0sR0FBRyxDQUFDLE1BQTJDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUU5RyxNQUFNLFVBQVUsR0FBRyxDQUFJLE1BQStCLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7SUFDOUcsTUFBTSxVQUFVLEdBQUcsQ0FBSSxNQUErQixFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBRTlHLE9BQU87UUFDTCxJQUFJO1FBQ0osVUFBVTtRQUNWLFVBQVU7UUFDVixHQUFHO1FBQ0gsTUFBTTtLQUNQLENBQUE7QUFDSCxDQUFDLENBQUMsQ0FBQTtBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sUUFBUyxTQUFRLGNBQWMsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEVBQVk7SUFDeEUsTUFBTSxDQUFVLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7SUFDckMsTUFBTSxDQUFVLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFFbEgsTUFBTSxDQUFtQixVQUFVLEdBQUcsQ0FBSSxNQUErQixFQUFFLEVBQUUsQ0FDM0UsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtJQUNuRCxNQUFNLENBQW1CLFVBQVUsR0FBRyxDQUFJLE1BQStCLEVBQUUsRUFBRSxDQUMzRSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBIn0=
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmliZXJCYWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvRmliZXJCYWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFLOUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBQyxDQUFDO0lBQ2pDLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFnQixDQUFDLENBQUE7SUFDbkQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzNDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMscUJBQXFCLEdBQUcsR0FBRyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQyxFQUNwRixNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FDOUIsQ0FBQTtJQUNELE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxNQUEwQyxFQUFFLEVBQUUsQ0FDNUQsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDdEUsTUFBTSxNQUFNLEdBQUcsQ0FBQyxNQUFtRCxFQUFFLEVBQUUsQ0FDckUsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFFdEUsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUU3QixPQUFPO1FBQ0wsSUFBSTtRQUNKLEdBQUc7UUFDSCxHQUFHO1FBQ0gsTUFBTTtLQUNQLENBQUE7QUFDSCxDQUFDLENBQUMsQ0FBQTtBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sUUFBUyxTQUFRLGNBQWMsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEVBQVk7SUFDeEUsTUFBTSxDQUFVLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUE7SUFDM0MsTUFBTSxDQUFVLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUEifQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "effect-app",
3
- "version": "0.180.6",
3
+ "version": "0.180.7",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -14,8 +14,8 @@
14
14
  "uuid": "^9.0.1",
15
15
  "validator": "^13.11.0",
16
16
  "@effect-app/core": "0.150.2",
17
- "@effect-app/schema": "0.202.2",
18
- "@effect-app/fluent-extensions": "0.143.1"
17
+ "@effect-app/fluent-extensions": "0.143.1",
18
+ "@effect-app/schema": "0.202.2"
19
19
  },
20
20
  "devDependencies": {
21
21
  "@babel/cli": "^7.23.9",
@@ -1,23 +1,25 @@
1
- import { Effect, Fiber, Layer, Ref } from "@effect-app/core"
1
+ import { Effect, Fiber, FiberSet, Layer } from "@effect-app/core"
2
2
  import { TagClassMakeId } from "../service.js"
3
3
 
4
+ import type {} from "effect/Scope"
5
+ import type {} from "effect/Context"
6
+
4
7
  const make = Effect.gen(function*($) {
5
- const ref = yield* $(Ref.make<readonly Fiber.Fiber<void, never>[]>([]))
6
- const join = ref.pipe(
7
- Ref.get,
8
+ const set = yield* $(FiberSet.make<never, never>())
9
+ const join = Effect.sync(() => [...set]).pipe(
8
10
  Effect.tap((bag) => Effect.logDebug("[FiberBag] Joining " + bag.length + " fibers")),
9
11
  Effect.andThen(Fiber.joinAll)
10
12
  )
11
- const add = (...fibers: Fiber.Fiber<void, never>[]) => ref.pipe(Ref.update((_) => [..._, ...fibers]))
12
- const addAll = (fibers: readonly Fiber.Fiber<void, never>[]) => ref.pipe(Ref.update((_) => [..._, ...fibers]))
13
+ const add = (...fibers: Fiber.RuntimeFiber<never, never>[]) =>
14
+ Effect.sync(() => fibers.forEach((_) => FiberSet.unsafeAdd(set, _)))
15
+ const addAll = (fibers: readonly Fiber.RuntimeFiber<never, never>[]) =>
16
+ Effect.sync(() => fibers.forEach((_) => FiberSet.unsafeAdd(set, _)))
13
17
 
14
- const forkDaemon = <R>(effect: Effect<never, never, R>) => effect.pipe(Effect.forkDaemon, Effect.andThen(add))
15
- const forkScoped = <R>(effect: Effect<never, never, R>) => effect.pipe(Effect.forkScoped, Effect.andThen(add))
18
+ const run = FiberSet.run(set)
16
19
 
17
20
  return {
18
21
  join,
19
- forkDaemon,
20
- forkScoped,
22
+ run,
21
23
  add,
22
24
  addAll
23
25
  }
@@ -29,11 +31,6 @@ const make = Effect.gen(function*($) {
29
31
  * This way any errors will blow up the main program instead of fibers dying unknowingly.
30
32
  */
31
33
  export class FiberBag extends TagClassMakeId("FiberBag", make)<FiberBag>() {
32
- static readonly Live = this.toLayer()
34
+ static readonly Live = this.toLayerScoped()
33
35
  static readonly JoinLive = this.pipe(Effect.andThen((_) => _.join), Layer.effectDiscard, Layer.provide(this.Live))
34
-
35
- static override readonly forkScoped = <R>(effect: Effect<never, never, R>) =>
36
- Effect.andThen(this, (_) => _.forkScoped(effect))
37
- static override readonly forkDaemon = <R>(effect: Effect<never, never, R>) =>
38
- Effect.andThen(this, (_) => _.forkDaemon(effect))
39
36
  }