Skip to content

NodeHttpServer

7 exports Added in v1.0.0 Source

Constructors

make

Added in v1.0.0 Source

Signature

declare const make: (
  evaluate: LazyArg<Http.Server<typeof Http.IncomingMessage, typeof Http.ServerResponse>>,
  options: Net.ListenOptions,
) => Effect.Effect<Server.HttpServer, ServeError, Scope.Scope>;

makeHandler

Added in v1.0.0 Source

Signature

declare const makeHandler: {
  <R, E>(
    httpApp: Default<E, R>,
  ): Effect<(nodeRequest: IncomingMessage, nodeResponse: ServerResponse) => void, never, any>;
  <R, E, App extends Default<any, any>>(
    httpApp: Default<E, R>,
    middleware: Applied<App, E, R>,
  ): Effect<(nodeRequest: IncomingMessage, nodeResponse: ServerResponse) => void, never, any>;
};

Layers

layer

Added in v1.0.0 Source

Signature

declare const layer: (
  evaluate: LazyArg<Http.Server<typeof Http.IncomingMessage, typeof Http.ServerResponse>>,
  options: Net.ListenOptions,
) => Layer.Layer<
  Platform.HttpPlatform | Etag.Generator | NodeContext.NodeContext | Server.HttpServer,
  ServeError
>;

layerConfig

Added in v1.0.0 Source

Signature

declare const layerConfig: (
  evaluate: LazyArg<Http.Server<typeof Http.IncomingMessage, typeof Http.ServerResponse>>,
  options: Config.Config.Wrap<Net.ListenOptions>,
) => Layer.Layer<
  Platform.HttpPlatform | Etag.Generator | NodeContext.NodeContext | Server.HttpServer,
  ConfigError.ConfigError | ServeError
>;

layerContext

Added in v1.0.0 Source

A Layer providing the HttpPlatform, FileSystem, Etag.Generator, and Path services.

The FileSystem service is a no-op implementation, so this layer is only useful for platforms that have no file system.

Signature

declare const layerContext: Layer.Layer<
  Platform.HttpPlatform | Etag.Generator | NodeContext.NodeContext
>;

layerServer

Added in v1.0.0 Source

Signature

declare const layerServer: (
  evaluate: LazyArg<Http.Server>,
  options: Net.ListenOptions,
) => Layer.Layer<Server.HttpServer, ServeError>;

layerTest

Added in v1.0.0 Source

Layer starting a server on a random port and producing an HttpClient with prepended url of the running http server.

Signature

declare const layerTest: Layer.Layer<
  | HttpClient.HttpClient
  | Server.HttpServer
  | Platform.HttpPlatform
  | Etag.Generator
  | NodeContext.NodeContext,
  ServeError
>;

Example

import * as assert from "node:assert"
import { HttpClient, HttpRouter, HttpServer } from "@effect/platform"
import { NodeHttpServer } from "@effect/platform-node"
import { Effect } from "effect"

Effect.gen(function* () {
  yield* HttpServer.serveEffect(HttpRouter.empty)
  const response = yield* HttpClient.get("/")
  assert.strictEqual(response.status, 404)
}).pipe(Effect.provide(NodeHttpServer.layerTest))