effect-app 0.201.5 → 0.202.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 +12 -0
- package/_cjs/services/{FiberBag.cjs → MainFiberSet.cjs} +6 -7
- package/_cjs/services/MainFiberSet.cjs.map +1 -0
- package/dist/services/{FiberBag.d.ts → MainFiberSet.d.ts} +24 -23
- package/dist/services/MainFiberSet.d.ts.map +1 -0
- package/dist/services/MainFiberSet.js +24 -0
- package/package.json +6 -6
- package/src/services/{FiberBag.ts → MainFiberSet.ts} +5 -8
- package/_cjs/services/FiberBag.cjs.map +0 -1
- package/dist/services/FiberBag.d.ts.map +0 -1
- package/dist/services/FiberBag.js +0 -25
package/CHANGELOG.md
CHANGED
|
@@ -3,16 +3,15 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.MainFiberSet = void 0;
|
|
7
7
|
var _core = require("@effect-app/core");
|
|
8
8
|
const make = _core.Effect.gen(function* ($) {
|
|
9
9
|
const set = yield* $(_core.FiberSet.make());
|
|
10
|
-
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));
|
|
11
10
|
const add = (...fibers) => _core.Effect.sync(() => fibers.forEach(_ => _core.FiberSet.unsafeAdd(set, _)));
|
|
12
11
|
const addAll = fibers => _core.Effect.sync(() => fibers.forEach(_ => _core.FiberSet.unsafeAdd(set, _)));
|
|
13
12
|
const run = _core.FiberSet.run(set);
|
|
14
13
|
return {
|
|
15
|
-
join,
|
|
14
|
+
join: _core.FiberSet.join(set),
|
|
16
15
|
run,
|
|
17
16
|
add,
|
|
18
17
|
addAll
|
|
@@ -20,13 +19,13 @@ const make = _core.Effect.gen(function* ($) {
|
|
|
20
19
|
});
|
|
21
20
|
/**
|
|
22
21
|
* Whenever you fork long running fibers e.g via `Effect.forkScoped` or `Effect.forkDaemon`
|
|
23
|
-
* you should register these long running fibers in a
|
|
22
|
+
* you should register these long running fibers in a FiberSet, and join them at the end of your main program.
|
|
24
23
|
* This way any errors will blow up the main program instead of fibers dying unknowingly.
|
|
25
24
|
*/
|
|
26
|
-
class
|
|
25
|
+
class MainFiberSet extends _core.Context.TagMakeId("MainFiberSet", make)() {
|
|
27
26
|
static Live = this.toLayerScoped();
|
|
28
27
|
static JoinLive = this.pipe(_core.Effect.andThen(_ => _.join), _core.Layer.effectDiscard, _core.Layer.provide(this.Live));
|
|
29
28
|
static run = self => this.use(_ => _.run(self));
|
|
30
29
|
}
|
|
31
|
-
exports.
|
|
32
|
-
//# sourceMappingURL=
|
|
30
|
+
exports.MainFiberSet = MainFiberSet;
|
|
31
|
+
//# sourceMappingURL=MainFiberSet.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MainFiberSet.cjs","names":["_core","require","make","Effect","gen","$","set","FiberSet","add","fibers","sync","forEach","_","unsafeAdd","addAll","run","join","MainFiberSet","Context","TagMakeId","Live","toLayerScoped","JoinLive","pipe","andThen","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,EAAgB,CAAC;EACnD,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;EAEtE,MAAMG,GAAG,GAAGR,cAAQ,CAACQ,GAAG,CAACT,GAAG,CAAC;EAE7B,OAAO;IACLU,IAAI,EAAET,cAAQ,CAACS,IAAI,CAACV,GAAG,CAAC;IACxBS,GAAG;IACHP,GAAG;IACHM;GACD;AACH,CAAC,CAAC;AAEF;;;;;AAKM,MAAOG,YAAa,SAAQC,aAAO,CAACC,SAAS,CAAC,cAAc,EAAEjB,IAAI,CAAC,EAAgB;EACvF,OAAgBkB,IAAI,GAAG,IAAI,CAACC,aAAa,EAAE;EAC3C,OAAgBC,QAAQ,GAAG,IAAI,CAACC,IAAI,CAACpB,YAAM,CAACqB,OAAO,CAAEZ,CAAC,IAAKA,CAAC,CAACI,IAAI,CAAC,EAAES,WAAK,CAACC,aAAa,EAAED,WAAK,CAACE,OAAO,CAAC,IAAI,CAACP,IAAI,CAAC,CAAC;EAClH,OAAgBL,GAAG,GAAOa,IAA6B,IAAK,IAAI,CAACC,GAAG,CAAEjB,CAAC,IAAKA,CAAC,CAACG,GAAG,CAACa,IAAI,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,51 +1,52 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import type { Fiber } from "@effect-app/core";
|
|
2
|
+
import { Context, Effect, Layer } from "@effect-app/core";
|
|
3
|
+
declare const MainFiberSet_base: (abstract new (service: {
|
|
4
|
+
join: Effect.Effect<never, never, never>;
|
|
4
5
|
run: <R, XE extends never, XA extends never>(effect: Effect.Effect<XA, XE, R>) => Effect.Effect<Fiber.RuntimeFiber<XA, XE>, never, R>;
|
|
5
6
|
add: (...fibers: Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
|
|
6
7
|
addAll: (fibers: readonly Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
|
|
7
8
|
}) => Readonly<{
|
|
8
|
-
join: Effect.Effect<
|
|
9
|
+
join: Effect.Effect<never, never, never>;
|
|
9
10
|
run: <R, XE extends never, XA extends never>(effect: Effect.Effect<XA, XE, R>) => Effect.Effect<Fiber.RuntimeFiber<XA, XE>, never, R>;
|
|
10
11
|
add: (...fibers: Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
|
|
11
12
|
addAll: (fibers: readonly Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
|
|
12
|
-
}> & Context.TagClassShape<"
|
|
13
|
-
join: Effect.Effect<
|
|
13
|
+
}> & Context.TagClassShape<"MainFiberSet", {
|
|
14
|
+
join: Effect.Effect<never, never, never>;
|
|
14
15
|
run: <R, XE extends never, XA extends never>(effect: Effect.Effect<XA, XE, R>) => Effect.Effect<Fiber.RuntimeFiber<XA, XE>, never, R>;
|
|
15
16
|
add: (...fibers: Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
|
|
16
17
|
addAll: (fibers: readonly Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
|
|
17
18
|
}>) & {
|
|
18
19
|
toLayer: {
|
|
19
|
-
(): Layer<
|
|
20
|
-
<E_1, R_1>(eff: Effect<Omit<
|
|
20
|
+
(): Layer<MainFiberSet, never, import("effect/Scope").Scope>;
|
|
21
|
+
<E_1, R_1>(eff: Effect<Omit<MainFiberSet, keyof Context.TagClassShape<any, any>>, E_1, R_1>): Layer<MainFiberSet, E_1, R_1>;
|
|
21
22
|
};
|
|
22
23
|
toLayerScoped: {
|
|
23
|
-
(): Layer<
|
|
24
|
-
<E_2, R_2>(eff: Effect<Context.TagClassShape<any, any>, E_2, R_2>): Layer<
|
|
24
|
+
(): Layer<MainFiberSet, never, never>;
|
|
25
|
+
<E_2, R_2>(eff: Effect<Context.TagClassShape<any, any>, E_2, R_2>): Layer<MainFiberSet, E_2, Exclude<R_2, import("effect/Scope").Scope>>;
|
|
25
26
|
};
|
|
26
|
-
of: (service: Context.TagClassShape<any, any>) =>
|
|
27
|
-
make: Effect<
|
|
28
|
-
} & Context.Tag<
|
|
29
|
-
join: Effect<
|
|
30
|
-
add: (...args: readonly Fiber.RuntimeFiber<never, never>[]) => Effect<void, never,
|
|
31
|
-
addAll: (fibers: readonly Fiber.RuntimeFiber<never, never>[]) => Effect<void, never,
|
|
27
|
+
of: (service: Context.TagClassShape<any, any>) => MainFiberSet;
|
|
28
|
+
make: Effect<MainFiberSet, never, import("effect/Scope").Scope>;
|
|
29
|
+
} & Context.Tag<MainFiberSet, MainFiberSet> & {
|
|
30
|
+
join: Effect<never, never, MainFiberSet>;
|
|
31
|
+
add: (...args: readonly Fiber.RuntimeFiber<never, never>[]) => Effect<void, never, MainFiberSet>;
|
|
32
|
+
addAll: (fibers: readonly Fiber.RuntimeFiber<never, never>[]) => Effect<void, never, MainFiberSet>;
|
|
32
33
|
} & {
|
|
33
34
|
use: <X>(body: (_: {
|
|
34
|
-
join: Effect.Effect<
|
|
35
|
+
join: Effect.Effect<never, never, never>;
|
|
35
36
|
run: <R, XE extends never, XA extends never>(effect: Effect.Effect<XA, XE, R>) => Effect.Effect<Fiber.RuntimeFiber<XA, XE>, never, R>;
|
|
36
37
|
add: (...fibers: Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
|
|
37
38
|
addAll: (fibers: readonly Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
|
|
38
|
-
}) => X) => X extends Effect<infer A_3, infer E_5, infer R_5> ? Effect<A_3, E_5,
|
|
39
|
+
}) => X) => X extends Effect<infer A_3, infer E_5, infer R_5> ? Effect<A_3, E_5, MainFiberSet | R_5> : Effect<X, never, MainFiberSet>;
|
|
39
40
|
};
|
|
40
41
|
/**
|
|
41
42
|
* Whenever you fork long running fibers e.g via `Effect.forkScoped` or `Effect.forkDaemon`
|
|
42
|
-
* you should register these long running fibers in a
|
|
43
|
+
* you should register these long running fibers in a FiberSet, and join them at the end of your main program.
|
|
43
44
|
* This way any errors will blow up the main program instead of fibers dying unknowingly.
|
|
44
45
|
*/
|
|
45
|
-
export declare class
|
|
46
|
-
static readonly Live: Layer<
|
|
46
|
+
export declare class MainFiberSet extends MainFiberSet_base {
|
|
47
|
+
static readonly Live: Layer<MainFiberSet, never, never>;
|
|
47
48
|
static readonly JoinLive: Layer.Layer<never, never, never>;
|
|
48
|
-
static readonly run: <R>(self: Effect<never, never, R>) => Effect<Fiber.RuntimeFiber<never, never>, never,
|
|
49
|
+
static readonly run: <R>(self: Effect<never, never, R>) => Effect<Fiber.RuntimeFiber<never, never>, never, MainFiberSet | R>;
|
|
49
50
|
}
|
|
50
51
|
export {};
|
|
51
|
-
//# sourceMappingURL=
|
|
52
|
+
//# sourceMappingURL=MainFiberSet.d.ts.map
|
|
@@ -0,0 +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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBnE;;;;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,YAAa,OAAO,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,uEAAiC;CACzF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Context, Effect, FiberSet, Layer } from "@effect-app/core";
|
|
2
|
+
const make = Effect.gen(function* ($) {
|
|
3
|
+
const set = yield* $(FiberSet.make());
|
|
4
|
+
const add = (...fibers) => Effect.sync(() => fibers.forEach((_) => FiberSet.unsafeAdd(set, _)));
|
|
5
|
+
const addAll = (fibers) => Effect.sync(() => fibers.forEach((_) => FiberSet.unsafeAdd(set, _)));
|
|
6
|
+
const run = FiberSet.run(set);
|
|
7
|
+
return {
|
|
8
|
+
join: FiberSet.join(set),
|
|
9
|
+
run,
|
|
10
|
+
add,
|
|
11
|
+
addAll
|
|
12
|
+
};
|
|
13
|
+
});
|
|
14
|
+
/**
|
|
15
|
+
* Whenever you fork long running fibers e.g via `Effect.forkScoped` or `Effect.forkDaemon`
|
|
16
|
+
* you should register these long running fibers in a FiberSet, and join them at the end of your main program.
|
|
17
|
+
* This way any errors will blow up the main program instead of fibers dying unknowingly.
|
|
18
|
+
*/
|
|
19
|
+
export class MainFiberSet extends Context.TagMakeId("MainFiberSet", make)() {
|
|
20
|
+
static Live = this.toLayerScoped();
|
|
21
|
+
static JoinLive = this.pipe(Effect.andThen((_) => _.join), Layer.effectDiscard, Layer.provide(this.Live));
|
|
22
|
+
static run = (self) => this.use((_) => _.run(self));
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFpbkZpYmVyU2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL01haW5GaWJlclNldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFLbkUsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBQyxDQUFDO0lBQ2pDLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFnQixDQUFDLENBQUE7SUFDbkQsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLE1BQTBDLEVBQUUsRUFBRSxDQUM1RCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN0RSxNQUFNLE1BQU0sR0FBRyxDQUFDLE1BQW1ELEVBQUUsRUFBRSxDQUNyRSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUV0RSxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBRTdCLE9BQU87UUFDTCxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDeEIsR0FBRztRQUNILEdBQUc7UUFDSCxNQUFNO0tBQ1AsQ0FBQTtBQUNILENBQUMsQ0FBQyxDQUFBO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxZQUFhLFNBQVEsT0FBTyxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLEVBQWdCO0lBQ3ZGLE1BQU0sQ0FBVSxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFBO0lBQzNDLE1BQU0sQ0FBVSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xILE1BQU0sQ0FBVSxHQUFHLEdBQUcsQ0FBSSxJQUE2QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUEifQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "effect-app",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.202.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
@@ -239,14 +239,14 @@
|
|
|
239
239
|
"default": "./_cjs/schema.cjs"
|
|
240
240
|
}
|
|
241
241
|
},
|
|
242
|
-
"./services/
|
|
242
|
+
"./services/MainFiberSet": {
|
|
243
243
|
"import": {
|
|
244
|
-
"types": "./dist/services/
|
|
245
|
-
"default": "./dist/services/
|
|
244
|
+
"types": "./dist/services/MainFiberSet.d.ts",
|
|
245
|
+
"default": "./dist/services/MainFiberSet.js"
|
|
246
246
|
},
|
|
247
247
|
"require": {
|
|
248
|
-
"types": "./dist/services/
|
|
249
|
-
"default": "./_cjs/services/
|
|
248
|
+
"types": "./dist/services/MainFiberSet.d.ts",
|
|
249
|
+
"default": "./_cjs/services/MainFiberSet.cjs"
|
|
250
250
|
}
|
|
251
251
|
},
|
|
252
252
|
"./utils": {
|
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { Fiber } from "@effect-app/core"
|
|
2
|
+
import { Context, Effect, FiberSet, Layer } from "@effect-app/core"
|
|
2
3
|
|
|
3
4
|
import type {} from "effect/Scope"
|
|
4
5
|
import type {} from "effect/Context"
|
|
5
6
|
|
|
6
7
|
const make = Effect.gen(function*($) {
|
|
7
8
|
const set = yield* $(FiberSet.make<never, never>())
|
|
8
|
-
const join = Effect.sync(() => [...set]).pipe(
|
|
9
|
-
Effect.tap((bag) => Effect.logDebug("[FiberBag] Joining " + bag.length + " fibers")),
|
|
10
|
-
Effect.andThen(Fiber.joinAll)
|
|
11
|
-
)
|
|
12
9
|
const add = (...fibers: Fiber.RuntimeFiber<never, never>[]) =>
|
|
13
10
|
Effect.sync(() => fibers.forEach((_) => FiberSet.unsafeAdd(set, _)))
|
|
14
11
|
const addAll = (fibers: readonly Fiber.RuntimeFiber<never, never>[]) =>
|
|
@@ -17,7 +14,7 @@ const make = Effect.gen(function*($) {
|
|
|
17
14
|
const run = FiberSet.run(set)
|
|
18
15
|
|
|
19
16
|
return {
|
|
20
|
-
join,
|
|
17
|
+
join: FiberSet.join(set),
|
|
21
18
|
run,
|
|
22
19
|
add,
|
|
23
20
|
addAll
|
|
@@ -26,10 +23,10 @@ const make = Effect.gen(function*($) {
|
|
|
26
23
|
|
|
27
24
|
/**
|
|
28
25
|
* Whenever you fork long running fibers e.g via `Effect.forkScoped` or `Effect.forkDaemon`
|
|
29
|
-
* you should register these long running fibers in a
|
|
26
|
+
* you should register these long running fibers in a FiberSet, and join them at the end of your main program.
|
|
30
27
|
* This way any errors will blow up the main program instead of fibers dying unknowingly.
|
|
31
28
|
*/
|
|
32
|
-
export class
|
|
29
|
+
export class MainFiberSet extends Context.TagMakeId("MainFiberSet", make)<MainFiberSet>() {
|
|
33
30
|
static readonly Live = this.toLayerScoped()
|
|
34
31
|
static readonly JoinLive = this.pipe(Effect.andThen((_) => _.join), Layer.effectDiscard, Layer.provide(this.Live))
|
|
35
32
|
static readonly run = <R>(self: Effect<never, never, R>) => this.use((_) => _.run(self))
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FiberBag.cjs","names":["_core","require","make","Effect","gen","$","set","FiberSet","join","sync","pipe","tap","bag","logDebug","length","andThen","Fiber","joinAll","add","fibers","forEach","_","unsafeAdd","addAll","run","FiberBag","Context","TagMakeId","Live","toLayerScoped","JoinLive","Layer","effectDiscard","provide","self","use"],"sources":["../../src/services/FiberBag.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,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,SAAQC,aAAO,CAACC,SAAS,CAAC,UAAU,EAAEzB,IAAI,CAAC,EAAY;EAC3E,OAAgB0B,IAAI,GAAG,IAAI,CAACC,aAAa,EAAE;EAC3C,OAAgBC,QAAQ,GAAG,IAAI,CAACpB,IAAI,CAACP,YAAM,CAACY,OAAO,CAAEM,CAAC,IAAKA,CAAC,CAACb,IAAI,CAAC,EAAEuB,WAAK,CAACC,aAAa,EAAED,WAAK,CAACE,OAAO,CAAC,IAAI,CAACL,IAAI,CAAC,CAAC;EAClH,OAAgBJ,GAAG,GAAOU,IAA6B,IAAK,IAAI,CAACC,GAAG,CAAEd,CAAC,IAAKA,CAAC,CAACG,GAAG,CAACU,IAAI,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FiberBag.d.ts","sourceRoot":"","sources":["../../src/services/FiberBag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAY,KAAK,EAAE,MAAM,kBAAkB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0B1E;;;;GAIG;AACH,qBAAa,QAAS,SAAQ,aAA+C;IAC3E,MAAM,CAAC,QAAQ,CAAC,IAAI,gCAAuB;IAC3C,MAAM,CAAC,QAAQ,CAAC,QAAQ,mCAA0F;IAClH,MAAM,CAAC,QAAQ,CAAC,GAAG,YAAa,OAAO,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,mEAAiC;CACzF"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { Context, Effect, Fiber, FiberSet, Layer } from "@effect-app/core";
|
|
2
|
-
const make = Effect.gen(function* ($) {
|
|
3
|
-
const set = yield* $(FiberSet.make());
|
|
4
|
-
const join = Effect.sync(() => [...set]).pipe(Effect.tap((bag) => Effect.logDebug("[FiberBag] Joining " + bag.length + " fibers")), Effect.andThen(Fiber.joinAll));
|
|
5
|
-
const add = (...fibers) => Effect.sync(() => fibers.forEach((_) => FiberSet.unsafeAdd(set, _)));
|
|
6
|
-
const addAll = (fibers) => Effect.sync(() => fibers.forEach((_) => FiberSet.unsafeAdd(set, _)));
|
|
7
|
-
const run = FiberSet.run(set);
|
|
8
|
-
return {
|
|
9
|
-
join,
|
|
10
|
-
run,
|
|
11
|
-
add,
|
|
12
|
-
addAll
|
|
13
|
-
};
|
|
14
|
-
});
|
|
15
|
-
/**
|
|
16
|
-
* Whenever you fork long running fibers e.g via `Effect.forkScoped` or `Effect.forkDaemon`
|
|
17
|
-
* you should register these long running fibers in a `FiberBag`, and join them at the end of your main program.
|
|
18
|
-
* This way any errors will blow up the main program instead of fibers dying unknowingly.
|
|
19
|
-
*/
|
|
20
|
-
export class FiberBag extends Context.TagMakeId("FiberBag", make)() {
|
|
21
|
-
static Live = this.toLayerScoped();
|
|
22
|
-
static JoinLive = this.pipe(Effect.andThen((_) => _.join), Layer.effectDiscard, Layer.provide(this.Live));
|
|
23
|
-
static run = (self) => this.use((_) => _.run(self));
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmliZXJCYWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvRmliZXJCYWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUsxRSxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFDLENBQUM7SUFDakMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQWdCLENBQUMsQ0FBQTtJQUNuRCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDM0MsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsR0FBRyxHQUFHLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUFDLEVBQ3BGLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUM5QixDQUFBO0lBQ0QsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLE1BQTBDLEVBQUUsRUFBRSxDQUM1RCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN0RSxNQUFNLE1BQU0sR0FBRyxDQUFDLE1BQW1ELEVBQUUsRUFBRSxDQUNyRSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUV0RSxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBRTdCLE9BQU87UUFDTCxJQUFJO1FBQ0osR0FBRztRQUNILEdBQUc7UUFDSCxNQUFNO0tBQ1AsQ0FBQTtBQUNILENBQUMsQ0FBQyxDQUFBO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxRQUFTLFNBQVEsT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEVBQVk7SUFDM0UsTUFBTSxDQUFVLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUE7SUFDM0MsTUFBTSxDQUFVLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEgsTUFBTSxDQUFVLEdBQUcsR0FBRyxDQUFJLElBQTZCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQSJ9
|