MCPcopy Index your code
hub / github.com/Effect-TS/effect / makeSerialized

Function makeSerialized

packages/platform/src/internal/worker.ts:291–329  ·  view source on GitHub ↗
(
  options: Worker.SerializedWorker.Options<I>
)

Source from the content-addressed store, hash-verified

289
290/** @internal */
291export const makeSerialized = <
292 I extends Schema.TaggedRequest.All
293>(
294 options: Worker.SerializedWorker.Options<I>
295): Effect.Effect<Worker.SerializedWorker<I>, WorkerError, Worker.WorkerManager | Worker.Spawner | Scope.Scope> =>
296 Effect.gen(function*() {
297 const manager = yield* WorkerManager
298 const backing = yield* manager.spawn({
299 ...options as any,
300 encode(message) {
301 return Effect.mapError(
302 Schema.serialize(message as any),
303 (cause) => new WorkerError({ reason: "encode", cause })
304 )
305 }
306 })
307 const execute = <Req extends I>(message: Req) => {
308 const parseSuccess = Schema.decode(Schema.successSchema(message as any))
309 const parseFailure = Schema.decode(Schema.failureSchema(message as any))
310 return pipe(
311 backing.execute(message),
312 Stream.catchAll((error) => Effect.flatMap(parseFailure(error), Effect.fail)),
313 Stream.mapEffect(parseSuccess)
314 )
315 }
316 const executeEffect = <Req extends I>(message: Req) => {
317 const parseSuccess = Schema.decode(Schema.successSchema(message as any))
318 const parseFailure = Schema.decode(Schema.failureSchema(message as any))
319 return Effect.matchEffect(backing.executeEffect(message), {
320 onFailure: (error) => Effect.flatMap(parseFailure(error), Effect.fail),
321 onSuccess: parseSuccess
322 })
323 }
324 return identity<Worker.SerializedWorker<I>>({
325 id: backing.id,
326 execute: execute as any,
327 executeEffect: executeEffect as any
328 })
329 })
330
331/** @internal */
332export const makePoolSerialized = <I extends Schema.TaggedRequest.All>(

Callers 1

makePoolSerializedFunction · 0.70

Calls 1

identityFunction · 0.85

Tested by

no test coverage detected