def transforms

bend-kit-camber@0.15.0.1 · camber.bend:764

import bend-kit-camber@0.15.0.1/camber.bend as Camber
import Base
import bend-kit-http@0.38.1.1/http.bend as Http

764def transforms(~S: Type, ~K: Data, ~E: Data, ~H: Data,
765  ~hook: H -> S -> K -> Http.Res -> IO(S & Result<&2, &1, Error<E>, Http.Res>),
766  ~mapper: S -> K -> Error<E> -> IO(S & Result<&2, &1, Error<E>, Http.Res>),
767  hooks: List<&2, H>, +config: K, completion: Completion<S, H>
768) -> IO(Completion<S, H>):
769  match hooks:
770    case Nil{}:
771      IO.pure(Completion<S, H>, completion)
772    case h <> rest:
773      match completion:
774        case Completed{state, response, entered, mapped, True{}}:
775          IO.pure(Completion<S, H>, Completed{state, response, entered, mapped, True{}})
776        case Completed{state, response, +entered, +mapped, False{}}:
777          do IO<Completion<S, H>>:
778            changed : S & Result<&2, &1, Error<E>, Http.Res> <- hook(h, state, config, response)
779            next : Completion<S, H> <- transformed(~S, ~K, ~E, ~H, ~mapper, config, entered, mapped, changed)
780            transforms(~S, ~K, ~E, ~H, ~hook, ~mapper, rest, config, next)

Uses (11)

Used by (1)