| /** | |
| * Service for serving Effect HTTP responses on a concrete HTTP server. | |
| * | |
| * Platform adapters provide `HttpServer`, and routers or applications consume | |
| * it to run an `HttpServerResponse` effect for each incoming request. The | |
| * service exposes the listening address, while this module also includes helpers | |
| * for address formatting, server logging, and clients that target the current | |
| * server in tests. | |
| * | |
| * @since 4.0.0 | |
| */ | |
| import * as Context from "../../Context.ts"; | |
| import * as Effect from "../../Effect.ts"; | |
| import * as FileSystem from "../../FileSystem.ts"; | |
| import * as Layer from "../../Layer.ts"; | |
| import * as Path from "../../Path.ts"; | |
| import type * as Scope from "../../Scope.ts"; | |
| import * as Etag from "./Etag.ts"; | |
| import * as HttpClient from "./HttpClient.ts"; | |
| import type * as Middleware from "./HttpMiddleware.ts"; | |
| import * as HttpPlatform from "./HttpPlatform.ts"; | |
| import type { HttpServerRequest } from "./HttpServerRequest.ts"; | |
| import type { HttpServerResponse } from "./HttpServerResponse.ts"; | |
| declare const HttpServer_base: Context.ServiceClass<HttpServer, "effect/http/HttpServer", { | |
| readonly serve: { | |
| <E, R>(effect: Effect.Effect<HttpServerResponse, E, R>): Effect.Effect<void, never, Exclude<R, HttpServerRequest> | Scope.Scope>; | |
| <E, R, App extends Effect.Effect<HttpServerResponse, any, any>>(effect: Effect.Effect<HttpServerResponse, E, R>, middleware: Middleware.HttpMiddleware.Applied<App, E, R>): Effect.Effect<void, never, Exclude<R, HttpServerRequest> | Scope.Scope>; | |
| }; | |
| readonly address: Address; | |
| }>; | |
| /** | |
| * Service tag for an HTTP server runtime. | |
| * | |
| * **Details** | |
| * | |
| * The service can serve an HTTP response effect and exposes the address where the | |
| * server is listening. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export declare class HttpServer extends HttpServer_base { | |
| } | |
| /** | |
| * Address where an HTTP server is listening. | |
| * | |
| * **Details** | |
| * | |
| * The address is either a TCP host and port or a Unix domain socket path. | |
| * | |
| * @category address | |
| * @since 4.0.0 | |
| */ | |
| export type Address = UnixAddress | TcpAddress; | |
| /** | |
| * TCP address for an HTTP server, identified by hostname and port. | |
| * | |
| * @category address | |
| * @since 4.0.0 | |
| */ | |
| export interface TcpAddress { | |
| readonly _tag: "TcpAddress"; | |
| readonly hostname: string; | |
| readonly port: number; | |
| } | |
| /** | |
| * Unix domain socket address for an HTTP server. | |
| * | |
| * @category address | |
| * @since 4.0.0 | |
| */ | |
| export interface UnixAddress { | |
| readonly _tag: "UnixAddress"; | |
| readonly path: string; | |
| } | |
| /** | |
| * Constructs an `HttpServer` service from a serving implementation and listening | |
| * address. | |
| * | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare const make: (options: { | |
| readonly serve: (httpEffect: Effect.Effect<HttpServerResponse, unknown, HttpServerRequest | Scope.Scope>, middleware?: Middleware.HttpMiddleware) => Effect.Effect<void, never, Scope.Scope>; | |
| readonly address: Address; | |
| }) => HttpServer["Service"]; | |
| /** | |
| * Creates a layer that starts serving an HTTP response effect with the current | |
| * `HttpServer`. | |
| * | |
| * **Details** | |
| * | |
| * The request service is supplied by the server for each request; the returned | |
| * layer still requires the server, a scope, and any non-request dependencies of | |
| * the response effect or middleware. | |
| * | |
| * @category accessors | |
| * @since 4.0.0 | |
| */ | |
| export declare const serve: { | |
| /** | |
| * Creates a layer that starts serving an HTTP response effect with the current | |
| * `HttpServer`. | |
| * | |
| * **Details** | |
| * | |
| * The request service is supplied by the server for each request; the returned | |
| * layer still requires the server, a scope, and any non-request dependencies of | |
| * the response effect or middleware. | |
| * | |
| * @category accessors | |
| * @since 4.0.0 | |
| */ | |
| (): <E, R>(effect: Effect.Effect<HttpServerResponse, E, R>) => Layer.Layer<never, never, HttpServer | Exclude<R, HttpServerRequest | Scope.Scope>>; | |
| /** | |
| * Creates a layer that starts serving an HTTP response effect with the current | |
| * `HttpServer`. | |
| * | |
| * **Details** | |
| * | |
| * The request service is supplied by the server for each request; the returned | |
| * layer still requires the server, a scope, and any non-request dependencies of | |
| * the response effect or middleware. | |
| * | |
| * @category accessors | |
| * @since 4.0.0 | |
| */ | |
| <E, R, App extends Effect.Effect<HttpServerResponse, any, any>>(middleware: Middleware.HttpMiddleware.Applied<App, E, R>): (effect: Effect.Effect<HttpServerResponse, E, R>) => Layer.Layer<never, never, HttpServer | Exclude<Effect.Services<App>, HttpServerRequest | Scope.Scope>>; | |
| /** | |
| * Creates a layer that starts serving an HTTP response effect with the current | |
| * `HttpServer`. | |
| * | |
| * **Details** | |
| * | |
| * The request service is supplied by the server for each request; the returned | |
| * layer still requires the server, a scope, and any non-request dependencies of | |
| * the response effect or middleware. | |
| * | |
| * @category accessors | |
| * @since 4.0.0 | |
| */ | |
| <E, R>(effect: Effect.Effect<HttpServerResponse, E, R>): Layer.Layer<never, never, HttpServer | Exclude<R, HttpServerRequest | Scope.Scope>>; | |
| /** | |
| * Creates a layer that starts serving an HTTP response effect with the current | |
| * `HttpServer`. | |
| * | |
| * **Details** | |
| * | |
| * The request service is supplied by the server for each request; the returned | |
| * layer still requires the server, a scope, and any non-request dependencies of | |
| * the response effect or middleware. | |
| * | |
| * @category accessors | |
| * @since 4.0.0 | |
| */ | |
| <E, R, App extends Effect.Effect<HttpServerResponse, any, any>>(effect: Effect.Effect<HttpServerResponse, E, R>, middleware: Middleware.HttpMiddleware.Applied<App, E, R>): Layer.Layer<never, never, HttpServer | Exclude<Effect.Services<App>, HttpServerRequest | Scope.Scope>>; | |
| }; | |
| /** | |
| * Effect that starts serving an HTTP response effect with the current | |
| * `HttpServer`. | |
| * | |
| * **Details** | |
| * | |
| * The request service is supplied by the server for each request; the effect | |
| * requires a scope and any non-request dependencies of the response effect or | |
| * middleware. | |
| * | |
| * @category accessors | |
| * @since 4.0.0 | |
| */ | |
| export declare const serveEffect: { | |
| /** | |
| * Effect that starts serving an HTTP response effect with the current | |
| * `HttpServer`. | |
| * | |
| * **Details** | |
| * | |
| * The request service is supplied by the server for each request; the effect | |
| * requires a scope and any non-request dependencies of the response effect or | |
| * middleware. | |
| * | |
| * @category accessors | |
| * @since 4.0.0 | |
| */ | |
| (): <E, R>(effect: Effect.Effect<HttpServerResponse, E, R>) => Effect.Effect<void, never, Scope.Scope | HttpServer | Exclude<R, HttpServerRequest>>; | |
| /** | |
| * Effect that starts serving an HTTP response effect with the current | |
| * `HttpServer`. | |
| * | |
| * **Details** | |
| * | |
| * The request service is supplied by the server for each request; the effect | |
| * requires a scope and any non-request dependencies of the response effect or | |
| * middleware. | |
| * | |
| * @category accessors | |
| * @since 4.0.0 | |
| */ | |
| <E, R, App extends Effect.Effect<HttpServerResponse, any, any>>(middleware: Middleware.HttpMiddleware.Applied<App, E, R>): (effect: Effect.Effect<HttpServerResponse, E, R>) => Effect.Effect<void, never, Scope.Scope | HttpServer | Exclude<Effect.Services<App>, HttpServerRequest>>; | |
| /** | |
| * Effect that starts serving an HTTP response effect with the current | |
| * `HttpServer`. | |
| * | |
| * **Details** | |
| * | |
| * The request service is supplied by the server for each request; the effect | |
| * requires a scope and any non-request dependencies of the response effect or | |
| * middleware. | |
| * | |
| * @category accessors | |
| * @since 4.0.0 | |
| */ | |
| <E, R>(effect: Effect.Effect<HttpServerResponse, E, R>): Effect.Effect<void, never, Scope.Scope | HttpServer | Exclude<R, HttpServerRequest>>; | |
| /** | |
| * Effect that starts serving an HTTP response effect with the current | |
| * `HttpServer`. | |
| * | |
| * **Details** | |
| * | |
| * The request service is supplied by the server for each request; the effect | |
| * requires a scope and any non-request dependencies of the response effect or | |
| * middleware. | |
| * | |
| * @category accessors | |
| * @since 4.0.0 | |
| */ | |
| <E, R, App extends Effect.Effect<HttpServerResponse, any, any>>(effect: Effect.Effect<HttpServerResponse, E, R>, middleware: Middleware.HttpMiddleware.Applied<App, E, R>): Effect.Effect<void, never, Scope.Scope | HttpServer | Exclude<Effect.Services<App>, HttpServerRequest>>; | |
| }; | |
| /** | |
| * Formats a server address as a display string. | |
| * | |
| * **Details** | |
| * | |
| * TCP addresses are formatted as `http://host:port`; Unix socket addresses are | |
| * formatted as `unix://path`. | |
| * | |
| * @category address | |
| * @since 4.0.0 | |
| */ | |
| export declare const formatAddress: (address: Address) => string; | |
| /** | |
| * Reads the current server address, formats it with `formatAddress`, and passes | |
| * the formatted address to the supplied effectful function. | |
| * | |
| * @category address | |
| * @since 4.0.0 | |
| */ | |
| export declare const addressFormattedWith: <A, E, R>(f: (address: string) => Effect.Effect<A, E, R>) => Effect.Effect<A, E, HttpServer | R>; | |
| /** | |
| * Logs the formatted address of the current HTTP server. | |
| * | |
| * @category address | |
| * @since 4.0.0 | |
| */ | |
| export declare const logAddress: Effect.Effect<void, never, HttpServer>; | |
| /** | |
| * Adds address logging to a layer that provides an `HttpServer`. | |
| * | |
| * @category address | |
| * @since 4.0.0 | |
| */ | |
| export declare const withLogAddress: <A, E, R>(layer: Layer.Layer<A, E, R>) => Layer.Layer<A, E, R | Exclude<HttpServer, A>>; | |
| /** | |
| * Builds an `HttpClient` that sends requests to the current test HTTP server. | |
| * | |
| * **Details** | |
| * | |
| * For TCP servers, requests are prefixed with the server URL and `0.0.0.0` is | |
| * rewritten to `127.0.0.1`. | |
| * | |
| * **Gotchas** | |
| * | |
| * Unix socket addresses are not supported. | |
| * | |
| * @category testing | |
| * @since 4.0.0 | |
| */ | |
| export declare const makeTestClient: Effect.Effect<HttpClient.HttpClient, never, HttpServer | HttpClient.HttpClient>; | |
| /** | |
| * Layer that provides the test `HttpClient` created by `makeTestClient`. | |
| * | |
| * @category testing | |
| * @since 4.0.0 | |
| */ | |
| export declare const layerTestClient: Layer.Layer<HttpClient.HttpClient, never, HttpServer | HttpClient.HttpClient>; | |
| /** | |
| * Layer that provides the platform services commonly needed by HTTP | |
| * server tests. | |
| * | |
| * **Details** | |
| * | |
| * It includes `HttpPlatform`, `Path`, a weak ETag generator, and a no-op | |
| * `FileSystem`. | |
| * | |
| * @category testing | |
| * @since 4.0.0 | |
| */ | |
| export declare const layerServices: Layer.Layer<Path.Path | HttpPlatform.HttpPlatform | FileSystem.FileSystem | Etag.Generator>; | |
| export {}; | |
| //# sourceMappingURL=HttpServer.d.ts.map |
Xet Storage Details
- Size:
- 10.8 kB
- Xet hash:
- 7a593196777a919703ff0ac52c13b197f68735b233976a2237814be786ca47f5
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.