{"action":"created","comment":{"url":"https://api.github.com/repos/Microsoft/TypeScript/pulls/comments/66686704","id":66686704,"diff_hunk":"@@ -2,856 +2,551 @@\n \r\n /* @internal */\r\n namespace ts.NavigationBar {\r\n-    export function getNavigationBarItems(sourceFile: SourceFile, compilerOptions: CompilerOptions): ts.NavigationBarItem[]  {\r\n-        // TODO: Handle JS files differently in 'navbar' calls for now, but ideally we should unify\r\n-        // the 'navbar' and 'navto' logic for TypeScript and JavaScript.\r\n-        if (isSourceFileJavaScript(sourceFile)) {\r\n-            return getJsNavigationBarItems(sourceFile, compilerOptions);\r\n-        }\r\n-\r\n-        return getItemsWorker(getTopLevelNodes(sourceFile), createTopLevelItem);\r\n-\r\n-        function getIndent(node: Node): number {\r\n-            let indent = 1; // Global node is the only one with indent 0.\r\n-\r\n-            let current = node.parent;\r\n-            while (current) {\r\n-                switch (current.kind) {\r\n-                    case SyntaxKind.ModuleDeclaration:\r\n-                        // If we have a module declared as A.B.C, it is more \"intuitive\"\r\n-                        // to say it only has a single layer of depth\r\n-                        do {\r\n-                            current = current.parent;\r\n-                        }\r\n-                        while (current.kind === SyntaxKind.ModuleDeclaration);\r\n-\r\n-                        // fall through\r\n-                    case SyntaxKind.ClassDeclaration:\r\n-                    case SyntaxKind.EnumDeclaration:\r\n-                    case SyntaxKind.InterfaceDeclaration:\r\n-                    case SyntaxKind.FunctionDeclaration:\r\n-                        indent++;\r\n-                }\r\n-\r\n-                current = current.parent;\r\n-            }\r\n-\r\n-            return indent;\r\n-        }\r\n-\r\n-        function getChildNodes(nodes: Node[]): Node[] {\r\n-            const childNodes: Node[] = [];\r\n-\r\n-            function visit(node: Node) {\r\n-                switch (node.kind) {\r\n-                    case SyntaxKind.VariableStatement:\r\n-                        forEach((<VariableStatement>node).declarationList.declarations, visit);\r\n-                        break;\r\n-                    case SyntaxKind.ObjectBindingPattern:\r\n-                    case SyntaxKind.ArrayBindingPattern:\r\n-                        forEach((<BindingPattern>node).elements, visit);\r\n-                        break;\r\n-\r\n-                    case SyntaxKind.ExportDeclaration:\r\n-                        // Handle named exports case e.g.:\r\n-                        //    export {a, b as B} from \"mod\";\r\n-                        if ((<ExportDeclaration>node).exportClause) {\r\n-                            forEach((<ExportDeclaration>node).exportClause.elements, visit);\r\n-                        }\r\n-                        break;\r\n-\r\n-                    case SyntaxKind.ImportDeclaration:\r\n-                        let importClause = (<ImportDeclaration>node).importClause;\r\n-                        if (importClause) {\r\n-                            // Handle default import case e.g.:\r\n-                            //    import d from \"mod\";\r\n-                            if (importClause.name) {\r\n-                                childNodes.push(importClause);\r\n-                            }\r\n-\r\n-                            // Handle named bindings in imports e.g.:\r\n-                            //    import * as NS from \"mod\";\r\n-                            //    import {a, b as B} from \"mod\";\r\n-                            if (importClause.namedBindings) {\r\n-                                if (importClause.namedBindings.kind === SyntaxKind.NamespaceImport) {\r\n-                                    childNodes.push(importClause.namedBindings);\r\n-                                }\r\n-                                else {\r\n-                                    forEach((<NamedImports>importClause.namedBindings).elements, visit);\r\n-                                }\r\n-                            }\r\n-                        }\r\n-                        break;\r\n-\r\n-                    case SyntaxKind.BindingElement:\r\n-                    case SyntaxKind.VariableDeclaration:\r\n-                        if (isBindingPattern((<VariableDeclaration>node).name)) {\r\n-                            visit((<VariableDeclaration>node).name);\r\n-                            break;\r\n-                        }\r\n-                        // Fall through\r\n-                    case SyntaxKind.ClassDeclaration:\r\n-                    case SyntaxKind.EnumDeclaration:\r\n-                    case SyntaxKind.InterfaceDeclaration:\r\n-                    case SyntaxKind.ModuleDeclaration:\r\n-                    case SyntaxKind.FunctionDeclaration:\r\n-                    case SyntaxKind.ImportEqualsDeclaration:\r\n-                    case SyntaxKind.ImportSpecifier:\r\n-                    case SyntaxKind.ExportSpecifier:\r\n-                    case SyntaxKind.TypeAliasDeclaration:\r\n-                        childNodes.push(node);\r\n-                        break;\r\n-                }\r\n-            }\r\n-\r\n-            // for (let i = 0, n = nodes.length; i < n; i++) {\r\n-            //    let node = nodes[i];\r\n-\r\n-            //    if (node.kind === SyntaxKind.ClassDeclaration ||\r\n-            //        node.kind === SyntaxKind.EnumDeclaration ||\r\n-            //        node.kind === SyntaxKind.InterfaceDeclaration ||\r\n-            //        node.kind === SyntaxKind.ModuleDeclaration ||\r\n-            //        node.kind === SyntaxKind.FunctionDeclaration) {\r\n-\r\n-            //        childNodes.push(node);\r\n-            //    }\r\n-            //    else if (node.kind === SyntaxKind.VariableStatement) {\r\n-            //        childNodes.push.apply(childNodes, (<VariableStatement>node).declarations);\r\n-            //    }\r\n-            // }\r\n-            forEach(nodes, visit);\r\n-            return sortNodes(childNodes);\r\n-        }\r\n-\r\n-        function getTopLevelNodes(node: SourceFile): Node[] {\r\n-            const topLevelNodes: Node[] = [];\r\n-            topLevelNodes.push(node);\r\n-\r\n-            addTopLevelNodes(node.statements, topLevelNodes);\r\n-\r\n-            return topLevelNodes;\r\n-        }\r\n+    export function getNavigationBarItems(sourceFile: SourceFile): NavigationBarItem[] {\r\n+        const root = createNavNode(undefined, sourceFile);\r\n+        return map(topLevelItems(root), convertToTopLevelItem);\r\n+    }\r\n \r\n-        function sortNodes(nodes: Node[]): Node[] {\r\n-            return nodes.slice(0).sort((n1: Declaration, n2: Declaration) => {\r\n-                if (n1.name && n2.name) {\r\n-                    return localeCompareFix(getPropertyNameForPropertyNameNode(n1.name), getPropertyNameForPropertyNameNode(n2.name));\r\n-                }\r\n-                else if (n1.name) {\r\n-                    return 1;\r\n-                }\r\n-                else if (n2.name) {\r\n-                    return -1;\r\n-                }\r\n-                else {\r\n-                    return n1.kind - n2.kind;\r\n-                }\r\n-            });\r\n+    /**\r\n+     * Represents a navBar item and its children.\r\n+     * The returned NavigationBarItem is more complicated and doesn't include 'parent', so we use these to do work before converting.\r\n+     */\r\n+    interface NavNode {\r\n+        node: Node;\r\n+        additionalNodes?: Node[];\r\n+        parent?: NavNode; // Missing for root decl\r\n+        children: NavNode[];\r\n+        indent: number; // # of parents\r\n+    }\r\n+    function navKind(n: NavNode): SyntaxKind {\r\n+        return n.node.kind;\r\n+    }\r\n+    function navModifiers(n: NavNode): string {\r\n+        return getNodeModifiers(n.node);\r\n+    }\r\n \r\n-            // node 0.10 treats \"a\" as greater than \"B\".\r\n-            // For consistency, sort alphabetically, falling back to which is lower-case.\r\n-            function localeCompareFix(a: string, b: string) {\r\n-                const cmp = a.toLowerCase().localeCompare(b.toLowerCase());\r\n-                if (cmp !== 0)\r\n-                    return cmp;\r\n-                // Return the *opposite* of the `<` operator, which works the same in node 0.10 and 6.0.\r\n-                return a < b ? 1 : a > b ? -1 : 0;\r\n-            }\r\n+    /** Creates a child node and adds it to parent. */\r\n+    function createNavNode(parent: NavNode, node: Node): NavNode {\r\n+        const navNode: NavNode = {\r\n+            node,\r\n+            additionalNodes: undefined,\r","path":"src/services/navigationBar.ts","position":184,"original_position":184,"commit_id":"1c9e64b0f2ce20517ea82047e9f82c011ca268e1","original_commit_id":"1c9e64b0f2ce20517ea82047e9f82c011ca268e1","user":{"login":"mhegazy","id":8000722,"avatar_url":"https://avatars.githubusercontent.com/u/8000722?v=3","gravatar_id":"","url":"https://api.github.com/users/mhegazy","html_url":"https://github.com/mhegazy","followers_url":"https://api.github.com/users/mhegazy/followers","following_url":"https://api.github.com/users/mhegazy/following{/other_user}","gists_url":"https://api.github.com/users/mhegazy/gists{/gist_id}","starred_url":"https://api.github.com/users/mhegazy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mhegazy/subscriptions","organizations_url":"https://api.github.com/users/mhegazy/orgs","repos_url":"https://api.github.com/users/mhegazy/repos","events_url":"https://api.github.com/users/mhegazy/events{/privacy}","received_events_url":"https://api.github.com/users/mhegazy/received_events","type":"User","site_admin":false},"body":"probably will have better perf","created_at":"2016-06-10T21:57:36Z","updated_at":"2016-06-10T21:57:36Z","html_url":"https://github.com/Microsoft/TypeScript/pull/8958#discussion_r66686704","pull_request_url":"https://api.github.com/repos/Microsoft/TypeScript/pulls/8958","_links":{"self":{"href":"https://api.github.com/repos/Microsoft/TypeScript/pulls/comments/66686704"},"html":{"href":"https://github.com/Microsoft/TypeScript/pull/8958#discussion_r66686704"},"pull_request":{"href":"https://api.github.com/repos/Microsoft/TypeScript/pulls/8958"}}},"pull_request":{"url":"https://api.github.com/repos/Microsoft/TypeScript/pulls/8958","id":72525375,"html_url":"https://github.com/Microsoft/TypeScript/pull/8958","diff_url":"https://github.com/Microsoft/TypeScript/pull/8958.diff","patch_url":"https://github.com/Microsoft/TypeScript/pull/8958.patch","issue_url":"https://api.github.com/repos/Microsoft/TypeScript/issues/8958","number":8958,"state":"open","locked":false,"title":"Refactor navigation bar","user":{"login":"andy-ms","id":19274678,"avatar_url":"https://avatars.githubusercontent.com/u/19274678?v=3","gravatar_id":"","url":"https://api.github.com/users/andy-ms","html_url":"https://github.com/andy-ms","followers_url":"https://api.github.com/users/andy-ms/followers","following_url":"https://api.github.com/users/andy-ms/following{/other_user}","gists_url":"https://api.github.com/users/andy-ms/gists{/gist_id}","starred_url":"https://api.github.com/users/andy-ms/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/andy-ms/subscriptions","organizations_url":"https://api.github.com/users/andy-ms/orgs","repos_url":"https://api.github.com/users/andy-ms/repos","events_url":"https://api.github.com/users/andy-ms/events{/privacy}","received_events_url":"https://api.github.com/users/andy-ms/received_events","type":"User","site_admin":false},"body":"Fixes #8779, #5258, #4191, and #8218.\r\n\r\nGets us closer to #7523 (combines TS and JS code paths for navigation bar).\r\n","created_at":"2016-06-03T15:27:26Z","updated_at":"2016-06-10T21:57:36Z","closed_at":null,"merged_at":null,"merge_commit_sha":"d5a03c6be81d032da254a64860061936b284cf4d","assignee":{"login":"weswigham","id":2932786,"avatar_url":"https://avatars.githubusercontent.com/u/2932786?v=3","gravatar_id":"","url":"https://api.github.com/users/weswigham","html_url":"https://github.com/weswigham","followers_url":"https://api.github.com/users/weswigham/followers","following_url":"https://api.github.com/users/weswigham/following{/other_user}","gists_url":"https://api.github.com/users/weswigham/gists{/gist_id}","starred_url":"https://api.github.com/users/weswigham/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/weswigham/subscriptions","organizations_url":"https://api.github.com/users/weswigham/orgs","repos_url":"https://api.github.com/users/weswigham/repos","events_url":"https://api.github.com/users/weswigham/events{/privacy}","received_events_url":"https://api.github.com/users/weswigham/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/Microsoft/TypeScript/pulls/8958/commits","review_comments_url":"https://api.github.com/repos/Microsoft/TypeScript/pulls/8958/comments","review_comment_url":"https://api.github.com/repos/Microsoft/TypeScript/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Microsoft/TypeScript/issues/8958/comments","statuses_url":"https://api.github.com/repos/Microsoft/TypeScript/statuses/1c9e64b0f2ce20517ea82047e9f82c011ca268e1","head":{"label":"Microsoft:navbar_refactor_2.0","ref":"navbar_refactor_2.0","sha":"1c9e64b0f2ce20517ea82047e9f82c011ca268e1","user":{"login":"Microsoft","id":6154722,"avatar_url":"https://avatars.githubusercontent.com/u/6154722?v=3","gravatar_id":"","url":"https://api.github.com/users/Microsoft","html_url":"https://github.com/Microsoft","followers_url":"https://api.github.com/users/Microsoft/followers","following_url":"https://api.github.com/users/Microsoft/following{/other_user}","gists_url":"https://api.github.com/users/Microsoft/gists{/gist_id}","starred_url":"https://api.github.com/users/Microsoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Microsoft/subscriptions","organizations_url":"https://api.github.com/users/Microsoft/orgs","repos_url":"https://api.github.com/users/Microsoft/repos","events_url":"https://api.github.com/users/Microsoft/events{/privacy}","received_events_url":"https://api.github.com/users/Microsoft/received_events","type":"Organization","site_admin":false},"repo":{"id":20929025,"name":"TypeScript","full_name":"Microsoft/TypeScript","owner":{"login":"Microsoft","id":6154722,"avatar_url":"https://avatars.githubusercontent.com/u/6154722?v=3","gravatar_id":"","url":"https://api.github.com/users/Microsoft","html_url":"https://github.com/Microsoft","followers_url":"https://api.github.com/users/Microsoft/followers","following_url":"https://api.github.com/users/Microsoft/following{/other_user}","gists_url":"https://api.github.com/users/Microsoft/gists{/gist_id}","starred_url":"https://api.github.com/users/Microsoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Microsoft/subscriptions","organizations_url":"https://api.github.com/users/Microsoft/orgs","repos_url":"https://api.github.com/users/Microsoft/repos","events_url":"https://api.github.com/users/Microsoft/events{/privacy}","received_events_url":"https://api.github.com/users/Microsoft/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Microsoft/TypeScript","description":"TypeScript is a superset of JavaScript that compiles to clean JavaScript output.","fork":false,"url":"https://api.github.com/repos/Microsoft/TypeScript","forks_url":"https://api.github.com/repos/Microsoft/TypeScript/forks","keys_url":"https://api.github.com/repos/Microsoft/TypeScript/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Microsoft/TypeScript/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Microsoft/TypeScript/teams","hooks_url":"https://api.github.com/repos/Microsoft/TypeScript/hooks","issue_events_url":"https://api.github.com/repos/Microsoft/TypeScript/issues/events{/number}","events_url":"https://api.github.com/repos/Microsoft/TypeScript/events","assignees_url":"https://api.github.com/repos/Microsoft/TypeScript/assignees{/user}","branches_url":"https://api.github.com/repos/Microsoft/TypeScript/branches{/branch}","tags_url":"https://api.github.com/repos/Microsoft/TypeScript/tags","blobs_url":"https://api.github.com/repos/Microsoft/TypeScript/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Microsoft/TypeScript/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Microsoft/TypeScript/git/refs{/sha}","trees_url":"https://api.github.com/repos/Microsoft/TypeScript/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Microsoft/TypeScript/statuses/{sha}","languages_url":"https://api.github.com/repos/Microsoft/TypeScript/languages","stargazers_url":"https://api.github.com/repos/Microsoft/TypeScript/stargazers","contributors_url":"https://api.github.com/repos/Microsoft/TypeScript/contributors","subscribers_url":"https://api.github.com/repos/Microsoft/TypeScript/subscribers","subscription_url":"https://api.github.com/repos/Microsoft/TypeScript/subscription","commits_url":"https://api.github.com/repos/Microsoft/TypeScript/commits{/sha}","git_commits_url":"https://api.github.com/repos/Microsoft/TypeScript/git/commits{/sha}","comments_url":"https://api.github.com/repos/Microsoft/TypeScript/comments{/number}","issue_comment_url":"https://api.github.com/repos/Microsoft/TypeScript/issues/comments{/number}","contents_url":"https://api.github.com/repos/Microsoft/TypeScript/contents/{+path}","compare_url":"https://api.github.com/repos/Microsoft/TypeScript/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Microsoft/TypeScript/merges","archive_url":"https://api.github.com/repos/Microsoft/TypeScript/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Microsoft/TypeScript/downloads","issues_url":"https://api.github.com/repos/Microsoft/TypeScript/issues{/number}","pulls_url":"https://api.github.com/repos/Microsoft/TypeScript/pulls{/number}","milestones_url":"https://api.github.com/repos/Microsoft/TypeScript/milestones{/number}","notifications_url":"https://api.github.com/repos/Microsoft/TypeScript/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Microsoft/TypeScript/labels{/name}","releases_url":"https://api.github.com/repos/Microsoft/TypeScript/releases{/id}","deployments_url":"https://api.github.com/repos/Microsoft/TypeScript/deployments","created_at":"2014-06-17T15:28:39Z","updated_at":"2016-06-10T21:16:22Z","pushed_at":"2016-06-10T21:54:24Z","git_url":"git://github.com/Microsoft/TypeScript.git","ssh_url":"git@github.com:Microsoft/TypeScript.git","clone_url":"https://github.com/Microsoft/TypeScript.git","svn_url":"https://github.com/Microsoft/TypeScript","homepage":"http://www.typescriptlang.org","size":514184,"stargazers_count":12175,"watchers_count":12175,"language":"TypeScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":1595,"mirror_url":null,"open_issues_count":943,"forks":1595,"open_issues":943,"watchers":12175,"default_branch":"master"}},"base":{"label":"Microsoft:master","ref":"master","sha":"3aaa4ea8337c77a25ea3aa292e3f65d1d7bd61f7","user":{"login":"Microsoft","id":6154722,"avatar_url":"https://avatars.githubusercontent.com/u/6154722?v=3","gravatar_id":"","url":"https://api.github.com/users/Microsoft","html_url":"https://github.com/Microsoft","followers_url":"https://api.github.com/users/Microsoft/followers","following_url":"https://api.github.com/users/Microsoft/following{/other_user}","gists_url":"https://api.github.com/users/Microsoft/gists{/gist_id}","starred_url":"https://api.github.com/users/Microsoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Microsoft/subscriptions","organizations_url":"https://api.github.com/users/Microsoft/orgs","repos_url":"https://api.github.com/users/Microsoft/repos","events_url":"https://api.github.com/users/Microsoft/events{/privacy}","received_events_url":"https://api.github.com/users/Microsoft/received_events","type":"Organization","site_admin":false},"repo":{"id":20929025,"name":"TypeScript","full_name":"Microsoft/TypeScript","owner":{"login":"Microsoft","id":6154722,"avatar_url":"https://avatars.githubusercontent.com/u/6154722?v=3","gravatar_id":"","url":"https://api.github.com/users/Microsoft","html_url":"https://github.com/Microsoft","followers_url":"https://api.github.com/users/Microsoft/followers","following_url":"https://api.github.com/users/Microsoft/following{/other_user}","gists_url":"https://api.github.com/users/Microsoft/gists{/gist_id}","starred_url":"https://api.github.com/users/Microsoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Microsoft/subscriptions","organizations_url":"https://api.github.com/users/Microsoft/orgs","repos_url":"https://api.github.com/users/Microsoft/repos","events_url":"https://api.github.com/users/Microsoft/events{/privacy}","received_events_url":"https://api.github.com/users/Microsoft/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Microsoft/TypeScript","description":"TypeScript is a superset of JavaScript that compiles to clean JavaScript output.","fork":false,"url":"https://api.github.com/repos/Microsoft/TypeScript","forks_url":"https://api.github.com/repos/Microsoft/TypeScript/forks","keys_url":"https://api.github.com/repos/Microsoft/TypeScript/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Microsoft/TypeScript/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Microsoft/TypeScript/teams","hooks_url":"https://api.github.com/repos/Microsoft/TypeScript/hooks","issue_events_url":"https://api.github.com/repos/Microsoft/TypeScript/issues/events{/number}","events_url":"https://api.github.com/repos/Microsoft/TypeScript/events","assignees_url":"https://api.github.com/repos/Microsoft/TypeScript/assignees{/user}","branches_url":"https://api.github.com/repos/Microsoft/TypeScript/branches{/branch}","tags_url":"https://api.github.com/repos/Microsoft/TypeScript/tags","blobs_url":"https://api.github.com/repos/Microsoft/TypeScript/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Microsoft/TypeScript/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Microsoft/TypeScript/git/refs{/sha}","trees_url":"https://api.github.com/repos/Microsoft/TypeScript/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Microsoft/TypeScript/statuses/{sha}","languages_url":"https://api.github.com/repos/Microsoft/TypeScript/languages","stargazers_url":"https://api.github.com/repos/Microsoft/TypeScript/stargazers","contributors_url":"https://api.github.com/repos/Microsoft/TypeScript/contributors","subscribers_url":"https://api.github.com/repos/Microsoft/TypeScript/subscribers","subscription_url":"https://api.github.com/repos/Microsoft/TypeScript/subscription","commits_url":"https://api.github.com/repos/Microsoft/TypeScript/commits{/sha}","git_commits_url":"https://api.github.com/repos/Microsoft/TypeScript/git/commits{/sha}","comments_url":"https://api.github.com/repos/Microsoft/TypeScript/comments{/number}","issue_comment_url":"https://api.github.com/repos/Microsoft/TypeScript/issues/comments{/number}","contents_url":"https://api.github.com/repos/Microsoft/TypeScript/contents/{+path}","compare_url":"https://api.github.com/repos/Microsoft/TypeScript/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Microsoft/TypeScript/merges","archive_url":"https://api.github.com/repos/Microsoft/TypeScript/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Microsoft/TypeScript/downloads","issues_url":"https://api.github.com/repos/Microsoft/TypeScript/issues{/number}","pulls_url":"https://api.github.com/repos/Microsoft/TypeScript/pulls{/number}","milestones_url":"https://api.github.com/repos/Microsoft/TypeScript/milestones{/number}","notifications_url":"https://api.github.com/repos/Microsoft/TypeScript/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Microsoft/TypeScript/labels{/name}","releases_url":"https://api.github.com/repos/Microsoft/TypeScript/releases{/id}","deployments_url":"https://api.github.com/repos/Microsoft/TypeScript/deployments","created_at":"2014-06-17T15:28:39Z","updated_at":"2016-06-10T21:16:22Z","pushed_at":"2016-06-10T21:54:24Z","git_url":"git://github.com/Microsoft/TypeScript.git","ssh_url":"git@github.com:Microsoft/TypeScript.git","clone_url":"https://github.com/Microsoft/TypeScript.git","svn_url":"https://github.com/Microsoft/TypeScript","homepage":"http://www.typescriptlang.org","size":514184,"stargazers_count":12175,"watchers_count":12175,"language":"TypeScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":1595,"mirror_url":null,"open_issues_count":943,"forks":1595,"open_issues":943,"watchers":12175,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Microsoft/TypeScript/pulls/8958"},"html":{"href":"https://github.com/Microsoft/TypeScript/pull/8958"},"issue":{"href":"https://api.github.com/repos/Microsoft/TypeScript/issues/8958"},"comments":{"href":"https://api.github.com/repos/Microsoft/TypeScript/issues/8958/comments"},"review_comments":{"href":"https://api.github.com/repos/Microsoft/TypeScript/pulls/8958/comments"},"review_comment":{"href":"https://api.github.com/repos/Microsoft/TypeScript/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Microsoft/TypeScript/pulls/8958/commits"},"statuses":{"href":"https://api.github.com/repos/Microsoft/TypeScript/statuses/1c9e64b0f2ce20517ea82047e9f82c011ca268e1"}}}}
{"actor":{"display_login":"mhegazy"}}