import { headers } from "next/headers"
import { AtomHttpApi } from "@effect-atom/atom-react"
import * as FetchHttpClient from "@effect/platform/FetchHttpClient"
import * as Effect from "effect/Effect"
import * as Layer from "effect/Layer"
import { DomainApi } from "@unio/domain/domain"
const ServerHttpClientLayer = Layer.unwrapEffect(
Effect.gen(function* () {
const headersManager = yield* Effect.promise(async () => await headers())
return Layer.succeed(FetchHttpClient.RequestInit, { headers: { ...Object.fromEntries(headersManager.entries()), "x-unio-server": "true" } })
})
)
export class ServerEffectAtomApiClient extends AtomHttpApi.Tag<ServerEffectAtomApiClient>()("ServerEffectAtomApiClient", {
api: DomainApi,
httpClient: FetchHttpClient.layer.pipe(Layer.merge(ServerHttpClientLayer)),
baseUrl: "http://localhost:3000",
}) {}
import { headers } from "next/headers"
import { AtomHttpApi } from "@effect-atom/atom-react"
import * as FetchHttpClient from "@effect/platform/FetchHttpClient"
import * as Effect from "effect/Effect"
import * as Layer from "effect/Layer"
import { DomainApi } from "@unio/domain/domain"
const ServerHttpClientLayer = Layer.unwrapEffect(
Effect.gen(function* () {
const headersManager = yield* Effect.promise(async () => await headers())
return Layer.succeed(FetchHttpClient.RequestInit, { headers: { ...Object.fromEntries(headersManager.entries()), "x-unio-server": "true" } })
})
)
export class ServerEffectAtomApiClient extends AtomHttpApi.Tag<ServerEffectAtomApiClient>()("ServerEffectAtomApiClient", {
api: DomainApi,
httpClient: FetchHttpClient.layer.pipe(Layer.merge(ServerHttpClientLayer)),
baseUrl: "http://localhost:3000",
}) {}