{"action":"created","comment":{"url":"https://api.github.com/repos/frankban/shapeup/pulls/comments/135805125","pull_request_review_id":59254250,"id":135805125,"diff_hunk":"@@ -1,4 +1,285 @@\n-# shapeup (WIP)\n+# shapeup\n \n-This library provides the shape and reshape React property types, including\n-the ability to declare frozen shapes.\n+The React `shape` [property type](https://www.npmjs.com/package/prop-types) is\n+useful for declaring how objects provided to components should look like. By\n+stating that a property has a given shape, we are establishing a contract that\n+must be fulfilled when instantiating the component. However, prop-types' shapes\n+are to be considered more as a minimum requirement than as a proper external\n+interface declaration: providing an object that has a superset of the declared\n+properties is not considered an error, and therefore components can end up\n+relying on fields that are not part of the contract.\n+\n+The shapeup library fixes this by requiring the provided properties to only\n+have the declared set of fields: when using shapeup, passing in an object with\n+extraneous fields would result in an error. This way we ensure that what's\n+declared in the contract is also what's actually used by the components.","path":"README.md","position":18,"original_position":18,"commit_id":"f0127b762b3feff1cacfdc45b1a17e0feceb79ce","original_commit_id":"f0127b762b3feff1cacfdc45b1a17e0feceb79ce","user":{"login":"mitechie","id":75915,"avatar_url":"https://avatars1.githubusercontent.com/u/75915?v=4","gravatar_id":"","url":"https://api.github.com/users/mitechie","html_url":"https://github.com/mitechie","followers_url":"https://api.github.com/users/mitechie/followers","following_url":"https://api.github.com/users/mitechie/following{/other_user}","gists_url":"https://api.github.com/users/mitechie/gists{/gist_id}","starred_url":"https://api.github.com/users/mitechie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mitechie/subscriptions","organizations_url":"https://api.github.com/users/mitechie/orgs","repos_url":"https://api.github.com/users/mitechie/repos","events_url":"https://api.github.com/users/mitechie/events{/privacy}","received_events_url":"https://api.github.com/users/mitechie/received_events","type":"User","site_admin":false},"body":"This way we ensure that what is declared in the contract exactly matches the components.","created_at":"2017-08-29T14:22:13Z","updated_at":"2017-08-29T14:32:55Z","html_url":"https://github.com/frankban/shapeup/pull/3#discussion_r135805125","pull_request_url":"https://api.github.com/repos/frankban/shapeup/pulls/3","_links":{"self":{"href":"https://api.github.com/repos/frankban/shapeup/pulls/comments/135805125"},"html":{"href":"https://github.com/frankban/shapeup/pull/3#discussion_r135805125"},"pull_request":{"href":"https://api.github.com/repos/frankban/shapeup/pulls/3"}}},"pull_request":{"url":"https://api.github.com/repos/frankban/shapeup/pulls/3","id":138145734,"html_url":"https://github.com/frankban/shapeup/pull/3","diff_url":"https://github.com/frankban/shapeup/pull/3.diff","patch_url":"https://github.com/frankban/shapeup/pull/3.patch","issue_url":"https://api.github.com/repos/frankban/shapeup/issues/3","number":3,"state":"open","locked":false,"title":"Add package documentation.","user":{"login":"frankban","id":1408172,"avatar_url":"https://avatars0.githubusercontent.com/u/1408172?v=4","gravatar_id":"","url":"https://api.github.com/users/frankban","html_url":"https://github.com/frankban","followers_url":"https://api.github.com/users/frankban/followers","following_url":"https://api.github.com/users/frankban/following{/other_user}","gists_url":"https://api.github.com/users/frankban/gists{/gist_id}","starred_url":"https://api.github.com/users/frankban/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/frankban/subscriptions","organizations_url":"https://api.github.com/users/frankban/orgs","repos_url":"https://api.github.com/users/frankban/repos","events_url":"https://api.github.com/users/frankban/events{/privacy}","received_events_url":"https://api.github.com/users/frankban/received_events","type":"User","site_admin":false},"body":"Rendered: https://github.com/frankban/shapeup/blob/f0127b762b3feff1cacfdc45b1a17e0feceb79ce/README.md","created_at":"2017-08-29T10:48:32Z","updated_at":"2017-08-29T14:32:55Z","closed_at":null,"merged_at":null,"merge_commit_sha":"2fc3214dda0083010011922bdeafdd3f5bb1f951","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/frankban/shapeup/pulls/3/commits","review_comments_url":"https://api.github.com/repos/frankban/shapeup/pulls/3/comments","review_comment_url":"https://api.github.com/repos/frankban/shapeup/pulls/comments{/number}","comments_url":"https://api.github.com/repos/frankban/shapeup/issues/3/comments","statuses_url":"https://api.github.com/repos/frankban/shapeup/statuses/f0127b762b3feff1cacfdc45b1a17e0feceb79ce","head":{"label":"frankban:docs","ref":"docs","sha":"f0127b762b3feff1cacfdc45b1a17e0feceb79ce","user":{"login":"frankban","id":1408172,"avatar_url":"https://avatars0.githubusercontent.com/u/1408172?v=4","gravatar_id":"","url":"https://api.github.com/users/frankban","html_url":"https://github.com/frankban","followers_url":"https://api.github.com/users/frankban/followers","following_url":"https://api.github.com/users/frankban/following{/other_user}","gists_url":"https://api.github.com/users/frankban/gists{/gist_id}","starred_url":"https://api.github.com/users/frankban/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/frankban/subscriptions","organizations_url":"https://api.github.com/users/frankban/orgs","repos_url":"https://api.github.com/users/frankban/repos","events_url":"https://api.github.com/users/frankban/events{/privacy}","received_events_url":"https://api.github.com/users/frankban/received_events","type":"User","site_admin":false},"repo":{"id":99231535,"name":"shapeup","full_name":"frankban/shapeup","owner":{"login":"frankban","id":1408172,"avatar_url":"https://avatars0.githubusercontent.com/u/1408172?v=4","gravatar_id":"","url":"https://api.github.com/users/frankban","html_url":"https://github.com/frankban","followers_url":"https://api.github.com/users/frankban/followers","following_url":"https://api.github.com/users/frankban/following{/other_user}","gists_url":"https://api.github.com/users/frankban/gists{/gist_id}","starred_url":"https://api.github.com/users/frankban/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/frankban/subscriptions","organizations_url":"https://api.github.com/users/frankban/orgs","repos_url":"https://api.github.com/users/frankban/repos","events_url":"https://api.github.com/users/frankban/events{/privacy}","received_events_url":"https://api.github.com/users/frankban/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/frankban/shapeup","description":"This library provides the shape and reshape React property types, including the ability to declare frozen shapes.","fork":false,"url":"https://api.github.com/repos/frankban/shapeup","forks_url":"https://api.github.com/repos/frankban/shapeup/forks","keys_url":"https://api.github.com/repos/frankban/shapeup/keys{/key_id}","collaborators_url":"https://api.github.com/repos/frankban/shapeup/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/frankban/shapeup/teams","hooks_url":"https://api.github.com/repos/frankban/shapeup/hooks","issue_events_url":"https://api.github.com/repos/frankban/shapeup/issues/events{/number}","events_url":"https://api.github.com/repos/frankban/shapeup/events","assignees_url":"https://api.github.com/repos/frankban/shapeup/assignees{/user}","branches_url":"https://api.github.com/repos/frankban/shapeup/branches{/branch}","tags_url":"https://api.github.com/repos/frankban/shapeup/tags","blobs_url":"https://api.github.com/repos/frankban/shapeup/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/frankban/shapeup/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/frankban/shapeup/git/refs{/sha}","trees_url":"https://api.github.com/repos/frankban/shapeup/git/trees{/sha}","statuses_url":"https://api.github.com/repos/frankban/shapeup/statuses/{sha}","languages_url":"https://api.github.com/repos/frankban/shapeup/languages","stargazers_url":"https://api.github.com/repos/frankban/shapeup/stargazers","contributors_url":"https://api.github.com/repos/frankban/shapeup/contributors","subscribers_url":"https://api.github.com/repos/frankban/shapeup/subscribers","subscription_url":"https://api.github.com/repos/frankban/shapeup/subscription","commits_url":"https://api.github.com/repos/frankban/shapeup/commits{/sha}","git_commits_url":"https://api.github.com/repos/frankban/shapeup/git/commits{/sha}","comments_url":"https://api.github.com/repos/frankban/shapeup/comments{/number}","issue_comment_url":"https://api.github.com/repos/frankban/shapeup/issues/comments{/number}","contents_url":"https://api.github.com/repos/frankban/shapeup/contents/{+path}","compare_url":"https://api.github.com/repos/frankban/shapeup/compare/{base}...{head}","merges_url":"https://api.github.com/repos/frankban/shapeup/merges","archive_url":"https://api.github.com/repos/frankban/shapeup/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/frankban/shapeup/downloads","issues_url":"https://api.github.com/repos/frankban/shapeup/issues{/number}","pulls_url":"https://api.github.com/repos/frankban/shapeup/pulls{/number}","milestones_url":"https://api.github.com/repos/frankban/shapeup/milestones{/number}","notifications_url":"https://api.github.com/repos/frankban/shapeup/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/frankban/shapeup/labels{/name}","releases_url":"https://api.github.com/repos/frankban/shapeup/releases{/id}","deployments_url":"https://api.github.com/repos/frankban/shapeup/deployments","created_at":"2017-08-03T12:44:35Z","updated_at":"2017-08-09T07:11:29Z","pushed_at":"2017-08-29T10:48:33Z","git_url":"git://github.com/frankban/shapeup.git","ssh_url":"git@github.com:frankban/shapeup.git","clone_url":"https://github.com/frankban/shapeup.git","svn_url":"https://github.com/frankban/shapeup","homepage":"","size":20,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"frankban:master","ref":"master","sha":"b868726d436bfce121d2192b05d73fc4f1ecde81","user":{"login":"frankban","id":1408172,"avatar_url":"https://avatars0.githubusercontent.com/u/1408172?v=4","gravatar_id":"","url":"https://api.github.com/users/frankban","html_url":"https://github.com/frankban","followers_url":"https://api.github.com/users/frankban/followers","following_url":"https://api.github.com/users/frankban/following{/other_user}","gists_url":"https://api.github.com/users/frankban/gists{/gist_id}","starred_url":"https://api.github.com/users/frankban/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/frankban/subscriptions","organizations_url":"https://api.github.com/users/frankban/orgs","repos_url":"https://api.github.com/users/frankban/repos","events_url":"https://api.github.com/users/frankban/events{/privacy}","received_events_url":"https://api.github.com/users/frankban/received_events","type":"User","site_admin":false},"repo":{"id":99231535,"name":"shapeup","full_name":"frankban/shapeup","owner":{"login":"frankban","id":1408172,"avatar_url":"https://avatars0.githubusercontent.com/u/1408172?v=4","gravatar_id":"","url":"https://api.github.com/users/frankban","html_url":"https://github.com/frankban","followers_url":"https://api.github.com/users/frankban/followers","following_url":"https://api.github.com/users/frankban/following{/other_user}","gists_url":"https://api.github.com/users/frankban/gists{/gist_id}","starred_url":"https://api.github.com/users/frankban/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/frankban/subscriptions","organizations_url":"https://api.github.com/users/frankban/orgs","repos_url":"https://api.github.com/users/frankban/repos","events_url":"https://api.github.com/users/frankban/events{/privacy}","received_events_url":"https://api.github.com/users/frankban/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/frankban/shapeup","description":"This library provides the shape and reshape React property types, including the ability to declare frozen shapes.","fork":false,"url":"https://api.github.com/repos/frankban/shapeup","forks_url":"https://api.github.com/repos/frankban/shapeup/forks","keys_url":"https://api.github.com/repos/frankban/shapeup/keys{/key_id}","collaborators_url":"https://api.github.com/repos/frankban/shapeup/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/frankban/shapeup/teams","hooks_url":"https://api.github.com/repos/frankban/shapeup/hooks","issue_events_url":"https://api.github.com/repos/frankban/shapeup/issues/events{/number}","events_url":"https://api.github.com/repos/frankban/shapeup/events","assignees_url":"https://api.github.com/repos/frankban/shapeup/assignees{/user}","branches_url":"https://api.github.com/repos/frankban/shapeup/branches{/branch}","tags_url":"https://api.github.com/repos/frankban/shapeup/tags","blobs_url":"https://api.github.com/repos/frankban/shapeup/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/frankban/shapeup/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/frankban/shapeup/git/refs{/sha}","trees_url":"https://api.github.com/repos/frankban/shapeup/git/trees{/sha}","statuses_url":"https://api.github.com/repos/frankban/shapeup/statuses/{sha}","languages_url":"https://api.github.com/repos/frankban/shapeup/languages","stargazers_url":"https://api.github.com/repos/frankban/shapeup/stargazers","contributors_url":"https://api.github.com/repos/frankban/shapeup/contributors","subscribers_url":"https://api.github.com/repos/frankban/shapeup/subscribers","subscription_url":"https://api.github.com/repos/frankban/shapeup/subscription","commits_url":"https://api.github.com/repos/frankban/shapeup/commits{/sha}","git_commits_url":"https://api.github.com/repos/frankban/shapeup/git/commits{/sha}","comments_url":"https://api.github.com/repos/frankban/shapeup/comments{/number}","issue_comment_url":"https://api.github.com/repos/frankban/shapeup/issues/comments{/number}","contents_url":"https://api.github.com/repos/frankban/shapeup/contents/{+path}","compare_url":"https://api.github.com/repos/frankban/shapeup/compare/{base}...{head}","merges_url":"https://api.github.com/repos/frankban/shapeup/merges","archive_url":"https://api.github.com/repos/frankban/shapeup/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/frankban/shapeup/downloads","issues_url":"https://api.github.com/repos/frankban/shapeup/issues{/number}","pulls_url":"https://api.github.com/repos/frankban/shapeup/pulls{/number}","milestones_url":"https://api.github.com/repos/frankban/shapeup/milestones{/number}","notifications_url":"https://api.github.com/repos/frankban/shapeup/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/frankban/shapeup/labels{/name}","releases_url":"https://api.github.com/repos/frankban/shapeup/releases{/id}","deployments_url":"https://api.github.com/repos/frankban/shapeup/deployments","created_at":"2017-08-03T12:44:35Z","updated_at":"2017-08-09T07:11:29Z","pushed_at":"2017-08-29T10:48:33Z","git_url":"git://github.com/frankban/shapeup.git","ssh_url":"git@github.com:frankban/shapeup.git","clone_url":"https://github.com/frankban/shapeup.git","svn_url":"https://github.com/frankban/shapeup","homepage":"","size":20,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/frankban/shapeup/pulls/3"},"html":{"href":"https://github.com/frankban/shapeup/pull/3"},"issue":{"href":"https://api.github.com/repos/frankban/shapeup/issues/3"},"comments":{"href":"https://api.github.com/repos/frankban/shapeup/issues/3/comments"},"review_comments":{"href":"https://api.github.com/repos/frankban/shapeup/pulls/3/comments"},"review_comment":{"href":"https://api.github.com/repos/frankban/shapeup/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/frankban/shapeup/pulls/3/commits"},"statuses":{"href":"https://api.github.com/repos/frankban/shapeup/statuses/f0127b762b3feff1cacfdc45b1a17e0feceb79ce"}}}}
{"actor":{"display_login":"mitechie"}}