@effect/platform 0.75.4 → 0.76.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/dist/cjs/WorkerRunner.js +19 -3
- package/dist/cjs/WorkerRunner.js.map +1 -1
- package/dist/cjs/internal/workerRunner.js +22 -14
- package/dist/cjs/internal/workerRunner.js.map +1 -1
- package/dist/dts/WorkerRunner.d.ts +34 -7
- package/dist/dts/WorkerRunner.d.ts.map +1 -1
- package/dist/esm/WorkerRunner.js +18 -2
- package/dist/esm/WorkerRunner.js.map +1 -1
- package/dist/esm/internal/workerRunner.js +20 -11
- package/dist/esm/internal/workerRunner.js.map +1 -1
- package/package.json +2 -2
- package/src/WorkerRunner.ts +43 -13
- package/src/internal/workerRunner.ts +104 -104
package/dist/cjs/WorkerRunner.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.makeSerialized = exports.make = exports.layerSerialized = exports.layerCloseLatch = exports.layer = exports.launch = exports.PlatformRunnerTypeId = exports.PlatformRunner = exports.CloseLatch = void 0;
|
|
7
7
|
var internal = _interopRequireWildcard(require("./internal/workerRunner.js"));
|
|
8
8
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
9
9
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
@@ -18,10 +18,18 @@ const PlatformRunnerTypeId = exports.PlatformRunnerTypeId = internal.PlatformRun
|
|
|
18
18
|
*/
|
|
19
19
|
const PlatformRunner = exports.PlatformRunner = internal.PlatformRunner;
|
|
20
20
|
/**
|
|
21
|
+
* The worker close latch is used by platform runners to signal that the worker
|
|
22
|
+
* has been closed.
|
|
23
|
+
*
|
|
21
24
|
* @since 1.0.0
|
|
22
|
-
* @category
|
|
25
|
+
* @category CloseLatch
|
|
26
|
+
*/
|
|
27
|
+
const CloseLatch = exports.CloseLatch = internal.CloseLatch;
|
|
28
|
+
/**
|
|
29
|
+
* @since 1.0.0
|
|
30
|
+
* @category CloseLatch
|
|
23
31
|
*/
|
|
24
|
-
const
|
|
32
|
+
const layerCloseLatch = exports.layerCloseLatch = internal.layerCloseLatch;
|
|
25
33
|
/**
|
|
26
34
|
* @since 1.0.0
|
|
27
35
|
* @category constructors
|
|
@@ -42,4 +50,12 @@ const makeSerialized = exports.makeSerialized = internal.makeSerialized;
|
|
|
42
50
|
* @category layers
|
|
43
51
|
*/
|
|
44
52
|
const layerSerialized = exports.layerSerialized = internal.layerSerialized;
|
|
53
|
+
/**
|
|
54
|
+
* Launch the specified layer, interrupting the fiber when the CloseLatch is
|
|
55
|
+
* triggered.
|
|
56
|
+
*
|
|
57
|
+
* @since 1.0.0
|
|
58
|
+
* @category Execution
|
|
59
|
+
*/
|
|
60
|
+
const launch = exports.launch = internal.launch;
|
|
45
61
|
//# sourceMappingURL=WorkerRunner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkerRunner.js","names":["internal","_interopRequireWildcard","require","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","PlatformRunnerTypeId","exports","PlatformRunner","
|
|
1
|
+
{"version":3,"file":"WorkerRunner.js","names":["internal","_interopRequireWildcard","require","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","PlatformRunnerTypeId","exports","PlatformRunner","CloseLatch","layerCloseLatch","make","layer","makeSerialized","layerSerialized","launch"],"sources":["../../src/WorkerRunner.ts"],"sourcesContent":[null],"mappings":";;;;;;AAUA,IAAAA,QAAA,GAAAC,uBAAA,CAAAC,OAAA;AAAsD,SAAAC,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AA8BtD;;;;AAIO,MAAMW,oBAAoB,GAAAC,OAAA,CAAAD,oBAAA,GAAkBvB,QAAQ,CAACuB,oBAAoB;AAiBhF;;;;AAIO,MAAME,cAAc,GAAAD,OAAA,CAAAC,cAAA,GAAgDzB,QAAQ,CAACyB,cAAc;AAalG;;;;;;;AAOO,MAAMC,UAAU,GAAAF,OAAA,CAAAE,UAAA,GAAwE1B,QAAQ,CAAC0B,UAAU;AAElH;;;;AAIO,MAAMC,eAAe,GAAAH,OAAA,CAAAG,eAAA,GAA4B3B,QAAQ,CAAC2B,eAAe;AA0BhF;;;;AAIO,MAAMC,IAAI,GAAAJ,OAAA,CAAAI,IAAA,GAGyD5B,QAAQ,CAAC4B,IAAI;AAEvF;;;;AAIO,MAAMC,KAAK,GAAAL,OAAA,CAAAK,KAAA,GAGyC7B,QAAQ,CAAC6B,KAAK;AAyEzE;;;;AAIO,MAAMC,cAAc,GAAAN,OAAA,CAAAM,cAAA,GAYvB9B,QAAQ,CAAC8B,cAAc;AAE3B;;;;AAIO,MAAMC,eAAe,GAAAP,OAAA,CAAAO,eAAA,GAS1B/B,QAAQ,CAAC+B,eAAe;AAE1B;;;;;;;AAOO,MAAMC,MAAM,GAAAR,OAAA,CAAAQ,MAAA,GAAsFhC,QAAQ,CAACgC,MAAM","ignoreList":[]}
|
|
@@ -3,16 +3,17 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.makeSerialized = exports.make = exports.layerSerialized = exports.layerCloseLatch = exports.layer = exports.launch = exports.PlatformRunnerTypeId = exports.PlatformRunner = exports.CloseLatch = void 0;
|
|
7
7
|
var Cause = _interopRequireWildcard(require("effect/Cause"));
|
|
8
8
|
var Chunk = _interopRequireWildcard(require("effect/Chunk"));
|
|
9
9
|
var Context = _interopRequireWildcard(require("effect/Context"));
|
|
10
|
+
var Deferred = _interopRequireWildcard(require("effect/Deferred"));
|
|
10
11
|
var Effect = _interopRequireWildcard(require("effect/Effect"));
|
|
11
12
|
var Either = _interopRequireWildcard(require("effect/Either"));
|
|
12
13
|
var Fiber = _interopRequireWildcard(require("effect/Fiber"));
|
|
14
|
+
var FiberId = _interopRequireWildcard(require("effect/FiberId"));
|
|
13
15
|
var _Function = require("effect/Function");
|
|
14
16
|
var Layer = _interopRequireWildcard(require("effect/Layer"));
|
|
15
|
-
var Schedule = _interopRequireWildcard(require("effect/Schedule"));
|
|
16
17
|
var Schema = _interopRequireWildcard(require("effect/Schema"));
|
|
17
18
|
var Stream = _interopRequireWildcard(require("effect/Stream"));
|
|
18
19
|
var Transferable = _interopRequireWildcard(require("../Transferable.js"));
|
|
@@ -24,11 +25,18 @@ const PlatformRunnerTypeId = exports.PlatformRunnerTypeId = /*#__PURE__*/Symbol.
|
|
|
24
25
|
/** @internal */
|
|
25
26
|
const PlatformRunner = exports.PlatformRunner = /*#__PURE__*/Context.GenericTag("@effect/platform/Runner/PlatformRunner");
|
|
26
27
|
/** @internal */
|
|
27
|
-
const
|
|
28
|
+
const CloseLatch = exports.CloseLatch = /*#__PURE__*/Context.Reference()("@effect/platform/WorkerRunner/CloseLatch", {
|
|
29
|
+
defaultValue: () => Deferred.unsafeMake(FiberId.none)
|
|
30
|
+
});
|
|
31
|
+
/** @internal */
|
|
32
|
+
const layerCloseLatch = exports.layerCloseLatch = /*#__PURE__*/Layer.effect(CloseLatch, /*#__PURE__*/Deferred.make());
|
|
33
|
+
/** @internal */
|
|
34
|
+
const make = exports.make = /*#__PURE__*/Effect.fnUntraced(function* (process, options) {
|
|
28
35
|
const platform = yield* PlatformRunner;
|
|
29
|
-
const
|
|
36
|
+
const closeLatch = yield* CloseLatch;
|
|
37
|
+
const backing = yield* platform.start(closeLatch);
|
|
30
38
|
const fiberMap = new Map();
|
|
31
|
-
|
|
39
|
+
yield* backing.run((portId, [id, kind, data, span]) => {
|
|
32
40
|
if (kind === 1) {
|
|
33
41
|
const fiber = fiberMap.get(id);
|
|
34
42
|
if (!fiber) return Effect.void;
|
|
@@ -68,14 +76,7 @@ const run = (process, options) => Effect.gen(function* () {
|
|
|
68
76
|
});
|
|
69
77
|
});
|
|
70
78
|
/** @internal */
|
|
71
|
-
|
|
72
|
-
const make = (process, options) => Effect.withFiberRuntime(fiber => run(process, options).pipe(Effect.tapErrorCause(cause => Cause.isInterruptedOnly(cause) ? Effect.void : Effect.logWarning(cause)), Effect.retry(Schedule.spaced(1000)), Effect.annotateLogs({
|
|
73
|
-
package: "@effect/platform-node",
|
|
74
|
-
module: "WorkerRunner"
|
|
75
|
-
}), Effect.ensuring(Fiber.interruptAsFork(fiber, fiber.id())), Effect.interruptible, Effect.forkScoped, Effect.asVoid));
|
|
76
|
-
/** @internal */
|
|
77
|
-
exports.make = make;
|
|
78
|
-
const layer = (process, options) => Layer.scopedDiscard(make(process, options));
|
|
79
|
+
const layer = (process, options) => Layer.scopedDiscard(make(process, options)).pipe(Layer.provide(layerCloseLatch));
|
|
79
80
|
/** @internal */
|
|
80
81
|
exports.layer = layer;
|
|
81
82
|
const makeSerialized = (schema, handlers) => Effect.gen(function* () {
|
|
@@ -115,6 +116,13 @@ const makeSerialized = (schema, handlers) => Effect.gen(function* () {
|
|
|
115
116
|
});
|
|
116
117
|
/** @internal */
|
|
117
118
|
exports.makeSerialized = makeSerialized;
|
|
118
|
-
const layerSerialized = (schema, handlers) => Layer.scopedDiscard(makeSerialized(schema, handlers));
|
|
119
|
+
const layerSerialized = (schema, handlers) => Layer.scopedDiscard(makeSerialized(schema, handlers)).pipe(Layer.provide(layerCloseLatch));
|
|
120
|
+
/** @internal */
|
|
119
121
|
exports.layerSerialized = layerSerialized;
|
|
122
|
+
const launch = layer => Effect.scopedWith(Effect.fnUntraced(function* (scope) {
|
|
123
|
+
const context = yield* Layer.buildWithScope(Layer.merge(layer, layerCloseLatch), scope);
|
|
124
|
+
const closeLatch = Context.get(context, CloseLatch);
|
|
125
|
+
return yield* Effect.never.pipe(Effect.raceFirst(Deferred.await(closeLatch)));
|
|
126
|
+
}));
|
|
127
|
+
exports.launch = launch;
|
|
120
128
|
//# sourceMappingURL=workerRunner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workerRunner.js","names":["Cause","_interopRequireWildcard","require","Chunk","Context","Effect","Either","Fiber","
|
|
1
|
+
{"version":3,"file":"workerRunner.js","names":["Cause","_interopRequireWildcard","require","Chunk","Context","Deferred","Effect","Either","Fiber","FiberId","_Function","Layer","Schema","Stream","Transferable","_WorkerError","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","PlatformRunnerTypeId","exports","Symbol","for","PlatformRunner","GenericTag","CloseLatch","Reference","defaultValue","unsafeMake","none","layerCloseLatch","effect","make","fnUntraced","process","options","platform","closeLatch","backing","start","fiberMap","Map","run","portId","id","kind","data","span","fiber","void","interrupt","withFiberRuntime","decode","succeed","pipe","flatMap","input","collector","unsafeMakeCollector","stream","isEffect","out","encodeOutput","provideService","Collector","payload","send","unsafeRead","runForEachChunk","chunk","undefined","toReadonlyArray","unsafeClear","forEach","andThen","withParentSpan","_tag","traceId","spanId","sampled","context","empty","uninterruptibleMask","restore","catchIf","isWorkerError","error","WorkerError","encodeCause","fail","catchAllCause","cause","match","failureOrCause","onLeft","encodeError","onRight","ensuring","sync","delete","layer","scopedDiscard","provide","makeSerialized","schema","handlers","gen","scope","parseRequest","decodeUnknown","request","result","isLayer","buildWithScope","_","merge","provideContext","message","mapError","reason","serializeFailure","serializeSuccess","layerSerialized","launch","scopedWith","never","raceFirst","await"],"sources":["../../../src/internal/workerRunner.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* @since 1.0.0
|
|
3
3
|
*/
|
|
4
4
|
import type * as Context from "effect/Context";
|
|
5
|
+
import type * as Deferred from "effect/Deferred";
|
|
5
6
|
import type * as Effect from "effect/Effect";
|
|
6
7
|
import type * as Layer from "effect/Layer";
|
|
7
8
|
import type * as Schema from "effect/Schema";
|
|
@@ -13,7 +14,7 @@ import type { WorkerError } from "./WorkerError.js";
|
|
|
13
14
|
* @category models
|
|
14
15
|
*/
|
|
15
16
|
export interface BackingRunner<I, O> {
|
|
16
|
-
readonly run: <A, E, R>(handler: (portId: number, message: I) => Effect.Effect<A, E, R>) => Effect.Effect<never,
|
|
17
|
+
readonly run: <A, E, R>(handler: (portId: number, message: I) => Effect.Effect<A, E, R>) => Effect.Effect<void, never, Scope.Scope | R>;
|
|
17
18
|
readonly send: (portId: number, message: O, transfers?: ReadonlyArray<unknown>) => Effect.Effect<void>;
|
|
18
19
|
}
|
|
19
20
|
/**
|
|
@@ -43,13 +44,36 @@ export type PlatformRunnerTypeId = typeof PlatformRunnerTypeId;
|
|
|
43
44
|
*/
|
|
44
45
|
export interface PlatformRunner {
|
|
45
46
|
readonly [PlatformRunnerTypeId]: PlatformRunnerTypeId;
|
|
46
|
-
readonly start: <I, O>() => Effect.Effect<BackingRunner<I, O>, WorkerError>;
|
|
47
|
+
readonly start: <I, O>(closeLatch: typeof CloseLatch.Service) => Effect.Effect<BackingRunner<I, O>, WorkerError>;
|
|
47
48
|
}
|
|
48
49
|
/**
|
|
49
50
|
* @since 1.0.0
|
|
50
51
|
* @category tags
|
|
51
52
|
*/
|
|
52
53
|
export declare const PlatformRunner: Context.Tag<PlatformRunner, PlatformRunner>;
|
|
54
|
+
/**
|
|
55
|
+
* The worker close latch is used by platform runners to signal that the worker
|
|
56
|
+
* has been closed.
|
|
57
|
+
*
|
|
58
|
+
* @since 1.0.0
|
|
59
|
+
* @category CloseLatch
|
|
60
|
+
*/
|
|
61
|
+
export interface CloseLatch {
|
|
62
|
+
readonly _: unique symbol;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* The worker close latch is used by platform runners to signal that the worker
|
|
66
|
+
* has been closed.
|
|
67
|
+
*
|
|
68
|
+
* @since 1.0.0
|
|
69
|
+
* @category CloseLatch
|
|
70
|
+
*/
|
|
71
|
+
export declare const CloseLatch: Context.Reference<CloseLatch, Deferred.Deferred<void, WorkerError>>;
|
|
72
|
+
/**
|
|
73
|
+
* @since 1.0.0
|
|
74
|
+
* @category CloseLatch
|
|
75
|
+
*/
|
|
76
|
+
export declare const layerCloseLatch: Layer.Layer<CloseLatch>;
|
|
53
77
|
/**
|
|
54
78
|
* @since 1.0.0
|
|
55
79
|
* @category models
|
|
@@ -65,11 +89,6 @@ export declare namespace Runner {
|
|
|
65
89
|
readonly encodeError?: (request: I, error: E) => Effect.Effect<unknown, WorkerError>;
|
|
66
90
|
}
|
|
67
91
|
}
|
|
68
|
-
/**
|
|
69
|
-
* @since 1.0.0
|
|
70
|
-
* @category constructors
|
|
71
|
-
*/
|
|
72
|
-
export declare const run: <I, E, R, O>(process: (request: I) => Stream.Stream<O, E, R> | Effect.Effect<O, E, R>, options?: Runner.Options<I, O, E>) => Effect.Effect<never, WorkerError, PlatformRunner | R>;
|
|
73
92
|
/**
|
|
74
93
|
* @since 1.0.0
|
|
75
94
|
* @category constructors
|
|
@@ -118,4 +137,12 @@ export declare const makeSerialized: <R, I, A extends Schema.TaggedRequest.All,
|
|
|
118
137
|
* @category layers
|
|
119
138
|
*/
|
|
120
139
|
export declare const layerSerialized: <R, I, A extends Schema.TaggedRequest.All, const Handlers extends SerializedRunner.Handlers<A>>(schema: Schema.Schema<A, I, R>, handlers: Handlers) => Layer.Layer<never, WorkerError, PlatformRunner | R | SerializedRunner.HandlersContext<Handlers>>;
|
|
140
|
+
/**
|
|
141
|
+
* Launch the specified layer, interrupting the fiber when the CloseLatch is
|
|
142
|
+
* triggered.
|
|
143
|
+
*
|
|
144
|
+
* @since 1.0.0
|
|
145
|
+
* @category Execution
|
|
146
|
+
*/
|
|
147
|
+
export declare const launch: <A, E, R>(layer: Layer.Layer<A, E, R>) => Effect.Effect<void, E | WorkerError, R>;
|
|
121
148
|
//# sourceMappingURL=WorkerRunner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkerRunner.d.ts","sourceRoot":"","sources":["../../src/WorkerRunner.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAE5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD;;;GAGG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,EAAE,CAAC;IACjC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACpB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC5D,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"WorkerRunner.d.ts","sourceRoot":"","sources":["../../src/WorkerRunner.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/WorkerRunner.js
CHANGED
|
@@ -10,10 +10,18 @@ export const PlatformRunnerTypeId = internal.PlatformRunnerTypeId;
|
|
|
10
10
|
*/
|
|
11
11
|
export const PlatformRunner = internal.PlatformRunner;
|
|
12
12
|
/**
|
|
13
|
+
* The worker close latch is used by platform runners to signal that the worker
|
|
14
|
+
* has been closed.
|
|
15
|
+
*
|
|
13
16
|
* @since 1.0.0
|
|
14
|
-
* @category
|
|
17
|
+
* @category CloseLatch
|
|
18
|
+
*/
|
|
19
|
+
export const CloseLatch = internal.CloseLatch;
|
|
20
|
+
/**
|
|
21
|
+
* @since 1.0.0
|
|
22
|
+
* @category CloseLatch
|
|
15
23
|
*/
|
|
16
|
-
export const
|
|
24
|
+
export const layerCloseLatch = internal.layerCloseLatch;
|
|
17
25
|
/**
|
|
18
26
|
* @since 1.0.0
|
|
19
27
|
* @category constructors
|
|
@@ -34,4 +42,12 @@ export const makeSerialized = internal.makeSerialized;
|
|
|
34
42
|
* @category layers
|
|
35
43
|
*/
|
|
36
44
|
export const layerSerialized = internal.layerSerialized;
|
|
45
|
+
/**
|
|
46
|
+
* Launch the specified layer, interrupting the fiber when the CloseLatch is
|
|
47
|
+
* triggered.
|
|
48
|
+
*
|
|
49
|
+
* @since 1.0.0
|
|
50
|
+
* @category Execution
|
|
51
|
+
*/
|
|
52
|
+
export const launch = internal.launch;
|
|
37
53
|
//# sourceMappingURL=WorkerRunner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkerRunner.js","names":["internal","PlatformRunnerTypeId","PlatformRunner","
|
|
1
|
+
{"version":3,"file":"WorkerRunner.js","names":["internal","PlatformRunnerTypeId","PlatformRunner","CloseLatch","layerCloseLatch","make","layer","makeSerialized","layerSerialized","launch"],"sources":["../../src/WorkerRunner.ts"],"sourcesContent":[null],"mappings":"AAUA,OAAO,KAAKA,QAAQ,MAAM,4BAA4B;AA8BtD;;;;AAIA,OAAO,MAAMC,oBAAoB,GAAkBD,QAAQ,CAACC,oBAAoB;AAiBhF;;;;AAIA,OAAO,MAAMC,cAAc,GAAgDF,QAAQ,CAACE,cAAc;AAalG;;;;;;;AAOA,OAAO,MAAMC,UAAU,GAAwEH,QAAQ,CAACG,UAAU;AAElH;;;;AAIA,OAAO,MAAMC,eAAe,GAA4BJ,QAAQ,CAACI,eAAe;AA0BhF;;;;AAIA,OAAO,MAAMC,IAAI,GAGyDL,QAAQ,CAACK,IAAI;AAEvF;;;;AAIA,OAAO,MAAMC,KAAK,GAGyCN,QAAQ,CAACM,KAAK;AAyEzE;;;;AAIA,OAAO,MAAMC,cAAc,GAYvBP,QAAQ,CAACO,cAAc;AAE3B;;;;AAIA,OAAO,MAAMC,eAAe,GAS1BR,QAAQ,CAACQ,eAAe;AAE1B;;;;;;;AAOA,OAAO,MAAMC,MAAM,GAAsFT,QAAQ,CAACS,MAAM","ignoreList":[]}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import * as Cause from "effect/Cause";
|
|
2
2
|
import * as Chunk from "effect/Chunk";
|
|
3
3
|
import * as Context from "effect/Context";
|
|
4
|
+
import * as Deferred from "effect/Deferred";
|
|
4
5
|
import * as Effect from "effect/Effect";
|
|
5
6
|
import * as Either from "effect/Either";
|
|
6
7
|
import * as Fiber from "effect/Fiber";
|
|
8
|
+
import * as FiberId from "effect/FiberId";
|
|
7
9
|
import { pipe } from "effect/Function";
|
|
8
10
|
import * as Layer from "effect/Layer";
|
|
9
|
-
import * as Schedule from "effect/Schedule";
|
|
10
11
|
import * as Schema from "effect/Schema";
|
|
11
12
|
import * as Stream from "effect/Stream";
|
|
12
13
|
import * as Transferable from "../Transferable.js";
|
|
@@ -16,11 +17,18 @@ export const PlatformRunnerTypeId = /*#__PURE__*/Symbol.for("@effect/platform/Ru
|
|
|
16
17
|
/** @internal */
|
|
17
18
|
export const PlatformRunner = /*#__PURE__*/Context.GenericTag("@effect/platform/Runner/PlatformRunner");
|
|
18
19
|
/** @internal */
|
|
19
|
-
export const
|
|
20
|
+
export const CloseLatch = /*#__PURE__*/Context.Reference()("@effect/platform/WorkerRunner/CloseLatch", {
|
|
21
|
+
defaultValue: () => Deferred.unsafeMake(FiberId.none)
|
|
22
|
+
});
|
|
23
|
+
/** @internal */
|
|
24
|
+
export const layerCloseLatch = /*#__PURE__*/Layer.effect(CloseLatch, /*#__PURE__*/Deferred.make());
|
|
25
|
+
/** @internal */
|
|
26
|
+
export const make = /*#__PURE__*/Effect.fnUntraced(function* (process, options) {
|
|
20
27
|
const platform = yield* PlatformRunner;
|
|
21
|
-
const
|
|
28
|
+
const closeLatch = yield* CloseLatch;
|
|
29
|
+
const backing = yield* platform.start(closeLatch);
|
|
22
30
|
const fiberMap = new Map();
|
|
23
|
-
|
|
31
|
+
yield* backing.run((portId, [id, kind, data, span]) => {
|
|
24
32
|
if (kind === 1) {
|
|
25
33
|
const fiber = fiberMap.get(id);
|
|
26
34
|
if (!fiber) return Effect.void;
|
|
@@ -60,12 +68,7 @@ export const run = (process, options) => Effect.gen(function* () {
|
|
|
60
68
|
});
|
|
61
69
|
});
|
|
62
70
|
/** @internal */
|
|
63
|
-
export const
|
|
64
|
-
package: "@effect/platform-node",
|
|
65
|
-
module: "WorkerRunner"
|
|
66
|
-
}), Effect.ensuring(Fiber.interruptAsFork(fiber, fiber.id())), Effect.interruptible, Effect.forkScoped, Effect.asVoid));
|
|
67
|
-
/** @internal */
|
|
68
|
-
export const layer = (process, options) => Layer.scopedDiscard(make(process, options));
|
|
71
|
+
export const layer = (process, options) => Layer.scopedDiscard(make(process, options)).pipe(Layer.provide(layerCloseLatch));
|
|
69
72
|
/** @internal */
|
|
70
73
|
export const makeSerialized = (schema, handlers) => Effect.gen(function* () {
|
|
71
74
|
const scope = yield* Effect.scope;
|
|
@@ -103,5 +106,11 @@ export const makeSerialized = (schema, handlers) => Effect.gen(function* () {
|
|
|
103
106
|
});
|
|
104
107
|
});
|
|
105
108
|
/** @internal */
|
|
106
|
-
export const layerSerialized = (schema, handlers) => Layer.scopedDiscard(makeSerialized(schema, handlers));
|
|
109
|
+
export const layerSerialized = (schema, handlers) => Layer.scopedDiscard(makeSerialized(schema, handlers)).pipe(Layer.provide(layerCloseLatch));
|
|
110
|
+
/** @internal */
|
|
111
|
+
export const launch = layer => Effect.scopedWith(Effect.fnUntraced(function* (scope) {
|
|
112
|
+
const context = yield* Layer.buildWithScope(Layer.merge(layer, layerCloseLatch), scope);
|
|
113
|
+
const closeLatch = Context.get(context, CloseLatch);
|
|
114
|
+
return yield* Effect.never.pipe(Effect.raceFirst(Deferred.await(closeLatch)));
|
|
115
|
+
}));
|
|
107
116
|
//# sourceMappingURL=workerRunner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workerRunner.js","names":["Cause","Chunk","Context","Effect","Either","Fiber","
|
|
1
|
+
{"version":3,"file":"workerRunner.js","names":["Cause","Chunk","Context","Deferred","Effect","Either","Fiber","FiberId","pipe","Layer","Schema","Stream","Transferable","isWorkerError","WorkerError","PlatformRunnerTypeId","Symbol","for","PlatformRunner","GenericTag","CloseLatch","Reference","defaultValue","unsafeMake","none","layerCloseLatch","effect","make","fnUntraced","process","options","platform","closeLatch","backing","start","fiberMap","Map","run","portId","id","kind","data","span","fiber","get","void","interrupt","withFiberRuntime","set","decode","succeed","flatMap","input","collector","unsafeMakeCollector","stream","isEffect","out","encodeOutput","provideService","Collector","payload","send","unsafeRead","runForEachChunk","chunk","undefined","toReadonlyArray","unsafeClear","forEach","andThen","withParentSpan","_tag","traceId","spanId","sampled","context","empty","uninterruptibleMask","restore","catchIf","error","encodeCause","fail","catchAllCause","cause","match","failureOrCause","onLeft","encodeError","onRight","ensuring","sync","delete","layer","scopedDiscard","provide","makeSerialized","schema","handlers","gen","scope","parseRequest","decodeUnknown","request","result","isLayer","buildWithScope","_","merge","provideContext","message","mapError","reason","serializeFailure","serializeSuccess","layerSerialized","launch","scopedWith","never","raceFirst","await"],"sources":["../../../src/internal/workerRunner.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect/platform",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.76.0",
|
|
4
4
|
"description": "Unified interfaces for common platform-specific services",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"multipasta": "^0.2.5"
|
|
15
15
|
},
|
|
16
16
|
"peerDependencies": {
|
|
17
|
-
"effect": "^3.12.
|
|
17
|
+
"effect": "^3.12.11"
|
|
18
18
|
},
|
|
19
19
|
"publishConfig": {
|
|
20
20
|
"provenance": true
|
package/src/WorkerRunner.ts
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* @since 1.0.0
|
|
3
3
|
*/
|
|
4
4
|
import type * as Context from "effect/Context"
|
|
5
|
+
import type * as Deferred from "effect/Deferred"
|
|
5
6
|
import type * as Effect from "effect/Effect"
|
|
6
7
|
import type * as Layer from "effect/Layer"
|
|
7
8
|
import type * as Schema from "effect/Schema"
|
|
@@ -17,7 +18,7 @@ import type { WorkerError } from "./WorkerError.js"
|
|
|
17
18
|
export interface BackingRunner<I, O> {
|
|
18
19
|
readonly run: <A, E, R>(
|
|
19
20
|
handler: (portId: number, message: I) => Effect.Effect<A, E, R>
|
|
20
|
-
) => Effect.Effect<never,
|
|
21
|
+
) => Effect.Effect<void, never, Scope.Scope | R>
|
|
21
22
|
readonly send: (
|
|
22
23
|
portId: number,
|
|
23
24
|
message: O,
|
|
@@ -55,7 +56,7 @@ export type PlatformRunnerTypeId = typeof PlatformRunnerTypeId
|
|
|
55
56
|
*/
|
|
56
57
|
export interface PlatformRunner {
|
|
57
58
|
readonly [PlatformRunnerTypeId]: PlatformRunnerTypeId
|
|
58
|
-
readonly start: <I, O>() => Effect.Effect<BackingRunner<I, O>, WorkerError>
|
|
59
|
+
readonly start: <I, O>(closeLatch: typeof CloseLatch.Service) => Effect.Effect<BackingRunner<I, O>, WorkerError>
|
|
59
60
|
}
|
|
60
61
|
|
|
61
62
|
/**
|
|
@@ -64,6 +65,32 @@ export interface PlatformRunner {
|
|
|
64
65
|
*/
|
|
65
66
|
export const PlatformRunner: Context.Tag<PlatformRunner, PlatformRunner> = internal.PlatformRunner
|
|
66
67
|
|
|
68
|
+
/**
|
|
69
|
+
* The worker close latch is used by platform runners to signal that the worker
|
|
70
|
+
* has been closed.
|
|
71
|
+
*
|
|
72
|
+
* @since 1.0.0
|
|
73
|
+
* @category CloseLatch
|
|
74
|
+
*/
|
|
75
|
+
export interface CloseLatch {
|
|
76
|
+
readonly _: unique symbol
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* The worker close latch is used by platform runners to signal that the worker
|
|
81
|
+
* has been closed.
|
|
82
|
+
*
|
|
83
|
+
* @since 1.0.0
|
|
84
|
+
* @category CloseLatch
|
|
85
|
+
*/
|
|
86
|
+
export const CloseLatch: Context.Reference<CloseLatch, Deferred.Deferred<void, WorkerError>> = internal.CloseLatch
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* @since 1.0.0
|
|
90
|
+
* @category CloseLatch
|
|
91
|
+
*/
|
|
92
|
+
export const layerCloseLatch: Layer.Layer<CloseLatch> = internal.layerCloseLatch
|
|
93
|
+
|
|
67
94
|
/**
|
|
68
95
|
* @since 1.0.0
|
|
69
96
|
* @category models
|
|
@@ -88,15 +115,6 @@ export declare namespace Runner {
|
|
|
88
115
|
}
|
|
89
116
|
}
|
|
90
117
|
|
|
91
|
-
/**
|
|
92
|
-
* @since 1.0.0
|
|
93
|
-
* @category constructors
|
|
94
|
-
*/
|
|
95
|
-
export const run: <I, E, R, O>(
|
|
96
|
-
process: (request: I) => Stream.Stream<O, E, R> | Effect.Effect<O, E, R>,
|
|
97
|
-
options?: Runner.Options<I, O, E>
|
|
98
|
-
) => Effect.Effect<never, WorkerError, PlatformRunner | R> = internal.run
|
|
99
|
-
|
|
100
118
|
/**
|
|
101
119
|
* @since 1.0.0
|
|
102
120
|
* @category constructors
|
|
@@ -198,8 +216,11 @@ export const makeSerialized: <
|
|
|
198
216
|
>(
|
|
199
217
|
schema: Schema.Schema<A, I, R>,
|
|
200
218
|
handlers: Handlers
|
|
201
|
-
) => Effect.Effect<
|
|
202
|
-
|
|
219
|
+
) => Effect.Effect<
|
|
220
|
+
void,
|
|
221
|
+
WorkerError,
|
|
222
|
+
PlatformRunner | Scope.Scope | R | SerializedRunner.HandlersContext<Handlers>
|
|
223
|
+
> = internal.makeSerialized
|
|
203
224
|
|
|
204
225
|
/**
|
|
205
226
|
* @since 1.0.0
|
|
@@ -215,3 +236,12 @@ export const layerSerialized: <
|
|
|
215
236
|
handlers: Handlers
|
|
216
237
|
) => Layer.Layer<never, WorkerError, PlatformRunner | R | SerializedRunner.HandlersContext<Handlers>> =
|
|
217
238
|
internal.layerSerialized
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Launch the specified layer, interrupting the fiber when the CloseLatch is
|
|
242
|
+
* triggered.
|
|
243
|
+
*
|
|
244
|
+
* @since 1.0.0
|
|
245
|
+
* @category Execution
|
|
246
|
+
*/
|
|
247
|
+
export const launch: <A, E, R>(layer: Layer.Layer<A, E, R>) => Effect.Effect<void, E | WorkerError, R> = internal.launch
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import * as Cause from "effect/Cause"
|
|
2
2
|
import * as Chunk from "effect/Chunk"
|
|
3
3
|
import * as Context from "effect/Context"
|
|
4
|
+
import * as Deferred from "effect/Deferred"
|
|
4
5
|
import * as Effect from "effect/Effect"
|
|
5
6
|
import * as Either from "effect/Either"
|
|
6
7
|
import * as Fiber from "effect/Fiber"
|
|
8
|
+
import * as FiberId from "effect/FiberId"
|
|
7
9
|
import { pipe } from "effect/Function"
|
|
8
10
|
import * as Layer from "effect/Layer"
|
|
9
|
-
import * as Schedule from "effect/Schedule"
|
|
10
11
|
import * as Schema from "effect/Schema"
|
|
11
12
|
import type * as Scope from "effect/Scope"
|
|
12
13
|
import * as Stream from "effect/Stream"
|
|
@@ -26,125 +27,114 @@ export const PlatformRunner = Context.GenericTag<WorkerRunner.PlatformRunner>(
|
|
|
26
27
|
)
|
|
27
28
|
|
|
28
29
|
/** @internal */
|
|
29
|
-
export const
|
|
30
|
+
export const CloseLatch = Context.Reference<WorkerRunner.CloseLatch>()("@effect/platform/WorkerRunner/CloseLatch", {
|
|
31
|
+
defaultValue: () => Deferred.unsafeMake<void, WorkerError>(FiberId.none)
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
/** @internal */
|
|
35
|
+
export const layerCloseLatch = Layer.effect(CloseLatch, Deferred.make())
|
|
36
|
+
|
|
37
|
+
/** @internal */
|
|
38
|
+
export const make = Effect.fnUntraced(function*<I, E, R, O>(
|
|
30
39
|
process: (request: I) => Stream.Stream<O, E, R> | Effect.Effect<O, E, R>,
|
|
31
40
|
options?: WorkerRunner.Runner.Options<I, O, E>
|
|
32
|
-
)
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
41
|
+
) {
|
|
42
|
+
const platform = yield* PlatformRunner
|
|
43
|
+
const closeLatch = yield* CloseLatch
|
|
44
|
+
const backing = yield* platform.start<Worker.Worker.Request<I>, Worker.Worker.Response<E>>(closeLatch)
|
|
45
|
+
const fiberMap = new Map<number, Fiber.Fiber<unknown, unknown>>()
|
|
37
46
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
47
|
+
yield* backing.run((portId, [id, kind, data, span]): Effect.Effect<void, WorkerError, R> => {
|
|
48
|
+
if (kind === 1) {
|
|
49
|
+
const fiber = fiberMap.get(id)
|
|
50
|
+
if (!fiber) return Effect.void
|
|
51
|
+
return Fiber.interrupt(fiber)
|
|
52
|
+
}
|
|
44
53
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
pipe(
|
|
55
|
-
options?.encodeOutput
|
|
56
|
-
? Effect.provideService(options.encodeOutput(input, out), Transferable.Collector, collector)
|
|
57
|
-
: Effect.succeed(out),
|
|
58
|
-
Effect.flatMap((payload) => backing.send(portId, [id, 0, [payload]], collector.unsafeRead()))
|
|
59
|
-
)) :
|
|
54
|
+
return Effect.withFiberRuntime<I, WorkerError>((fiber) => {
|
|
55
|
+
fiberMap.set(id, fiber)
|
|
56
|
+
return options?.decode ? options.decode(data) : Effect.succeed(data)
|
|
57
|
+
}).pipe(
|
|
58
|
+
Effect.flatMap((input) => {
|
|
59
|
+
const collector = Transferable.unsafeMakeCollector()
|
|
60
|
+
const stream = process(input)
|
|
61
|
+
let effect = Effect.isEffect(stream) ?
|
|
62
|
+
Effect.flatMap(stream, (out) =>
|
|
60
63
|
pipe(
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
64
|
+
options?.encodeOutput
|
|
65
|
+
? Effect.provideService(options.encodeOutput(input, out), Transferable.Collector, collector)
|
|
66
|
+
: Effect.succeed(out),
|
|
67
|
+
Effect.flatMap((payload) => backing.send(portId, [id, 0, [payload]], collector.unsafeRead()))
|
|
68
|
+
)) :
|
|
69
|
+
pipe(
|
|
70
|
+
stream,
|
|
71
|
+
Stream.runForEachChunk((chunk) => {
|
|
72
|
+
if (options?.encodeOutput === undefined) {
|
|
73
|
+
const payload = Chunk.toReadonlyArray(chunk)
|
|
74
|
+
return backing.send(portId, [id, 0, payload])
|
|
75
|
+
}
|
|
67
76
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
+
collector.unsafeClear()
|
|
78
|
+
return pipe(
|
|
79
|
+
Effect.forEach(chunk, (data) => options.encodeOutput!(input, data)),
|
|
80
|
+
Effect.provideService(Transferable.Collector, collector),
|
|
81
|
+
Effect.flatMap((payload) => backing.send(portId, [id, 0, payload], collector.unsafeRead()))
|
|
82
|
+
)
|
|
83
|
+
}),
|
|
84
|
+
Effect.andThen(backing.send(portId, [id, 1]))
|
|
85
|
+
)
|
|
77
86
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
+
if (span) {
|
|
88
|
+
effect = Effect.withParentSpan(effect, {
|
|
89
|
+
_tag: "ExternalSpan",
|
|
90
|
+
traceId: span[0],
|
|
91
|
+
spanId: span[1],
|
|
92
|
+
sampled: span[2],
|
|
93
|
+
context: Context.empty()
|
|
94
|
+
})
|
|
95
|
+
}
|
|
87
96
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
onRight: (cause) => backing.send(portId, [id, 3, WorkerError.encodeCause(cause)])
|
|
113
|
-
})
|
|
114
|
-
)
|
|
97
|
+
return Effect.uninterruptibleMask((restore) =>
|
|
98
|
+
restore(effect).pipe(
|
|
99
|
+
Effect.catchIf(
|
|
100
|
+
isWorkerError,
|
|
101
|
+
(error) => backing.send(portId, [id, 3, WorkerError.encodeCause(Cause.fail(error))])
|
|
102
|
+
),
|
|
103
|
+
Effect.catchAllCause((cause) =>
|
|
104
|
+
Either.match(Cause.failureOrCause(cause), {
|
|
105
|
+
onLeft: (error) => {
|
|
106
|
+
collector.unsafeClear()
|
|
107
|
+
return pipe(
|
|
108
|
+
options?.encodeError
|
|
109
|
+
? Effect.provideService(
|
|
110
|
+
options.encodeError(input, error),
|
|
111
|
+
Transferable.Collector,
|
|
112
|
+
collector
|
|
113
|
+
)
|
|
114
|
+
: Effect.succeed(error),
|
|
115
|
+
Effect.flatMap((payload) => backing.send(portId, [id, 2, payload as any], collector.unsafeRead())),
|
|
116
|
+
Effect.catchAllCause((cause) => backing.send(portId, [id, 3, WorkerError.encodeCause(cause)]))
|
|
117
|
+
)
|
|
118
|
+
},
|
|
119
|
+
onRight: (cause) => backing.send(portId, [id, 3, WorkerError.encodeCause(cause)])
|
|
120
|
+
})
|
|
115
121
|
)
|
|
116
122
|
)
|
|
117
|
-
|
|
118
|
-
Effect.ensuring(Effect.sync(() => fiberMap.delete(id)))
|
|
119
|
-
)
|
|
120
|
-
})
|
|
121
|
-
})
|
|
122
|
-
|
|
123
|
-
/** @internal */
|
|
124
|
-
export const make = <I, E, R, O>(
|
|
125
|
-
process: (request: I) => Stream.Stream<O, E, R> | Effect.Effect<O, E, R>,
|
|
126
|
-
options?: WorkerRunner.Runner.Options<I, O, E>
|
|
127
|
-
): Effect.Effect<void, WorkerError, WorkerRunner.PlatformRunner | R | Scope.Scope> =>
|
|
128
|
-
Effect.withFiberRuntime<void, never, WorkerRunner.PlatformRunner | R | Scope.Scope>((fiber) =>
|
|
129
|
-
run(process, options).pipe(
|
|
130
|
-
Effect.tapErrorCause((cause) => Cause.isInterruptedOnly(cause) ? Effect.void : Effect.logWarning(cause)),
|
|
131
|
-
Effect.retry(Schedule.spaced(1000)),
|
|
132
|
-
Effect.annotateLogs({
|
|
133
|
-
package: "@effect/platform-node",
|
|
134
|
-
module: "WorkerRunner"
|
|
123
|
+
)
|
|
135
124
|
}),
|
|
136
|
-
Effect.ensuring(
|
|
137
|
-
Effect.interruptible,
|
|
138
|
-
Effect.forkScoped,
|
|
139
|
-
Effect.asVoid
|
|
125
|
+
Effect.ensuring(Effect.sync(() => fiberMap.delete(id)))
|
|
140
126
|
)
|
|
141
|
-
)
|
|
127
|
+
})
|
|
128
|
+
})
|
|
142
129
|
|
|
143
130
|
/** @internal */
|
|
144
131
|
export const layer = <I, E, R, O>(
|
|
145
132
|
process: (request: I) => Stream.Stream<O, E, R> | Effect.Effect<O, E, R>,
|
|
146
133
|
options?: WorkerRunner.Runner.Options<I, O, E>
|
|
147
|
-
): Layer.Layer<never, WorkerError, WorkerRunner.PlatformRunner | R> =>
|
|
134
|
+
): Layer.Layer<never, WorkerError, WorkerRunner.PlatformRunner | R> =>
|
|
135
|
+
Layer.scopedDiscard(make(process, options)).pipe(
|
|
136
|
+
Layer.provide(layerCloseLatch)
|
|
137
|
+
)
|
|
148
138
|
|
|
149
139
|
/** @internal */
|
|
150
140
|
export const makeSerialized = <
|
|
@@ -216,4 +206,14 @@ export const layerSerialized = <
|
|
|
216
206
|
| R
|
|
217
207
|
| WorkerRunner.PlatformRunner
|
|
218
208
|
| WorkerRunner.SerializedRunner.HandlersContext<Handlers>
|
|
219
|
-
> => Layer.scopedDiscard(makeSerialized(schema, handlers))
|
|
209
|
+
> => Layer.scopedDiscard(makeSerialized(schema, handlers)).pipe(Layer.provide(layerCloseLatch))
|
|
210
|
+
|
|
211
|
+
/** @internal */
|
|
212
|
+
export const launch = <A, E, R>(layer: Layer.Layer<A, E, R>): Effect.Effect<void, E | WorkerError, R> =>
|
|
213
|
+
Effect.scopedWith(Effect.fnUntraced(function*(scope) {
|
|
214
|
+
const context = yield* Layer.buildWithScope(Layer.merge(layer, layerCloseLatch), scope)
|
|
215
|
+
const closeLatch = Context.get(context, CloseLatch)
|
|
216
|
+
return yield* Effect.never.pipe(
|
|
217
|
+
Effect.raceFirst(Deferred.await(closeLatch))
|
|
218
|
+
)
|
|
219
|
+
}))
|