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)