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

Client overview

Added in v1.0.0


Table of contents


constructors

fetch

Signature

export declare const fetch: (options?: RequestInit) => Client.Default

Added in v1.0.0

fetchOk

Signature

export declare const fetchOk: (options?: RequestInit) => Client.Default

Added in v1.0.0

make

Signature

export declare const make: <R, E, A, R2, E2>(
  execute: (request: Effect.Effect<R2, E2, ClientRequest.ClientRequest>) => Effect.Effect<R, E, A>,
  preprocess: Client.Preprocess<R2, E2>
) => Client<R, E, A>

Added in v1.0.0

makeDefault

Signature

export declare const makeDefault: (
  f: (
    request: ClientRequest.ClientRequest
  ) => Effect.Effect<never, Error.HttpClientError, ClientResponse.ClientResponse>
) => Client.Default

Added in v1.0.0

error handling

catchAll

Signature

export declare const catchAll: {
  <E, R2, E2, A2>(f: (e: E) => Effect.Effect<R2, E2, A2>): <R, A>(self: Client<R, E, A>) => Client<R2 | R, E2, A2 | A>
  <R, E, A, R2, E2, A2>(self: Client<R, E, A>, f: (e: E) => Effect.Effect<R2, E2, A2>): Client<R | R2, E2, A | A2>
}

Added in v1.0.0

catchTag

Signature

export declare const catchTag: {
  <E extends { _tag: string }, K extends E["_tag"] & string, R1, E1, A1>(
    tag: K,
    f: (e: Extract<E, { _tag: K }>) => Effect.Effect<R1, E1, A1>
  ): <R, A>(self: Client<R, E, A>) => Client<R1 | R, E1 | Exclude<E, { _tag: K }>, A1 | A>
  <R, E extends { _tag: string }, A, K extends E["_tag"] & string, E1, R1, A1>(
    self: Client<R, E, A>,
    tag: K,
    f: (e: Extract<E, { _tag: K }>) => Effect.Effect<R1, E1, A1>
  ): Client<R | R1, E1 | Exclude<E, { _tag: K }>, A | A1>
}

Added in v1.0.0

catchTags

Signature

export declare const catchTags: {
  <
    E extends { _tag: string },
    Cases extends { [K in E["_tag"]]+?: ((error: Extract<E, { _tag: K }>) => Effect.Effect<any, any, any>) | undefined }
  >(
    cases: Cases
  ): <R, A>(
    self: Client<R, E, A>
  ) => Client<
    | R
    | {
        [K in keyof Cases]: Cases[K] extends (...args: Array<any>) => Effect.Effect<infer R, any, any> ? R : never
      }[keyof Cases],
    | Exclude<E, { _tag: keyof Cases }>
    | {
        [K in keyof Cases]: Cases[K] extends (...args: Array<any>) => Effect.Effect<any, infer E, any> ? E : never
      }[keyof Cases],
    | A
    | {
        [K in keyof Cases]: Cases[K] extends (...args: Array<any>) => Effect.Effect<any, any, infer A> ? A : never
      }[keyof Cases]
  >
  <
    R,
    E extends { _tag: string },
    A,
    Cases extends { [K in E["_tag"]]+?: ((error: Extract<E, { _tag: K }>) => Effect.Effect<any, any, any>) | undefined }
  >(
    self: Client<R, E, A>,
    cases: Cases
  ): Client<
    | R
    | {
        [K in keyof Cases]: Cases[K] extends (...args: Array<any>) => Effect.Effect<infer R, any, any> ? R : never
      }[keyof Cases],
    | Exclude<E, { _tag: keyof Cases }>
    | {
        [K in keyof Cases]: Cases[K] extends (...args: Array<any>) => Effect.Effect<any, infer E, any> ? E : never
      }[keyof Cases],
    | A
    | {
        [K in keyof Cases]: Cases[K] extends (...args: Array<any>) => Effect.Effect<any, any, infer A> ? A : never
      }[keyof Cases]
  >
}

Added in v1.0.0

retry

Signature

export declare const retry: {
  <R1, E extends E0, E0, B>(policy: Schedule.Schedule<R1, E0, B>): <R, A>(self: Client<R, E, A>) => Client<R1 | R, E, A>
  <R, E extends E0, E0, A, R1, B>(self: Client<R, E, A>, policy: Schedule.Schedule<R1, E0, B>): Client<R | R1, E, A>
}

Added in v1.0.0

filters

filterOrElse

Signature

