import { Effect, Layer, ManagedRuntime } from "effect" import * as ServiceMap from "effect/ServiceMap" export const memoMap = Layer.makeMemoMapUnsafe() export function makeRunPromise(service: ServiceMap.Service, layer: Layer.Layer) { let rt: ManagedRuntime.ManagedRuntime | undefined return (fn: (svc: S) => Effect.Effect, options?: Effect.RunOptions) => { rt ??= ManagedRuntime.make(layer, { memoMap }) return rt.runPromise(service.use(fn), options) } }