| Index: lib/src/stream_sink_transformer.dart
|
| diff --git a/lib/src/stream_sink_transformer.dart b/lib/src/stream_sink_transformer.dart
|
| index 6cde04a7f2b663f9da98a2d0db4ab3bccdef538e..d40bc4b76d84427dad35b3646a535af47b9e3203 100644
|
| --- a/lib/src/stream_sink_transformer.dart
|
| +++ b/lib/src/stream_sink_transformer.dart
|
| @@ -6,6 +6,7 @@ import 'dart:async';
|
|
|
| import 'stream_sink_transformer/handler_transformer.dart';
|
| import 'stream_sink_transformer/stream_transformer_wrapper.dart';
|
| +import 'stream_sink_transformer/typed.dart';
|
|
|
| /// A [StreamSinkTransformer] transforms the events being passed to a sink.
|
| ///
|
| @@ -45,4 +46,17 @@ abstract class StreamSinkTransformer<S, T> {
|
| /// Creates a new sink. When events are passed to the returned sink, it will
|
| /// transform them and pass the transformed versions to [sink].
|
| StreamSink<S> bind(StreamSink<T> sink);
|
| +
|
| + /// Creates a wrapper that coerces the type of [transformer].
|
| + ///
|
| + /// This soundly converts a [StreamSinkTransformer] to a
|
| + /// `StreamSinkTransformer<S, T>`, regardless of its original generic type.
|
| + /// This means that calls to [StreamSink.add] on the returned sink may throw a
|
| + /// [CastError] if the argument type doesn't match the reified type of the
|
| + /// sink.
|
| + static StreamSinkTransformer/*<S, T>*/ typed/*<S, T>*/(
|
| + StreamSinkTransformer transformer) =>
|
| + transformer is StreamSinkTransformer/*<S, T>*/
|
| + ? transformer
|
| + : new TypeSafeStreamSinkTransformer(transformer);
|
| }
|
|
|