## 2.1.1

- Require Dart 3.1 or greater
- Forward errors from the `trigger` future through to the result stream in
  `takeUntil`. Previously an error would have not closed the stream, and instead
  raised as an unhandled async error.
- Move to `dart-lang/tools` monorepo.

## 2.1.0

- Add `whereNotNull`.

## 2.0.1

- Require Dart 2.14 or greater.
- Wait for the future returned from `StreamSubscription.cancel()` before
  listening to the subsequent stream in `switchLatest` and `switchMap`.

## 2.0.0

- Migrate to null safety.
- Improve tests of `switchMap` and improve documentation with links and
  clarification.
- Add `trailing` argument to `throttle`.

## 1.2.0

-  Add support for emitting the "leading" event in `debounce`.

## 1.1.1

-   Fix a bug in `asyncMapSample`, `buffer`, `combineLatest`,
    `combineLatestAll`, `merge`, and `mergeAll` which would cause an exception
    when cancelling a subscription after using the transformer if the original
    stream(s) returned `null` from cancelling their subscriptions.

## 1.1.0

-   Add `concurrentAsyncExpand` to interleave events emitted by multiple sub
    streams created by a callback.

## 1.0.0

-   Remove the top level methods and retain the extensions only.

## 0.0.20

-   Add extension methods for most transformers. These should be used in place
    of the current methods. All current implementations are deprecated and will
    be removed in the next major version bump.
    -   Migrating typical use: Instead of
        `stream.transform(debounce(Duration(seconds: 1)))` use
        `stream.debounce(Duration(seconds: 1))`.
    -   To migrate a usage where a `StreamTransformer` instance is stored or
        passed see "Getting a StreamTransformer instance" on the README.
-   The `map` and `chainTransformers` utilities are no longer useful with the
    new patterns so they are deprecated without a replacement. If you still have
    a need for them they can be replicated with `StreamTransformer.fromBind`:

    ```
    // Replace `map(convert)`
    StreamTransformer.fromBind((s) => s.map(convert));

    // Replace `chainTransformers(first, second)`
    StreamTransformer.fromBind((s) => s.transform(first).transform(second));
    ```

## 0.0.19

- Add `asyncMapSample` transform.

## 0.0.18

- Internal cleanup. Passed "trigger" streams or futures now allow `<void>`
  generic type rather than an implicit `dynamic>`

## 0.0.17

- Add concrete types to the `onError` callback in `tap`.

## 0.0.16+1

- Remove usage of Set literal which is not available before Dart 2.2.0

## 0.0.16

- Allow a `combine` callback to return a `FutureOr<T>` in `scan`. There are no
  behavior changes for synchronous callbacks. **Potential breaking change** In
  the unlikely situation where `scan` was used to produce a `Stream<Future>`
  inference may now fail and require explicit generic type arguments.
- Add `combineLatest`.
- Add `combineLatestAll`.

## 0.0.15

- Add `whereType`.

## 0.0.14+1

- Allow using non-dev Dart 2 SDK.

## 0.0.14

- `asyncWhere` will now forward exceptions thrown by the callback through the
  result Stream.
- Added `concurrentAsyncMap`.

## 0.0.13

- `mergeAll` now accepts an `Iterable<Stream>` instead of only `List<Stream>`.

## 0.0.12

- Add `chainTransformers` and `map` for use cases where `StreamTransformer`
  instances are stored as variables or passed to methods other than `transform`.

## 0.0.11

- Renamed `concat` as `followedBy` to match the naming of `Iterable.followedBy`.
  `concat` is now deprecated.

## 0.0.10

- Updates to support Dart 2.0 core library changes (wave
  2.2). See [issue 31847][sdk#31847] for details.

  [sdk#31847]: https://github.com/dart-lang/sdk/issues/31847

## 0.0.9

- Add `asyncMapBuffer`.

## 0.0.8

- Add `takeUntil`.

## 0.0.7

- Bug Fix: Streams produced with `scan` and `switchMap` now correctly report
  `isBroadcast`.
- Add `startWith`, `startWithMany`, and `startWithStream`.

## 0.0.6

- Bug Fix: Some transformers did not correctly add data to all listeners on
  broadcast streams. Fixed for `throttle`, `debounce`, `asyncWhere` and `audit`.
- Bug Fix: Only call the `tap` data callback once per event rather than once per
  listener.
- Bug Fix: Allow canceling and re-listening to broadcast streams after a
  `merge` transform.
- Bug Fix: Broadcast streams which are buffered using a single-subscription
  trigger can be canceled and re-listened.
- Bug Fix: Buffer outputs one more value if there is a pending trigger before
  the trigger closes.
- Bug Fix: Single-subscription streams concatted after broadcast streams are
  handled correctly.
- Use sync `StreamControllers` for forwarding where possible.

## 0.0.5

- Bug Fix: Allow compiling switchLatest with Dart2Js.
- Add `asyncWhere`: Like `where` but allows an asynchronous predicate.

## 0.0.4
- Add `scan`: fold which returns intermediate values
- Add `throttle`: block events for a duration after emitting a value
- Add `audit`: emits the last event received after a duration

## 0.0.3

- Add `tap`: React to values as they pass without being a subscriber on a stream
- Add `switchMap` and `switchLatest`: Flatten a Stream of Streams into a Stream
  which forwards values from the most recent Stream

## 0.0.2

- Add `concat`: Appends streams in series
- Add `merge` and `mergeAll`: Interleaves streams

## 0.0.1

- Initial release with the following utilities:
  - `buffer`: Collects events in a `List` until a `trigger` stream fires.
  - `debounce`, `debounceBuffer`: Collect or drop events which occur closer in
    time than a given duration.
