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

WorkerRunner overview

Added in v1.0.0


Table of contents


constructors

make

Signature

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

Added in v1.0.0

makeSerialized

Signature

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

Added in v1.0.0

layers

layer

Signature

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

Added in v1.0.0

layerSerialized

Signature

export declare const layerSerialized: <
  I,
  A extends Schema.TaggedRequest.Any,
  const Handlers extends SerializedRunner.Handlers<A>
>(
  schema: Schema.Schema<I, A>,
  handlers: Handlers
) => Layer.Layer<PlatformRunner | SerializedRunner.HandlersContext<Handlers>, WorkerError, never>

Added in v1.0.0

models

BackingRunner (interface)

Signature

export interface BackingRunner<I, O> {
  readonly queue: Queue.Dequeue<I>
  readonly send: (message: O, transfers?: ReadonlyArray<unknown>) => Effect.Effect<never, never, 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>() => Effect.Effect<Scope.Scope, WorkerError, BackingRunner<I, O>>
}

Added in v1.0.0

Runner (namespace)

Added in v1.0.0

Options (interface)

Signature

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

Added in v1.0.0

SerializedRunner (namespace)

Added in v1.0.0

Handlers (type alias)

Signature

export type Handlers<A extends Schema.TaggedRequest.Any> = {
  readonly [K in A["_tag"]]: Extract<A, { readonly _tag: K }> extends Serializable.SerializableWithResult<
    infer _IS,
    infer S,
    infer _IE,
    infer E,
    infer _IO,
    infer O
  >
    ? (
        _: S
      ) => Stream.Stream<any, E, O> | Effect.Effect<any, E, O> | Layer.Layer<any, E, any> | Layer.Layer<any, E, never>
    : 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 R, infer _E, infer _A> ? R : never
      }[keyof Handlers],
      {
        [K in keyof Handlers]: ReturnType<Handlers[K]> extends Layer.Layer<infer _R, infer _E, infer A> ? A : never
      }[keyof Handlers]
    >
  | {
      [K in keyof Handlers]: ReturnType<Handlers[K]> extends Layer.Layer<infer R, infer _E, infer _A> ? R : never
    }[keyof 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