1import * as Layer from "effect/Layer";
2import { ReadWriteSecret } from "./ReadWriteSecret.ts";
3import {
4 makeSecretAccessBinding,
5 readWriteSecretGrants,
6} from "./SecretHttp.ts";
7
8/**
9 * HTTP implementation of {@link ReadWriteSecret} over the Secret Manager REST API.
10 *
11 * @layer
12 * @provides GCP.SecretManager.ReadWriteSecret
13 * @category SecretManager
14 */
15export const ReadWriteSecretHttp = Layer.effect(
16 ReadWriteSecret,
17 makeSecretAccessBinding({
18 tag: "GCP.SecretManager.ReadWriteSecret",
19 grants: readWriteSecretGrants,
20 makeClient: (helpers, name) => ({
21 ...helpers.makeRead(name),
22 ...helpers.makeWrite(name),
23 }),
24 }),
25);