EdgeAIG's picture
download
raw
6.42 kB
/**
* Represents responses returned by the Effect HTTP client.
*
* An `HttpClientResponse` keeps the original request together with the response
* status, headers, cookies, and body accessors from the shared incoming-message
* model. This module includes constructors, schema-based decoders, helpers for
* streaming response bodies, and utilities for matching or filtering by HTTP
* status.
*
* @since 4.0.0
*/
import * as Effect from "../../Effect.ts";
import { type Pipeable } from "../../Pipeable.ts";
import * as Schema from "../../Schema.ts";
import type { ParseOptions } from "../../SchemaAST.ts";
import * as Stream from "../../Stream.ts";
import type { Unify } from "../../Unify.ts";
import * as Cookies from "./Cookies.ts";
import * as Error from "./HttpClientError.ts";
import type * as HttpClientRequest from "./HttpClientRequest.ts";
import * as HttpIncomingMessage from "./HttpIncomingMessage.ts";
export {
/**
* Creates a decoder that reads a response JSON body and decodes it with the supplied schema.
*
* @category schemas
* @since 4.0.0
*/
schemaBodyJson,
/**
* Creates a decoder that reads response URL-encoded body parameters and decodes them with the supplied schema.
*
* @category schemas
* @since 4.0.0
*/
schemaBodyUrlParams,
/**
* Creates a decoder that validates and decodes response headers with the supplied schema.
*
* @category schemas
* @since 4.0.0
*/
schemaHeaders } from "./HttpIncomingMessage.ts";
/**
* Type identifier for `HttpClientResponse` values.
*
* @category type IDs
* @since 4.0.0
*/
export declare const TypeId = "~effect/http/HttpClientResponse";
/**
* Model of an HTTP client response, including the original request, status, cookies, headers, and body accessors.
*
* @category models
* @since 4.0.0
*/
export interface HttpClientResponse extends HttpIncomingMessage.HttpIncomingMessage<Error.HttpClientError>, Pipeable {
readonly [TypeId]: typeof TypeId;
readonly request: HttpClientRequest.HttpClientRequest;
readonly status: number;
readonly cookies: Cookies.Cookies;
readonly formData: Effect.Effect<FormData, Error.HttpClientError>;
}
/**
* Wraps a Web `Response` and its original `HttpClientRequest` as an `HttpClientResponse`.
*
* @category constructors
* @since 4.0.0
*/
export declare const fromWeb: (request: HttpClientRequest.HttpClientRequest, source: Response) => HttpClientResponse;
/**
* Creates a decoder for a response's status, headers, and JSON body using the supplied schema.
*
* @category schemas
* @since 4.0.0
*/
export declare const schemaJson: <A, I extends {
readonly status?: number | undefined;
readonly headers?: Readonly<Record<string, string | undefined>> | undefined;
readonly body?: unknown;
}, RD, RE>(schema: Schema.Codec<A, I, RD, RE>, options?: ParseOptions | undefined) => (self: HttpClientResponse) => Effect.Effect<A, Schema.SchemaError | Error.HttpClientError, RD>;
/**
* Creates a decoder for a response's status and headers without reading a response body.
*
* @category schemas
* @since 4.0.0
*/
export declare const schemaNoBody: <A, I extends {
readonly status?: number | undefined;
readonly headers?: Readonly<Record<string, string>> | undefined;
}, RD, RE>(schema: Schema.Codec<A, I, RD, RE>, options?: ParseOptions | undefined) => (self: HttpClientResponse) => Effect.Effect<A, Schema.SchemaError, RD>;
/**
* Converts an effect producing an `HttpClientResponse` into a stream of response body bytes.
*
* @category accessors
* @since 4.0.0
*/
export declare const stream: <E, R>(effect: Effect.Effect<HttpClientResponse, E, R>) => Stream.Stream<Uint8Array, Error.HttpClientError | E, R>;
/**
* Pattern matches on a response status, checking exact status handlers before status-class handlers and `orElse`.
*
* @category pattern matching
* @since 4.0.0
*/
export declare const matchStatus: {
/**
* Pattern matches on a response status, checking exact status handlers before status-class handlers and `orElse`.
*
* @category pattern matching
* @since 4.0.0
*/
<const Cases extends {
readonly [status: number]: (_: HttpClientResponse) => any;
readonly "2xx"?: (_: HttpClientResponse) => any;
readonly "3xx"?: (_: HttpClientResponse) => any;
readonly "4xx"?: (_: HttpClientResponse) => any;
readonly "5xx"?: (_: HttpClientResponse) => any;
readonly orElse: (_: HttpClientResponse) => any;
}>(cases: Cases): (self: HttpClientResponse) => Cases[keyof Cases] extends (_: any) => infer R ? Unify<R> : never;
/**
* Pattern matches on a response status, checking exact status handlers before status-class handlers and `orElse`.
*
* @category pattern matching
* @since 4.0.0
*/
<const Cases extends {
readonly [status: number]: (_: HttpClientResponse) => any;
readonly "2xx"?: (_: HttpClientResponse) => any;
readonly "3xx"?: (_: HttpClientResponse) => any;
readonly "4xx"?: (_: HttpClientResponse) => any;
readonly "5xx"?: (_: HttpClientResponse) => any;
readonly orElse: (_: HttpClientResponse) => any;
}>(self: HttpClientResponse, cases: Cases): Cases[keyof Cases] extends (_: any) => infer R ? Unify<R> : never;
};
/**
* Succeeds with the response when its status satisfies the predicate, otherwise fails with `HttpClientError`.
*
* @category filters
* @since 4.0.0
*/
export declare const filterStatus: {
/**
* Succeeds with the response when its status satisfies the predicate, otherwise fails with `HttpClientError`.
*
* @category filters
* @since 4.0.0
*/
(f: (status: number) => boolean): (self: HttpClientResponse) => Effect.Effect<HttpClientResponse, Error.HttpClientError>;
/**
* Succeeds with the response when its status satisfies the predicate, otherwise fails with `HttpClientError`.
*
* @category filters
* @since 4.0.0
*/
(self: HttpClientResponse, f: (status: number) => boolean): Effect.Effect<HttpClientResponse, Error.HttpClientError>;
};
/**
* Succeeds with the response only when its status is in the 2xx range, otherwise fails with `HttpClientError`.
*
* @category filters
* @since 4.0.0
*/
export declare const filterStatusOk: (self: HttpClientResponse) => Effect.Effect<HttpClientResponse, Error.HttpClientError>;
//# sourceMappingURL=HttpClientResponse.d.ts.map

Xet Storage Details

Size:
6.42 kB
·
Xet hash:
56ddd39f63007c57ded2df0e83eb43789889fa87f1f2cebbfc39a2b5a0d3309a

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.