| 123456789101112131415161718192021222324252627282930313233 |
- import { NodeHttpServer, NodeServices } from "@effect/platform-node"
- import { Config, Layer } from "effect"
- import { HttpClient, HttpClientRequest, HttpRouter, HttpServer } from "effect/unstable/http"
- import { layerWebSocketConstructorGlobal } from "effect/unstable/socket/Socket"
- import { HttpApiApp } from "../../src/server/routes/instance/httpapi/server"
- const servedRoutes: Layer.Layer<never, Config.ConfigError, HttpServer.HttpServer> = HttpRouter.serve(
- HttpApiApp.routes,
- {
- disableListenLog: true,
- disableLogger: true,
- },
- )
- export const httpApiLayer = servedRoutes.pipe(
- Layer.provide(layerWebSocketConstructorGlobal),
- Layer.provideMerge(NodeHttpServer.layerTest),
- Layer.provideMerge(NodeServices.layer),
- )
- export function request(path: string, init?: RequestInit) {
- const url = new URL(path, "http://localhost")
- return HttpClientRequest.fromWeb(new Request(url, init)).pipe(
- HttpClientRequest.setUrl(url.pathname),
- HttpClient.execute,
- )
- }
- export function requestInDirectory(path: string, directory: string, init: RequestInit = {}) {
- const headers = new Headers(init.headers)
- headers.set("x-opencode-directory", directory)
- return request(path, { ...init, headers })
- }
|