@effect/platform 0.34.0 → 0.35.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/Transferable/package.json +6 -0
- package/dist/cjs/Transferable.js +26 -0
- package/dist/cjs/Transferable.js.map +1 -0
- package/dist/cjs/Worker.js +16 -1
- package/dist/cjs/Worker.js.map +1 -1
- package/dist/cjs/WorkerRunner.js +6 -1
- package/dist/cjs/WorkerRunner.js.map +1 -1
- package/dist/cjs/internal/worker.js +63 -1
- package/dist/cjs/internal/worker.js.map +1 -1
- package/dist/cjs/internal/workerRunner.js +42 -1
- package/dist/cjs/internal/workerRunner.js.map +1 -1
- package/dist/dts/Transferable.d.ts +21 -0
- package/dist/dts/Transferable.d.ts.map +1 -0
- package/dist/dts/Worker.d.ts +72 -0
- package/dist/dts/Worker.d.ts.map +1 -1
- package/dist/dts/WorkerRunner.d.ts +11 -0
- package/dist/dts/WorkerRunner.d.ts.map +1 -1
- package/dist/esm/Transferable.js +19 -0
- package/dist/esm/Transferable.js.map +1 -0
- package/dist/esm/Worker.js +15 -0
- package/dist/esm/Worker.js.map +1 -1
- package/dist/esm/WorkerRunner.js +5 -0
- package/dist/esm/WorkerRunner.js.map +1 -1
- package/dist/esm/internal/worker.js +59 -0
- package/dist/esm/internal/worker.js.map +1 -1
- package/dist/esm/internal/workerRunner.js +40 -0
- package/dist/esm/internal/workerRunner.js.map +1 -1
- package/package.json +10 -10
- package/src/Transferable.ts +28 -0
- package/src/Worker.ts +110 -0
- package/src/WorkerRunner.ts +26 -0
- package/src/internal/worker.ts +111 -0
- package/src/internal/workerRunner.ts +69 -0
- package/dist/cjs/index.js +0 -60
- package/dist/cjs/index.js.map +0 -1
- package/dist/dts/index.d.ts +0 -57
- package/dist/dts/index.d.ts.map +0 -1
- package/dist/esm/index.js +0 -57
- package/dist/esm/index.js.map +0 -1
- package/src/index.ts +0 -69
package/dist/esm/WorkerRunner.js
CHANGED
|
@@ -14,4 +14,9 @@ export const PlatformRunner = internal.PlatformRunner;
|
|
|
14
14
|
* @category constructors
|
|
15
15
|
*/
|
|
16
16
|
export const make = internal.make;
|
|
17
|
+
/**
|
|
18
|
+
* @since 1.0.0
|
|
19
|
+
* @category constructors
|
|
20
|
+
*/
|
|
21
|
+
export const makeSerialized = internal.makeSerialized;
|
|
17
22
|
//# sourceMappingURL=WorkerRunner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkerRunner.js","names":["internal","PlatformRunnerTypeId","PlatformRunner","make"],"sources":["../../src/WorkerRunner.ts"],"sourcesContent":[null],"mappings":"
|
|
1
|
+
{"version":3,"file":"WorkerRunner.js","names":["internal","PlatformRunnerTypeId","PlatformRunner","make","makeSerialized"],"sources":["../../src/WorkerRunner.ts"],"sourcesContent":[null],"mappings":"AAWA,OAAO,KAAKA,QAAQ,MAAM,4BAA4B;AAyBtD;;;;AAIA,OAAO,MAAMC,oBAAoB,GAAkBD,QAAQ,CAACC,oBAAoB;AAiBhF;;;;AAIA,OAAO,MAAMC,cAAc,GAAgDF,QAAQ,CAACE,cAAc;AAiBlG;;;;AAIA,OAAO,MAAMC,IAAI,GAG0DH,QAAQ,CAACG,IAAI;AAExF;;;;AAIA,OAAO,MAAMC,cAAc,GAkBvBJ,QAAQ,CAACI,cAAc"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import * as Schema from "@effect/schema/Schema";
|
|
2
|
+
import * as Serializable from "@effect/schema/Serializable";
|
|
1
3
|
import * as Cause from "effect/Cause";
|
|
2
4
|
import * as Channel from "effect/Channel";
|
|
3
5
|
import * as Chunk from "effect/Chunk";
|
|
@@ -11,6 +13,7 @@ import * as Layer from "effect/Layer";
|
|
|
11
13
|
import * as Pool from "effect/Pool";
|
|
12
14
|
import * as Queue from "effect/Queue";
|
|
13
15
|
import * as Stream from "effect/Stream";
|
|
16
|
+
import * as Transferable from "../Transferable.js";
|
|
14
17
|
/** @internal */
|
|
15
18
|
export const defaultQueue = () => Effect.map(Queue.unbounded(), queue => ({
|
|
16
19
|
offer: (id, item) => Queue.offer(queue, [id, item]),
|
|
@@ -147,4 +150,60 @@ export const makePool = () => options => Effect.gen(function* (_) {
|
|
|
147
150
|
});
|
|
148
151
|
/** @internal */
|
|
149
152
|
export const makePoolLayer = managerLayer => (tag, options) => Layer.scoped(tag, makePool()(options)).pipe(Layer.provide(managerLayer));
|
|
153
|
+
/** @internal */
|
|
154
|
+
export const makeSerialized = options => Effect.gen(function* (_) {
|
|
155
|
+
const manager = yield* _(WorkerManager);
|
|
156
|
+
const backing = yield* _(manager.spawn({
|
|
157
|
+
...options,
|
|
158
|
+
transfers(message) {
|
|
159
|
+
return Transferable.get(message);
|
|
160
|
+
}
|
|
161
|
+
}));
|
|
162
|
+
const execute = message => {
|
|
163
|
+
const parseSuccess = Schema.decode(Serializable.successSchema(message));
|
|
164
|
+
const parseFailure = Schema.decode(Serializable.failureSchema(message));
|
|
165
|
+
return pipe(Serializable.serialize(message), Stream.flatMap(message => backing.execute(message)), Stream.catchAll(error => Effect.flatMap(parseFailure(error), Effect.fail)), Stream.mapEffect(parseSuccess));
|
|
166
|
+
};
|
|
167
|
+
const executeEffect = message => {
|
|
168
|
+
const parseSuccess = Schema.decode(Serializable.successSchema(message));
|
|
169
|
+
const parseFailure = Schema.decode(Serializable.failureSchema(message));
|
|
170
|
+
return pipe(Serializable.serialize(message), Effect.flatMap(message => backing.executeEffect(message)), Effect.matchEffect({
|
|
171
|
+
onFailure: error => Effect.flatMap(parseFailure(error), Effect.fail),
|
|
172
|
+
onSuccess: parseSuccess
|
|
173
|
+
}));
|
|
174
|
+
};
|
|
175
|
+
return identity({
|
|
176
|
+
id: backing.id,
|
|
177
|
+
join: backing.join,
|
|
178
|
+
execute: execute,
|
|
179
|
+
executeEffect: executeEffect
|
|
180
|
+
});
|
|
181
|
+
});
|
|
182
|
+
/** @internal */
|
|
183
|
+
export const makePoolSerialized = () => options => Effect.gen(function* (_) {
|
|
184
|
+
const manager = yield* _(WorkerManager);
|
|
185
|
+
const workers = new Set();
|
|
186
|
+
const acquire = pipe(makeSerialized(options), Effect.tap(worker => Effect.sync(() => workers.add(worker))), Effect.tap(worker => Effect.addFinalizer(() => Effect.sync(() => workers.delete(worker)))), options.onCreate ? Effect.tap(options.onCreate) : identity, Effect.provideService(WorkerManager, manager));
|
|
187
|
+
const backing = yield* _("timeToLive" in options ? Pool.makeWithTTL({
|
|
188
|
+
acquire,
|
|
189
|
+
min: options.minSize,
|
|
190
|
+
max: options.maxSize,
|
|
191
|
+
timeToLive: options.timeToLive
|
|
192
|
+
}) : Pool.make({
|
|
193
|
+
acquire,
|
|
194
|
+
size: options.size
|
|
195
|
+
}));
|
|
196
|
+
const pool = {
|
|
197
|
+
backing,
|
|
198
|
+
broadcast: message => Effect.forEach(workers, worker => worker.executeEffect(message), {
|
|
199
|
+
concurrency: "unbounded",
|
|
200
|
+
discard: true
|
|
201
|
+
}),
|
|
202
|
+
execute: message => Stream.unwrap(Effect.map(Effect.scoped(backing.get), worker => worker.execute(message))),
|
|
203
|
+
executeEffect: message => Effect.flatMap(Effect.scoped(backing.get), worker => worker.executeEffect(message))
|
|
204
|
+
};
|
|
205
|
+
return pool;
|
|
206
|
+
});
|
|
207
|
+
/** @internal */
|
|
208
|
+
export const makePoolSerializedLayer = managerLayer => (tag, options) => Layer.scoped(tag, makePoolSerialized()(options)).pipe(Layer.provide(managerLayer));
|
|
150
209
|
//# sourceMappingURL=worker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.js","names":["Cause","Channel","Chunk","Context","Deferred","Effect","Exit","Fiber","identity","pipe","Layer","Pool","Queue","Stream","defaultQueue","map","unbounded","queue","offer","id","item","take","shutdown","PlatformWorkerTypeId","Symbol","for","PlatformWorker","Tag","WorkerManagerTypeId","WorkerManager","makeManager","gen","_","platform","idCounter","of","spawn","encode","permits","transfers","requestIdCounter","readyLatch","make","semaphore","makeSemaphore","requestMap","Map","outbound","addFinalizer","backing","zipRight","forEach","values","failCause","empty","discard","sync","clear","handleMessage","msg","suspend","complete","unit","response","get","succeed","length","fail","die","executeAcquire","request","tap","all","deferred","set","executeRelease","exit","release","delete","isInterrupted","ignore","send","execute","flatMap","acquireRelease","loop","match","onFailure","cause","isEmpty","onSuccess","value","write","fromChannel","executeEffect","acquireUseRelease","flatten","handleMessages","forever","forkScoped","postMessages","result","transferables","payload","catchAllCause","await","ensuring","fork","postMessagesFiber","join","joinAll","fiber","parallelFinalizers","layerManager","effect","makePool","options","manager","workers","Set","acquire","worker","add","onCreate","makeWithTTL","min","minSize","max","maxSize","timeToLive","size","pool","broadcast","message","concurrency","unwrap","scoped","makePoolLayer","managerLayer","tag","provide"],"sources":["../../../src/internal/worker.ts"],"sourcesContent":[null],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"worker.js","names":["Schema","Serializable","Cause","Channel","Chunk","Context","Deferred","Effect","Exit","Fiber","identity","pipe","Layer","Pool","Queue","Stream","Transferable","defaultQueue","map","unbounded","queue","offer","id","item","take","shutdown","PlatformWorkerTypeId","Symbol","for","PlatformWorker","Tag","WorkerManagerTypeId","WorkerManager","makeManager","gen","_","platform","idCounter","of","spawn","encode","permits","transfers","requestIdCounter","readyLatch","make","semaphore","makeSemaphore","requestMap","Map","outbound","addFinalizer","backing","zipRight","forEach","values","failCause","empty","discard","sync","clear","handleMessage","msg","suspend","complete","unit","response","get","succeed","length","fail","die","executeAcquire","request","tap","all","deferred","set","executeRelease","exit","release","delete","isInterrupted","ignore","send","execute","flatMap","acquireRelease","loop","match","onFailure","cause","isEmpty","onSuccess","value","write","fromChannel","executeEffect","acquireUseRelease","flatten","handleMessages","forever","forkScoped","postMessages","result","transferables","payload","catchAllCause","await","ensuring","fork","postMessagesFiber","join","joinAll","fiber","parallelFinalizers","layerManager","effect","makePool","options","manager","workers","Set","acquire","worker","add","onCreate","makeWithTTL","min","minSize","max","maxSize","timeToLive","size","pool","broadcast","message","concurrency","unwrap","scoped","makePoolLayer","managerLayer","tag","provide","makeSerialized","parseSuccess","decode","successSchema","parseFailure","failureSchema","serialize","catchAll","error","mapEffect","matchEffect","makePoolSerialized","provideService","makePoolSerializedLayer"],"sources":["../../../src/internal/worker.ts"],"sourcesContent":[null],"mappings":"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"}
|
|
@@ -1,11 +1,15 @@
|
|
|
1
|
+
import * as Schema from "@effect/schema/Schema";
|
|
2
|
+
import * as Serializable from "@effect/schema/Serializable";
|
|
1
3
|
import * as Cause from "effect/Cause";
|
|
2
4
|
import * as Context from "effect/Context";
|
|
3
5
|
import * as Effect from "effect/Effect";
|
|
4
6
|
import * as Either from "effect/Either";
|
|
5
7
|
import * as Fiber from "effect/Fiber";
|
|
6
8
|
import { pipe } from "effect/Function";
|
|
9
|
+
import * as Predicate from "effect/Predicate";
|
|
7
10
|
import * as Queue from "effect/Queue";
|
|
8
11
|
import * as Stream from "effect/Stream";
|
|
12
|
+
import * as Transferable from "../Transferable.js";
|
|
9
13
|
/** @internal */
|
|
10
14
|
export const PlatformRunnerTypeId = /*#__PURE__*/Symbol.for("@effect/platform/Runner/PlatformRunner");
|
|
11
15
|
/** @internal */
|
|
@@ -51,4 +55,40 @@ export const make = (process, options) => Effect.gen(function* (_) {
|
|
|
51
55
|
discard: true
|
|
52
56
|
}));
|
|
53
57
|
});
|
|
58
|
+
/** @internal */
|
|
59
|
+
export const makeSerialized = (schema, handlers) => {
|
|
60
|
+
const parseRequest = Schema.decode(schema);
|
|
61
|
+
const effectTags = new Set();
|
|
62
|
+
return make(request => {
|
|
63
|
+
if (Predicate.hasProperty(request, "_tag") && effectTags.has(request._tag)) {
|
|
64
|
+
return Effect.flatMap(parseRequest(request), request => {
|
|
65
|
+
const handler = handlers[request._tag];
|
|
66
|
+
if (!handler) {
|
|
67
|
+
return Effect.dieMessage(`No handler for ${request._tag}`);
|
|
68
|
+
}
|
|
69
|
+
const encodeSuccess = Schema.encode(Serializable.successSchema(request));
|
|
70
|
+
return pipe(Effect.matchEffect(handler(request), {
|
|
71
|
+
onFailure: error => Effect.flatMap(Serializable.serializeFailure(request, error), Effect.fail),
|
|
72
|
+
onSuccess: encodeSuccess
|
|
73
|
+
}));
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
return Stream.flatMap(parseRequest(request), request => {
|
|
77
|
+
const handler = handlers[request._tag];
|
|
78
|
+
if (!handler) {
|
|
79
|
+
return Stream.dieMessage(`No handler for ${request._tag}`);
|
|
80
|
+
}
|
|
81
|
+
const encodeSuccess = Schema.encode(Serializable.successSchema(request));
|
|
82
|
+
const stream = handler(request);
|
|
83
|
+
if (Effect.isEffect(stream)) {
|
|
84
|
+
effectTags.add(request._tag);
|
|
85
|
+
}
|
|
86
|
+
return pipe(stream, Stream.catchAll(error => Effect.flatMap(Serializable.serializeFailure(request, error), Effect.fail)), Stream.mapEffect(encodeSuccess));
|
|
87
|
+
});
|
|
88
|
+
}, {
|
|
89
|
+
transfers(message) {
|
|
90
|
+
return Transferable.get(message);
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
};
|
|
54
94
|
//# sourceMappingURL=workerRunner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workerRunner.js","names":["Cause","Context","Effect","Either","Fiber","pipe","Queue","Stream","PlatformRunnerTypeId","Symbol","for","PlatformRunner","Tag","make","process","options","gen","_","platform","backing","start","fiberMap","Map","handleRequests","take","queue","tap","req","id","fiber","get","unit","interrupt","stream","effect","isEffect","matchCauseEffect","onFailure","cause","match","failureOrCause","onLeft","error","send","onRight","squash","onSuccess","data","transfers","undefined","payload","encode","item","runDrain","ensuring","sync","delete","fork","set","forever","all","join","concurrency","discard"],"sources":["../../../src/internal/workerRunner.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,SAASC,IAAI,QAAQ,iBAAiB;AACtC,OAAO,KAAKC,KAAK,MAAM,cAAc;
|
|
1
|
+
{"version":3,"file":"workerRunner.js","names":["Schema","Serializable","Cause","Context","Effect","Either","Fiber","pipe","Predicate","Queue","Stream","Transferable","PlatformRunnerTypeId","Symbol","for","PlatformRunner","Tag","make","process","options","gen","_","platform","backing","start","fiberMap","Map","handleRequests","take","queue","tap","req","id","fiber","get","unit","interrupt","stream","effect","isEffect","matchCauseEffect","onFailure","cause","match","failureOrCause","onLeft","error","send","onRight","squash","onSuccess","data","transfers","undefined","payload","encode","item","runDrain","ensuring","sync","delete","fork","set","forever","all","join","concurrency","discard","makeSerialized","schema","handlers","parseRequest","decode","effectTags","Set","request","hasProperty","has","_tag","flatMap","handler","dieMessage","encodeSuccess","successSchema","matchEffect","serializeFailure","fail","add","catchAll","mapEffect","message"],"sources":["../../../src/internal/workerRunner.ts"],"sourcesContent":[null],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect/platform",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.35.0",
|
|
4
4
|
"description": "Unified interfaces for common platform-specific services",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -15,19 +15,11 @@
|
|
|
15
15
|
"path-browserify": "^1.0.1"
|
|
16
16
|
},
|
|
17
17
|
"peerDependencies": {
|
|
18
|
-
"@effect/schema": "^0.53.
|
|
18
|
+
"@effect/schema": "^0.53.1",
|
|
19
19
|
"effect": "2.0.0-next.60"
|
|
20
20
|
},
|
|
21
|
-
"main": "./dist/cjs/index.js",
|
|
22
|
-
"module": "./dist/esm/index.js",
|
|
23
|
-
"types": "./dist/dts/index.d.ts",
|
|
24
21
|
"exports": {
|
|
25
22
|
"./package.json": "./package.json",
|
|
26
|
-
".": {
|
|
27
|
-
"types": "./dist/dts/index.d.ts",
|
|
28
|
-
"import": "./dist/esm/index.js",
|
|
29
|
-
"default": "./dist/cjs/index.js"
|
|
30
|
-
},
|
|
31
23
|
"./Command": {
|
|
32
24
|
"types": "./dist/dts/Command.d.ts",
|
|
33
25
|
"import": "./dist/esm/Command.js",
|
|
@@ -178,6 +170,11 @@
|
|
|
178
170
|
"import": "./dist/esm/Terminal.js",
|
|
179
171
|
"default": "./dist/cjs/Terminal.js"
|
|
180
172
|
},
|
|
173
|
+
"./Transferable": {
|
|
174
|
+
"types": "./dist/dts/Transferable.d.ts",
|
|
175
|
+
"import": "./dist/esm/Transferable.js",
|
|
176
|
+
"default": "./dist/cjs/Transferable.js"
|
|
177
|
+
},
|
|
181
178
|
"./Worker": {
|
|
182
179
|
"types": "./dist/dts/Worker.d.ts",
|
|
183
180
|
"import": "./dist/esm/Worker.js",
|
|
@@ -286,6 +283,9 @@
|
|
|
286
283
|
"Terminal": [
|
|
287
284
|
"./dist/dts/Terminal.d.ts"
|
|
288
285
|
],
|
|
286
|
+
"Transferable": [
|
|
287
|
+
"./dist/dts/Transferable.d.ts"
|
|
288
|
+
],
|
|
289
289
|
"Worker": [
|
|
290
290
|
"./dist/dts/Worker.d.ts"
|
|
291
291
|
],
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @since 1.0.0
|
|
7
|
+
* @category symbols
|
|
8
|
+
*/
|
|
9
|
+
export const symbol = Symbol.for("@effect/platform/Transferable")
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @since 1.0.0
|
|
13
|
+
* @category models
|
|
14
|
+
*/
|
|
15
|
+
export interface Transferable {
|
|
16
|
+
readonly [symbol]: () => ReadonlyArray<globalThis.Transferable>
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @since 1.0.0
|
|
21
|
+
* @category accessors
|
|
22
|
+
*/
|
|
23
|
+
export const get = (u: unknown): ReadonlyArray<globalThis.Transferable> => {
|
|
24
|
+
if (typeof u === "object" && u !== null && symbol in u) {
|
|
25
|
+
return (u as Transferable)[symbol]()
|
|
26
|
+
}
|
|
27
|
+
return []
|
|
28
|
+
}
|
package/src/Worker.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @since 1.0.0
|
|
3
3
|
*/
|
|
4
|
+
import type * as ParseResult from "@effect/schema/ParseResult"
|
|
5
|
+
import type * as Schema from "@effect/schema/Schema"
|
|
6
|
+
import type * as Serializable from "@effect/schema/Serializable"
|
|
4
7
|
import type * as Context from "effect/Context"
|
|
5
8
|
import type * as Duration from "effect/Duration"
|
|
6
9
|
import type * as Effect from "effect/Effect"
|
|
@@ -210,3 +213,110 @@ export const makePoolLayer: <W>(
|
|
|
210
213
|
tag: Context.Tag<Tag, WorkerPool<I, E, O>>,
|
|
211
214
|
options: WorkerPool.Options<I, W>
|
|
212
215
|
) => Layer.Layer<never, never, Tag> = internal.makePoolLayer
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* @since 1.0.0
|
|
219
|
+
* @category models
|
|
220
|
+
*/
|
|
221
|
+
export interface SerializedWorker<I extends Schema.TaggedRequest.Any> {
|
|
222
|
+
readonly id: number
|
|
223
|
+
readonly join: Effect.Effect<never, WorkerError, never>
|
|
224
|
+
readonly execute: <Req extends I>(
|
|
225
|
+
message: Req
|
|
226
|
+
) => Req extends Serializable.WithResult<infer _IE, infer E, infer _IA, infer A>
|
|
227
|
+
? Stream.Stream<never, E | WorkerError | ParseResult.ParseError, A>
|
|
228
|
+
: never
|
|
229
|
+
readonly executeEffect: <Req extends I>(
|
|
230
|
+
message: Req
|
|
231
|
+
) => Req extends Serializable.WithResult<infer _IE, infer E, infer _IA, infer A>
|
|
232
|
+
? Effect.Effect<never, E | WorkerError | ParseResult.ParseError, A>
|
|
233
|
+
: never
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* @since 1.0.0
|
|
238
|
+
* @category models
|
|
239
|
+
*/
|
|
240
|
+
export declare namespace SerializedWorker {
|
|
241
|
+
/**
|
|
242
|
+
* @since 1.0.0
|
|
243
|
+
* @category models
|
|
244
|
+
*/
|
|
245
|
+
export interface Options<I, W = unknown> {
|
|
246
|
+
readonly spawn: (id: number) => W
|
|
247
|
+
readonly permits?: number
|
|
248
|
+
readonly queue?: WorkerQueue<I>
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* @since 1.0.0
|
|
254
|
+
* @category models
|
|
255
|
+
*/
|
|
256
|
+
export interface SerializedWorkerPool<I extends Schema.TaggedRequest.Any> {
|
|
257
|
+
readonly backing: Pool.Pool<WorkerError, SerializedWorker<I>>
|
|
258
|
+
readonly broadcast: <Req extends I>(
|
|
259
|
+
message: Req
|
|
260
|
+
) => Req extends Serializable.WithResult<infer _IE, infer E, infer _IA, infer _A>
|
|
261
|
+
? Effect.Effect<never, E | WorkerError | ParseResult.ParseError, void>
|
|
262
|
+
: never
|
|
263
|
+
readonly execute: <Req extends I>(
|
|
264
|
+
message: Req
|
|
265
|
+
) => Req extends Serializable.WithResult<infer _IE, infer E, infer _IA, infer A>
|
|
266
|
+
? Stream.Stream<never, E | WorkerError | ParseResult.ParseError, A>
|
|
267
|
+
: never
|
|
268
|
+
readonly executeEffect: <Req extends I>(
|
|
269
|
+
message: Req
|
|
270
|
+
) => Req extends Serializable.WithResult<infer _IE, infer E, infer _IA, infer A>
|
|
271
|
+
? Effect.Effect<never, E | WorkerError | ParseResult.ParseError, A>
|
|
272
|
+
: never
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* @since 1.0.0
|
|
277
|
+
* @category models
|
|
278
|
+
*/
|
|
279
|
+
export declare namespace SerializedWorkerPool {
|
|
280
|
+
/**
|
|
281
|
+
* @since 1.0.0
|
|
282
|
+
* @category models
|
|
283
|
+
*/
|
|
284
|
+
export type Options<I, W = unknown> =
|
|
285
|
+
& SerializedWorker.Options<I, W>
|
|
286
|
+
& ({
|
|
287
|
+
readonly onCreate?: (worker: Worker<I, unknown, unknown>) => Effect.Effect<never, WorkerError, void>
|
|
288
|
+
readonly size: number
|
|
289
|
+
} | {
|
|
290
|
+
readonly onCreate?: (worker: Worker<I, unknown, unknown>) => Effect.Effect<never, WorkerError, void>
|
|
291
|
+
readonly minSize: number
|
|
292
|
+
readonly maxSize: number
|
|
293
|
+
readonly timeToLive: Duration.DurationInput
|
|
294
|
+
})
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
* @since 1.0.0
|
|
299
|
+
* @category constructors
|
|
300
|
+
*/
|
|
301
|
+
export const makeSerialized: <I extends Schema.TaggedRequest.Any, W = unknown>(
|
|
302
|
+
options: SerializedWorker.Options<I, W>
|
|
303
|
+
) => Effect.Effect<WorkerManager | Scope.Scope, WorkerError, SerializedWorker<I>> = internal.makeSerialized
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* @since 1.0.0
|
|
307
|
+
* @category constructors
|
|
308
|
+
*/
|
|
309
|
+
export const makePoolSerialized: <W>() => <I extends Schema.TaggedRequest.Any>(
|
|
310
|
+
options: SerializedWorkerPool.Options<I, W>
|
|
311
|
+
) => Effect.Effect<WorkerManager | Scope.Scope, never, SerializedWorkerPool<I>> = internal.makePoolSerialized
|
|
312
|
+
|
|
313
|
+
/**
|
|
314
|
+
* @since 1.0.0
|
|
315
|
+
* @category layers
|
|
316
|
+
*/
|
|
317
|
+
export const makePoolSerializedLayer: <W>(
|
|
318
|
+
managerLayer: Layer.Layer<never, never, WorkerManager>
|
|
319
|
+
) => <Tag, I extends Schema.TaggedRequest.Any>(
|
|
320
|
+
tag: Context.Tag<Tag, SerializedWorkerPool<I>>,
|
|
321
|
+
options: SerializedWorkerPool.Options<I, W>
|
|
322
|
+
) => Layer.Layer<never, never, Tag> = internal.makePoolSerializedLayer
|
package/src/WorkerRunner.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @since 1.0.0
|
|
3
3
|
*/
|
|
4
|
+
import type * as Schema from "@effect/schema/Schema"
|
|
5
|
+
import type * as Serializable from "@effect/schema/Serializable"
|
|
4
6
|
import type * as Context from "effect/Context"
|
|
5
7
|
import type * as Effect from "effect/Effect"
|
|
6
8
|
import type * as Fiber from "effect/Fiber"
|
|
@@ -82,3 +84,27 @@ export const make: <I, R, E, O>(
|
|
|
82
84
|
process: (request: I) => Stream.Stream<R, E, O> | Effect.Effect<R, E, O>,
|
|
83
85
|
options?: Runner.Options<O> | undefined
|
|
84
86
|
) => Effect.Effect<Scope.Scope | R | PlatformRunner, WorkerError, never> = internal.make
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* @since 1.0.0
|
|
90
|
+
* @category constructors
|
|
91
|
+
*/
|
|
92
|
+
export const makeSerialized: <
|
|
93
|
+
I,
|
|
94
|
+
A extends Schema.TaggedRequest.Any,
|
|
95
|
+
Handlers extends {
|
|
96
|
+
readonly [K in A["_tag"]]: Extract<A, { readonly _tag: K }> extends
|
|
97
|
+
Serializable.SerializableWithResult<infer _IS, infer S, infer _IE, infer E, infer _IO, infer O>
|
|
98
|
+
? (_: S) => Stream.Stream<any, E, O> | Effect.Effect<any, E, O> :
|
|
99
|
+
never
|
|
100
|
+
}
|
|
101
|
+
>(
|
|
102
|
+
schema: Schema.Schema<I, A>,
|
|
103
|
+
handlers: Handlers
|
|
104
|
+
) => Effect.Effect<
|
|
105
|
+
| PlatformRunner
|
|
106
|
+
| Scope.Scope
|
|
107
|
+
| (ReturnType<Handlers[keyof Handlers]> extends Stream.Stream<infer R, infer _E, infer _A> ? R : never),
|
|
108
|
+
WorkerError,
|
|
109
|
+
never
|
|
110
|
+
> = internal.makeSerialized
|
package/src/internal/worker.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import * as Schema from "@effect/schema/Schema"
|
|
2
|
+
import * as Serializable from "@effect/schema/Serializable"
|
|
1
3
|
import * as Cause from "effect/Cause"
|
|
2
4
|
import * as Channel from "effect/Channel"
|
|
3
5
|
import * as Chunk from "effect/Chunk"
|
|
@@ -10,7 +12,9 @@ import { identity, pipe } from "effect/Function"
|
|
|
10
12
|
import * as Layer from "effect/Layer"
|
|
11
13
|
import * as Pool from "effect/Pool"
|
|
12
14
|
import * as Queue from "effect/Queue"
|
|
15
|
+
import type * as Scope from "effect/Scope"
|
|
13
16
|
import * as Stream from "effect/Stream"
|
|
17
|
+
import * as Transferable from "../Transferable.js"
|
|
14
18
|
import type * as Worker from "../Worker.js"
|
|
15
19
|
import type { WorkerError } from "../WorkerError.js"
|
|
16
20
|
|
|
@@ -284,3 +288,110 @@ export const makePoolLayer = <W>(managerLayer: Layer.Layer<never, never, Worker.
|
|
|
284
288
|
tag: Context.Tag<Tag, Worker.WorkerPool<I, E, O>>,
|
|
285
289
|
options: Worker.WorkerPool.Options<I, W>
|
|
286
290
|
) => Layer.scoped(tag, makePool<W>()(options)).pipe(Layer.provide(managerLayer))
|
|
291
|
+
|
|
292
|
+
/** @internal */
|
|
293
|
+
export const makeSerialized = <
|
|
294
|
+
I extends Schema.TaggedRequest.Any,
|
|
295
|
+
W = unknown
|
|
296
|
+
>(
|
|
297
|
+
options: Worker.SerializedWorker.Options<I, W>
|
|
298
|
+
): Effect.Effect<Worker.WorkerManager | Scope.Scope, WorkerError, Worker.SerializedWorker<I>> =>
|
|
299
|
+
Effect.gen(function*(_) {
|
|
300
|
+
const manager = yield* _(WorkerManager)
|
|
301
|
+
const backing = yield* _(
|
|
302
|
+
manager.spawn({
|
|
303
|
+
...options,
|
|
304
|
+
transfers(message) {
|
|
305
|
+
return Transferable.get(message)
|
|
306
|
+
}
|
|
307
|
+
})
|
|
308
|
+
)
|
|
309
|
+
const execute = <Req extends I>(message: Req) => {
|
|
310
|
+
const parseSuccess = Schema.decode(Serializable.successSchema(message as any))
|
|
311
|
+
const parseFailure = Schema.decode(Serializable.failureSchema(message as any))
|
|
312
|
+
return pipe(
|
|
313
|
+
Serializable.serialize(message),
|
|
314
|
+
Stream.flatMap((message) => backing.execute(message)),
|
|
315
|
+
Stream.catchAll((error) => Effect.flatMap(parseFailure(error), Effect.fail)),
|
|
316
|
+
Stream.mapEffect(parseSuccess)
|
|
317
|
+
)
|
|
318
|
+
}
|
|
319
|
+
const executeEffect = <Req extends I>(message: Req) => {
|
|
320
|
+
const parseSuccess = Schema.decode(Serializable.successSchema(message as any))
|
|
321
|
+
const parseFailure = Schema.decode(Serializable.failureSchema(message as any))
|
|
322
|
+
return pipe(
|
|
323
|
+
Serializable.serialize(message),
|
|
324
|
+
Effect.flatMap((message) => backing.executeEffect(message)),
|
|
325
|
+
Effect.matchEffect({
|
|
326
|
+
onFailure: (error) => Effect.flatMap(parseFailure(error), Effect.fail),
|
|
327
|
+
onSuccess: parseSuccess
|
|
328
|
+
})
|
|
329
|
+
)
|
|
330
|
+
}
|
|
331
|
+
return identity<Worker.SerializedWorker<I>>({
|
|
332
|
+
id: backing.id,
|
|
333
|
+
join: backing.join,
|
|
334
|
+
execute: execute as any,
|
|
335
|
+
executeEffect: executeEffect as any
|
|
336
|
+
})
|
|
337
|
+
})
|
|
338
|
+
|
|
339
|
+
/** @internal */
|
|
340
|
+
export const makePoolSerialized = <W>() =>
|
|
341
|
+
<I extends Schema.TaggedRequest.Any>(
|
|
342
|
+
options: Worker.SerializedWorkerPool.Options<I, W>
|
|
343
|
+
) =>
|
|
344
|
+
Effect.gen(function*(_) {
|
|
345
|
+
const manager = yield* _(WorkerManager)
|
|
346
|
+
const workers = new Set<Worker.SerializedWorker<I>>()
|
|
347
|
+
const acquire = pipe(
|
|
348
|
+
makeSerialized<I, W>(options),
|
|
349
|
+
Effect.tap((worker) => Effect.sync(() => workers.add(worker))),
|
|
350
|
+
Effect.tap((worker) => Effect.addFinalizer(() => Effect.sync(() => workers.delete(worker)))),
|
|
351
|
+
options.onCreate ? Effect.tap(options.onCreate) : identity,
|
|
352
|
+
Effect.provideService(WorkerManager, manager)
|
|
353
|
+
)
|
|
354
|
+
const backing = yield* _(
|
|
355
|
+
"timeToLive" in options ?
|
|
356
|
+
Pool.makeWithTTL({
|
|
357
|
+
acquire,
|
|
358
|
+
min: options.minSize,
|
|
359
|
+
max: options.maxSize,
|
|
360
|
+
timeToLive: options.timeToLive
|
|
361
|
+
}) :
|
|
362
|
+
Pool.make({
|
|
363
|
+
acquire,
|
|
364
|
+
size: options.size
|
|
365
|
+
})
|
|
366
|
+
)
|
|
367
|
+
const pool: Worker.SerializedWorkerPool<I> = {
|
|
368
|
+
backing,
|
|
369
|
+
broadcast: <Req extends I>(message: Req) =>
|
|
370
|
+
Effect.forEach(workers, (worker) => worker.executeEffect(message), {
|
|
371
|
+
concurrency: "unbounded",
|
|
372
|
+
discard: true
|
|
373
|
+
}) as any,
|
|
374
|
+
execute: <Req extends I>(message: Req) =>
|
|
375
|
+
Stream.unwrap(
|
|
376
|
+
Effect.map(
|
|
377
|
+
Effect.scoped(backing.get),
|
|
378
|
+
(worker) => worker.execute(message)
|
|
379
|
+
)
|
|
380
|
+
) as any,
|
|
381
|
+
executeEffect: <Req extends I>(message: Req) =>
|
|
382
|
+
Effect.flatMap(
|
|
383
|
+
Effect.scoped(backing.get),
|
|
384
|
+
(worker) => worker.executeEffect(message)
|
|
385
|
+
) as any
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
return pool
|
|
389
|
+
})
|
|
390
|
+
|
|
391
|
+
/** @internal */
|
|
392
|
+
export const makePoolSerializedLayer =
|
|
393
|
+
<W>(managerLayer: Layer.Layer<never, never, Worker.WorkerManager>) =>
|
|
394
|
+
<Tag, I extends Schema.TaggedRequest.Any>(
|
|
395
|
+
tag: Context.Tag<Tag, Worker.SerializedWorkerPool<I>>,
|
|
396
|
+
options: Worker.SerializedWorkerPool.Options<I, W>
|
|
397
|
+
) => Layer.scoped(tag, makePoolSerialized<W>()(options)).pipe(Layer.provide(managerLayer))
|