import * as AtomHttpApi from "effect/unstable/reactivity/AtomHttpApi";import { FetchHttpClient, HttpClient, HttpClientRequest } from "effect/unstable/http";import * as Effect from "effect/Effect";import { reportApiClientInfrastructureCause } from "@executor-js/react/api/client";import { getExecutorApiBaseUrl, getExecutorServerAuthorizationHeader,} from "@executor-js/react/api/server-connection";import { AdminHttpApi } from "../src/admin/api";// ---------------------------------------------------------------------------// Self-host admin atom client — the invite-code surface (/api/admin/*).//// Same construction as the shared AccountApiClient (base-url prepend +// same-origin session cookie / optional bearer), but for the app-local admin// HttpApi. Self-host only: cloud has no invite codes.// ---------------------------------------------------------------------------const AdminApiClient = AtomHttpApi.Service<"SelfHostAdminApiClient">()("SelfHostAdminApiClient", { api: AdminHttpApi, httpClient: FetchHttpClient.layer, transformClient: HttpClient.mapRequest((request) => { let next = HttpClientRequest.prependUrl(request, getExecutorApiBaseUrl()); const authorization = getExecutorServerAuthorizationHeader(); if (authorization) { next = HttpClientRequest.setHeader(next, "authorization", authorization); } return next; }), transformResponse: (effect) => Effect.tapCause(effect, reportApiClientInfrastructureCause),});export { AdminApiClient };
import * as AtomHttpApi from "effect/unstable/reactivity/AtomHttpApi";
import { FetchHttpClient, HttpClient, HttpClientRequest } from "effect/unstable/http";
import * as Effect from "effect/Effect";
import { reportApiClientInfrastructureCause } from "@executor-js/react/api/client";
import {
getExecutorApiBaseUrl,
getExecutorServerAuthorizationHeader,
} from "@executor-js/react/api/server-connection";
import { AdminHttpApi } from "../src/admin/api";
// ---------------------------------------------------------------------------
// Self-host admin atom client — the invite-code surface (/api/admin/*).
//
// Same construction as the shared AccountApiClient (base-url prepend +
// same-origin session cookie / optional bearer), but for the app-local admin
// HttpApi. Self-host only: cloud has no invite codes.
// ---------------------------------------------------------------------------
const AdminApiClient = AtomHttpApi.Service<"SelfHostAdminApiClient">()("SelfHostAdminApiClient", {
api: AdminHttpApi,
httpClient: FetchHttpClient.layer,
transformClient: HttpClient.mapRequest((request) => {
let next = HttpClientRequest.prependUrl(request, getExecutorApiBaseUrl());
const authorization = getExecutorServerAuthorizationHeader();
if (authorization) {
next = HttpClientRequest.setHeader(next, "authorization", authorization);
}
return next;
}),
transformResponse: (effect) => Effect.tapCause(effect, reportApiClientInfrastructureCause),
});
export { AdminApiClient };