{"action":"created","comment":{"url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/pulls/comments/23063778","id":23063778,"diff_hunk":"@@ -0,0 +1,186 @@\n+#Tux/Architecture\n+\n+##Table of Contents\n+<ol>\n+  <li><a href=\"#Premise\">Premise</a></li>\n+  <li><a href=\"#Implementation\">Implementation</a>\n+    <ol style=\"list-style-type:upper-alpha\">\n+      <li><a href=\"#Architecting-Store-Dependencies\">Architecting Store Dependencies</a>\n+        <ol style=\"list-style-type:upper-roman\">\n+          <li><a href=\"#Architecting-Store-Dependencies-Example\">Architecting Store Dependencies Example</a></li>\n+          <li><a href=\"#Architecture-architect\">METHOD: Architecture.architect</a></li>\n+          <li><a href=\"#architectureChain\">OBJECT: architectureChain</a>\n+            <ol style=\"list-style-type:lower-alpha\">\n+              <li><a href=\"#architectureChain-itNeeds\">METHOD: architectureChain.itNeeds</a></li>\n+              <li><a href=\"#architectureChain-itOutputs\">METHOD: architectureChain.itOutputs</a></li>\n+              <li><a href=\"#architectureChain-and\">METHOD: architectureChain.and</a></li>\n+            </ol>\n+          </li>\n+        </ol>\n+      </li>\n+    </ol>\n+  </li>\n+</ol>\n+\n+##<a id=\"Premise\"></a>Premise [#](#Premise)\n+>TuxedoJS provides a novel approach to describing the dependencies between stores. In Flux, store dependencies are defined via the `Dispatcher.waitFor` syntax. This allows stores to define the order at which they will receive events from the dispatcher. While this syntax is workable, we consider it to be flawed due to the fact that it requires each store to separately manage the stores it needs to waitFor. This results in distributed app architectures that are difficult to reason about. For an engineer to understand all the store relationships in an app, he/she would need to step through every store file and draw out the map of stores it is dependent on. TuxedoJS tackles this problem by centralizing waitFor statements and providing a more semantic interface for building waitFor relationships.\n+\n+##<a id=\"Implementation\"></a>Implementation [#](#Implementation)\n+TuxedoJS provides two major innovations for defining store dependencies:\n+\n+1. It allows you to write all of your store dependencies in a single location so only one file is responsible for managing your app architecture\n+2. It allows you to describe your store dependencies in terms of the inputs to and outputs from each of your stores\n+\n+###<a name=\"Requiring-Architecture\"></a>Requiring Architecture [#](#Requiring-Architecture)\n+The Architecture interface is exposed via:\n+\n+```\n+    var Architecture = require('tux/Architecture');\n+```\n+\n+###<a id=\"Architecting-Store-Dependencies\"></a>Architecting Store Dependencies [#](#Architecting-Store-Dependencies)\n+Let's take a look at an example. Imagine we want to describe the following network of store dependencies where each store is dependent on the store it points to: [#](#Architecting-Store-Dependencies-Example)\n+<a id=\"Architecting-Store-Dependencies-Example\"></a>\n+\n+```\n+    userStore <---privateMessageStore\n+        ^               ^\n+        |               |\n+    roomStore <---------|\n+        ^               |\n+        |               |\n+    threadStore <---unreadStore\n+        ^               |\n+        |               |\n+    messageStore <------|\n+```\n+\n+In Flux we would need to write these dependencies spread out across 6 different files. In TuxedoJS, we can do the following:\n+\n+```\n+    var userStore = require('../stores/userStore');\n+    var roomStore = require('../stores/roomStore');\n+    var threadStore = require('../stores/threadStore');\n+    var messageStore = require('../stores/messageStore');\n+    var privateMessageStore = require('../stores/privateMessageStore');\n+    var unreadStore = require('../stores/unreadStore');\n+\n+    var architect = require('tux/Architecture').architect;\n+\n+    architect(userStore).itOutputs('users');\n+    architect(roomStore).itNeeds('users').itOutputs('rooms', 'unreadCount');\n+    architect(threadStore).itNeeds('rooms').itOutputs('threads', 'unreadCount');\n+    architect(messageStore).itNeeds('threads').itOutputs('messages', 'unreadCount');\n+    architect(privateMessageStore).itNeeds('users').itOutputs('privateMessages', 'unreadCount');\n+    architect(unreadStore).itNeeds('unreadCount');\n+```\n+\n+TuxArchitecture also supports arrays of inputs for `itNeeds` and `itOutputs` as well as the ability to chain invocations of these functions via the `and` method (it copies the last method invoked). For example, we could rewrite `architect(roomStore)` as:\n+\n+```\n+    architect(roomStore).itNeeds('users').itOutputs(['rooms', 'unreadCount']); //OR\n+    architect(roomStore).itNeeds('users').itOutputs('rooms').and('unreadCount');\n+```\n+\n+Or if we decide that the `unreadStore` was also dependent on the `userStore` we could write:\n+\n+```\n+    architect(unreadStore).itNeeds('unreadCount', 'users'); //OR\n+    architect(unreadStore).itNeeds(['unreadCount', 'users']); //OR\n+    architect(unreadStore).itNeeds('unreadCount').and('users');\n+```\n+\n+Lastly, you have the option to directly need stores if you do not want to use this string based syntax:\n+\n+```\n+    architect(roomStore).itNeeds(userStore);\n+    architect(threadStore).itNeeds(userStore, roomStore);\n+    architect(messageStore).itNeeds(userStore, threadStore);\n+    architect(privateMessageStore).itNeeds(userStore);\n+    architect(unreadStore).itNeeds(roomStore, threadStore, messageStore, privateMessageStore);\n+```\n+\n+While this approach is shorter it can be advantageous to use the string approach as it allows you to write your dependencies in terms of the actual outputs of your stores and thus provides self-documenting code that can make it easier to reason about your application architecture down the line.\n+\n+Below is the full API documentation for the `architect` method.\n+\n+####<a id=\"Architecture-architect\"></a>Architecture.architect [#](#Architecture-architect)\n+Accepts a store and returns an `architectureChain` instance to define the inputs and outputs for the store.\n+\n+```\n+    var architectureChain = Architecture.architect(storeToArchitect);\n+```\n+\n+#####<a id=\"architect-storeToArchitect\"></a>Parameter - `storeToArchitect` - type: OBJECT - required [#](#architect-storeToArchitect)\n+Store to architect. `itNeeds` will add dependencies to this store, `itOutputs` will define the outputs that other stores can use to add a dependency for this store via `itNeeds`.\n+\n+```\n+    var storeToArchitect = require('../stores/userStore');\n+```\n+\n+#####<a id=\"architect-architectureChain\"></a>Return - `architectureChain` - type: OBJECT [#](#architect-architectureChain)\n+Object to chain architecture methods onto. Defined below.","path":"docs/TuxArchitecture.md","position":122,"original_position":122,"commit_id":"9398a56b52d5aef467b91fe3a159db85b4ad33a5","original_commit_id":"9398a56b52d5aef467b91fe3a159db85b4ad33a5","user":{"login":"Cheerazar","id":5581107,"avatar_url":"https://avatars.githubusercontent.com/u/5581107?v=3","gravatar_id":"","url":"https://api.github.com/users/Cheerazar","html_url":"https://github.com/Cheerazar","followers_url":"https://api.github.com/users/Cheerazar/followers","following_url":"https://api.github.com/users/Cheerazar/following{/other_user}","gists_url":"https://api.github.com/users/Cheerazar/gists{/gist_id}","starred_url":"https://api.github.com/users/Cheerazar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Cheerazar/subscriptions","organizations_url":"https://api.github.com/users/Cheerazar/orgs","repos_url":"https://api.github.com/users/Cheerazar/repos","events_url":"https://api.github.com/users/Cheerazar/events{/privacy}","received_events_url":"https://api.github.com/users/Cheerazar/received_events","type":"User","site_admin":false},"body":"Recommend changing last sentence to \"It is defined below.\"","created_at":"2015-01-16T05:24:16Z","updated_at":"2015-01-16T05:24:16Z","html_url":"https://github.com/TuxedoJS/TuxedoJS/pull/106#discussion_r23063778","pull_request_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/pulls/106","_links":{"self":{"href":"https://api.github.com/repos/TuxedoJS/TuxedoJS/pulls/comments/23063778"},"html":{"href":"https://github.com/TuxedoJS/TuxedoJS/pull/106#discussion_r23063778"},"pull_request":{"href":"https://api.github.com/repos/TuxedoJS/TuxedoJS/pulls/106"}}},"pull_request":{"url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/pulls/106","id":27468861,"html_url":"https://github.com/TuxedoJS/TuxedoJS/pull/106","diff_url":"https://github.com/TuxedoJS/TuxedoJS/pull/106.diff","patch_url":"https://github.com/TuxedoJS/TuxedoJS/pull/106.patch","issue_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/issues/106","number":106,"state":"open","locked":false,"title":"Add TuxArchitecture doc.","user":{"login":"drabinowitz","id":7275304,"avatar_url":"https://avatars.githubusercontent.com/u/7275304?v=3","gravatar_id":"","url":"https://api.github.com/users/drabinowitz","html_url":"https://github.com/drabinowitz","followers_url":"https://api.github.com/users/drabinowitz/followers","following_url":"https://api.github.com/users/drabinowitz/following{/other_user}","gists_url":"https://api.github.com/users/drabinowitz/gists{/gist_id}","starred_url":"https://api.github.com/users/drabinowitz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/drabinowitz/subscriptions","organizations_url":"https://api.github.com/users/drabinowitz/orgs","repos_url":"https://api.github.com/users/drabinowitz/repos","events_url":"https://api.github.com/users/drabinowitz/events{/privacy}","received_events_url":"https://api.github.com/users/drabinowitz/received_events","type":"User","site_admin":false},"body":"","created_at":"2015-01-15T22:37:48Z","updated_at":"2015-01-16T05:24:16Z","closed_at":null,"merged_at":null,"merge_commit_sha":"62d281c3f53e0420ffb56c8235364d08ca3a56fa","assignee":{"login":"drabinowitz","id":7275304,"avatar_url":"https://avatars.githubusercontent.com/u/7275304?v=3","gravatar_id":"","url":"https://api.github.com/users/drabinowitz","html_url":"https://github.com/drabinowitz","followers_url":"https://api.github.com/users/drabinowitz/followers","following_url":"https://api.github.com/users/drabinowitz/following{/other_user}","gists_url":"https://api.github.com/users/drabinowitz/gists{/gist_id}","starred_url":"https://api.github.com/users/drabinowitz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/drabinowitz/subscriptions","organizations_url":"https://api.github.com/users/drabinowitz/orgs","repos_url":"https://api.github.com/users/drabinowitz/repos","events_url":"https://api.github.com/users/drabinowitz/events{/privacy}","received_events_url":"https://api.github.com/users/drabinowitz/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/pulls/106/commits","review_comments_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/pulls/106/comments","review_comment_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/pulls/comments/{number}","comments_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/issues/106/comments","statuses_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/statuses/9398a56b52d5aef467b91fe3a159db85b4ad33a5","head":{"label":"drabinowitz:TuxArchitectureDoc","ref":"TuxArchitectureDoc","sha":"9398a56b52d5aef467b91fe3a159db85b4ad33a5","user":{"login":"drabinowitz","id":7275304,"avatar_url":"https://avatars.githubusercontent.com/u/7275304?v=3","gravatar_id":"","url":"https://api.github.com/users/drabinowitz","html_url":"https://github.com/drabinowitz","followers_url":"https://api.github.com/users/drabinowitz/followers","following_url":"https://api.github.com/users/drabinowitz/following{/other_user}","gists_url":"https://api.github.com/users/drabinowitz/gists{/gist_id}","starred_url":"https://api.github.com/users/drabinowitz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/drabinowitz/subscriptions","organizations_url":"https://api.github.com/users/drabinowitz/orgs","repos_url":"https://api.github.com/users/drabinowitz/repos","events_url":"https://api.github.com/users/drabinowitz/events{/privacy}","received_events_url":"https://api.github.com/users/drabinowitz/received_events","type":"User","site_admin":false},"repo":{"id":28929710,"name":"TuxedoJS","full_name":"drabinowitz/TuxedoJS","owner":{"login":"drabinowitz","id":7275304,"avatar_url":"https://avatars.githubusercontent.com/u/7275304?v=3","gravatar_id":"","url":"https://api.github.com/users/drabinowitz","html_url":"https://github.com/drabinowitz","followers_url":"https://api.github.com/users/drabinowitz/followers","following_url":"https://api.github.com/users/drabinowitz/following{/other_user}","gists_url":"https://api.github.com/users/drabinowitz/gists{/gist_id}","starred_url":"https://api.github.com/users/drabinowitz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/drabinowitz/subscriptions","organizations_url":"https://api.github.com/users/drabinowitz/orgs","repos_url":"https://api.github.com/users/drabinowitz/repos","events_url":"https://api.github.com/users/drabinowitz/events{/privacy}","received_events_url":"https://api.github.com/users/drabinowitz/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/drabinowitz/TuxedoJS","description":"","fork":true,"url":"https://api.github.com/repos/drabinowitz/TuxedoJS","forks_url":"https://api.github.com/repos/drabinowitz/TuxedoJS/forks","keys_url":"https://api.github.com/repos/drabinowitz/TuxedoJS/keys{/key_id}","collaborators_url":"https://api.github.com/repos/drabinowitz/TuxedoJS/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/drabinowitz/TuxedoJS/teams","hooks_url":"https://api.github.com/repos/drabinowitz/TuxedoJS/hooks","issue_events_url":"https://api.github.com/repos/drabinowitz/TuxedoJS/issues/events{/number}","events_url":"https://api.github.com/repos/drabinowitz/TuxedoJS/events","assignees_url":"https://api.github.com/repos/drabinowitz/TuxedoJS/assignees{/user}","branches_url":"https://api.github.com/repos/drabinowitz/TuxedoJS/branches{/branch}","tags_url":"https://api.github.com/repos/drabinowitz/TuxedoJS/tags","blobs_url":"https://api.github.com/repos/drabinowitz/TuxedoJS/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/drabinowitz/TuxedoJS/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/drabinowitz/TuxedoJS/git/refs{/sha}","trees_url":"https://api.github.com/repos/drabinowitz/TuxedoJS/git/trees{/sha}","statuses_url":"https://api.github.com/repos/drabinowitz/TuxedoJS/statuses/{sha}","languages_url":"https://api.github.com/repos/drabinowitz/TuxedoJS/languages","stargazers_url":"https://api.github.com/repos/drabinowitz/TuxedoJS/stargazers","contributors_url":"https://api.github.com/repos/drabinowitz/TuxedoJS/contributors","subscribers_url":"https://api.github.com/repos/drabinowitz/TuxedoJS/subscribers","subscription_url":"https://api.github.com/repos/drabinowitz/TuxedoJS/subscription","commits_url":"https://api.github.com/repos/drabinowitz/TuxedoJS/commits{/sha}","git_commits_url":"https://api.github.com/repos/drabinowitz/TuxedoJS/git/commits{/sha}","comments_url":"https://api.github.com/repos/drabinowitz/TuxedoJS/comments{/number}","issue_comment_url":"https://api.github.com/repos/drabinowitz/TuxedoJS/issues/comments/{number}","contents_url":"https://api.github.com/repos/drabinowitz/TuxedoJS/contents/{+path}","compare_url":"https://api.github.com/repos/drabinowitz/TuxedoJS/compare/{base}...{head}","merges_url":"https://api.github.com/repos/drabinowitz/TuxedoJS/merges","archive_url":"https://api.github.com/repos/drabinowitz/TuxedoJS/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/drabinowitz/TuxedoJS/downloads","issues_url":"https://api.github.com/repos/drabinowitz/TuxedoJS/issues{/number}","pulls_url":"https://api.github.com/repos/drabinowitz/TuxedoJS/pulls{/number}","milestones_url":"https://api.github.com/repos/drabinowitz/TuxedoJS/milestones{/number}","notifications_url":"https://api.github.com/repos/drabinowitz/TuxedoJS/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/drabinowitz/TuxedoJS/labels{/name}","releases_url":"https://api.github.com/repos/drabinowitz/TuxedoJS/releases{/id}","created_at":"2015-01-07T19:19:51Z","updated_at":"2015-01-07T19:19:51Z","pushed_at":"2015-01-16T03:49:12Z","git_url":"git://github.com/drabinowitz/TuxedoJS.git","ssh_url":"git@github.com:drabinowitz/TuxedoJS.git","clone_url":"https://github.com/drabinowitz/TuxedoJS.git","svn_url":"https://github.com/drabinowitz/TuxedoJS","homepage":null,"size":417,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"TuxedoJS:master","ref":"master","sha":"f43ab758044b350ca2cb1fa91ec26202d803c36a","user":{"login":"TuxedoJS","id":10237217,"avatar_url":"https://avatars.githubusercontent.com/u/10237217?v=3","gravatar_id":"","url":"https://api.github.com/users/TuxedoJS","html_url":"https://github.com/TuxedoJS","followers_url":"https://api.github.com/users/TuxedoJS/followers","following_url":"https://api.github.com/users/TuxedoJS/following{/other_user}","gists_url":"https://api.github.com/users/TuxedoJS/gists{/gist_id}","starred_url":"https://api.github.com/users/TuxedoJS/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TuxedoJS/subscriptions","organizations_url":"https://api.github.com/users/TuxedoJS/orgs","repos_url":"https://api.github.com/users/TuxedoJS/repos","events_url":"https://api.github.com/users/TuxedoJS/events{/privacy}","received_events_url":"https://api.github.com/users/TuxedoJS/received_events","type":"Organization","site_admin":false},"repo":{"id":28203450,"name":"TuxedoJS","full_name":"TuxedoJS/TuxedoJS","owner":{"login":"TuxedoJS","id":10237217,"avatar_url":"https://avatars.githubusercontent.com/u/10237217?v=3","gravatar_id":"","url":"https://api.github.com/users/TuxedoJS","html_url":"https://github.com/TuxedoJS","followers_url":"https://api.github.com/users/TuxedoJS/followers","following_url":"https://api.github.com/users/TuxedoJS/following{/other_user}","gists_url":"https://api.github.com/users/TuxedoJS/gists{/gist_id}","starred_url":"https://api.github.com/users/TuxedoJS/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TuxedoJS/subscriptions","organizations_url":"https://api.github.com/users/TuxedoJS/orgs","repos_url":"https://api.github.com/users/TuxedoJS/repos","events_url":"https://api.github.com/users/TuxedoJS/events{/privacy}","received_events_url":"https://api.github.com/users/TuxedoJS/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/TuxedoJS/TuxedoJS","description":"","fork":false,"url":"https://api.github.com/repos/TuxedoJS/TuxedoJS","forks_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/forks","keys_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/keys{/key_id}","collaborators_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/teams","hooks_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/hooks","issue_events_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/issues/events{/number}","events_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/events","assignees_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/assignees{/user}","branches_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/branches{/branch}","tags_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/tags","blobs_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/git/refs{/sha}","trees_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/git/trees{/sha}","statuses_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/statuses/{sha}","languages_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/languages","stargazers_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/stargazers","contributors_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/contributors","subscribers_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/subscribers","subscription_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/subscription","commits_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/commits{/sha}","git_commits_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/git/commits{/sha}","comments_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/comments{/number}","issue_comment_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/issues/comments/{number}","contents_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/contents/{+path}","compare_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/compare/{base}...{head}","merges_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/merges","archive_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/downloads","issues_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/issues{/number}","pulls_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/pulls{/number}","milestones_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/milestones{/number}","notifications_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/labels{/name}","releases_url":"https://api.github.com/repos/TuxedoJS/TuxedoJS/releases{/id}","created_at":"2014-12-18T21:58:57Z","updated_at":"2015-01-16T04:12:42Z","pushed_at":"2015-01-16T04:01:23Z","git_url":"git://github.com/TuxedoJS/TuxedoJS.git","ssh_url":"git@github.com:TuxedoJS/TuxedoJS.git","clone_url":"https://github.com/TuxedoJS/TuxedoJS.git","svn_url":"https://github.com/TuxedoJS/TuxedoJS","homepage":null,"size":965,"stargazers_count":7,"watchers_count":7,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4,"mirror_url":null,"open_issues_count":37,"forks":4,"open_issues":37,"watchers":7,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/TuxedoJS/TuxedoJS/pulls/106"},"html":{"href":"https://github.com/TuxedoJS/TuxedoJS/pull/106"},"issue":{"href":"https://api.github.com/repos/TuxedoJS/TuxedoJS/issues/106"},"comments":{"href":"https://api.github.com/repos/TuxedoJS/TuxedoJS/issues/106/comments"},"review_comments":{"href":"https://api.github.com/repos/TuxedoJS/TuxedoJS/pulls/106/comments"},"review_comment":{"href":"https://api.github.com/repos/TuxedoJS/TuxedoJS/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/TuxedoJS/TuxedoJS/pulls/106/commits"},"statuses":{"href":"https://api.github.com/repos/TuxedoJS/TuxedoJS/statuses/9398a56b52d5aef467b91fe3a159db85b4ad33a5"}}}}