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

Request.ts overview

Since v2.0.0


Exports Grouped by Category


constructors

Class

Provides a constructor for a Request Class.

Example

import { Request } from "effect"

type Success = string
type Error = never

class MyRequest extends Request.Class<
  Success,
  Error,
  {
    readonly id: string
  }
> {}

Signature

declare const Class: new <Success, Error, A extends Record<string, any>>(
  args: Types.Equals<Omit<A, keyof Request<unknown, unknown>>, {}> extends true
    ? void
    : { readonly [P in keyof A as P extends keyof Request<unknown, unknown> ? never : P]: A[P] }
) => Request<Success, Error> & Readonly<A>

Source

Since v2.0.0

TaggedClass

Provides a Tagged constructor for a Request Class.

Example

import { Request } from "effect"

type Success = string
type Error = never

class MyRequest extends Request.TaggedClass("MyRequest")<
  Success,
  Error,
  {
    readonly name: string
  }
> {}

Signature

declare const TaggedClass: <Tag extends string>(
  tag: Tag
) => new <Success, Error, A extends Record<string, any>>(
  args: Types.Equals<Omit<A, keyof Request<unknown, unknown>>, {}> extends true
    ? void
    : { readonly [P in keyof A as P extends "_tag" | keyof Request<unknown, unknown> ? never : P]: A[P] }
) => Request<Success, Error> & Readonly<A> & { readonly _tag: Tag }

Source

Since v2.0.0

makeEntry

Signature

declare const makeEntry: <A extends Request<any, any>>(options: {
  readonly request: A
  readonly result: Deferred<Request.Success<A>, Request.Error<A>>
  readonly listeners: Listeners
  readonly ownerId: FiberId
  readonly state: { completed: boolean }
}) => Entry<A>

Source

Since v2.0.0

of

Constructs a new Request.

Signature

declare const of: <R extends Request<any, any>>() => Request.Constructor<R>

Source

Since v2.0.0

tagged

Constructs a new Request.

Signature

declare const tagged: <R extends Request<any, any> & { _tag: string }>(tag: R["_tag"]) => Request.Constructor<R, "_tag">

Source

Since v2.0.0

guards

isEntry

Signature

declare const isEntry: (u: unknown) => u is Entry<unknown>

Source

Since v2.0.0

models

Cache (interface)

Signature

export interface Cache
  extends _Cache.ConsumerCache<
    Request<any, any>,
    {
      listeners: Listeners
      handle: Deferred<unknown, unknown>
    }
  > {}

Source

Since v2.0.0

Entry (interface)

A Entry<A> keeps track of a request of type A along with a Ref containing the result of the request, existentially hiding the result type. This is used internally by the library to support data sources that return different result types for different requests while guaranteeing that results will be of the type requested.

Signature

export interface Entry<out R> extends Entry.Variance<R> {
  readonly request: R
  readonly result: Deferred<
    [R] extends [Request<infer _A, infer _E>] ? _A : never,
    [R] extends [Request<infer _A, infer _E>] ? _E : never
  >
  readonly listeners: Listeners
  readonly ownerId: FiberId
  readonly state: {
    completed: boolean
  }
}

Source

Since v2.0.0

Entry (namespace)

Source

Since v2.0.0

Variance (interface)

Signature

export interface Variance<out R> {
  readonly [EntryTypeId]: {
    readonly _R: Types.Covariant<R>
  }
}

Source

Since v2.0.0

Listeners (interface)

Signature

export interface Listeners {
  readonly count: number
  readonly observers: Set<(count: number) => void>
  interrupted: boolean
  addObserver(f: (count: number) => void): void
  removeObserver(f: (count: number) => void): void
  increment(): void
  decrement(): void
}

Source

Since v2.0.0

Request (interface)

A Request<A, E> is a request from a data source for a value of type A that may fail with an E.

Signature

export interface Request<out A, out E = never> extends Request.Variance<A, E> {}

Source

Since v2.0.0

makeCache

Signature

declare const makeCache: (options: {
  readonly capacity: number
  readonly timeToLive: DurationInput
}) => Effect.Effect<Cache>

Source

Since v2.0.0

refinements

isRequest

Returns true if the specified value is a Request, false otherwise.

