reduce<C extends Object, P1 extends Object> static method

ChildPod<Object, C> reduce<C extends Object, P1 extends Object>(
  1. TResponderFn1<P1> responder,
  2. TNullableReducerFn1<C, P1> reducer
)

Reduces 1 Pod into a ChildPod. The user-supplied responder is invoked exactly once per refresh — its output is cached for the reducer call instead of being re-invoked, so side-effectful responders (e.g. DI lookups) do not run twice per parent fire.

Implementation

static ChildPod<Object, C> reduce<C extends Object, P1 extends Object>(
  TResponderFn1<P1> responder,
  TNullableReducerFn1<C, P1> reducer,
) {
  late (GenericPod<P1>,) cached;
  return ChildPod<Object, C>(
    responder: () {
      cached = responder();
      return [cached.$1];
    },
    reducer: (_) => reducer(cached.$1),
  );
}