@metreeca/flow - v0.10.0
    Preparing search index...

    Function max

    • Creates a sink selecting the greatest item of the feed.

      Items are ranked in source order, seeding the result with the first one; equally ranking items resolve to the first one in source order.

      An empty feed resolves to undefined; callers wanting a default supply it with ??. As ascending ranks null before any other value, a feed resolves to null only if it carries nothing else, unless the comparator states otherwise.

      Warning

      • Exhaustive: every item is drawn before the sink resolves, so an infinite feed never completes.
      • Streaming: no more than the greatest ranking item seen so far is held in memory, whatever the size of the feed.
      • Stateful: the outcome covers the items drawn, so a sink closing a nested or truncated feed sees those alone.
      Tip

      The order module of @metreeca/core provides helper functions for assembling complex ranking criteria.

      Type Parameters

      • V

        The type of items in the feed

      Parameters

      • comparator: (a: NoInfer<V>, b: NoInfer<V>) => number = ascending

        The function establishing the relative order of two items, defaulting to ascending, which ranks values in natural order, placing null first

      Returns Sink<V, V | undefined>

      A sink resolving to the greatest ranking item of the feed, or to undefined if the feed carried no items

      await pipe(
      (items([3, 1, 2]))
      (max())
      ); // 3

      await pipe(
      (items([{ age: 30 }, { age: 20 }]))
      (max(by(x => x.age)))
      ); // { age: 30 }

      await pipe(
      (items<number>([]))
      (max())
      ); // undefined