{"action":"created","comment":{"url":"https://api.github.com/repos/Khan/perseus/pulls/comments/61524869","id":61524869,"diff_hunk":"@@ -311,8 +315,22 @@ var imageUrlsFromContent = function(content) {\n \n var Editor = React.createClass({\n     propTypes: {\n-        imageUploader: React.PropTypes.func,\n         apiOptions: ApiOptions.propTypes,\n+        className: React.PropTypes.string,\n+        content: React.PropTypes.string,\n+        disabled: React.PropTypes.bool,\n+        // We don't use EnabledFeatures.propTypes here because it requires the","path":"src/editor.jsx","position":299,"original_position":27,"commit_id":"ae4425e9a7d9a244098cade97e73b1e5ed4e8e03","original_commit_id":"9fe788d6f8755b9fa16579520a2f47821a36dc91","user":{"login":"JJC1138","id":428774,"avatar_url":"https://avatars.githubusercontent.com/u/428774?v=3","gravatar_id":"","url":"https://api.github.com/users/JJC1138","html_url":"https://github.com/JJC1138","followers_url":"https://api.github.com/users/JJC1138/followers","following_url":"https://api.github.com/users/JJC1138/following{/other_user}","gists_url":"https://api.github.com/users/JJC1138/gists{/gist_id}","starred_url":"https://api.github.com/users/JJC1138/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JJC1138/subscriptions","organizations_url":"https://api.github.com/users/JJC1138/orgs","repos_url":"https://api.github.com/users/JJC1138/repos","events_url":"https://api.github.com/users/JJC1138/events{/privacy}","received_events_url":"https://api.github.com/users/JJC1138/received_events","type":"User","site_admin":false},"body":"Okay I'll give it a go. Thanks!","created_at":"2016-04-29T00:55:30Z","updated_at":"2016-04-29T00:55:30Z","html_url":"https://github.com/Khan/perseus/pull/68#discussion_r61524869","pull_request_url":"https://api.github.com/repos/Khan/perseus/pulls/68","_links":{"self":{"href":"https://api.github.com/repos/Khan/perseus/pulls/comments/61524869"},"html":{"href":"https://github.com/Khan/perseus/pull/68#discussion_r61524869"},"pull_request":{"href":"https://api.github.com/repos/Khan/perseus/pulls/68"}}},"pull_request":{"url":"https://api.github.com/repos/Khan/perseus/pulls/68","id":68301667,"html_url":"https://github.com/Khan/perseus/pull/68","diff_url":"https://github.com/Khan/perseus/pull/68.diff","patch_url":"https://github.com/Khan/perseus/pull/68.patch","issue_url":"https://api.github.com/repos/Khan/perseus/issues/68","number":68,"state":"open","locked":false,"title":"Updating code for new ka-lint rules","user":{"login":"JJC1138","id":428774,"avatar_url":"https://avatars.githubusercontent.com/u/428774?v=3","gravatar_id":"","url":"https://api.github.com/users/JJC1138","html_url":"https://github.com/JJC1138","followers_url":"https://api.github.com/users/JJC1138/followers","following_url":"https://api.github.com/users/JJC1138/following{/other_user}","gists_url":"https://api.github.com/users/JJC1138/gists{/gist_id}","starred_url":"https://api.github.com/users/JJC1138/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JJC1138/subscriptions","organizations_url":"https://api.github.com/users/JJC1138/orgs","repos_url":"https://api.github.com/users/JJC1138/repos","events_url":"https://api.github.com/users/JJC1138/events{/privacy}","received_events_url":"https://api.github.com/users/JJC1138/received_events","type":"User","site_admin":false},"body":"Hello!\r\n\r\nI'd like to apologise straight away for how big this patch is. With hindsight I should have pushed in smaller chunks every week or so, but it always looked like I was nearly done so I put it off. If you want to cherry pick commits rather than reviewing the whole lot in one go then please feel free, and I'll continue to merge or rebase any master changes to keep it current. Basically, if there's anything I can do to make reviewing this monster less of a burden, please let me know! And sorry again!\r\n\r\nAs you can see, I've done one commit per lint rule so that it's easier to review the changes. Many of the commits are purely mechanical formatting changes, of course.\r\n\r\nThere's one actual, real-life bug fix, which is in [Fix CSProgram.simpleValidate()](https://github.com/Khan/perseus/commit/6e83de19a167314041804bb02c59c5ea61960e1d).\r\n\r\n[Fix some accidental globals that should be locals](https://github.com/Khan/perseus/commit/ac2b28b60f613f4a6a66699bb393f96670b19307) fixes some accidental-global errors, but as far as I could tell none of those actually caused problems (except perhaps for memory leaks).\r\n\r\nProbably the largest part of the work was documenting prop types. I did the vast majority of them, but I did defer a few where the type was complex and it would have been very time consuming to figure out its complete specification. For those deferred ones I [inlined the `eslint-disable` comment](https://github.com/Khan/perseus/commit/b3f4d5b90861168c39636263f0b105fd905ce44f) around the prop in question so that the rest of file is lint clean. I adopted a convention of [using `React.PropTypes.shape({})`](https://github.com/Khan/perseus/commit/0e868fd73af4151f0e2b649c821e73fac471b430) to mean that the type can't be specified more precisely because it varies depending on how the component is used, and using `React.PropTypes.object` with the inlined `eslint-disable` comment to mean that the type could be more precisely defined but it just hasn't been done yet.\r\n\r\nI think that's just about all there is to say. There are comments in some of the commit descriptions to give more detail where what I was doing wasn't obvious. I tested by running the test suite and by playing with every type of widget (including the hidden ones) and I wasn't able to find any breakages.\r\n\r\nThank you!","created_at":"2016-04-28T22:35:49Z","updated_at":"2016-04-29T00:55:31Z","closed_at":null,"merged_at":null,"merge_commit_sha":"51cea811d71a1d54799ecef00af53a66cba48b69","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/Khan/perseus/pulls/68/commits","review_comments_url":"https://api.github.com/repos/Khan/perseus/pulls/68/comments","review_comment_url":"https://api.github.com/repos/Khan/perseus/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Khan/perseus/issues/68/comments","statuses_url":"https://api.github.com/repos/Khan/perseus/statuses/ae4425e9a7d9a244098cade97e73b1e5ed4e8e03","head":{"label":"JJC1138:remove-eslint-exceptions","ref":"remove-eslint-exceptions","sha":"ae4425e9a7d9a244098cade97e73b1e5ed4e8e03","user":{"login":"JJC1138","id":428774,"avatar_url":"https://avatars.githubusercontent.com/u/428774?v=3","gravatar_id":"","url":"https://api.github.com/users/JJC1138","html_url":"https://github.com/JJC1138","followers_url":"https://api.github.com/users/JJC1138/followers","following_url":"https://api.github.com/users/JJC1138/following{/other_user}","gists_url":"https://api.github.com/users/JJC1138/gists{/gist_id}","starred_url":"https://api.github.com/users/JJC1138/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JJC1138/subscriptions","organizations_url":"https://api.github.com/users/JJC1138/orgs","repos_url":"https://api.github.com/users/JJC1138/repos","events_url":"https://api.github.com/users/JJC1138/events{/privacy}","received_events_url":"https://api.github.com/users/JJC1138/received_events","type":"User","site_admin":false},"repo":{"id":55689111,"name":"perseus","full_name":"JJC1138/perseus","owner":{"login":"JJC1138","id":428774,"avatar_url":"https://avatars.githubusercontent.com/u/428774?v=3","gravatar_id":"","url":"https://api.github.com/users/JJC1138","html_url":"https://github.com/JJC1138","followers_url":"https://api.github.com/users/JJC1138/followers","following_url":"https://api.github.com/users/JJC1138/following{/other_user}","gists_url":"https://api.github.com/users/JJC1138/gists{/gist_id}","starred_url":"https://api.github.com/users/JJC1138/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JJC1138/subscriptions","organizations_url":"https://api.github.com/users/JJC1138/orgs","repos_url":"https://api.github.com/users/JJC1138/repos","events_url":"https://api.github.com/users/JJC1138/events{/privacy}","received_events_url":"https://api.github.com/users/JJC1138/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/JJC1138/perseus","description":"Perseus is Khan Academy's new exercise question editor and renderer.","fork":true,"url":"https://api.github.com/repos/JJC1138/perseus","forks_url":"https://api.github.com/repos/JJC1138/perseus/forks","keys_url":"https://api.github.com/repos/JJC1138/perseus/keys{/key_id}","collaborators_url":"https://api.github.com/repos/JJC1138/perseus/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/JJC1138/perseus/teams","hooks_url":"https://api.github.com/repos/JJC1138/perseus/hooks","issue_events_url":"https://api.github.com/repos/JJC1138/perseus/issues/events{/number}","events_url":"https://api.github.com/repos/JJC1138/perseus/events","assignees_url":"https://api.github.com/repos/JJC1138/perseus/assignees{/user}","branches_url":"https://api.github.com/repos/JJC1138/perseus/branches{/branch}","tags_url":"https://api.github.com/repos/JJC1138/perseus/tags","blobs_url":"https://api.github.com/repos/JJC1138/perseus/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/JJC1138/perseus/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/JJC1138/perseus/git/refs{/sha}","trees_url":"https://api.github.com/repos/JJC1138/perseus/git/trees{/sha}","statuses_url":"https://api.github.com/repos/JJC1138/perseus/statuses/{sha}","languages_url":"https://api.github.com/repos/JJC1138/perseus/languages","stargazers_url":"https://api.github.com/repos/JJC1138/perseus/stargazers","contributors_url":"https://api.github.com/repos/JJC1138/perseus/contributors","subscribers_url":"https://api.github.com/repos/JJC1138/perseus/subscribers","subscription_url":"https://api.github.com/repos/JJC1138/perseus/subscription","commits_url":"https://api.github.com/repos/JJC1138/perseus/commits{/sha}","git_commits_url":"https://api.github.com/repos/JJC1138/perseus/git/commits{/sha}","comments_url":"https://api.github.com/repos/JJC1138/perseus/comments{/number}","issue_comment_url":"https://api.github.com/repos/JJC1138/perseus/issues/comments{/number}","contents_url":"https://api.github.com/repos/JJC1138/perseus/contents/{+path}","compare_url":"https://api.github.com/repos/JJC1138/perseus/compare/{base}...{head}","merges_url":"https://api.github.com/repos/JJC1138/perseus/merges","archive_url":"https://api.github.com/repos/JJC1138/perseus/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/JJC1138/perseus/downloads","issues_url":"https://api.github.com/repos/JJC1138/perseus/issues{/number}","pulls_url":"https://api.github.com/repos/JJC1138/perseus/pulls{/number}","milestones_url":"https://api.github.com/repos/JJC1138/perseus/milestones{/number}","notifications_url":"https://api.github.com/repos/JJC1138/perseus/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/JJC1138/perseus/labels{/name}","releases_url":"https://api.github.com/repos/JJC1138/perseus/releases{/id}","deployments_url":"https://api.github.com/repos/JJC1138/perseus/deployments","created_at":"2016-04-07T11:27:04Z","updated_at":"2016-04-07T11:27:06Z","pushed_at":"2016-04-28T23:09:40Z","git_url":"git://github.com/JJC1138/perseus.git","ssh_url":"git@github.com:JJC1138/perseus.git","clone_url":"https://github.com/JJC1138/perseus.git","svn_url":"https://github.com/JJC1138/perseus","homepage":"http://khan.github.io/perseus/","size":14143,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":false,"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":"Khan:master","ref":"master","sha":"b6ef22bc8b95831812c4e99a372f414ac92debfa","user":{"login":"Khan","id":15455,"avatar_url":"https://avatars.githubusercontent.com/u/15455?v=3","gravatar_id":"","url":"https://api.github.com/users/Khan","html_url":"https://github.com/Khan","followers_url":"https://api.github.com/users/Khan/followers","following_url":"https://api.github.com/users/Khan/following{/other_user}","gists_url":"https://api.github.com/users/Khan/gists{/gist_id}","starred_url":"https://api.github.com/users/Khan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Khan/subscriptions","organizations_url":"https://api.github.com/users/Khan/orgs","repos_url":"https://api.github.com/users/Khan/repos","events_url":"https://api.github.com/users/Khan/events{/privacy}","received_events_url":"https://api.github.com/users/Khan/received_events","type":"Organization","site_admin":false},"repo":{"id":7827310,"name":"perseus","full_name":"Khan/perseus","owner":{"login":"Khan","id":15455,"avatar_url":"https://avatars.githubusercontent.com/u/15455?v=3","gravatar_id":"","url":"https://api.github.com/users/Khan","html_url":"https://github.com/Khan","followers_url":"https://api.github.com/users/Khan/followers","following_url":"https://api.github.com/users/Khan/following{/other_user}","gists_url":"https://api.github.com/users/Khan/gists{/gist_id}","starred_url":"https://api.github.com/users/Khan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Khan/subscriptions","organizations_url":"https://api.github.com/users/Khan/orgs","repos_url":"https://api.github.com/users/Khan/repos","events_url":"https://api.github.com/users/Khan/events{/privacy}","received_events_url":"https://api.github.com/users/Khan/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Khan/perseus","description":"Perseus is Khan Academy's new exercise question editor and renderer.","fork":false,"url":"https://api.github.com/repos/Khan/perseus","forks_url":"https://api.github.com/repos/Khan/perseus/forks","keys_url":"https://api.github.com/repos/Khan/perseus/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Khan/perseus/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Khan/perseus/teams","hooks_url":"https://api.github.com/repos/Khan/perseus/hooks","issue_events_url":"https://api.github.com/repos/Khan/perseus/issues/events{/number}","events_url":"https://api.github.com/repos/Khan/perseus/events","assignees_url":"https://api.github.com/repos/Khan/perseus/assignees{/user}","branches_url":"https://api.github.com/repos/Khan/perseus/branches{/branch}","tags_url":"https://api.github.com/repos/Khan/perseus/tags","blobs_url":"https://api.github.com/repos/Khan/perseus/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Khan/perseus/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Khan/perseus/git/refs{/sha}","trees_url":"https://api.github.com/repos/Khan/perseus/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Khan/perseus/statuses/{sha}","languages_url":"https://api.github.com/repos/Khan/perseus/languages","stargazers_url":"https://api.github.com/repos/Khan/perseus/stargazers","contributors_url":"https://api.github.com/repos/Khan/perseus/contributors","subscribers_url":"https://api.github.com/repos/Khan/perseus/subscribers","subscription_url":"https://api.github.com/repos/Khan/perseus/subscription","commits_url":"https://api.github.com/repos/Khan/perseus/commits{/sha}","git_commits_url":"https://api.github.com/repos/Khan/perseus/git/commits{/sha}","comments_url":"https://api.github.com/repos/Khan/perseus/comments{/number}","issue_comment_url":"https://api.github.com/repos/Khan/perseus/issues/comments{/number}","contents_url":"https://api.github.com/repos/Khan/perseus/contents/{+path}","compare_url":"https://api.github.com/repos/Khan/perseus/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Khan/perseus/merges","archive_url":"https://api.github.com/repos/Khan/perseus/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Khan/perseus/downloads","issues_url":"https://api.github.com/repos/Khan/perseus/issues{/number}","pulls_url":"https://api.github.com/repos/Khan/perseus/pulls{/number}","milestones_url":"https://api.github.com/repos/Khan/perseus/milestones{/number}","notifications_url":"https://api.github.com/repos/Khan/perseus/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Khan/perseus/labels{/name}","releases_url":"https://api.github.com/repos/Khan/perseus/releases{/id}","deployments_url":"https://api.github.com/repos/Khan/perseus/deployments","created_at":"2013-01-25T19:54:46Z","updated_at":"2016-04-28T17:31:06Z","pushed_at":"2016-04-28T23:11:06Z","git_url":"git://github.com/Khan/perseus.git","ssh_url":"git@github.com:Khan/perseus.git","clone_url":"https://github.com/Khan/perseus.git","svn_url":"https://github.com/Khan/perseus","homepage":"http://khan.github.io/perseus/","size":14936,"stargazers_count":569,"watchers_count":569,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":148,"mirror_url":null,"open_issues_count":18,"forks":148,"open_issues":18,"watchers":569,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Khan/perseus/pulls/68"},"html":{"href":"https://github.com/Khan/perseus/pull/68"},"issue":{"href":"https://api.github.com/repos/Khan/perseus/issues/68"},"comments":{"href":"https://api.github.com/repos/Khan/perseus/issues/68/comments"},"review_comments":{"href":"https://api.github.com/repos/Khan/perseus/pulls/68/comments"},"review_comment":{"href":"https://api.github.com/repos/Khan/perseus/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Khan/perseus/pulls/68/commits"},"statuses":{"href":"https://api.github.com/repos/Khan/perseus/statuses/ae4425e9a7d9a244098cade97e73b1e5ed4e8e03"}}}}