)]}'
{
  "commit": "033f0175b43ee50523cd007d61a574aedf252258",
  "tree": "e15269a31596db523e338642d1aebfb676493472",
  "parents": [
    "03d6e8a33ac08e7b17eba071644a1917df62744d"
  ],
  "author": {
    "name": "Natalie Weizenbaum",
    "email": "nweiz@google.com",
    "time": "Thu Feb 25 15:53:27 2016 -0800"
  },
  "committer": {
    "name": "Natalie Weizenbaum",
    "email": "nweiz@google.com",
    "time": "Thu Feb 25 15:53:27 2016 -0800"
  },
  "message": "Copy the web socket stuff from http_parser.\n\nI\u0027m moving this to a separate package where it makes sense to also have\nimplementations of WebSocketChannel that wrap the dart:io and dart:html\nWebSocket classes. This will make it a lot easier for users to use\nlibraries (such as json_rpc_2) that require StreamChannels with\nwell-behaved socket channels.\n\nR\u003dkevmoo@google.com\n\nReview URL: https://codereview.chromium.org//1734773002 .\n",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9770fa195ea85ba54d9a79ef60b628fbed3dbfe1",
      "new_mode": 33188,
      "new_path": "pkgs/web_socket_channel/codereview.settings"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a8219a12e291c5878df2ceadc4e51fd950090973",
      "new_mode": 33188,
      "new_path": "pkgs/web_socket_channel/lib/src/channel.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "39d44fe6544fc89c6dee6e550067b967cb4828c7",
      "new_mode": 33188,
      "new_path": "pkgs/web_socket_channel/lib/src/copy/bytes_builder.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0578bdb03babbde31fdec30f9b96f6c8d4caea6e",
      "new_mode": 33188,
      "new_path": "pkgs/web_socket_channel/lib/src/copy/io_sink.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "53460baa3ea91b8e82a4ac140a992bf71ad825bf",
      "new_mode": 33188,
      "new_path": "pkgs/web_socket_channel/lib/src/copy/web_socket.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c10d8e8926694d5fbad0bbc9e01cbcb344874f4e",
      "new_mode": 33188,
      "new_path": "pkgs/web_socket_channel/lib/src/copy/web_socket_impl.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d06dc60e9db21eda7179cdcfeb77ff991b450890",
      "new_mode": 33188,
      "new_path": "pkgs/web_socket_channel/lib/src/exception.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "299604ce8acfecf04bcd34f51f39917afaeae5d8",
      "new_mode": 33188,
      "new_path": "pkgs/web_socket_channel/lib/web_socket_channel.dart"
    },
    {
      "type": "modify",
      "old_id": "1d45b6f5005434e2154b594e7f2b6d5741fe176b",
      "old_mode": 33188,
      "old_path": "pkgs/web_socket_channel/pubspec.yaml",
      "new_id": "c6ad187038080690fac60cacdd8d3aed7c9212df",
      "new_mode": 33188,
      "new_path": "pkgs/web_socket_channel/pubspec.yaml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a105b673ef84cf4c14b414015f3c8baa268484b0",
      "new_mode": 33188,
      "new_path": "pkgs/web_socket_channel/test/web_socket_test.dart"
    }
  ]
}
