1import * as Effect from "effect/Effect";
2import * as Layer from "effect/Layer";
3import {
4 makeOpenSearchDataPlaneBinding,
5 makeReadDomainClient,
6 makeWriteDomainClient,
7} from "./DataPlaneHttp.ts";
8import type { ReadWriteDomainClient } from "./DomainReadWrite.ts";
9import { DomainReadWrite } from "./DomainReadWrite.ts";
10
11export const DomainReadWriteHttp = Layer.effect(
12 DomainReadWrite,
13 makeOpenSearchDataPlaneBinding({
14 name: "DomainReadWrite",
15 iamActions: ["es:ESHttp*"],
16 makeClient: (send): ReadWriteDomainClient => ({
17 ...makeReadDomainClient(send),
18 ...makeWriteDomainClient(send),
19 request: (method, path, options) =>
20 send({
21 method,
22 path,
23 query: options?.query,
24 json: options?.body,
25 }).pipe(Effect.map(({ body }) => body)),
26 }),
27 }),
28);