Skip to content

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;