Signature

declare const isRequest: (u: unknown) => u is Request<unknown, unknown>

Source

Since v2.0.0

request completion

complete

Complete a Request with the specified result.

Signature

declare const complete: {
  <A extends Request<any, any>>(result: Request.Result<A>): (self: A) => Effect.Effect<void>
  <A extends Request<any, any>>(self: A, result: Request.Result<A>): Effect.Effect<void>
}

Source

Since v2.0.0

completeEffect

Complete a Request with the specified effectful computation, failing the request with the error from the effect workflow if it fails, and completing the request with the value of the effect workflow if it succeeds.

Signature

declare const completeEffect: {
  <A extends Request<any, any>, R>(
    effect: Effect.Effect<Request.Success<A>, Request.Error<A>, R>
  ): (self: A) => Effect.Effect<void, never, R>
  <A extends Request<any, any>, R>(
    self: A,
    effect: Effect.Effect<Request.Success<A>, Request.Error<A>, R>
  ): Effect.Effect<void, never, R>
}

Source

Since v2.0.0

fail

Complete a Request with the specified error.

Signature

declare const fail: {
  <A extends Request<any, any>>(error: Request.Error<A>): (self: A) => Effect.Effect<void>
  <A extends Request<any, any>>(self: A, error: Request.Error<A>): Effect.Effect<void>
}

Source

Since v2.0.0

failCause

Complete a Request with the specified cause.

Signature

declare const failCause: {
  <A extends Request<any, any>>(cause: Cause<Request.Error<A>>): (self: A) => Effect.Effect<void>
  <A extends Request<any, any>>(self: A, cause: Cause<Request.Error<A>>): Effect.Effect<void>
}

Source

Since v2.0.0

interruptWhenPossible

Interrupts the child effect when requests are no longer needed

Signature

declare const interruptWhenPossible: {
  (all: Iterable<Request<any, any>>): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<void, E, R>
  <A, E, R>(self: Effect.Effect<A, E, R>, all: Iterable<Request<any, any>>): Effect.Effect<void, E, R>
}

Source

Since v2.0.0

succeed

Complete a Request with the specified value.

Signature

declare const succeed: {
  <A extends Request<any, any>>(value: Request.Success<A>): (self: A) => Effect.Effect<void>
  <A extends Request<any, any>>(self: A, value: Request.Success<A>): Effect.Effect<void>
}

Source

Since v2.0.0

symbols

EntryTypeId

Signature

declare const EntryTypeId: unique symbol

Source

Since v2.0.0

EntryTypeId (type alias)

Signature

type EntryTypeId = typeof EntryTypeId

Source

Since v2.0.0

RequestTypeId

Signature

declare const RequestTypeId: unique symbol

Source

Since v2.0.0

RequestTypeId (type alias)

Signature

type RequestTypeId = typeof RequestTypeId

Source

Since v2.0.0

utils

Request (namespace)

Source

Since v2.0.0

Variance (interface)

Signature

export interface Variance<out A, out E> {
  readonly [RequestTypeId]: {
    readonly _A: Types.Covariant<A>
    readonly _E: Types.Covariant<E>
  }
}

Source

Since v2.0.0

Constructor (interface)

Signature

export interface Constructor<R extends Request<any, any>, T extends keyof R = never> {
  (args: Omit<R, T | keyof Request.Variance<Request.Success<R>, Request.Error<R>>>): R
}

Source

Since v2.0.0

Error (type alias)

A utility type to extract the error type from a Request.

Signature

type Error<T> = [T] extends [Request<infer _A, infer _E>] ? _E : never

Source

Since v2.0.0

Success (type alias)

A utility type to extract the value type from a Request.

Signature

type Success<T> = [T] extends [Request<infer _A, infer _E>] ? _A : never

Source

Since v2.0.0

Result (type alias)

A utility type to extract the result type from a Request.

Signature

type Result<T> = T extends Request<infer A, infer E> ? Exit.Exit<A, E> : never

Source

Since v2.0.0

OptionalResult (type alias)

A utility type to extract the optional result type from a Request.

Signature

type OptionalResult<T> = T extends Request<infer A, infer E> ? Exit.Exit<Option.Option<A>, E> : never

Source

Since v2.0.0