$select<T extends HypenGeneratedData, I, S> method

  1. @override
S $select<T extends HypenGeneratedData, I, S>(
  1. Object key,
  2. T build(), {
  3. required S select(
    1. I snapshot
    ),
  4. Stream<S> pipe(
    1. Stream<S> source
    )?,
  5. Object? actionKey,
})
override

Implementation

@override
S $select<T extends HypenGeneratedData, I, S>(
  Object key,
  T Function() build, {
  required S Function(I snapshot) select,
  Stream<S> Function(Stream<S> source)? pipe,
  Object? actionKey,
}) {
  assert(isBuilding, 'You can not use [select] on an async manner.');
  final info = $read(key, build, actionKey: actionKey);
  final stream = info.$stream as HypenStream<I>;
  final transform = pipe ?? (s) => s;
  final transformed = transform(
    stream.map(select),
  );
  return watchData(
    key,
    select(info.$snapshot() as I),
    transformed: transformed,
  );
}