class RequestError extends Data.TaggedError("RequestError")<{
cause: unknown
}> {}
class HttpClientConfig extends Effect.Tag("HttpClientConfig")<
HttpClientConfig,
{
readonly baseUrl: string
readonly headers: Record<string, string>
}
>() {}
class HttpClient extends Effect.Service<HttpClient>()("HttpClient", {
effect: Effect.gen(function* () {
const config = yield* HttpClientConfig
return {
config,
get(url: string): Effect.Effect<Response, RequestError> { ... },
post(url: string): Effect.Effect<Response, RequestError> { ... },
// ...other CRUD methods
}
})
})
class RequestError extends Data.TaggedError("RequestError")<{
cause: unknown
}> {}
class HttpClientConfig extends Effect.Tag("HttpClientConfig")<
HttpClientConfig,
{
readonly baseUrl: string
readonly headers: Record<string, string>
}
>() {}
class HttpClient extends Effect.Service<HttpClient>()("HttpClient", {
effect: Effect.gen(function* () {
const config = yield* HttpClientConfig
return {
config,
get(url: string): Effect.Effect<Response, RequestError> { ... },
post(url: string): Effect.Effect<Response, RequestError> { ... },
// ...other CRUD methods
}
})
})