export declare const filterOrElse: {
  <A, R2, E2, B>(
    f: Predicate.Predicate<A>,
    orElse: (a: A) => Effect.Effect<R2, E2, B>
  ): <R, E>(self: Client<R, E, A>) => Client<R2 | R, E2 | E, A | B>
  <R, E, A, R2, E2, B>(
    self: Client<R, E, A>,
    f: Predicate.Predicate<A>,
    orElse: (a: A) => Effect.Effect<R2, E2, B>
  ): Client<R | R2, E | E2, A | B>
}

Added in v1.0.0

filterOrFail

Signature

export declare const filterOrFail: {
  <A, E2>(f: Predicate.Predicate<A>, orFailWith: (a: A) => E2): <R, E>(self: Client<R, E, A>) => Client<R, E2 | E, A>
  <R, E, A, E2>(self: Client<R, E, A>, f: Predicate.Predicate<A>, orFailWith: (a: A) => E2): Client<R, E | E2, A>
}

Added in v1.0.0

filterStatus

Signature

export declare const filterStatus: {
  (
    f: (status: number) => boolean
  ): <R, E>(self: Client.WithResponse<R, E>) => Client.WithResponse<R, Error.ResponseError | E>
  <R, E>(
    self: Client.WithResponse<R, E>,
    f: (status: number) => boolean
  ): Client.WithResponse<R, Error.ResponseError | E>
}

Added in v1.0.0

filterStatusOk

Signature

export declare const filterStatusOk: <R, E>(
  self: Client.WithResponse<R, E>
) => Client.WithResponse<R, Error.ResponseError | E>

Added in v1.0.0

layers

layer

Signature

export declare const layer: Layer.Layer<never, never, Client.Default>

Added in v1.0.0

mapping & sequencing

map

Signature

export declare const map: {
  <A, B>(f: (a: A) => B): <R, E>(self: Client<R, E, A>) => Client<R, E, B>
  <R, E, A, B>(self: Client<R, E, A>, f: (a: A) => B): Client<R, E, B>
}

Added in v1.0.0

mapEffect

Signature

export declare const mapEffect: {
  <A, R2, E2, B>(f: (a: A) => Effect.Effect<R2, E2, B>): <R, E>(self: Client<R, E, A>) => Client<R2 | R, E2 | E, B>
  <R, E, A, R2, E2, B>(self: Client<R, E, A>, f: (a: A) => Effect.Effect<R2, E2, B>): Client<R | R2, E | E2, B>
}

Added in v1.0.0

mapInputRequest

Signature

export declare const mapInputRequest: {
  (
    f: (a: ClientRequest.ClientRequest) => ClientRequest.ClientRequest
  ): <R, E, A>(self: Client<R, E, A>) => Client<R, E, A>
  <R, E, A>(self: Client<R, E, A>, f: (a: ClientRequest.ClientRequest) => ClientRequest.ClientRequest): Client<R, E, A>
}

Added in v1.0.0

mapInputRequestEffect

Signature

export declare const mapInputRequestEffect: {
  <R2, E2>(
    f: (a: ClientRequest.ClientRequest) => Effect.Effect<R2, E2, ClientRequest.ClientRequest>
  ): <R, E, A>(self: Client<R, E, A>) => Client<R2 | R, E2 | E, A>
  <R, E, A, R2, E2>(
    self: Client<R, E, A>,
    f: (a: ClientRequest.ClientRequest) => Effect.Effect<R2, E2, ClientRequest.ClientRequest>
  ): Client<R | R2, E | E2, A>
}

Added in v1.0.0

mapRequest

Signature

export declare const mapRequest: {
  (
    f: (a: ClientRequest.ClientRequest) => ClientRequest.ClientRequest
  ): <R, E, A>(self: Client<R, E, A>) => Client<R, E, A>
  <R, E, A>(self: Client<R, E, A>, f: (a: ClientRequest.ClientRequest) => ClientRequest.ClientRequest): Client<R, E, A>
}

Added in v1.0.0

mapRequestEffect

Signature

export declare const mapRequestEffect: {
  <R2, E2>(
    f: (a: ClientRequest.ClientRequest) => Effect.Effect<R2, E2, ClientRequest.ClientRequest>
  ): <R, E, A>(self: Client<R, E, A>) => Client<R2 | R, E2 | E, A>
  <R, E, A, R2, E2>(
    self: Client<R, E, A>,
    f: (a: ClientRequest.ClientRequest) => Effect.Effect<R2, E2, ClientRequest.ClientRequest>
  ): Client<R | R2, E | E2, A>
}

