{"action":"created","comment":{"url":"https://api.github.com/repos/angular/angular.io/pulls/comments/59242388","id":59242388,"diff_hunk":"@@ -0,0 +1,672 @@\n+include ../_util-fns\n+\n+:marked\n+  Welcome to the Angular 2 Guide of Style\n+  \n+  ## Purpose\n+\n+  If you are looking for an opinionated style guide for syntax, conventions, and structuring Angular applications, then step right in.\n+\n+  The purpose of this style guide is to provide guidance on building Angular applications by showing the conventions we use and, more importantly, why we choose them.\n+.l-main-section\n+a(id='toc')\n+:marked\n+  ## Table of Contents\n+\n+    1. [Single Responsibility](#single-responsibility)\n+    1. [Modules](#modules)\n+    1. [Components](#components)\n+    1. [Services](#services)\n+    1. [Data Services](#data-services)\n+    1. [Naming](#naming)\n+    1. [Application Structure LIFT Principle](#application-structure-lift-principle)\n+    1. [Application Structure](#application-structure)\n+    1. [Appendix](#appendix)\n+:marked\n+  ## Single Responsibility\n+\n+  ### Rule of 1 \n+  <a id=\"001\"></a>\n+  #### Style 001\n+\n+  Define 1 component per file, recommended to be less than 400 lines of code.\n+\n+  **Why?** One component per file promotes easier unit testing and mocking.\n+\n+  **Why?** One component per file makes it far easier to read, maintain, and avoid collisions with teams in source control.\n+\n+  **Why?** One component per file avoids hidden bugs that often arise when combining components in a file where they may share variables, create unwanted closures, or unwanted coupling with dependencies.\n+  \n+  The following example defines the AppComponent, handles the bootstrapping, and shared functions all in the same file.\n+\n+  The key is to make the code more reusable, easier to read, and less mistake prone.\n+\n++makeExample('style-guide/ts/001/app/placeholder.ts', '001-1', 'app.component.ts (component)')\n+:marked\n+  The same components are now separated into their own files.\n+\n++makeTabs(\n+  'style-guide/ts/001/app/main.ts,style-guide/ts/001/app/app.component.ts,style-guide/ts/001/app/hero.service.ts,style-guide/ts/001/app/hero.model.ts', \n+  '', \n+  'app/main.ts, app/app.component.ts, app/hero.service.ts, app/hero.model.ts')  \n+:marked\n+  As the app grows, this rule becomes even more important.\n+\n+<a href=\"#toc\">Back to top</a>\n+\n+:marked\n+  ### Small Functions\n+  <a id=\"002\"></a>\n+  #### Style 002\n+\n+  - Define small functions, no more than 75 LOC (less is better).\n+\n+  **Why?** Small functions are easier to test, especially when they do one thing and serve one purpose.\n+\n+  **Why?** Small functions promote reuse.\n+\n+  **Why?** Small functions are easier to read.\n+\n+  **Why?** Small functions are easier to maintain.\n+\n+  **Why?** Small functions help avoid hidden bugs that come with large functions that share variables with external scope, create unwanted closures, or unwanted coupling with dependencies.\n+\n+<a href=\"#toc\">Back to top</a>\n+\n+:marked\n+  ## Modules\n+\n+  ### Avoid Naming Collisions\n+  <a id=\"020\"></a>\n+  #### Style 020\n+\n+    - Use unique naming conventions.\n+\n+    **Why?** Unique names help avoid module name collisions. We import and export modules by the file in which they are contained. Thus the name of the files and their folders is important.\n+\n+    **Why?** Names of folders and files should clear convey their intent. For example, `app/speakers/speaker-list.component.ts` may contain a component that manages a list of speakers. The folder and file names clearly convey the meaning, and thus the module import is clear as `import { SpeakerComponent } from './speakers/speaker-list.component'`.\n+\n+<a href=\"#toc\">Back to top</a>\n+\n+:marked\n+  ## Components\n+\n+  ### Member Sequence\n+  <a id=\"033\"></a>\n+  #### Style 033\n+\n+    - Place properties up top, then public functions, then private functions, alphabetized, and not spread through the component code.\n+\n+      **Why?** Placing members in a consistent sequence makes it easy to read and helps you instantly identify which members of the component serve which purpose.\n+\n+    ```typescript\n+    /* recommended */\n+    export class ToastComponent implements OnInit {\n+      // private fields\n+      private _defaults = {\n+        title: '',\n+        message: 'May the Force be with You'\n+      };\n+      private _toastElement: any;\n+\n+      // public properties\n+      title: string;\n+      message: string;\n+\n+      // ctor\n+      constructor(toastService: ToastService) {\n+        toastService.activate = this.activate.bind(this);\n+      }\n+\n+      // public functions\n+      activate(message = this._defaults.message, title = this._defaults.title) {\n+        this.title = title;\n+        this.message = message;\n+        this._show();\n+      }\n+\n+      ngOnInit() {\n+        this._toastElement = document.getElementById('toast');\n+      }\n+\n+      // private functions\n+      private _show() {\n+        console.log(this.message);\n+        this._toastElement.style.opacity = 1;\n+        this._toastElement.style.zIndex = 9999;\n+\n+        window.setTimeout(() => this._hide(), 2500);\n+      }\n+\n+      private _hide() {\n+        this._toastElement.style.opacity = 0;\n+        window.setTimeout(() => this._toastElement.style.zIndex = 0, 400);\n+      }\n+    }\n+    ```\n+\n+<a href=\"#toc\">Back to top</a>\n+\n+:marked\n+  ### Defer Logic to Services\n+  <a id=\"035\"></a>\n+  #### Style 035\n+\n+    - Defer logic in a component by delegating to services.\n+\n+    - Define a component for a view, and try not to reuse the component for other views. Instead, move reusable logic to factories and keep the component simple and focused on its view.\n+\n+      **Why?** Logic may be reused by multiple components when placed within a service and exposed via a function.\n+\n+      **Why?** Logic in a service can more easily be isolated in a unit test, while the calling logic in the component can be easily mocked.\n+\n+      **Why?** Removes dependencies and hides implementation details from the component.\n+\n+      **Why?** Keeps the component slim, trim, and focused.\n+\n+  ```typescript\n+  // avoid\n+  export class SessionListComponent implements OnInit {\n+    sessions: Session[];\n+\n+    constructor(private _http: Http) { }\n+\n+    getSessions() {\n+      this.sessions = [];\n+      this._http.get(sessionsUrl)\n+        .map((response: Response) => <Session[]>response.json().data)\n+        .catch(this._exceptionService.catchBadResponse)\n+        .finally(() => this._spinnerService.hide())\n+        .subscribe(sessions => this.sessions = sessions);\n+    }\n+    \n+\n+    ngOnInit() {\n+      this.getSessions();\n+    }\n+  }\n+  ```\n+    \n+  ```typescript\n+  // recommended\n+  export class SessionListComponent implements OnInit {\n+    sessions: Session[];\n+\n+    constructor(private _sessionService: SessionService) { }\n+\n+    getSessions() {\n+      this.sessions = [];\n+      this._sessionService.getSessions()\n+        .subscribe(sessions => this.sessions = sessions);\n+    }\n+\n+    ngOnInit() {\n+      this.getSessions();\n+    }\n+  }\n+  ```\n+\n+<a href=\"#toc\">Back to top</a>\n+\n+:marked\n+  ## Services\n+\n+  ### Singletons\n+  <a id=\"040\"></a>\n+  #### Style 040\n+\n+    - Services are singletons and should be used for sharing data and functionality.","path":"public/docs/ts/latest/guide/style-guide.jade","position":218,"original_position":218,"commit_id":"ac6706083f1c2f825f13e3af919b549d723d3ea8","original_commit_id":"ac6706083f1c2f825f13e3af919b549d723d3ea8","user":{"login":"IgorMinar","id":216296,"avatar_url":"https://avatars.githubusercontent.com/u/216296?v=3","gravatar_id":"","url":"https://api.github.com/users/IgorMinar","html_url":"https://github.com/IgorMinar","followers_url":"https://api.github.com/users/IgorMinar/followers","following_url":"https://api.github.com/users/IgorMinar/following{/other_user}","gists_url":"https://api.github.com/users/IgorMinar/gists{/gist_id}","starred_url":"https://api.github.com/users/IgorMinar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/IgorMinar/subscriptions","organizations_url":"https://api.github.com/users/IgorMinar/orgs","repos_url":"https://api.github.com/users/IgorMinar/repos","events_url":"https://api.github.com/users/IgorMinar/events{/privacy}","received_events_url":"https://api.github.com/users/IgorMinar/received_events","type":"User","site_admin":false},"body":"well, not quite. services are singletons within the same injector - you can think about each element in the component composition tree as having it's own injector and each element inherits injector services from the parent.\r\n\r\nbut if a child element defines a provider for a service that was already defined an instantiated in the parent, the DI will create a new instance of this service visible only to this child component and its children. This is what allows you to have multiple instance of certain services (e.g. ElementRef is different for each component) and we don't need the concept of \"locals\" from Angular 1.","created_at":"2016-04-11T17:11:25Z","updated_at":"2016-04-11T17:11:25Z","html_url":"https://github.com/angular/angular.io/pull/1040#discussion_r59242388","pull_request_url":"https://api.github.com/repos/angular/angular.io/pulls/1040","_links":{"self":{"href":"https://api.github.com/repos/angular/angular.io/pulls/comments/59242388"},"html":{"href":"https://github.com/angular/angular.io/pull/1040#discussion_r59242388"},"pull_request":{"href":"https://api.github.com/repos/angular/angular.io/pulls/1040"}}},"pull_request":{"url":"https://api.github.com/repos/angular/angular.io/pulls/1040","id":65021500,"html_url":"https://github.com/angular/angular.io/pull/1040","diff_url":"https://github.com/angular/angular.io/pull/1040.diff","patch_url":"https://github.com/angular/angular.io/pull/1040.patch","issue_url":"https://api.github.com/repos/angular/angular.io/issues/1040","number":1040,"state":"open","locked":false,"title":"[WIP] docs(style-guide): add A2 styleguide - initial commit","user":{"login":"wardbell","id":129061,"avatar_url":"https://avatars.githubusercontent.com/u/129061?v=3","gravatar_id":"","url":"https://api.github.com/users/wardbell","html_url":"https://github.com/wardbell","followers_url":"https://api.github.com/users/wardbell/followers","following_url":"https://api.github.com/users/wardbell/following{/other_user}","gists_url":"https://api.github.com/users/wardbell/gists{/gist_id}","starred_url":"https://api.github.com/users/wardbell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wardbell/subscriptions","organizations_url":"https://api.github.com/users/wardbell/orgs","repos_url":"https://api.github.com/users/wardbell/repos","events_url":"https://api.github.com/users/wardbell/events{/privacy}","received_events_url":"https://api.github.com/users/wardbell/received_events","type":"User","site_admin":false},"body":"DO NOT MERGE. ","created_at":"2016-04-02T00:24:58Z","updated_at":"2016-04-11T17:11:25Z","closed_at":null,"merged_at":null,"merge_commit_sha":"3e6cce20b0a2d28cf8d2f44e9526df1cfaea60d7","assignee":{"login":"johnpapa","id":1202528,"avatar_url":"https://avatars.githubusercontent.com/u/1202528?v=3","gravatar_id":"","url":"https://api.github.com/users/johnpapa","html_url":"https://github.com/johnpapa","followers_url":"https://api.github.com/users/johnpapa/followers","following_url":"https://api.github.com/users/johnpapa/following{/other_user}","gists_url":"https://api.github.com/users/johnpapa/gists{/gist_id}","starred_url":"https://api.github.com/users/johnpapa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/johnpapa/subscriptions","organizations_url":"https://api.github.com/users/johnpapa/orgs","repos_url":"https://api.github.com/users/johnpapa/repos","events_url":"https://api.github.com/users/johnpapa/events{/privacy}","received_events_url":"https://api.github.com/users/johnpapa/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/angular/angular.io/pulls/1040/commits","review_comments_url":"https://api.github.com/repos/angular/angular.io/pulls/1040/comments","review_comment_url":"https://api.github.com/repos/angular/angular.io/pulls/comments{/number}","comments_url":"https://api.github.com/repos/angular/angular.io/issues/1040/comments","statuses_url":"https://api.github.com/repos/angular/angular.io/statuses/ac6706083f1c2f825f13e3af919b549d723d3ea8","head":{"label":"IdeaBlade:docs-style-guide","ref":"docs-style-guide","sha":"ac6706083f1c2f825f13e3af919b549d723d3ea8","user":{"login":"IdeaBlade","id":1630193,"avatar_url":"https://avatars.githubusercontent.com/u/1630193?v=3","gravatar_id":"","url":"https://api.github.com/users/IdeaBlade","html_url":"https://github.com/IdeaBlade","followers_url":"https://api.github.com/users/IdeaBlade/followers","following_url":"https://api.github.com/users/IdeaBlade/following{/other_user}","gists_url":"https://api.github.com/users/IdeaBlade/gists{/gist_id}","starred_url":"https://api.github.com/users/IdeaBlade/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/IdeaBlade/subscriptions","organizations_url":"https://api.github.com/users/IdeaBlade/orgs","repos_url":"https://api.github.com/users/IdeaBlade/repos","events_url":"https://api.github.com/users/IdeaBlade/events{/privacy}","received_events_url":"https://api.github.com/users/IdeaBlade/received_events","type":"Organization","site_admin":false},"repo":{"id":40154922,"name":"angular.io","full_name":"IdeaBlade/angular.io","owner":{"login":"IdeaBlade","id":1630193,"avatar_url":"https://avatars.githubusercontent.com/u/1630193?v=3","gravatar_id":"","url":"https://api.github.com/users/IdeaBlade","html_url":"https://github.com/IdeaBlade","followers_url":"https://api.github.com/users/IdeaBlade/followers","following_url":"https://api.github.com/users/IdeaBlade/following{/other_user}","gists_url":"https://api.github.com/users/IdeaBlade/gists{/gist_id}","starred_url":"https://api.github.com/users/IdeaBlade/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/IdeaBlade/subscriptions","organizations_url":"https://api.github.com/users/IdeaBlade/orgs","repos_url":"https://api.github.com/users/IdeaBlade/repos","events_url":"https://api.github.com/users/IdeaBlade/events{/privacy}","received_events_url":"https://api.github.com/users/IdeaBlade/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/IdeaBlade/angular.io","description":"Website for Angular 2","fork":true,"url":"https://api.github.com/repos/IdeaBlade/angular.io","forks_url":"https://api.github.com/repos/IdeaBlade/angular.io/forks","keys_url":"https://api.github.com/repos/IdeaBlade/angular.io/keys{/key_id}","collaborators_url":"https://api.github.com/repos/IdeaBlade/angular.io/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/IdeaBlade/angular.io/teams","hooks_url":"https://api.github.com/repos/IdeaBlade/angular.io/hooks","issue_events_url":"https://api.github.com/repos/IdeaBlade/angular.io/issues/events{/number}","events_url":"https://api.github.com/repos/IdeaBlade/angular.io/events","assignees_url":"https://api.github.com/repos/IdeaBlade/angular.io/assignees{/user}","branches_url":"https://api.github.com/repos/IdeaBlade/angular.io/branches{/branch}","tags_url":"https://api.github.com/repos/IdeaBlade/angular.io/tags","blobs_url":"https://api.github.com/repos/IdeaBlade/angular.io/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/IdeaBlade/angular.io/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/IdeaBlade/angular.io/git/refs{/sha}","trees_url":"https://api.github.com/repos/IdeaBlade/angular.io/git/trees{/sha}","statuses_url":"https://api.github.com/repos/IdeaBlade/angular.io/statuses/{sha}","languages_url":"https://api.github.com/repos/IdeaBlade/angular.io/languages","stargazers_url":"https://api.github.com/repos/IdeaBlade/angular.io/stargazers","contributors_url":"https://api.github.com/repos/IdeaBlade/angular.io/contributors","subscribers_url":"https://api.github.com/repos/IdeaBlade/angular.io/subscribers","subscription_url":"https://api.github.com/repos/IdeaBlade/angular.io/subscription","commits_url":"https://api.github.com/repos/IdeaBlade/angular.io/commits{/sha}","git_commits_url":"https://api.github.com/repos/IdeaBlade/angular.io/git/commits{/sha}","comments_url":"https://api.github.com/repos/IdeaBlade/angular.io/comments{/number}","issue_comment_url":"https://api.github.com/repos/IdeaBlade/angular.io/issues/comments{/number}","contents_url":"https://api.github.com/repos/IdeaBlade/angular.io/contents/{+path}","compare_url":"https://api.github.com/repos/IdeaBlade/angular.io/compare/{base}...{head}","merges_url":"https://api.github.com/repos/IdeaBlade/angular.io/merges","archive_url":"https://api.github.com/repos/IdeaBlade/angular.io/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/IdeaBlade/angular.io/downloads","issues_url":"https://api.github.com/repos/IdeaBlade/angular.io/issues{/number}","pulls_url":"https://api.github.com/repos/IdeaBlade/angular.io/pulls{/number}","milestones_url":"https://api.github.com/repos/IdeaBlade/angular.io/milestones{/number}","notifications_url":"https://api.github.com/repos/IdeaBlade/angular.io/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/IdeaBlade/angular.io/labels{/name}","releases_url":"https://api.github.com/repos/IdeaBlade/angular.io/releases{/id}","deployments_url":"https://api.github.com/repos/IdeaBlade/angular.io/deployments","created_at":"2015-08-04T00:40:19Z","updated_at":"2016-02-10T01:02:19Z","pushed_at":"2016-04-11T14:28:50Z","git_url":"git://github.com/IdeaBlade/angular.io.git","ssh_url":"git@github.com:IdeaBlade/angular.io.git","clone_url":"https://github.com/IdeaBlade/angular.io.git","svn_url":"https://github.com/IdeaBlade/angular.io","homepage":"https://angular.io","size":24015,"stargazers_count":3,"watchers_count":3,"language":"HTML","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4,"mirror_url":null,"open_issues_count":0,"forks":4,"open_issues":0,"watchers":3,"default_branch":"master"}},"base":{"label":"angular:master","ref":"master","sha":"cac5c8977f5052e47a89e97b8934f492f05eb8f1","user":{"login":"angular","id":139426,"avatar_url":"https://avatars.githubusercontent.com/u/139426?v=3","gravatar_id":"","url":"https://api.github.com/users/angular","html_url":"https://github.com/angular","followers_url":"https://api.github.com/users/angular/followers","following_url":"https://api.github.com/users/angular/following{/other_user}","gists_url":"https://api.github.com/users/angular/gists{/gist_id}","starred_url":"https://api.github.com/users/angular/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/angular/subscriptions","organizations_url":"https://api.github.com/users/angular/orgs","repos_url":"https://api.github.com/users/angular/repos","events_url":"https://api.github.com/users/angular/events{/privacy}","received_events_url":"https://api.github.com/users/angular/received_events","type":"Organization","site_admin":false},"repo":{"id":31985425,"name":"angular.io","full_name":"angular/angular.io","owner":{"login":"angular","id":139426,"avatar_url":"https://avatars.githubusercontent.com/u/139426?v=3","gravatar_id":"","url":"https://api.github.com/users/angular","html_url":"https://github.com/angular","followers_url":"https://api.github.com/users/angular/followers","following_url":"https://api.github.com/users/angular/following{/other_user}","gists_url":"https://api.github.com/users/angular/gists{/gist_id}","starred_url":"https://api.github.com/users/angular/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/angular/subscriptions","organizations_url":"https://api.github.com/users/angular/orgs","repos_url":"https://api.github.com/users/angular/repos","events_url":"https://api.github.com/users/angular/events{/privacy}","received_events_url":"https://api.github.com/users/angular/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/angular/angular.io","description":"Website for Angular 2","fork":false,"url":"https://api.github.com/repos/angular/angular.io","forks_url":"https://api.github.com/repos/angular/angular.io/forks","keys_url":"https://api.github.com/repos/angular/angular.io/keys{/key_id}","collaborators_url":"https://api.github.com/repos/angular/angular.io/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/angular/angular.io/teams","hooks_url":"https://api.github.com/repos/angular/angular.io/hooks","issue_events_url":"https://api.github.com/repos/angular/angular.io/issues/events{/number}","events_url":"https://api.github.com/repos/angular/angular.io/events","assignees_url":"https://api.github.com/repos/angular/angular.io/assignees{/user}","branches_url":"https://api.github.com/repos/angular/angular.io/branches{/branch}","tags_url":"https://api.github.com/repos/angular/angular.io/tags","blobs_url":"https://api.github.com/repos/angular/angular.io/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/angular/angular.io/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/angular/angular.io/git/refs{/sha}","trees_url":"https://api.github.com/repos/angular/angular.io/git/trees{/sha}","statuses_url":"https://api.github.com/repos/angular/angular.io/statuses/{sha}","languages_url":"https://api.github.com/repos/angular/angular.io/languages","stargazers_url":"https://api.github.com/repos/angular/angular.io/stargazers","contributors_url":"https://api.github.com/repos/angular/angular.io/contributors","subscribers_url":"https://api.github.com/repos/angular/angular.io/subscribers","subscription_url":"https://api.github.com/repos/angular/angular.io/subscription","commits_url":"https://api.github.com/repos/angular/angular.io/commits{/sha}","git_commits_url":"https://api.github.com/repos/angular/angular.io/git/commits{/sha}","comments_url":"https://api.github.com/repos/angular/angular.io/comments{/number}","issue_comment_url":"https://api.github.com/repos/angular/angular.io/issues/comments{/number}","contents_url":"https://api.github.com/repos/angular/angular.io/contents/{+path}","compare_url":"https://api.github.com/repos/angular/angular.io/compare/{base}...{head}","merges_url":"https://api.github.com/repos/angular/angular.io/merges","archive_url":"https://api.github.com/repos/angular/angular.io/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/angular/angular.io/downloads","issues_url":"https://api.github.com/repos/angular/angular.io/issues{/number}","pulls_url":"https://api.github.com/repos/angular/angular.io/pulls{/number}","milestones_url":"https://api.github.com/repos/angular/angular.io/milestones{/number}","notifications_url":"https://api.github.com/repos/angular/angular.io/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/angular/angular.io/labels{/name}","releases_url":"https://api.github.com/repos/angular/angular.io/releases{/id}","deployments_url":"https://api.github.com/repos/angular/angular.io/deployments","created_at":"2015-03-10T22:32:34Z","updated_at":"2016-04-11T11:59:45Z","pushed_at":"2016-04-11T17:00:07Z","git_url":"git://github.com/angular/angular.io.git","ssh_url":"git@github.com:angular/angular.io.git","clone_url":"https://github.com/angular/angular.io.git","svn_url":"https://github.com/angular/angular.io","homepage":"https://angular.io","size":25860,"stargazers_count":310,"watchers_count":310,"language":"HTML","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":344,"mirror_url":null,"open_issues_count":64,"forks":344,"open_issues":64,"watchers":310,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/angular/angular.io/pulls/1040"},"html":{"href":"https://github.com/angular/angular.io/pull/1040"},"issue":{"href":"https://api.github.com/repos/angular/angular.io/issues/1040"},"comments":{"href":"https://api.github.com/repos/angular/angular.io/issues/1040/comments"},"review_comments":{"href":"https://api.github.com/repos/angular/angular.io/pulls/1040/comments"},"review_comment":{"href":"https://api.github.com/repos/angular/angular.io/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/angular/angular.io/pulls/1040/commits"},"statuses":{"href":"https://api.github.com/repos/angular/angular.io/statuses/ac6706083f1c2f825f13e3af919b549d723d3ea8"}}}}