Skip to main content Link Search Menu Expand Document (external link)

WorkerRunner overview

Added in v1.0.0


Table of contents


CloseLatch

CloseLatch

The worker close latch is used by platform runners to signal that the worker has been closed.

Signature

export declare const CloseLatch: Context.Reference<CloseLatch, Deferred.Deferred<void, WorkerError>>

Added in v1.0.0

CloseLatch (interface)

The worker close latch is used by platform runners to signal that the worker has been closed.

Signature

export interface CloseLatch {
  readonly _: unique symbol
}

Added in v1.0.0

layerCloseLatch

Signature

export declare const layerCloseLatch: Layer.Layer<CloseLatch>

Added in v1.0.0

Execution

launch

Launch the specified layer, interrupting the fiber when the CloseLatch is triggered.

Signature

export declare const launch: <A, E, R>(layer: Layer.Layer<A, E, R>) => Effect.Effect<void, E | WorkerError, R>

Added in v1.0.0

constructors

make

Signature

export declare const make: <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<void, WorkerError, PlatformRunner | R | Scope.Scope>

Added in v1.0.0

makeSerialized

Signature

export declare const makeSerialized: <
  R,
  I,
  A extends Schema.TaggedRequest.All,
  const Handlers extends SerializedRunner.Handlers<A>
>(
  schema: Schema.Schema<A, I, R>,
  handlers: Handlers
) => Effect.Effect<void, WorkerError, PlatformRunner | Scope.Scope | R | SerializedRunner.HandlersContext<Handlers>>

Added in v1.0.0

layers

layer

Signature

export declare const layer: <I, E, R, O>(
  process: (request: I) => Stream.Stream<O, E, R> | Effect.Effect<O, E, R>,
  options?: Runner.Options<I, O, E> | undefined
) => Layer.Layer<never, WorkerError, R | PlatformRunner>

Added in v1.0.0

layerSerialized

Signature

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>>

Added in v1.0.0

models

BackingRunner (interface)

Signature

export interface BackingRunner<I, O> {
  readonly run: <A, E, R>(
    handler: (portId: number, message: I) => Effect.Effect<A, E, R>
  ) => Effect.Effect<void, never, Scope.Scope | R>
  readonly send: (portId: number, message: O, transfers?: ReadonlyArray<unknown>) => Effect.Effect<void>
}

Added in v1.0.0

BackingRunner (namespace)

Added in v1.0.0

Message (type alias)

Signature

export type Message<I> = readonly [request: 0, I] | readonly [close: 1]

Added in v1.0.0

PlatformRunner (interface)

Signature

export interface PlatformRunner {
  readonly [PlatformRunnerTypeId]: PlatformRunnerTypeId
  readonly start: <I, O>(closeLatch: typeof CloseLatch.Service) => Effect.Effect<BackingRunner<I, O>, WorkerError>
}

Added in v1.0.0

Runner (namespace)

Added in v1.0.0

Options (interface)

Signature

export interface Options<I, O, E> {
  readonly decode?: (message: unknown) => Effect.Effect<I, WorkerError>
  readonly encodeOutput?: (request: I, message: O) => Effect.Effect<unknown, WorkerError>
  readonly encodeError?: (request: I, error: E) => Effect.Effect<unknown, WorkerError>
}

Added in v1.0.0

SerializedRunner (namespace)

Added in v1.0.0

Handlers (type alias)

Signature

export type Handlers<A extends Schema.TaggedRequest.All> = {
  readonly [K in A["_tag"]]: Extract<A, { readonly _tag: K }> extends Schema.SerializableWithResult<
    infer S,
    infer _SI,
    infer _SR,
    infer A,
    infer _AI,
    infer E,
    infer _EI,
    infer _RR
  >
    ? (
        _: S
      ) => Stream.Stream<A, E, any> | Effect.Effect<A, E, any> | Layer.Layer<any, E, any> | Layer.Layer<never, E, any>
    : never
}

Added in v1.0.0

HandlersContext (type alias)

Signature

export type HandlersContext<Handlers extends Record<string, (...args: ReadonlyArray<any>) => any>> =
  | Exclude<
      {
        [K in keyof Handlers]: ReturnType<Handlers[K]> extends Stream.Stream<infer _A, infer _E, infer R> ? R : never
      }[keyof Handlers],
      InitialContext<Handlers>
    >
  | InitialEnv<Handlers>

Added in v1.0.0

tags

PlatformRunner

Signature

export declare const PlatformRunner: Context.Tag<PlatformRunner, PlatformRunner>

Added in v1.0.0

type ids

PlatformRunnerTypeId

Signature

export declare const PlatformRunnerTypeId: typeof PlatformRunnerTypeId

Added in v1.0.0

PlatformRunnerTypeId (type alias)

Signature

export type PlatformRunnerTypeId = typeof PlatformRunnerTypeId

Added in v1.0.0