effect-app 0.180.4 → 0.180.6
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 +12 -0
- package/_cjs/services/FiberBag.cjs +12 -3
- package/_cjs/services/FiberBag.cjs.map +1 -1
- package/dist/services/FiberBag.d.ts +20 -4
- package/dist/services/FiberBag.d.ts.map +1 -1
- package/dist/services/FiberBag.js +13 -4
- package/package.json +3 -3
- package/src/services/FiberBag.ts +21 -7
package/CHANGELOG.md
CHANGED
|
@@ -8,10 +8,17 @@ var _core = require("@effect-app/core");
|
|
|
8
8
|
var _service = require("../service.cjs");
|
|
9
9
|
const make = _core.Effect.gen(function* ($) {
|
|
10
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));
|
|
11
16
|
return {
|
|
12
|
-
join
|
|
13
|
-
|
|
14
|
-
|
|
17
|
+
join,
|
|
18
|
+
forkDaemon,
|
|
19
|
+
forkScoped,
|
|
20
|
+
add,
|
|
21
|
+
addAll
|
|
15
22
|
};
|
|
16
23
|
});
|
|
17
24
|
/**
|
|
@@ -22,6 +29,8 @@ const make = _core.Effect.gen(function* ($) {
|
|
|
22
29
|
class FiberBag extends (0, _service.TagClassMakeId)("FiberBag", make)() {
|
|
23
30
|
static Live = this.toLayer();
|
|
24
31
|
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));
|
|
25
34
|
}
|
|
26
35
|
exports.FiberBag = FiberBag;
|
|
27
36
|
//# 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","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,
|
|
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"}
|
|
@@ -2,35 +2,47 @@ 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>;
|
|
5
7
|
add: (...fibers: Fiber.Fiber<void, never>[]) => Effect.Effect<void, never, never>;
|
|
6
8
|
addAll: (fibers: readonly Fiber.Fiber<void, never>[]) => Effect.Effect<void, never, never>;
|
|
7
9
|
}): Readonly<{
|
|
8
10
|
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>;
|
|
9
13
|
add: (...fibers: Fiber.Fiber<void, never>[]) => Effect.Effect<void, never, never>;
|
|
10
14
|
addAll: (fibers: readonly Fiber.Fiber<void, never>[]) => Effect.Effect<void, never, never>;
|
|
11
15
|
}> & import("effect/Context").TagClassShape<"FiberBag", {
|
|
12
16
|
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>;
|
|
13
19
|
add: (...fibers: Fiber.Fiber<void, never>[]) => Effect.Effect<void, never, never>;
|
|
14
20
|
addAll: (fibers: readonly Fiber.Fiber<void, never>[]) => Effect.Effect<void, never, never>;
|
|
15
21
|
}>;
|
|
16
22
|
toLayer: {
|
|
17
23
|
(): Layer<FiberBag, never, never>;
|
|
18
|
-
<E,
|
|
24
|
+
<E, R_2>(eff: Effect<{
|
|
19
25
|
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>;
|
|
20
28
|
add: (...fibers: Fiber.Fiber<void, never>[]) => Effect.Effect<void, never, never>;
|
|
21
29
|
addAll: (fibers: readonly Fiber.Fiber<void, never>[]) => Effect.Effect<void, never, never>;
|
|
22
|
-
}, E,
|
|
30
|
+
}, E, R_2>): Layer<FiberBag, E, R_2>;
|
|
23
31
|
};
|
|
24
32
|
toLayerScoped: {
|
|
25
33
|
(): Layer<FiberBag, never, never>;
|
|
26
|
-
<E_1,
|
|
34
|
+
<E_1, R_3>(eff: Effect<{
|
|
27
35
|
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>;
|
|
28
38
|
add: (...fibers: Fiber.Fiber<void, never>[]) => Effect.Effect<void, never, never>;
|
|
29
39
|
addAll: (fibers: readonly Fiber.Fiber<void, never>[]) => Effect.Effect<void, never, never>;
|
|
30
|
-
}, E_1,
|
|
40
|
+
}, E_1, R_3>): Layer<FiberBag, E_1, Exclude<R_3, import("effect/Scope").Scope>>;
|
|
31
41
|
};
|
|
32
42
|
wrap: (service: {
|
|
33
43
|
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>;
|
|
34
46
|
add: (...fibers: Fiber.Fiber<void, never>[]) => Effect.Effect<void, never, never>;
|
|
35
47
|
addAll: (fibers: readonly Fiber.Fiber<void, never>[]) => Effect.Effect<void, never, never>;
|
|
36
48
|
}) => FiberBag;
|
|
@@ -40,6 +52,8 @@ declare const FiberBag_base: {
|
|
|
40
52
|
join: Effect.Effect<void, never, FiberBag>;
|
|
41
53
|
};
|
|
42
54
|
} & {
|
|
55
|
+
forkDaemon: (effect: Effect<never, never, unknown>) => Effect.Effect<void, never, unknown>;
|
|
56
|
+
forkScoped: (effect: Effect<never, never, unknown>) => Effect.Effect<void, never, unknown>;
|
|
43
57
|
add: (...args: Fiber.Fiber<void, never>[]) => Effect.Effect<void, never, FiberBag>;
|
|
44
58
|
addAll: (fibers: readonly Fiber.Fiber<void, never>[]) => Effect.Effect<void, never, FiberBag>;
|
|
45
59
|
};
|
|
@@ -51,6 +65,8 @@ declare const FiberBag_base: {
|
|
|
51
65
|
export declare class FiberBag extends FiberBag_base {
|
|
52
66
|
static readonly Live: Layer<FiberBag, never, never>;
|
|
53
67
|
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>;
|
|
54
70
|
}
|
|
55
71
|
export {};
|
|
56
72
|
//# 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
|
|
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"}
|
|
@@ -2,10 +2,17 @@ import { Effect, Fiber, Layer, Ref } from "@effect-app/core";
|
|
|
2
2
|
import { TagClassMakeId } from "../service.js";
|
|
3
3
|
const make = Effect.gen(function* ($) {
|
|
4
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));
|
|
5
10
|
return {
|
|
6
|
-
join
|
|
7
|
-
|
|
8
|
-
|
|
11
|
+
join,
|
|
12
|
+
forkDaemon,
|
|
13
|
+
forkScoped,
|
|
14
|
+
add,
|
|
15
|
+
addAll
|
|
9
16
|
};
|
|
10
17
|
});
|
|
11
18
|
/**
|
|
@@ -16,5 +23,7 @@ const make = Effect.gen(function* ($) {
|
|
|
16
23
|
export class FiberBag extends TagClassMakeId("FiberBag", make)() {
|
|
17
24
|
static Live = this.toLayer();
|
|
18
25
|
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));
|
|
19
28
|
}
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmliZXJCYWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvRmliZXJCYWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFOUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBQyxDQUFDO0lBQ2pDLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFzQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3ZFLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQ25CLEdBQUcsQ0FBQyxHQUFHLEVBQ1AsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsR0FBRyxHQUFHLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUFDLEVBQ3BGLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUM5QixDQUFBO0lBQ0QsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLE1BQWtDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNyRyxNQUFNLE1BQU0sR0FBRyxDQUFDLE1BQTJDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUU5RyxNQUFNLFVBQVUsR0FBRyxDQUFJLE1BQStCLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7SUFDOUcsTUFBTSxVQUFVLEdBQUcsQ0FBSSxNQUErQixFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBRTlHLE9BQU87UUFDTCxJQUFJO1FBQ0osVUFBVTtRQUNWLFVBQVU7UUFDVixHQUFHO1FBQ0gsTUFBTTtLQUNQLENBQUE7QUFDSCxDQUFDLENBQUMsQ0FBQTtBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sUUFBUyxTQUFRLGNBQWMsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEVBQVk7SUFDeEUsTUFBTSxDQUFVLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7SUFDckMsTUFBTSxDQUFVLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFFbEgsTUFBTSxDQUFtQixVQUFVLEdBQUcsQ0FBSSxNQUErQixFQUFFLEVBQUUsQ0FDM0UsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtJQUNuRCxNQUFNLENBQW1CLFVBQVUsR0FBRyxDQUFJLE1BQStCLEVBQUUsRUFBRSxDQUMzRSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBIn0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "effect-app",
|
|
3
|
-
"version": "0.180.
|
|
3
|
+
"version": "0.180.6",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
"ts-pattern": "^5.0.8",
|
|
14
14
|
"uuid": "^9.0.1",
|
|
15
15
|
"validator": "^13.11.0",
|
|
16
|
-
"@effect-app/fluent-extensions": "0.143.1",
|
|
17
16
|
"@effect-app/core": "0.150.2",
|
|
18
|
-
"@effect-app/schema": "0.202.2"
|
|
17
|
+
"@effect-app/schema": "0.202.2",
|
|
18
|
+
"@effect-app/fluent-extensions": "0.143.1"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
21
|
"@babel/cli": "^7.23.9",
|
package/src/services/FiberBag.ts
CHANGED
|
@@ -3,14 +3,23 @@ import { TagClassMakeId } from "../service.js"
|
|
|
3
3
|
|
|
4
4
|
const make = Effect.gen(function*($) {
|
|
5
5
|
const ref = yield* $(Ref.make<readonly Fiber.Fiber<void, never>[]>([]))
|
|
6
|
+
const join = ref.pipe(
|
|
7
|
+
Ref.get,
|
|
8
|
+
Effect.tap((bag) => Effect.logDebug("[FiberBag] Joining " + bag.length + " fibers")),
|
|
9
|
+
Effect.andThen(Fiber.joinAll)
|
|
10
|
+
)
|
|
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
|
+
|
|
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))
|
|
16
|
+
|
|
6
17
|
return {
|
|
7
|
-
join
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
add: (...fibers: Fiber.Fiber<void, never>[]) => ref.pipe(Ref.update((_) => [..._, ...fibers])),
|
|
13
|
-
addAll: (fibers: readonly Fiber.Fiber<void, never>[]) => ref.pipe(Ref.update((_) => [..._, ...fibers]))
|
|
18
|
+
join,
|
|
19
|
+
forkDaemon,
|
|
20
|
+
forkScoped,
|
|
21
|
+
add,
|
|
22
|
+
addAll
|
|
14
23
|
}
|
|
15
24
|
})
|
|
16
25
|
|
|
@@ -22,4 +31,9 @@ const make = Effect.gen(function*($) {
|
|
|
22
31
|
export class FiberBag extends TagClassMakeId("FiberBag", make)<FiberBag>() {
|
|
23
32
|
static readonly Live = this.toLayer()
|
|
24
33
|
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))
|
|
25
39
|
}
|