EdgeAIG's picture
download
raw
9.01 kB
/**
* Describes failures raised while handling HTTP server requests.
*
* `HttpServerError` covers failures that happen while accepting a request,
* matching a route, running a handler, or building and sending a response.
* Request-scoped failures keep the request that caused them, and response
* failures keep the response being produced. This module also includes helpers
* for turning failed causes or exits into HTTP responses and an annotation for
* interrupts caused by client aborts.
*
* @since 4.0.0
*/
import * as Cause from "../../Cause.ts";
import * as Context from "../../Context.ts";
import * as Effect from "../../Effect.ts";
import * as ErrorReporter from "../../ErrorReporter.ts";
import type * as Exit from "../../Exit.ts";
import * as Option from "../../Option.ts";
import type * as Request from "./HttpServerRequest.ts";
import * as Respondable from "./HttpServerRespondable.ts";
import * as Response from "./HttpServerResponse.ts";
declare const TypeId = "~effect/http/HttpServerError";
declare const HttpServerError_base: new <A extends Record<string, any> = {}>(args: import("../../Types.ts").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => Cause.YieldableError & {
readonly _tag: "HttpServerError";
} & Readonly<A>;
/**
* Tagged error for failures that occur while handling an HTTP server request.
*
* **Details**
*
* It wraps a `HttpServerErrorReason`, exposes the associated request and optional
* response, and can be converted to an HTTP response through the `Respondable`
* protocol.
*
* @category errors
* @since 4.0.0
*/
export declare class HttpServerError extends HttpServerError_base<{
readonly reason: HttpServerErrorReason;
}> implements Respondable.Respondable {
constructor(props: {
readonly reason: HttpServerErrorReason;
});
readonly [TypeId] = "~effect/http/HttpServerError";
stack: string;
get request(): Request.HttpServerRequest;
get response(): Response.HttpServerResponse | undefined;
[Respondable.symbol](): Effect.Effect<Response.HttpServerResponse, never, never>;
get [ErrorReporter.ignore](): boolean;
get message(): string;
}
declare const RequestParseError_base: new <A extends Record<string, any> = {}>(args: import("../../Types.ts").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => Cause.YieldableError & {
readonly _tag: "RequestParseError";
} & Readonly<A>;
/**
* Error describing a failure to parse or read an incoming request.
*
* **Details**
*
* When converted to a response it produces an empty `400` response.
*
* @category errors
* @since 4.0.0
*/
export declare class RequestParseError extends RequestParseError_base<{
readonly request: Request.HttpServerRequest;
readonly description?: string;
readonly cause?: unknown;
}> implements Respondable.Respondable {
/**
* Converts the request error into a `400 Bad Request` response.
*
* @since 4.0.0
*/
[Respondable.symbol](): Effect.Effect<Response.HttpServerResponse, never, never>;
get methodAndUrl(): string;
get message(): string;
}
declare const RouteNotFound_base: new <A extends Record<string, any> = {}>(args: import("../../Types.ts").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => Cause.YieldableError & {
readonly _tag: "RouteNotFound";
} & Readonly<A>;
/**
* Error indicating that no route matched the incoming request.
*
* **Details**
*
* When converted to a response it produces an empty `404` response, and it is
* ignored by the error reporter.
*
* @category errors
* @since 4.0.0
*/
export declare class RouteNotFound extends RouteNotFound_base<{
readonly request: Request.HttpServerRequest;
readonly description?: string;
readonly cause?: unknown;
}> implements Respondable.Respondable {
[Respondable.symbol](): Effect.Effect<Response.HttpServerResponse, never, never>;
readonly [ErrorReporter.ignore] = true;
get methodAndUrl(): string;
get message(): string;
}
declare const InternalError_base: new <A extends Record<string, any> = {}>(args: import("../../Types.ts").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => Cause.YieldableError & {
readonly _tag: "InternalError";
} & Readonly<A>;
/**
* Error describing an unexpected server-side failure while handling a request.
*
* **Details**
*
* When converted to a response it produces an empty `500` response.
*
* @category errors
* @since 4.0.0
*/
export declare class InternalError extends InternalError_base<{
readonly request: Request.HttpServerRequest;
readonly description?: string;
readonly cause?: unknown;
}> implements Respondable.Respondable {
/**
* Converts the server error into a `500 Internal Server Error` response.
*
* @since 4.0.0
*/
[Respondable.symbol](): Effect.Effect<Response.HttpServerResponse, never, never>;
get methodAndUrl(): string;
get message(): string;
}
/**
* Returns `true` when the supplied value is an `HttpServerError`.
*
* @category predicates
* @since 4.0.0
*/
export declare const isHttpServerError: (u: unknown) => u is HttpServerError;
declare const ResponseError_base: new <A extends Record<string, any> = {}>(args: import("../../Types.ts").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => Cause.YieldableError & {
readonly _tag: "ResponseError";
} & Readonly<A>;
/**
* Error describing a failure related to an HTTP response.
*
* **Details**
*
* It carries the request and response involved in the failure. When converted to
* a response it produces an empty `500` response.
*
* @category errors
* @since 4.0.0
*/
export declare class ResponseError extends ResponseError_base<{
readonly request: Request.HttpServerRequest;
readonly response: Response.HttpServerResponse;
readonly description?: string;
readonly cause?: unknown;
}> implements Respondable.Respondable {
[Respondable.symbol](): Effect.Effect<Response.HttpServerResponse, never, never>;
get methodAndUrl(): string;
get message(): string;
}
/**
* Union of errors that are tied directly to an incoming server request.
*
* @category errors
* @since 4.0.0
*/
export type RequestError = RequestParseError | RouteNotFound | InternalError;
/**
* Reason carried by an `HttpServerError`, either a request-level error or a response-level error.
*
* @category errors
* @since 4.0.0
*/
export type HttpServerErrorReason = RequestError | ResponseError;
declare const ServeError_base: new <A extends Record<string, any> = {}>(args: import("../../Types.ts").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => Cause.YieldableError & {
readonly _tag: "ServeError";
} & Readonly<A>;
/**
* Error wrapping a low-level failure from the HTTP server implementation.
*
* @category errors
* @since 4.0.0
*/
export declare class ServeError extends ServeError_base<{
readonly cause: unknown;
}> {
}
declare const ClientAbort_base: Context.ServiceClass<ClientAbort, "effect/http/HttpServerError/ClientAbort", true>;
/**
* Context annotation used to mark an interrupt as caused by the client aborting
* the request.
*
* **Details**
*
* `causeResponse` uses this annotation to map a pure client abort to a `499`
* response instead of a server abort response.
*
* @category annotations
* @since 4.0.0
*/
export declare class ClientAbort extends ClientAbort_base {
static annotation: Context.Context<Cause.StackTrace | ClientAbort>;
}
/**
* Converts a failed handler cause into the HTTP response that should be sent and
* the cause that should be reported.
*
* **Details**
*
* Respondable failures and defects can choose their own response, defects that
* are already `HttpServerResponse` values are used directly, and pure interrupts
* produce either `499` for client aborts or `503` for server aborts.
*
* @category error handling
* @since 4.0.0
*/
export declare const causeResponse: <E>(cause: Cause.Cause<E>) => Effect.Effect<readonly [Response.HttpServerResponse, Cause.Cause<E>]>;
/**
* Derives an HTTP response from a failed handler cause synchronously.
*
* **Details**
*
* If the cause contains a defect that is already an `HttpServerResponse`, that
* response is used and removed from the remaining cause. Otherwise the response
* defaults to `500`.
*
* @category error handling
* @since 4.0.0
*/
export declare const causeResponseStripped: <E>(cause: Cause.Cause<E>) => readonly [response: Response.HttpServerResponse, cause: Option.Option<Cause.Cause<E>>];
/**
* Extracts the response from a successful handler exit, or derives a response
* from the failure cause.
*
* @category error handling
* @since 4.0.0
*/
export declare const exitResponse: <E>(exit: Exit.Exit<Response.HttpServerResponse, E>) => Response.HttpServerResponse;
export {};
//# sourceMappingURL=HttpServerError.d.ts.map

Xet Storage Details

Size:
9.01 kB
·
Xet hash:
c68c29d1ab4fef2d96c3c5df947439f0e845bd9286615848290ddbaf7966c5c0

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