mirror of
https://github.com/anomalyco/opencode.git
synced 2026-07-21 14:03:30 +00:00
33 lines
1.2 KiB
TypeScript
33 lines
1.2 KiB
TypeScript
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 })
|
|
}
|