Skip to content
Effect Days 2026 Get your ticket

Worker

30 exports Added in v1.0.0 Source

Constructors

makeManager

Added in v1.0.0 Source

Signature

declare const makeManager: Effect.Effect<WorkerManager, never, PlatformWorker>

makePool

Added in v1.0.0 Source

Signature

declare const makePool: <I, O, E>(options: WorkerPool.Options<I>) => Effect.Effect<WorkerPool<I, O, E>, WorkerError, WorkerManager | Spawner | Scope.Scope>

Signature

declare const makePoolLayer: <Tag, I, O, E>(tag: Context.Tag<Tag, WorkerPool<I, O, E>>, options: WorkerPool.Options<I>) => Layer.Layer<Tag, WorkerError, WorkerManager | Spawner>

Signature

declare const makePoolSerialized: <I extends Schema.TaggedRequest.All>(options: SerializedWorkerPool.Options<I>) => Effect.Effect<SerializedWorkerPool<I>, WorkerError, WorkerManager | Spawner | Scope.Scope>

Signature

declare const makeSerialized: <I extends Schema.TaggedRequest.All>(options: SerializedWorker.Options<I>) => Effect.Effect<SerializedWorker<I>, WorkerError, WorkerManager | Spawner | Scope.Scope>

Layers

layerManager

Added in v1.0.0 Source

Signature

declare const layerManager: Layer.Layer<WorkerManager, never, PlatformWorker>

layerSpawner

Added in v1.0.0 Source

Signature

declare const layerSpawner: <W = unknown>(spawner: SpawnerFn<W>) => Layer.Layer<Spawner, never, never>

Signature

declare const makePoolSerializedLayer: <Tag, I extends Schema.TaggedRequest.All>(tag: Context.Tag<Tag, SerializedWorkerPool<I>>, options: SerializedWorkerPool.Options<I>) => Layer.Layer<Tag, WorkerError, WorkerManager | Spawner>

Models

BackingWorker interface

Added in v1.0.0 Source

Signature

interface BackingWorker<I, O> {
readonly run: <A, E, R>(handler: (_: Message<O>) => Effect<A, E, R>) => Effect<never, WorkerError | E, R>;
readonly send: (message: I, transfers?: readonly Array<unknown>) => Effect<void, WorkerError>;
}

PlatformWorker interface

Added in v1.0.0 Source

Signature

interface PlatformWorker {
readonly [PlatformWorkerTypeId]: typeof PlatformWorkerTypeId;
readonly spawn: <I, O>(id: number) => Effect<BackingWorker<I, O>, WorkerError, Spawner>;
}

SerializedWorker interface

Added in v1.0.0 Source

Signature

interface SerializedWorker<I extends Schema.TaggedRequest.All> {
readonly execute: <Req extends All>(message: Req) => Req extends WithResult<A, _I, E, _EI, R> ? Stream<A, any, R> : never;
readonly executeEffect: <Req extends All>(message: Req) => Req extends WithResult<A, _I, E, _EI, R> ? Effect<A, any, R> : never;
readonly id: number;
}

SerializedWorkerPool interface

Added in v1.0.0 Source

Signature

interface SerializedWorkerPool<I extends Schema.TaggedRequest.All> {
readonly backing: Pool<SerializedWorker<I>, WorkerError>;
readonly broadcast: <Req extends All>(message: Req) => Req extends WithResult<_A, _I, E, _EI, R> ? Effect<void, any, R> : never;
readonly execute: <Req extends All>(message: Req) => Req extends WithResult<A, _I, E, _EI, R> ? Stream<A, any, R> : never;
readonly executeEffect: <Req extends All>(message: Req) => Req extends WithResult<A, _I, E, _EI, R> ? Effect<A, any, R> : never;
}

Spawner interface

Added in v1.0.0 Source

Signature

interface Spawner {
readonly _: typeof _;
}

SpawnerFn interface

Added in v1.0.0 Source

Signature

interface SpawnerFn<W = unknown> {
(id: number): W;
}

Worker

Added in v1.0.0 Source

Worker interface

Added in v1.0.0 Source

Signature

interface Worker<I, O, E = never> {
readonly execute: (message: I) => Stream<O, WorkerError | E>;
readonly executeEffect: (message: I) => Effect<O, WorkerError | E>;
readonly id: number;
}

WorkerManager interface

Added in v1.0.0 Source

Signature

interface WorkerManager {
readonly [WorkerManagerTypeId]: typeof WorkerManagerTypeId;
readonly spawn: <I, O, E>(options: Options<I>) => Effect<Worker<I, O, E>, WorkerError, Scope | Spawner>;
}

WorkerPool

Added in v1.0.0 Source

WorkerPool interface

Added in v1.0.0 Source

Signature

interface WorkerPool<I, O, E = never> {
readonly backing: Pool<Worker<I, O, E>, WorkerError>;
readonly broadcast: (message: I) => Effect<void, WorkerError | E>;
readonly execute: (message: I) => Stream<O, WorkerError | E>;
readonly executeEffect: (message: I) => Effect<O, WorkerError | E>;
}

Other

makePlatform

Added in v1.0.0 Source

Signature

declare const makePlatform: <W>() => <P extends {
readonly postMessage: (message: any, transfers?: any) => void;
}>(options: {
readonly listen: (options: {
readonly deferred: Deferred.Deferred<never, WorkerError>;
readonly emit: (data: any) => void;
readonly port: P;
readonly scope: Scope.Scope;
}) => Effect.Effect<void>;
readonly setup: (options: {
readonly scope: Scope.Scope;
readonly worker: W;
}) => Effect.Effect<P, WorkerError>;
}) => PlatformWorker

Tags

Signature

declare const PlatformWorker: Tag<PlatformWorker, PlatformWorker>

Spawner

Added in v1.0.0 Source

Signature

declare const Spawner: Tag<Spawner, SpawnerFn<unknown>>

Signature

declare const WorkerManager: Tag<WorkerManager, WorkerManager>

Type Ids

Signature

declare const PlatformWorkerTypeId: unique symbol

PlatformWorkerTypeId type

Added in v1.0.0 Source

Signature

type PlatformWorkerTypeId = typeof PlatformWorkerTypeId

Signature

declare const WorkerManagerTypeId: unique symbol

WorkerManagerTypeId type

Added in v1.0.0 Source

Signature

type WorkerManagerTypeId = typeof WorkerManagerTypeId