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

Request overview

Added in v1.0.0


Table of contents


constructors

makeEntry

Signature

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

Added in v1.0.0

of

Constructs a new Request.

Signature

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

Added in v1.0.0

tagged

Constructs a new Request.

Signature

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

Added in v1.0.0

guards

isEntry

Signature

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

Added in v1.0.0

models

Cache (interface)

Signature

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

Added in v1.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<R> extends Entry.Variance<R> {
  readonly request: R
  readonly result: Deferred<
    [R] extends [Request<infer _E, infer _A>] ? _E : never,
    [R] extends [Request<infer _E, infer _A>] ? _A : never
  >
  readonly listeners: Listeners
  readonly ownerId: FiberId
  readonly state: {
    completed: boolean
  }
}

Added in v1.0.0

Entry (namespace)

Added in v1.0.0

Variance (interface)

Signature

export interface Variance<R> {
  readonly [EntryTypeId]: {
    readonly _R: (_: never) => R
  }
}

Added in v1.0.0

Listeners (interface)

Signature

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

Added in v1.0.0

Request (interface)

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

Signature

export interface Request<E, A> extends Request.Variance<E, A>, Data.Case {}

Added in v1.0.0

makeCache

Signature

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

Added in v1.0.0

refinements

isRequest

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

Signature

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

Added in v1.0.0

request completion

complete

Complete a Request with the specified result.

Signature

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

Added in v1.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

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

Added in v1.0.0

fail

Complete a Request with the specified error.

Signature

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

Added in v1.0.0

interruptWhenPossible

Interrupts the child effect when requests are no longer needed

Signature

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

Added in v1.0.0

succeed

Complete a Request with the specified value.

Signature

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

Added in v1.0.0

symbols

EntryTypeId

Signature

export declare const EntryTypeId: typeof EntryTypeId

Added in v1.0.0

EntryTypeId (type alias)

Signature

export type EntryTypeId = typeof EntryTypeId

Added in v1.0.0

RequestTypeId

Signature

export declare const RequestTypeId: typeof RequestTypeId

Added in v1.0.0

RequestTypeId (type alias)

Signature

export type RequestTypeId = typeof RequestTypeId

Added in v1.0.0

utils

Request (namespace)

Added in v1.0.0

Constructor (interface)

Signature

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

Added in v1.0.0

Variance (interface)

Signature

export interface Variance<E, A> {
  readonly [RequestTypeId]: {
    readonly _E: (_: never) => E
    readonly _A: (_: never) => A
  }
}

Added in v1.0.0

Error (type alias)

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

Signature

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

Added in v1.0.0

OptionalResult (type alias)

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

Signature

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

Added in v1.0.0

Result (type alias)

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

Signature

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

Added in v1.0.0

Success (type alias)

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

Signature

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

Added in v1.0.0