()
| 52 | }) |
| 53 | |
| 54 | export function make(): Effect.Effect<Shape> { |
| 55 | return Effect.gen(function* () { |
| 56 | const ctx = yield* Effect.context() |
| 57 | const captured = captureSync() |
| 58 | const instance = (yield* InstanceRef) ?? captured.instance |
| 59 | const workspace = (yield* WorkspaceRef) ?? captured.workspace |
| 60 | const wrap = <A, E, R>(effect: Effect.Effect<A, E, R>) => |
| 61 | attachWith(effect.pipe(Effect.provide(ctx)) as Effect.Effect<A, E, never>, { instance, workspace }) |
| 62 | |
| 63 | return { |
| 64 | promise: <A, E, R>(effect: Effect.Effect<A, E, R>) => |
| 65 | restoreWorkspace(workspace, () => Effect.runPromise(wrap(effect))), |
| 66 | fork: <A, E, R>(effect: Effect.Effect<A, E, R>) => |
| 67 | restoreWorkspace(workspace, () => Effect.runFork(wrap(effect))), |
| 68 | run: <A, E, R>(effect: Effect.Effect<A, E, R>) => |
| 69 | Effect.callback<A, E>((resume) => { |
| 70 | restoreWorkspace(workspace, () => |
| 71 | Effect.runPromiseExit(wrap(effect)).then((exit) => |
| 72 | resume(Exit.isSuccess(exit) ? Effect.succeed(exit.value) : Effect.failCause(exit.cause)), |
| 73 | ), |
| 74 | ) |
| 75 | }), |
| 76 | bind: |
| 77 | <Args extends readonly unknown[], Result>(fn: (...args: Args) => Result) => |
| 78 | (...args: Args) => |
| 79 | restoreWorkspace(workspace, () => Effect.runSync(wrap(Effect.sync(() => fn(...args))))), |
| 80 | } satisfies Shape |
| 81 | }) |
| 82 | } |
| 83 | |
| 84 | export * as EffectBridge from "./bridge" |
nothing calls this directly
no test coverage detected