(service: Context.Service<I, S>, layer: Layer.Layer<I, E>)
| 3 | import { Observability } from "../observability" |
| 4 | |
| 5 | export function makeRuntime<I, S, E>(service: Context.Service<I, S>, layer: Layer.Layer<I, E>) { |
| 6 | let rt: ManagedRuntime.ManagedRuntime<I, E> | undefined |
| 7 | const getRuntime = () => |
| 8 | (rt ??= ManagedRuntime.make(Layer.provideMerge(layer, Observability.layer) as Layer.Layer<I, E>, { |
| 9 | memoMap, |
| 10 | })) |
| 11 | |
| 12 | return { |
| 13 | runSync: <A, Err>(fn: (svc: S) => Effect.Effect<A, Err, I>) => getRuntime().runSync(service.use(fn)), |
| 14 | runPromiseExit: <A, Err>(fn: (svc: S) => Effect.Effect<A, Err, I>, options?: Effect.RunOptions) => |
| 15 | getRuntime().runPromiseExit(service.use(fn), options), |
| 16 | runPromise: <A, Err>(fn: (svc: S) => Effect.Effect<A, Err, I>, options?: Effect.RunOptions) => |
| 17 | getRuntime().runPromise(service.use(fn), options), |
| 18 | runFork: <A, Err>(fn: (svc: S) => Effect.Effect<A, Err, I>) => getRuntime().runFork(service.use(fn)), |
| 19 | runCallback: <A, Err>(fn: (svc: S) => Effect.Effect<A, Err, I>) => getRuntime().runCallback(service.use(fn)), |
| 20 | } |
| 21 | } |
no test coverage detected