(
f: (
upstream: Pull.Pull<InElem, InErr, InDone>,
scope: Scope.Scope,
forkedScope: Scope.Scope
) => Effect.Effect<Pull.Pull<OutElem, OutErr, OutDone, EnvX>, EX, Env>
)
| 397 | * @since 4.0.0 |
| 398 | */ |
| 399 | export const fromTransformBracket = <OutElem, OutErr, OutDone, InElem, InErr, InDone, EX, EnvX, Env>( |
| 400 | f: ( |
| 401 | upstream: Pull.Pull<InElem, InErr, InDone>, |
| 402 | scope: Scope.Scope, |
| 403 | forkedScope: Scope.Scope |
| 404 | ) => Effect.Effect<Pull.Pull<OutElem, OutErr, OutDone, EnvX>, EX, Env> |
| 405 | ): Channel<OutElem, Pull.ExcludeDone<OutErr> | EX, OutDone, InElem, InErr, InDone, Env | EnvX> => |
| 406 | fromTransform( |
| 407 | Effect.fnUntraced(function*(upstream, scope) { |
| 408 | const closableScope = Scope.forkUnsafe(scope) |
| 409 | const onCause = (cause: Cause.Cause<EX | OutErr | Cause.Done<OutDone>>) => |
| 410 | Scope.close(closableScope, Pull.doneExitFromCause(cause)) |
| 411 | const pull = yield* Effect.onError( |
| 412 | f(upstream, scope, closableScope), |
| 413 | onCause |
| 414 | ) |
| 415 | return Effect.onError(pull, onCause) |
| 416 | }) |
| 417 | ) |
| 418 | |
| 419 | /** |
| 420 | * Converts a `Channel` back to its underlying transformation function. |
no test coverage detected