import * as Context from "effect/Context"; import * as Effect from "effect/Effect"; export class RemovalPolicy extends Context.Service< RemovalPolicy, "retain" | "destroy" >()("RemovalPolicy") {} export const retain: { ( enabled?: boolean, ): ( enabled: Effect.Effect, ) => Effect.Effect; ( enabled: Effect.Effect, ): ( a: Effect.Effect, ) => Effect.Effect; } = ((enabled: boolean | Effect.Effect) => (eff: Effect.Effect) => eff.pipe( typeof enabled === "boolean" ? Effect.provideService(RemovalPolicy, enabled ? "retain" : "destroy") : Effect.provideServiceEffect( RemovalPolicy, enabled.pipe(Effect.map((a) => (a ? "retain" : "destroy"))), ), )) as any; export const destroy: { ( enabled?: boolean, ): ( enabled: Effect.Effect, ) => Effect.Effect; ( enabled: Effect.Effect, ): ( a: Effect.Effect, ) => Effect.Effect; } = ((enabled: boolean | Effect.Effect) => (eff: Effect.Effect) => eff.pipe( typeof enabled === "boolean" ? Effect.provideService(RemovalPolicy, enabled ? "destroy" : "retain") : Effect.provideServiceEffect( RemovalPolicy, enabled.pipe(Effect.map((a) => (a ? "destroy" : "retain"))), ), )) as any;