)]}'
{
  "commit": "44ed28dfec9be17bfa711e96c73a7e66dd1aa921",
  "tree": "719a56958d16ae96a99cb5b4b1937e3f7bbaf1a7",
  "parents": [
    "085d39579f13f26083a0e4f6bc7944931452d763"
  ],
  "author": {
    "name": "Nate Bosch",
    "email": "nbosch@google.com",
    "time": "Wed Nov 27 11:34:02 2019 -0800"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Nov 27 11:34:02 2019 -0800"
  },
  "message": "Add concurrentAsyncExpand (dart-lang/stream_transform#90)\n\nCloses dart-lang/stream_transform#77\r\n\r\nAdded with the `Merge` extension, since the behavior is similar to\r\nmerging streams that are created lazily.\r\n\r\nAdds a private `StreamTransformer` to merge a `Stream\u003cStream\u003cT\u003e\u003e`. This\r\ncould be exposed separately as an extension on that type later.\r\n\r\nIn order to allow cancelling and then re-listening on broadcast streams,\r\nan sub stream which is single subscription must be converted to\r\nbroadcast. This can be risky since subscriptions can leak and cause the\r\ninner streams to never be canceled.\r\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "99d2786d2430c4025ceb583a33e797b1d5793832",
      "old_mode": 33188,
      "old_path": "pkgs/stream_transform/CHANGELOG.md",
      "new_id": "686f9192137ffb8325a3a826b5a8b879b5696a38",
      "new_mode": 33188,
      "new_path": "pkgs/stream_transform/CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "785adf1a973bbc9ce528742c6caef91f63d678f3",
      "old_mode": 33188,
      "old_path": "pkgs/stream_transform/README.md",
      "new_id": "56d114a7ce690009cd864c89fbf42d863f10f04d",
      "new_mode": 33188,
      "new_path": "pkgs/stream_transform/README.md"
    },
    {
      "type": "modify",
      "old_id": "bbcf7593424006312318f375b6efd3a337f0f0a4",
      "old_mode": 33188,
      "old_path": "pkgs/stream_transform/lib/src/merge.dart",
      "new_id": "5d2c8643f0682388dce41043da4e3a2dc858261f",
      "new_mode": 33188,
      "new_path": "pkgs/stream_transform/lib/src/merge.dart"
    },
    {
      "type": "modify",
      "old_id": "544235736fc5f3ce6af9c1d5b04a393645d1766e",
      "old_mode": 33188,
      "old_path": "pkgs/stream_transform/pubspec.yaml",
      "new_id": "2d2f59ae19a871e744b7a22e783a953e8b69a89b",
      "new_mode": 33188,
      "new_path": "pkgs/stream_transform/pubspec.yaml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f843c6fff7f8a923df1bbabe9d26ae79c14d9cbf",
      "new_mode": 33188,
      "new_path": "pkgs/stream_transform/test/concurrent_async_expand_test.dart"
    }
  ]
}