Added in v1.0.0

tap

Signature

export declare const tap: {
  <A, R2, E2, _>(f: (a: A) => Effect.Effect<R2, E2, _>): <R, E>(self: Client<R, E, A>) => Client<R2 | R, E2 | E, A>
  <R, E, A, R2, E2, _>(self: Client<R, E, A>, f: (a: A) => Effect.Effect<R2, E2, _>): Client<R | R2, E | E2, A>
}

Added in v1.0.0

tapRequest

Signature

export declare const tapRequest: {
  <R2, E2, _>(
    f: (a: ClientRequest.ClientRequest) => Effect.Effect<R2, E2, _>
  ): <R, E, A>(self: Client<R, E, A>) => Client<R2 | R, E2 | E, A>
  <R, E, A, R2, E2, _>(
    self: Client<R, E, A>,
    f: (a: ClientRequest.ClientRequest) => Effect.Effect<R2, E2, _>
  ): Client<R | R2, E | E2, A>
}

Added in v1.0.0

transform

Signature

export declare const transform: {
  <R, E, A, R1, E1, A1>(
    f: (effect: Effect.Effect<R, E, A>, request: ClientRequest.ClientRequest) => Effect.Effect<R1, E1, A1>
  ): (self: Client<R, E, A>) => Client<R | R1, E | E1, A1>
  <R, E, A, R1, E1, A1>(
    self: Client<R, E, A>,
    f: (effect: Effect.Effect<R, E, A>, request: ClientRequest.ClientRequest) => Effect.Effect<R1, E1, A1>
  ): Client<R | R1, E | E1, A1>
}

Added in v1.0.0

transformResponse

Signature

export declare const transformResponse: {
  <R, E, A, R1, E1, A1>(
    f: (effect: Effect.Effect<R, E, A>) => Effect.Effect<R1, E1, A1>
  ): (self: Client<R, E, A>) => Client<R1, E1, A1>
  <R, E, A, R1, E1, A1>(
    self: Client<R, E, A>,
    f: (effect: Effect.Effect<R, E, A>) => Effect.Effect<R1, E1, A1>
  ): Client<R1, E1, A1>
}

Added in v1.0.0

models

Client (interface)

Signature

export interface Client<R, E, A> extends Pipeable {
  (request: ClientRequest.ClientRequest): Effect.Effect<R, E, A>
  readonly [TypeId]: TypeId
  readonly preprocess: Client.Preprocess<R, E>
  readonly execute: Client.Execute<R, E, A>
}

Added in v1.0.0

Fetch (interface)

Signature

export interface Fetch {
  readonly _: unique symbol
}

Added in v1.0.0

schema

schemaFunction

Signature

export declare const schemaFunction: {
  <SI, SA>(
    schema: Schema.Schema<SI, SA>
  ): <R, E, A>(
    self: Client<R, E, A>
  ) => (
    request: ClientRequest.ClientRequest
  ) => (a: SA) => Effect.Effect<R, ParseResult.ParseError | Error.RequestError | E, A>
  <R, E, A, SI, SA>(
    self: Client<R, E, A>,
    schema: Schema.Schema<SI, SA>
  ): (
    request: ClientRequest.ClientRequest
  ) => (a: SA) => Effect.Effect<R, ParseResult.ParseError | Error.RequestError | E, A>
}

Added in v1.0.0

tags

Client

Signature

export declare const Client: Context.Tag<Client.Default, Client.Default>

Added in v1.0.0

Fetch

Signature

export declare const Fetch: Context.Tag<Fetch, typeof globalThis.fetch>

Added in v1.0.0

type ids

TypeId

Signature

export declare const TypeId: typeof TypeId

Added in v1.0.0

TypeId (type alias)

Signature

export type TypeId = typeof TypeId

Added in v1.0.0

utils

Client (namespace)

Added in v1.0.0

Default (type alias)

Signature

export type Default = WithResponse<never, Error.HttpClientError>

Added in v1.0.0

Execute (type alias)

Signature

export type Execute<R, E, A> = (request: Effect.Effect<R, E, ClientRequest.ClientRequest>) => Effect.Effect<R, E, A>

Added in v1.0.0

Preprocess (type alias)

Signature

export type Preprocess<R, E> = (
  request: ClientRequest.ClientRequest
) => Effect.Effect<R, E, ClientRequest.ClientRequest>

Added in v1.0.0

WithResponse (type alias)

Signature

export type WithResponse<R, E> = Client<R, E, ClientResponse.ClientResponse>

Added in v1.0.0