effect-app 1.7.0 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @effect-app/prelude
2
2
 
3
+ ## 1.8.0
4
+
5
+ ### Minor Changes
6
+
7
+ - d12fc1a: improve: expose interrupt, not waitUntilEmpty on FiberSets
8
+
3
9
  ## 1.7.0
4
10
 
5
11
  ### Minor Changes
@@ -11,7 +11,19 @@ const make = _core.Effect.gen(function* ($) {
11
11
  const addAll = fibers => _core.Effect.sync(() => fibers.forEach(_ => _core.FiberSet.unsafeAdd(set, _)));
12
12
  const join = _core.FiberSet.size(set).pipe(_core.Effect.andThen(count => _core.Effect.logDebug(`Joining ${count} current fibers on the MainFiberSet`)), _core.Effect.andThen(_core.FiberSet.join(set)));
13
13
  const run = _core.FiberSet.run(set);
14
+ // const waitUntilEmpty = Effect.gen(function*($) {
15
+ // const currentSize = yield* $(FiberSet.size(set))
16
+ // if (currentSize === 0) {
17
+ // return
18
+ // }
19
+ // yield* $(Effect.logInfo("Waiting MainFiberSet to be empty: " + currentSize))
20
+ // while ((yield* $(FiberSet.size(set))) > 0) yield* $(Effect.sleep("250 millis"))
21
+ // yield* $(Effect.logDebug("MainFiberSet is empty"))
22
+ // })
23
+ // TODO: loop and interrupt all fibers in the set continuously?
24
+ const interrupt = _core.Fiber.interruptAll(set);
14
25
  return {
26
+ interrupt,
15
27
  join,
16
28
  run,
17
29
  add,
@@ -1 +1 @@
1
- {"version":3,"file":"MainFiberSet.cjs","names":["_core","require","make","Effect","gen","$","set","FiberSet","add","fibers","sync","forEach","_","unsafeAdd","addAll","join","size","pipe","andThen","count","logDebug","run","MainFiberSet","Context","TagMakeId","Live","toLayerScoped","JoinLive","Layer","effectDiscard","provide","self","use"],"sources":["../../src/services/MainFiberSet.ts"],"sourcesContent":[null],"mappings":";;;;;;AACA,IAAAA,KAAA,GAAAC,OAAA;AAKA,MAAMC,IAAI,GAAGC,YAAM,CAACC,GAAG,CAAC,WAAUC,CAAC;EACjC,MAAMC,GAAG,GAAG,OAAOD,CAAC,CAACE,cAAQ,CAACL,IAAI,EAAkB,CAAC;EACrD,MAAMM,GAAG,GAAGA,CAAC,GAAGC,MAA0C,KACxDN,YAAM,CAACO,IAAI,CAAC,MAAMD,MAAM,CAACE,OAAO,CAAEC,CAAC,IAAKL,cAAQ,CAACM,SAAS,CAACP,GAAG,EAAEM,CAAC,CAAC,CAAC,CAAC;EACtE,MAAME,MAAM,GAAIL,MAAmD,IACjEN,YAAM,CAACO,IAAI,CAAC,MAAMD,MAAM,CAACE,OAAO,CAAEC,CAAC,IAAKL,cAAQ,CAACM,SAAS,CAACP,GAAG,EAAEM,CAAC,CAAC,CAAC,CAAC;EACtE,MAAMG,IAAI,GAAGR,cAAQ,CAACS,IAAI,CAACV,GAAG,CAAC,CAACW,IAAI,CAClCd,YAAM,CAACe,OAAO,CAAEC,KAAK,IAAKhB,YAAM,CAACiB,QAAQ,CAAC,WAAWD,KAAK,qCAAqC,CAAC,CAAC,EACjGhB,YAAM,CAACe,OAAO,CAACX,cAAQ,CAACQ,IAAI,CAACT,GAAG,CAAC,CAAC,CACnC;EACD,MAAMe,GAAG,GAAGd,cAAQ,CAACc,GAAG,CAACf,GAAG,CAAC;EAE7B,OAAO;IACLS,IAAI;IACJM,GAAG;IACHb,GAAG;IACHM;GACD;AACH,CAAC,CAAC;AAEF;;;;;AAKM,MAAOQ,YAAa,SAAQC,aAAO,CAACC,SAAS,CAAC,cAAc,EAAEtB,IAAI,CAAC,EAAgB;EACvF,OAAgBuB,IAAI,GAAG,IAAI,CAACC,aAAa,EAAE;EAC3C,OAAgBC,QAAQ,GAAG,IAAI,CAACV,IAAI,CAACd,YAAM,CAACe,OAAO,CAAEN,CAAC,IAAKA,CAAC,CAACG,IAAI,CAAC,EAAEa,WAAK,CAACC,aAAa,EAAED,WAAK,CAACE,OAAO,CAAC,IAAI,CAACL,IAAI,CAAC,CAAC;EAClH,OAAgBJ,GAAG,GAAUU,IAAyB,IAAK,IAAI,CAACC,GAAG,CAAEpB,CAAC,IAAKA,CAAC,CAACS,GAAG,CAACU,IAAI,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"MainFiberSet.cjs","names":["_core","require","make","Effect","gen","$","set","FiberSet","add","fibers","sync","forEach","_","unsafeAdd","addAll","join","size","pipe","andThen","count","logDebug","run","interrupt","Fiber","interruptAll","MainFiberSet","Context","TagMakeId","Live","toLayerScoped","JoinLive","Layer","effectDiscard","provide","self","use"],"sources":["../../src/services/MainFiberSet.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAKA,MAAMC,IAAI,GAAGC,YAAM,CAACC,GAAG,CAAC,WAAUC,CAAC;EACjC,MAAMC,GAAG,GAAG,OAAOD,CAAC,CAACE,cAAQ,CAACL,IAAI,EAAkB,CAAC;EACrD,MAAMM,GAAG,GAAGA,CAAC,GAAGC,MAA0C,KACxDN,YAAM,CAACO,IAAI,CAAC,MAAMD,MAAM,CAACE,OAAO,CAAEC,CAAC,IAAKL,cAAQ,CAACM,SAAS,CAACP,GAAG,EAAEM,CAAC,CAAC,CAAC,CAAC;EACtE,MAAME,MAAM,GAAIL,MAAmD,IACjEN,YAAM,CAACO,IAAI,CAAC,MAAMD,MAAM,CAACE,OAAO,CAAEC,CAAC,IAAKL,cAAQ,CAACM,SAAS,CAACP,GAAG,EAAEM,CAAC,CAAC,CAAC,CAAC;EACtE,MAAMG,IAAI,GAAGR,cAAQ,CAACS,IAAI,CAACV,GAAG,CAAC,CAACW,IAAI,CAClCd,YAAM,CAACe,OAAO,CAAEC,KAAK,IAAKhB,YAAM,CAACiB,QAAQ,CAAC,WAAWD,KAAK,qCAAqC,CAAC,CAAC,EACjGhB,YAAM,CAACe,OAAO,CAACX,cAAQ,CAACQ,IAAI,CAACT,GAAG,CAAC,CAAC,CACnC;EACD,MAAMe,GAAG,GAAGd,cAAQ,CAACc,GAAG,CAACf,GAAG,CAAC;EAE7B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA,MAAMgB,SAAS,GAAGC,WAAK,CAACC,YAAY,CAAClB,GAAG,CAAC;EAEzC,OAAO;IACLgB,SAAS;IACTP,IAAI;IACJM,GAAG;IACHb,GAAG;IACHM;GACD;AACH,CAAC,CAAC;AAEF;;;;;AAKM,MAAOW,YAAa,SAAQC,aAAO,CAACC,SAAS,CAAC,cAAc,EAAEzB,IAAI,CAAC,EAAgB;EACvF,OAAgB0B,IAAI,GAAG,IAAI,CAACC,aAAa,EAAE;EAC3C,OAAgBC,QAAQ,GAAG,IAAI,CAACb,IAAI,CAACd,YAAM,CAACe,OAAO,CAAEN,CAAC,IAAKA,CAAC,CAACG,IAAI,CAAC,EAAEgB,WAAK,CAACC,aAAa,EAAED,WAAK,CAACE,OAAO,CAAC,IAAI,CAACL,IAAI,CAAC,CAAC;EAClH,OAAgBP,GAAG,GAAUa,IAAyB,IAAK,IAAI,CAACC,GAAG,CAAEvB,CAAC,IAAKA,CAAC,CAACS,GAAG,CAACa,IAAI,CAAC,CAAC","ignoreList":[]}
@@ -1,16 +1,18 @@
1
- import type { Fiber } from "@effect-app/core";
2
- import { Context, Effect, Layer } from "@effect-app/core";
1
+ import { Context, Effect, Fiber, Layer } from "@effect-app/core";
3
2
  declare const MainFiberSet_base: (abstract new (service: {
3
+ interrupt: Effect.Effect<void, never, never>;
4
4
  join: Effect.Effect<void, never, never>;
5
5
  run: <R, XE extends never, XA extends unknown>(effect: Effect.Effect<XA, XE, R>) => Effect.Effect<Fiber.RuntimeFiber<XA, XE>, never, R>;
6
6
  add: (...fibers: Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
7
7
  addAll: (fibers: readonly Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
8
8
  }) => Readonly<{
9
+ interrupt: Effect.Effect<void, never, never>;
9
10
  join: Effect.Effect<void, never, never>;
10
11
  run: <R, XE extends never, XA extends unknown>(effect: Effect.Effect<XA, XE, R>) => Effect.Effect<Fiber.RuntimeFiber<XA, XE>, never, R>;
11
12
  add: (...fibers: Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
12
13
  addAll: (fibers: readonly Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
13
14
  }> & Context.TagClassShape<"MainFiberSet", {
15
+ interrupt: Effect.Effect<void, never, never>;
14
16
  join: Effect.Effect<void, never, never>;
15
17
  run: <R, XE extends never, XA extends unknown>(effect: Effect.Effect<XA, XE, R>) => Effect.Effect<Fiber.RuntimeFiber<XA, XE>, never, R>;
16
18
  add: (...fibers: Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
@@ -27,11 +29,13 @@ declare const MainFiberSet_base: (abstract new (service: {
27
29
  of: (service: Context.TagClassShape<any, any>) => MainFiberSet;
28
30
  make: Effect<MainFiberSet, never, import("effect/Scope").Scope>;
29
31
  } & Context.Tag<MainFiberSet, MainFiberSet> & {
32
+ interrupt: Effect<void, never, MainFiberSet>;
30
33
  join: Effect<void, never, MainFiberSet>;
31
34
  add: (...args: readonly Fiber.RuntimeFiber<never, never>[]) => Effect<void, never, MainFiberSet | never>;
32
35
  addAll: (fibers: readonly Fiber.RuntimeFiber<never, never>[]) => Effect<void, never, MainFiberSet | never>;
33
36
  } & {
34
37
  use: <X>(body: (_: {
38
+ interrupt: Effect.Effect<void, never, never>;
35
39
  join: Effect.Effect<void, never, never>;
36
40
  run: <R, XE extends never, XA extends unknown>(effect: Effect.Effect<XA, XE, R>) => Effect.Effect<Fiber.RuntimeFiber<XA, XE>, never, R>;
37
41
  add: (...fibers: Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
@@ -1 +1 @@
1
- {"version":3,"file":"MainFiberSet.d.ts","sourceRoot":"","sources":["../../src/services/MainFiberSet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAY,KAAK,EAAE,MAAM,kBAAkB,CAAA;;;;qBAOzC,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;qBAElC,SAAS,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;;;;qBAF3C,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;qBAElC,SAAS,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;;;;qBAF3C,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;qBAElC,SAAS,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;yBAF3C,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;yBAElC,SAAS,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;;;AAgBrE;;;;GAIG;AACH,qBAAa,YAAa,SAAQ,iBAAuD;IACvF,MAAM,CAAC,QAAQ,CAAC,IAAI,oCAAuB;IAC3C,MAAM,CAAC,QAAQ,CAAC,QAAQ,mCAA0F;IAClH,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAI,CAAC,EAAE,CAAC,QAAQ,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,mEAAiC;CACxF"}
1
+ {"version":3,"file":"MainFiberSet.d.ts","sourceRoot":"","sources":["../../src/services/MainFiberSet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAY,KAAK,EAAE,MAAM,kBAAkB,CAAA;;;;;qBAOhD,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;qBAElC,SAAS,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;;;;;qBAF3C,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;qBAElC,SAAS,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;;;;;qBAF3C,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;qBAElC,SAAS,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;yBAF3C,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;yBAElC,SAAS,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;;;AA8BrE;;;;GAIG;AACH,qBAAa,YAAa,SAAQ,iBAAuD;IACvF,MAAM,CAAC,QAAQ,CAAC,IAAI,oCAAuB;IAC3C,MAAM,CAAC,QAAQ,CAAC,QAAQ,mCAA0F;IAClH,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAI,CAAC,EAAE,CAAC,QAAQ,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,mEAAiC;CACxF"}
@@ -1,11 +1,23 @@
1
- import { Context, Effect, FiberSet, Layer } from "@effect-app/core";
1
+ import { Context, Effect, Fiber, FiberSet, Layer } from "@effect-app/core";
2
2
  const make = Effect.gen(function* ($) {
3
3
  const set = yield* $(FiberSet.make());
4
4
  const add = (...fibers) => Effect.sync(() => fibers.forEach((_) => FiberSet.unsafeAdd(set, _)));
5
5
  const addAll = (fibers) => Effect.sync(() => fibers.forEach((_) => FiberSet.unsafeAdd(set, _)));
6
6
  const join = FiberSet.size(set).pipe(Effect.andThen((count) => Effect.logDebug(`Joining ${count} current fibers on the MainFiberSet`)), Effect.andThen(FiberSet.join(set)));
7
7
  const run = FiberSet.run(set);
8
+ // const waitUntilEmpty = Effect.gen(function*($) {
9
+ // const currentSize = yield* $(FiberSet.size(set))
10
+ // if (currentSize === 0) {
11
+ // return
12
+ // }
13
+ // yield* $(Effect.logInfo("Waiting MainFiberSet to be empty: " + currentSize))
14
+ // while ((yield* $(FiberSet.size(set))) > 0) yield* $(Effect.sleep("250 millis"))
15
+ // yield* $(Effect.logDebug("MainFiberSet is empty"))
16
+ // })
17
+ // TODO: loop and interrupt all fibers in the set continuously?
18
+ const interrupt = Fiber.interruptAll(set);
8
19
  return {
20
+ interrupt,
9
21
  join,
10
22
  run,
11
23
  add,
@@ -22,4 +34,4 @@ export class MainFiberSet extends Context.TagMakeId("MainFiberSet", make)() {
22
34
  static JoinLive = this.pipe(Effect.andThen((_) => _.join), Layer.effectDiscard, Layer.provide(this.Live));
23
35
  static run = (self) => this.use((_) => _.run(self));
24
36
  }
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFpbkZpYmVyU2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL01haW5GaWJlclNldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFLbkUsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBQyxDQUFDO0lBQ2pDLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFrQixDQUFDLENBQUE7SUFDckQsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLE1BQTBDLEVBQUUsRUFBRSxDQUM1RCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN0RSxNQUFNLE1BQU0sR0FBRyxDQUFDLE1BQW1ELEVBQUUsRUFBRSxDQUNyRSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN0RSxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FDbEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEtBQUsscUNBQXFDLENBQUMsQ0FBQyxFQUNqRyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDbkMsQ0FBQTtJQUNELE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7SUFFN0IsT0FBTztRQUNMLElBQUk7UUFDSixHQUFHO1FBQ0gsR0FBRztRQUNILE1BQU07S0FDUCxDQUFBO0FBQ0gsQ0FBQyxDQUFDLENBQUE7QUFFRjs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLFlBQWEsU0FBUSxPQUFPLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsRUFBZ0I7SUFDdkYsTUFBTSxDQUFVLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUE7SUFDM0MsTUFBTSxDQUFVLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEgsTUFBTSxDQUFVLEdBQUcsR0FBRyxDQUFPLElBQXlCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQSJ9
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFpbkZpYmVyU2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL01haW5GaWJlclNldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBSzFFLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUMsQ0FBQztJQUNqQyxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBa0IsQ0FBQyxDQUFBO0lBQ3JELE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxNQUEwQyxFQUFFLEVBQUUsQ0FDNUQsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDdEUsTUFBTSxNQUFNLEdBQUcsQ0FBQyxNQUFtRCxFQUFFLEVBQUUsQ0FDckUsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDdEUsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQ2xDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxLQUFLLHFDQUFxQyxDQUFDLENBQUMsRUFDakcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQ25DLENBQUE7SUFDRCxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBRTdCLG1EQUFtRDtJQUNuRCxxREFBcUQ7SUFDckQsNkJBQTZCO0lBQzdCLGFBQWE7SUFDYixNQUFNO0lBQ04saUZBQWlGO0lBQ2pGLG9GQUFvRjtJQUNwRix1REFBdUQ7SUFDdkQsS0FBSztJQUVMLCtEQUErRDtJQUMvRCxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBRXpDLE9BQU87UUFDTCxTQUFTO1FBQ1QsSUFBSTtRQUNKLEdBQUc7UUFDSCxHQUFHO1FBQ0gsTUFBTTtLQUNQLENBQUE7QUFDSCxDQUFDLENBQUMsQ0FBQTtBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sWUFBYSxTQUFRLE9BQU8sQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxFQUFnQjtJQUN2RixNQUFNLENBQVUsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQTtJQUMzQyxNQUFNLENBQVUsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsSCxNQUFNLENBQVUsR0FBRyxHQUFHLENBQU8sSUFBeUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBIn0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "effect-app",
3
- "version": "1.7.0",
3
+ "version": "1.8.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,5 +1,4 @@
1
- import type { Fiber } from "@effect-app/core"
2
- import { Context, Effect, FiberSet, Layer } from "@effect-app/core"
1
+ import { Context, Effect, Fiber, FiberSet, Layer } from "@effect-app/core"
3
2
 
4
3
  import type {} from "effect/Scope"
5
4
  import type {} from "effect/Context"
@@ -16,7 +15,21 @@ const make = Effect.gen(function*($) {
16
15
  )
17
16
  const run = FiberSet.run(set)
18
17
 
18
+ // const waitUntilEmpty = Effect.gen(function*($) {
19
+ // const currentSize = yield* $(FiberSet.size(set))
20
+ // if (currentSize === 0) {
21
+ // return
22
+ // }
23
+ // yield* $(Effect.logInfo("Waiting MainFiberSet to be empty: " + currentSize))
24
+ // while ((yield* $(FiberSet.size(set))) > 0) yield* $(Effect.sleep("250 millis"))
25
+ // yield* $(Effect.logDebug("MainFiberSet is empty"))
26
+ // })
27
+
28
+ // TODO: loop and interrupt all fibers in the set continuously?
29
+ const interrupt = Fiber.interruptAll(set)
30
+
19
31
  return {
32
+ interrupt,
20
33
  join,
21
34
  run,
22
35
  add,