// Copyright (c) 2017, Google Inc. Please see the AUTHORS file for details.
// All rights reserved. Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

import 'dart:async';

import 'package:built_value/serializer.dart';

/// Deserializer for `BuiltList` that runs asynchronously.
///
/// If you need to deserialize large payloads without blocking, arrange that
/// the top level serialized object is a `BuiltList`. Then use this class to
/// deserialize to a [Stream] of objects.
class BuiltListAsyncDeserializer {
  Stream<Object> deserialize(Serializers serializers, Iterable serialized,
      {FullType specifiedType = FullType.unspecified}) async* {
    final elementType = specifiedType.parameters.isEmpty
        ? FullType.unspecified
        : specifiedType.parameters[0];

    for (final item in serialized) {
      yield serializers.deserialize(item, specifiedType: elementType);
    }
  }
}
