)]}'
{
  "commit": "a7466a637f245390680d8b3835c95e82ed3221d5",
  "tree": "501dfc85423329593fcd1ea18ff1c72eeebe2069",
  "parents": [
    "cb14253aaa8638037d3b3f866715b443d9c07619"
  ],
  "author": {
    "name": "Nate Bosch",
    "email": "nbosch1@gmail.com",
    "time": "Mon Jul 10 13:38:43 2017 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Jul 10 13:38:43 2017 -0700"
  },
  "message": "Rewrite concat (dart-lang/stream_transform#32)\n\nUses sync forwarders for dart-lang/stream_transform#24\r\n\r\nThe simple implementation leaves out a lot of edge cases around\r\nsingle-subscription vs broadcast streams and how they combine. Rewrite\r\nto handle pause, resume, and cancel manually.\r\n\r\n- Loop over stream types in tests\r\n- Add test for onDone and canceling and relistening\r\n- Force _next to broadcast when first is broadcast\r\n- Document behavior of broadcast stream as second stream\r\n- Add tests for pause/resume\r\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d6bd7a9a078625ad712971b32f7f3c7a50c77191",
      "old_mode": 33188,
      "old_path": "pkgs/stream_transform/CHANGELOG.md",
      "new_id": "da8fd25a73e84252f25ec66ab9c37fb35abeb88a",
      "new_mode": 33188,
      "new_path": "pkgs/stream_transform/CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "0a2c27ad02a2f4b1dbc9541680abb18c3393e286",
      "old_mode": 33188,
      "old_path": "pkgs/stream_transform/lib/src/concat.dart",
      "new_id": "955918a8535e9aec02e82fb83bf70adc4ae793e2",
      "new_mode": 33188,
      "new_path": "pkgs/stream_transform/lib/src/concat.dart"
    },
    {
      "type": "modify",
      "old_id": "6cf041b8ef23048ab5d5c9ba2b3864eaf76b00f5",
      "old_mode": 33188,
      "old_path": "pkgs/stream_transform/test/concat_test.dart",
      "new_id": "37a46f7006a6d3618999d0c54fd8b650cd4e8658",
      "new_mode": 33188,
      "new_path": "pkgs/stream_transform/test/concat_test.dart"
    }
  ]
}
