{"action":"created","comment":{"url":"https://api.github.com/repos/devtools-html/debugger.html/pulls/comments/183297289","pull_request_review_id":114267484,"id":183297289,"diff_hunk":"@@ -85,4 +86,622 @@ describe(\"SourcesTree\", () => {\n       expect(component).toMatchSnapshot();\n     });\n   });\n+\n+  describe(\"on receiving new props\", () => {\n+    let component;\n+    let props;\n+    let currState;\n+\n+    beforeEach(() => {\n+      const rendered = render({});\n+      component = rendered.component;\n+      props = rendered.props;\n+      currState = component.state();\n+    });\n+\n+    describe(\"recreates tree\", () => {\n+      it(\"does not recreate tree if no new source is added\", async () => {\n+        props.sources = sourceThree;\n+\n+        await component.setProps({\n+          ...props\n+        });\n+\n+        expect(component.state(\"uncollapsedTree\")).toEqual(\n+          currState.uncollapsedTree\n+        );\n+      });\n+\n+      it(\"updates tree with a new item\", async () => {\n+        props.sources = props.sources.merge({\n+          \"server1.conn13.child1/42\": createMockSource(\n+            \"server1.conn13.child1/42\",\n+            \"http://mdn.com/four.js\"\n+          )\n+        });\n+\n+        await component.setProps({\n+          ...props\n+        });\n+\n+        expect(\n+          component.state(\"uncollapsedTree\").contents[0].contents\n+        ).toHaveLength(4);\n+      });\n+\n+      it(\"updates sources if sources are emptied\", async () => {\n+        props.sources = I.Map({});\n+\n+        expect(currState.uncollapsedTree.contents).toHaveLength(1);\n+\n+        await component.setProps({\n+          ...props\n+        });\n+\n+        expect(component.state(\"uncollapsedTree\").contents).toHaveLength(0);\n+      });\n+\n+      it(\"recreates tree if projectRoot is changed\", async () => {\n+        props.sources = I.Map({\n+          \"server1.conn13.child1/41\": createMockSource(\n+            \"server1.conn13.child1/41\",\n+            \"http://mozilla.com/three.js\"\n+          )\n+        });\n+        props.projectRoot = \"mozilla\";\n+\n+        expect(currState.uncollapsedTree.contents[0].contents).toHaveLength(3);\n+\n+        await component.setProps({\n+          ...props\n+        });\n+\n+        expect(\n+          component.state(\"uncollapsedTree\").contents[0].contents\n+        ).toHaveLength(1);\n+      });\n+\n+      it(\"recreates tree if debugeeUrl is changed\", async () => {\n+        props.sources = sourceThree;\n+        props.debuggeeUrl = \"mozilla\";\n+\n+        expect(currState.uncollapsedTree.contents[0].contents).toHaveLength(3);\n+\n+        await component.setProps({\n+          ...props\n+        });\n+\n+        expect(\n+          component.state(\"uncollapsedTree\").contents[0].contents\n+        ).toHaveLength(1);\n+      });\n+    });\n+\n+    describe(\"updates list items\", () => {\n+      beforeEach(() => {\n+        props.selectLocation.mockClear();\n+      });\n+\n+      it(\"updates list items if shownSource changes\", async () => {\n+        props.shownSource = \"http://mdn.com/three.js\";\n+        await component.setProps({\n+          ...props\n+        });\n+        expect(component).toMatchSnapshot();\n+        expect(props.selectLocation).toHaveBeenCalledWith({\n+          sourceId: \"server1.conn13.child1/41\"\n+        });\n+      });\n+    });\n+\n+    describe(\"updates highlighted items\", () => {\n+      it(\"updates highlightItems if selectedSource changes\", async () => {\n+        props.selectedSource = sourceThree;\n+        await component.setProps({\n+          ...props\n+        });\n+        expect(component).toMatchSnapshot();\n+      });\n+    });\n+  });\n+\n+  describe(\"focusItem\", () => {\n+    it(\"update the focused item\", async () => {\n+      const { component } = render({});\n+\n+      expect(component.state(\"focusedItem\")).toEqual(null);\n+\n+      await component.instance().focusItem(itemOne);\n+\n+      expect(component.state(\"focusedItem\")).toEqual(itemOne);\n+    });\n+  });\n+\n+  describe(\"with custom root\", () => {\n+    const { component, props } = render({\n+      projectRoot: \"mdn\",\n+      clearProjectDirectoryRoot: jest.fn()\n+    });\n+\n+    afterEach(() => {\n+      props.clearProjectDirectoryRoot.mockClear();\n+    });\n+\n+    it(\"renders custom root source list\", async () => {\n+      expect(component).toMatchSnapshot();\n+    });\n+\n+    it(\"renders empty custom root source list\", async () => {\n+      const emptyComponent = render({\n+        projectRoot: \"custom\",\n+        sources: I.Map()\n+      }).component;\n+      expect(emptyComponent).toMatchSnapshot();\n+    });\n+\n+    it(\"calls clearProjectDirectoryRoot on click\", async () => {\n+      component.find(\".sources-clear-root\").simulate(\"click\");\n+      expect(props.clearProjectDirectoryRoot).toHaveBeenCalled();\n+    });\n+  });\n+\n+  describe(\"onContextMenu\", () => {\n+    let component;\n+    let props;\n+\n+    const event = {\n+      preventDefault: jest.fn(),\n+      stopPropagation: jest.fn()\n+    };\n+\n+    const directory = {\n+      contents: new Map(),\n+      name: \"folder\",\n+      path: \"folder/\"\n+    };\n+\n+    const file = {\n+      contents: new Map(),\n+      name: \"file\",\n+      path: \"folder/file.js\"\n+    };\n+\n+    const rootDirectory = {\n+      contents: new Map(),\n+      name: \"root\",\n+      path: \"root/\"\n+    };\n+\n+    beforeEach(() => {\n+      const rendered = render({\n+        clearProjectDirectoryRoot: jest.fn(),\n+        setProjectDirectoryRoot: jest.fn(),\n+        projectRoot: \"root/\"\n+      });\n+      component = rendered.component;\n+      props = rendered.props;\n+    });\n+\n+    afterEach(() => {\n+      showMenu.mockClear();\n+      event.preventDefault.mockClear();\n+      event.stopPropagation.mockClear();\n+    });\n+\n+    it(\"shows context menu on directory to set as root\", async () => {\n+      const menuOptions = [\n+        {\n+          accesskey: \"r\",\n+          click: expect.any(Function),\n+          disabled: false,\n+          id: \"node-set-directory-root\",\n+          label: \"Set directory root\"\n+        }\n+      ];\n+      await component.instance().onContextMenu(event, directory);\n+      expect(showMenu).toHaveBeenCalledWith(event, menuOptions);\n+\n+      expect(event.preventDefault).toHaveBeenCalled();\n+      expect(event.stopPropagation).toHaveBeenCalled();\n+\n+      showMenu.mock.calls[0][1][0].click();\n+      expect(props.setProjectDirectoryRoot).toHaveBeenCalled();\n+      expect(props.clearProjectDirectoryRoot).not.toHaveBeenCalled();\n+      expect(copyToTheClipboard).not.toHaveBeenCalled();\n+    });\n+\n+    it(\"shows context menu on file to copy source uri\", async () => {\n+      const menuOptions = [\n+        {\n+          accesskey: \"u\",\n+          click: expect.any(Function),\n+          disabled: false,\n+          id: \"node-menu-copy-source\",\n+          label: \"Copy source URI\"\n+        }\n+      ];\n+      await component.instance().onContextMenu(event, file);\n+      expect(showMenu).toHaveBeenCalledWith(event, menuOptions);\n+\n+      expect(event.preventDefault).toHaveBeenCalled();\n+      expect(event.stopPropagation).toHaveBeenCalled();\n+\n+      showMenu.mock.calls[0][1][0].click();\n+      expect(props.setProjectDirectoryRoot).not.toHaveBeenCalled();\n+      expect(props.clearProjectDirectoryRoot).not.toHaveBeenCalled();\n+      expect(copyToTheClipboard).toHaveBeenCalled();\n+    });\n+\n+    it(\"shows context menu on root to remove directory root\", async () => {\n+      const menuOptions = [\n+        {\n+          click: expect.any(Function),\n+          disabled: false,\n+          id: \"node-remove-directory-root\",\n+          label: \"Remove directory root\"\n+        }\n+      ];\n+      await component.instance().onContextMenu(event, rootDirectory);\n+      expect(showMenu).toHaveBeenCalledWith(event, menuOptions);\n+\n+      expect(event.preventDefault).toHaveBeenCalled();\n+      expect(event.stopPropagation).toHaveBeenCalled();\n+\n+      showMenu.mock.calls[0][1][0].click();\n+      expect(props.setProjectDirectoryRoot).not.toHaveBeenCalled();\n+      expect(props.clearProjectDirectoryRoot).toHaveBeenCalled();\n+      expect(copyToTheClipboard).not.toHaveBeenCalled();\n+    });\n+  });\n+\n+  describe(\"renderItem\", () => {\n+    const { component, props } = render();\n+\n+    it(\"should show icon for webpack item\", async () => {\n+      const item = createMockItem(\"webpack://\", \"webpack://\");\n+      const node = component\n+        .instance()\n+        .renderItem(item, 1, false, null, false, { setExpanded: jest.fn() });\n+      expect(node).toMatchSnapshot();\n+    });\n+\n+    it(\"should show icon for angular item\", async () => {\n+      const item = createMockItem(\"ng://\", \"ng://\");\n+      const node = component\n+        .instance()\n+        .renderItem(item, 1, false, null, false, { setExpanded: jest.fn() });\n+      expect(node).toMatchSnapshot();\n+    });\n+\n+    it(\"should show icon for moz-extension item\", async () => {\n+      const item = createMockItem(\"moz-extension://\", \"moz-extension://\");\n+      const node = component\n+        .instance()\n+        .renderItem(item, 1, false, null, false, { setExpanded: jest.fn() });\n+      expect(node).toMatchSnapshot();\n+    });\n+\n+    it(\"should show icon for folder with arrow\", async () => {\n+      const item = createMockItem(\"folder\", \"folder\", []);\n+      const node = component\n+        .instance()\n+        .renderItem(item, 1, false, null, false, { setExpanded: jest.fn() });\n+      expect(node).toMatchSnapshot();\n+    });\n+\n+    it(\"should show icon for folder with expanded arrow\", async () => {\n+      const item = createMockItem(\"folder\", \"folder\", []);\n+      const node = component\n+        .instance()\n+        .renderItem(item, 1, false, null, true, { setExpanded: jest.fn() });\n+      expect(node).toMatchSnapshot();\n+    });\n+\n+    it(\"should show focused item for folder with expanded arrow\", async () => {\n+      const item = createMockItem(\"folder\", \"folder\", []);\n+      const node = component\n+        .instance()\n+        .renderItem(item, 1, true, null, true, { setExpanded: jest.fn() });\n+      expect(node).toMatchSnapshot();\n+    });\n+\n+    it(\"should show source item with source icon\", async () => {\n+      const node = component\n+        .instance()\n+        .renderItem(itemOne, 1, false, null, false, { setExpanded: jest.fn() });\n+      expect(node).toMatchSnapshot();\n+    });\n+\n+    it(\"should show source item with source icon with focus\", async () => {\n+      const node = component\n+        .instance()\n+        .renderItem(itemOne, 1, true, null, false, { setExpanded: jest.fn() });\n+      expect(node).toMatchSnapshot();\n+    });\n+\n+    it(\"should show domain item\", async () => {\n+      const item = createMockItem(\"root\", \"root\");\n+      const node = component\n+        .instance()\n+        .renderItem(item, 0, false, null, false, { setExpanded: jest.fn() });\n+      expect(node).toMatchSnapshot();\n+    });\n+\n+    it(\"should show domain item as debuggee\", async () => {\n+      const item = createMockItem(\"root\", \"http://mdn.com\");\n+      const node = component\n+        .instance()\n+        .renderItem(item, 0, false, null, false, { setExpanded: jest.fn() });\n+      expect(node).toMatchSnapshot();\n+    });\n+\n+    it(\"should show domain item as debuggee with focus and arrow\", async () => {\n+      const item = createMockItem(\"root\", \"http://mdn.com\", []);\n+      const node = component\n+        .instance()\n+        .renderItem(item, 0, true, null, false, { setExpanded: jest.fn() });\n+      expect(node).toMatchSnapshot();\n+    });\n+\n+    it(\n+      \"should not show domain item if projectRoot is not empty \" +\n+        \"even if depth is 0\",\n+      async () => {\n+        const componentWithRoot = render({\n+          projectRoot: \"project-root\"\n+        }).component;\n+\n+        const node = componentWithRoot\n+          .instance()\n+          .renderItem(itemOne, 0, false, null, false, {\n+            setExpanded: jest.fn()\n+          });\n+        expect(node).toMatchSnapshot();","path":"src/components/tests/SourcesTree.spec.js","position":471,"original_position":471,"commit_id":"3006feecffcc0fda3757d79158d8f031ec83fd3a","original_commit_id":"3006feecffcc0fda3757d79158d8f031ec83fd3a","user":{"login":"jasonLaster","id":254562,"avatar_url":"https://avatars1.githubusercontent.com/u/254562?v=4","gravatar_id":"","url":"https://api.github.com/users/jasonLaster","html_url":"https://github.com/jasonLaster","followers_url":"https://api.github.com/users/jasonLaster/followers","following_url":"https://api.github.com/users/jasonLaster/following{/other_user}","gists_url":"https://api.github.com/users/jasonLaster/gists{/gist_id}","starred_url":"https://api.github.com/users/jasonLaster/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jasonLaster/subscriptions","organizations_url":"https://api.github.com/users/jasonLaster/orgs","repos_url":"https://api.github.com/users/jasonLaster/repos","events_url":"https://api.github.com/users/jasonLaster/events{/privacy}","received_events_url":"https://api.github.com/users/jasonLaster/received_events","type":"User","site_admin":false},"body":"it might be nice to replace some of the match snapshots with element tests like: exists or has classes:\nhttps://github.com/airbnb/enzyme/blob/master/docs/api/selector.md\n\n","created_at":"2018-04-23T07:27:50Z","updated_at":"2018-04-23T07:27:50Z","html_url":"https://github.com/devtools-html/debugger.html/pull/6057#discussion_r183297289","pull_request_url":"https://api.github.com/repos/devtools-html/debugger.html/pulls/6057","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/devtools-html/debugger.html/pulls/comments/183297289"},"html":{"href":"https://github.com/devtools-html/debugger.html/pull/6057#discussion_r183297289"},"pull_request":{"href":"https://api.github.com/repos/devtools-html/debugger.html/pulls/6057"}}},"pull_request":{"url":"https://api.github.com/repos/devtools-html/debugger.html/pulls/6057","id":183289559,"html_url":"https://github.com/devtools-html/debugger.html/pull/6057","diff_url":"https://github.com/devtools-html/debugger.html/pull/6057.diff","patch_url":"https://github.com/devtools-html/debugger.html/pull/6057.patch","issue_url":"https://api.github.com/repos/devtools-html/debugger.html/issues/6057","number":6057,"state":"open","locked":false,"title":"[Sources] increase test coverage for source tree","user":{"login":"mutdmour","id":4711238,"avatar_url":"https://avatars3.githubusercontent.com/u/4711238?v=4","gravatar_id":"","url":"https://api.github.com/users/mutdmour","html_url":"https://github.com/mutdmour","followers_url":"https://api.github.com/users/mutdmour/followers","following_url":"https://api.github.com/users/mutdmour/following{/other_user}","gists_url":"https://api.github.com/users/mutdmour/gists{/gist_id}","starred_url":"https://api.github.com/users/mutdmour/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mutdmour/subscriptions","organizations_url":"https://api.github.com/users/mutdmour/orgs","repos_url":"https://api.github.com/users/mutdmour/repos","events_url":"https://api.github.com/users/mutdmour/events{/privacy}","received_events_url":"https://api.github.com/users/mutdmour/received_events","type":"User","site_admin":false},"body":"Fixes Issue: #5100\r\n\r\nHere's the Pull Request Doc\r\nhttps://devtools-html.github.io/debugger.html/CONTRIBUTING.html#pull-requests\r\n\r\n### Summary of Changes\r\n\r\n* increase coverage for source tree\r\n`  SourcesTree.js                              |    98.11 |    98.72 |       92 |      100 |               124 |`\r\n* could not get that last line 💩\r\n","created_at":"2018-04-22T19:25:41Z","updated_at":"2018-04-23T07:27:50Z","closed_at":null,"merged_at":null,"merge_commit_sha":"b04f8e1d697911ed9cc7518c784e6b09e54976cd","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/devtools-html/debugger.html/pulls/6057/commits","review_comments_url":"https://api.github.com/repos/devtools-html/debugger.html/pulls/6057/comments","review_comment_url":"https://api.github.com/repos/devtools-html/debugger.html/pulls/comments{/number}","comments_url":"https://api.github.com/repos/devtools-html/debugger.html/issues/6057/comments","statuses_url":"https://api.github.com/repos/devtools-html/debugger.html/statuses/3006feecffcc0fda3757d79158d8f031ec83fd3a","head":{"label":"mutdmour:5100-test-source-tree","ref":"5100-test-source-tree","sha":"3006feecffcc0fda3757d79158d8f031ec83fd3a","user":{"login":"mutdmour","id":4711238,"avatar_url":"https://avatars3.githubusercontent.com/u/4711238?v=4","gravatar_id":"","url":"https://api.github.com/users/mutdmour","html_url":"https://github.com/mutdmour","followers_url":"https://api.github.com/users/mutdmour/followers","following_url":"https://api.github.com/users/mutdmour/following{/other_user}","gists_url":"https://api.github.com/users/mutdmour/gists{/gist_id}","starred_url":"https://api.github.com/users/mutdmour/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mutdmour/subscriptions","organizations_url":"https://api.github.com/users/mutdmour/orgs","repos_url":"https://api.github.com/users/mutdmour/repos","events_url":"https://api.github.com/users/mutdmour/events{/privacy}","received_events_url":"https://api.github.com/users/mutdmour/received_events","type":"User","site_admin":false},"repo":{"id":128822226,"name":"debugger.html","full_name":"mutdmour/debugger.html","owner":{"login":"mutdmour","id":4711238,"avatar_url":"https://avatars3.githubusercontent.com/u/4711238?v=4","gravatar_id":"","url":"https://api.github.com/users/mutdmour","html_url":"https://github.com/mutdmour","followers_url":"https://api.github.com/users/mutdmour/followers","following_url":"https://api.github.com/users/mutdmour/following{/other_user}","gists_url":"https://api.github.com/users/mutdmour/gists{/gist_id}","starred_url":"https://api.github.com/users/mutdmour/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mutdmour/subscriptions","organizations_url":"https://api.github.com/users/mutdmour/orgs","repos_url":"https://api.github.com/users/mutdmour/repos","events_url":"https://api.github.com/users/mutdmour/events{/privacy}","received_events_url":"https://api.github.com/users/mutdmour/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/mutdmour/debugger.html","description":"The Firefox debugger that works anywhere  :boom:","fork":true,"url":"https://api.github.com/repos/mutdmour/debugger.html","forks_url":"https://api.github.com/repos/mutdmour/debugger.html/forks","keys_url":"https://api.github.com/repos/mutdmour/debugger.html/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mutdmour/debugger.html/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mutdmour/debugger.html/teams","hooks_url":"https://api.github.com/repos/mutdmour/debugger.html/hooks","issue_events_url":"https://api.github.com/repos/mutdmour/debugger.html/issues/events{/number}","events_url":"https://api.github.com/repos/mutdmour/debugger.html/events","assignees_url":"https://api.github.com/repos/mutdmour/debugger.html/assignees{/user}","branches_url":"https://api.github.com/repos/mutdmour/debugger.html/branches{/branch}","tags_url":"https://api.github.com/repos/mutdmour/debugger.html/tags","blobs_url":"https://api.github.com/repos/mutdmour/debugger.html/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mutdmour/debugger.html/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mutdmour/debugger.html/git/refs{/sha}","trees_url":"https://api.github.com/repos/mutdmour/debugger.html/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mutdmour/debugger.html/statuses/{sha}","languages_url":"https://api.github.com/repos/mutdmour/debugger.html/languages","stargazers_url":"https://api.github.com/repos/mutdmour/debugger.html/stargazers","contributors_url":"https://api.github.com/repos/mutdmour/debugger.html/contributors","subscribers_url":"https://api.github.com/repos/mutdmour/debugger.html/subscribers","subscription_url":"https://api.github.com/repos/mutdmour/debugger.html/subscription","commits_url":"https://api.github.com/repos/mutdmour/debugger.html/commits{/sha}","git_commits_url":"https://api.github.com/repos/mutdmour/debugger.html/git/commits{/sha}","comments_url":"https://api.github.com/repos/mutdmour/debugger.html/comments{/number}","issue_comment_url":"https://api.github.com/repos/mutdmour/debugger.html/issues/comments{/number}","contents_url":"https://api.github.com/repos/mutdmour/debugger.html/contents/{+path}","compare_url":"https://api.github.com/repos/mutdmour/debugger.html/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mutdmour/debugger.html/merges","archive_url":"https://api.github.com/repos/mutdmour/debugger.html/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mutdmour/debugger.html/downloads","issues_url":"https://api.github.com/repos/mutdmour/debugger.html/issues{/number}","pulls_url":"https://api.github.com/repos/mutdmour/debugger.html/pulls{/number}","milestones_url":"https://api.github.com/repos/mutdmour/debugger.html/milestones{/number}","notifications_url":"https://api.github.com/repos/mutdmour/debugger.html/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mutdmour/debugger.html/labels{/name}","releases_url":"https://api.github.com/repos/mutdmour/debugger.html/releases{/id}","deployments_url":"https://api.github.com/repos/mutdmour/debugger.html/deployments","created_at":"2018-04-09T19:19:01Z","updated_at":"2018-04-09T19:19:05Z","pushed_at":"2018-04-22T19:54:33Z","git_url":"git://github.com/mutdmour/debugger.html.git","ssh_url":"git@github.com:mutdmour/debugger.html.git","clone_url":"https://github.com/mutdmour/debugger.html.git","svn_url":"https://github.com/mutdmour/debugger.html","homepage":"https://devtools-html.github.io/debugger.html/","size":21366,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"mpl-2.0","name":"Mozilla Public License 2.0","spdx_id":"MPL-2.0","url":"https://api.github.com/licenses/mpl-2.0"},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"devtools-html:master","ref":"master","sha":"3bbc0912682a4d63458f30ded02c8f82b3887859","user":{"login":"devtools-html","id":19979421,"avatar_url":"https://avatars2.githubusercontent.com/u/19979421?v=4","gravatar_id":"","url":"https://api.github.com/users/devtools-html","html_url":"https://github.com/devtools-html","followers_url":"https://api.github.com/users/devtools-html/followers","following_url":"https://api.github.com/users/devtools-html/following{/other_user}","gists_url":"https://api.github.com/users/devtools-html/gists{/gist_id}","starred_url":"https://api.github.com/users/devtools-html/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/devtools-html/subscriptions","organizations_url":"https://api.github.com/users/devtools-html/orgs","repos_url":"https://api.github.com/users/devtools-html/repos","events_url":"https://api.github.com/users/devtools-html/events{/privacy}","received_events_url":"https://api.github.com/users/devtools-html/received_events","type":"Organization","site_admin":false},"repo":{"id":54585418,"name":"debugger.html","full_name":"devtools-html/debugger.html","owner":{"login":"devtools-html","id":19979421,"avatar_url":"https://avatars2.githubusercontent.com/u/19979421?v=4","gravatar_id":"","url":"https://api.github.com/users/devtools-html","html_url":"https://github.com/devtools-html","followers_url":"https://api.github.com/users/devtools-html/followers","following_url":"https://api.github.com/users/devtools-html/following{/other_user}","gists_url":"https://api.github.com/users/devtools-html/gists{/gist_id}","starred_url":"https://api.github.com/users/devtools-html/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/devtools-html/subscriptions","organizations_url":"https://api.github.com/users/devtools-html/orgs","repos_url":"https://api.github.com/users/devtools-html/repos","events_url":"https://api.github.com/users/devtools-html/events{/privacy}","received_events_url":"https://api.github.com/users/devtools-html/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/devtools-html/debugger.html","description":"The Firefox debugger that works anywhere  :boom:","fork":false,"url":"https://api.github.com/repos/devtools-html/debugger.html","forks_url":"https://api.github.com/repos/devtools-html/debugger.html/forks","keys_url":"https://api.github.com/repos/devtools-html/debugger.html/keys{/key_id}","collaborators_url":"https://api.github.com/repos/devtools-html/debugger.html/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/devtools-html/debugger.html/teams","hooks_url":"https://api.github.com/repos/devtools-html/debugger.html/hooks","issue_events_url":"https://api.github.com/repos/devtools-html/debugger.html/issues/events{/number}","events_url":"https://api.github.com/repos/devtools-html/debugger.html/events","assignees_url":"https://api.github.com/repos/devtools-html/debugger.html/assignees{/user}","branches_url":"https://api.github.com/repos/devtools-html/debugger.html/branches{/branch}","tags_url":"https://api.github.com/repos/devtools-html/debugger.html/tags","blobs_url":"https://api.github.com/repos/devtools-html/debugger.html/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/devtools-html/debugger.html/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/devtools-html/debugger.html/git/refs{/sha}","trees_url":"https://api.github.com/repos/devtools-html/debugger.html/git/trees{/sha}","statuses_url":"https://api.github.com/repos/devtools-html/debugger.html/statuses/{sha}","languages_url":"https://api.github.com/repos/devtools-html/debugger.html/languages","stargazers_url":"https://api.github.com/repos/devtools-html/debugger.html/stargazers","contributors_url":"https://api.github.com/repos/devtools-html/debugger.html/contributors","subscribers_url":"https://api.github.com/repos/devtools-html/debugger.html/subscribers","subscription_url":"https://api.github.com/repos/devtools-html/debugger.html/subscription","commits_url":"https://api.github.com/repos/devtools-html/debugger.html/commits{/sha}","git_commits_url":"https://api.github.com/repos/devtools-html/debugger.html/git/commits{/sha}","comments_url":"https://api.github.com/repos/devtools-html/debugger.html/comments{/number}","issue_comment_url":"https://api.github.com/repos/devtools-html/debugger.html/issues/comments{/number}","contents_url":"https://api.github.com/repos/devtools-html/debugger.html/contents/{+path}","compare_url":"https://api.github.com/repos/devtools-html/debugger.html/compare/{base}...{head}","merges_url":"https://api.github.com/repos/devtools-html/debugger.html/merges","archive_url":"https://api.github.com/repos/devtools-html/debugger.html/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/devtools-html/debugger.html/downloads","issues_url":"https://api.github.com/repos/devtools-html/debugger.html/issues{/number}","pulls_url":"https://api.github.com/repos/devtools-html/debugger.html/pulls{/number}","milestones_url":"https://api.github.com/repos/devtools-html/debugger.html/milestones{/number}","notifications_url":"https://api.github.com/repos/devtools-html/debugger.html/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/devtools-html/debugger.html/labels{/name}","releases_url":"https://api.github.com/repos/devtools-html/debugger.html/releases{/id}","deployments_url":"https://api.github.com/repos/devtools-html/debugger.html/deployments","created_at":"2016-03-23T18:55:36Z","updated_at":"2018-04-22T16:41:14Z","pushed_at":"2018-04-23T02:46:50Z","git_url":"git://github.com/devtools-html/debugger.html.git","ssh_url":"git@github.com:devtools-html/debugger.html.git","clone_url":"https://github.com/devtools-html/debugger.html.git","svn_url":"https://github.com/devtools-html/debugger.html","homepage":"https://devtools-html.github.io/debugger.html/","size":21661,"stargazers_count":3701,"watchers_count":3701,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":608,"mirror_url":null,"archived":false,"open_issues_count":190,"license":{"key":"mpl-2.0","name":"Mozilla Public License 2.0","spdx_id":"MPL-2.0","url":"https://api.github.com/licenses/mpl-2.0"},"forks":608,"open_issues":190,"watchers":3701,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/devtools-html/debugger.html/pulls/6057"},"html":{"href":"https://github.com/devtools-html/debugger.html/pull/6057"},"issue":{"href":"https://api.github.com/repos/devtools-html/debugger.html/issues/6057"},"comments":{"href":"https://api.github.com/repos/devtools-html/debugger.html/issues/6057/comments"},"review_comments":{"href":"https://api.github.com/repos/devtools-html/debugger.html/pulls/6057/comments"},"review_comment":{"href":"https://api.github.com/repos/devtools-html/debugger.html/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/devtools-html/debugger.html/pulls/6057/commits"},"statuses":{"href":"https://api.github.com/repos/devtools-html/debugger.html/statuses/3006feecffcc0fda3757d79158d8f031ec83fd3a"}},"author_association":"NONE"}}
{"actor":{"display_login":"jasonLaster"}}