{"action":"created","comment":{"url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/pulls/comments/170176540","pull_request_review_id":98823032,"id":170176540,"diff_hunk":"@@ -54,38 +57,69 @@ module.exports = {\n       }\n     }\n \n+    function isPropTypesPackage(node) {\n+      // Note: we really do want == with the package names here,\n+      // since we need value equality, not identity - and\n+      // these values are always string or null.\n+      /* eslint-disable eqeqeq */\n+      return (\n+        node.type === 'Identifier' &&\n+        node.name == propTypesPackageName\n+      ) || (\n+        node.type === 'MemberExpression' &&\n+        node.property.name === 'PropTypes' &&\n+        node.object.name == reactPackageName\n+      );\n+      /* eslint-enable eqeqeq */\n+    }\n+\n     /* eslint-disable no-use-before-define */\n+\n+    function checkValidCallExpression(node) {\n+      const callee = node.callee;\n+      if (callee.type === 'MemberExpression' && callee.property.name === 'shape') {\n+        checkValidPropObject(node.arguments[0]);\n+      } else if (callee.type === 'MemberExpression' && callee.property.name === 'oneOfType') {\n+        const args = node.arguments[0];\n+        if (args && args.type === 'ArrayExpression') {\n+          args.elements.forEach(el => checkValidProp(el));","path":"lib/rules/no-typos.js","position":null,"original_position":39,"commit_id":"b83987ef09d15bb7d5424454a013ef20a33e206f","original_commit_id":"e9d99904028e701013748755a9117c282036c7d2","user":{"login":"ljharb","id":45469,"avatar_url":"https://avatars1.githubusercontent.com/u/45469?v=4","gravatar_id":"","url":"https://api.github.com/users/ljharb","html_url":"https://github.com/ljharb","followers_url":"https://api.github.com/users/ljharb/followers","following_url":"https://api.github.com/users/ljharb/following{/other_user}","gists_url":"https://api.github.com/users/ljharb/gists{/gist_id}","starred_url":"https://api.github.com/users/ljharb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ljharb/subscriptions","organizations_url":"https://api.github.com/users/ljharb/orgs","repos_url":"https://api.github.com/users/ljharb/repos","events_url":"https://api.github.com/users/ljharb/events{/privacy}","received_events_url":"https://api.github.com/users/ljharb/received_events","type":"User","site_admin":false},"body":"yep, exactly; implicit return should only be used where the return value matters.","created_at":"2018-02-23T06:41:16Z","updated_at":"2018-02-23T06:41:16Z","html_url":"https://github.com/yannickcr/eslint-plugin-react/pull/1671#discussion_r170176540","pull_request_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/pulls/1671","author_association":"COLLABORATOR","_links":{"self":{"href":"https://api.github.com/repos/yannickcr/eslint-plugin-react/pulls/comments/170176540"},"html":{"href":"https://github.com/yannickcr/eslint-plugin-react/pull/1671#discussion_r170176540"},"pull_request":{"href":"https://api.github.com/repos/yannickcr/eslint-plugin-react/pulls/1671"}},"in_reply_to_id":169406118},"pull_request":{"url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/pulls/1671","id":166573760,"html_url":"https://github.com/yannickcr/eslint-plugin-react/pull/1671","diff_url":"https://github.com/yannickcr/eslint-plugin-react/pull/1671.diff","patch_url":"https://github.com/yannickcr/eslint-plugin-react/pull/1671.patch","issue_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/issues/1671","number":1671,"state":"open","locked":false,"title":"Allow custom PropType classes with no-typos rule","user":{"login":"brettdh","id":91550,"avatar_url":"https://avatars3.githubusercontent.com/u/91550?v=4","gravatar_id":"","url":"https://api.github.com/users/brettdh","html_url":"https://github.com/brettdh","followers_url":"https://api.github.com/users/brettdh/followers","following_url":"https://api.github.com/users/brettdh/following{/other_user}","gists_url":"https://api.github.com/users/brettdh/gists{/gist_id}","starred_url":"https://api.github.com/users/brettdh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/brettdh/subscriptions","organizations_url":"https://api.github.com/users/brettdh/orgs","repos_url":"https://api.github.com/users/brettdh/repos","events_url":"https://api.github.com/users/brettdh/events{/privacy}","received_events_url":"https://api.github.com/users/brettdh/received_events","type":"User","site_admin":false},"body":"This is simply a rebase of @jseminck's branch, plus the removal of the\nlingering failing test.\n\nI removed the failing test because I believe it's a very small corner case\nthat should not block the resolution of this issue, which seems to affect\na lot of people and limits our ability to keep our components' proptypes DRY.\n\nIf it's determined that this corner case *should* be handled, I suggest creating\na new issue to track just that case.\n\nCloses #1389.","created_at":"2018-02-01T15:46:15Z","updated_at":"2018-02-23T06:41:16Z","closed_at":null,"merged_at":null,"merge_commit_sha":"72f51d4176025e2c85018784213b01798c8d2544","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/pulls/1671/commits","review_comments_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/pulls/1671/comments","review_comment_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/pulls/comments{/number}","comments_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/issues/1671/comments","statuses_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/statuses/b83987ef09d15bb7d5424454a013ef20a33e206f","head":{"label":"brettdh:no-typos-react-import","ref":"no-typos-react-import","sha":"b83987ef09d15bb7d5424454a013ef20a33e206f","user":{"login":"brettdh","id":91550,"avatar_url":"https://avatars3.githubusercontent.com/u/91550?v=4","gravatar_id":"","url":"https://api.github.com/users/brettdh","html_url":"https://github.com/brettdh","followers_url":"https://api.github.com/users/brettdh/followers","following_url":"https://api.github.com/users/brettdh/following{/other_user}","gists_url":"https://api.github.com/users/brettdh/gists{/gist_id}","starred_url":"https://api.github.com/users/brettdh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/brettdh/subscriptions","organizations_url":"https://api.github.com/users/brettdh/orgs","repos_url":"https://api.github.com/users/brettdh/repos","events_url":"https://api.github.com/users/brettdh/events{/privacy}","received_events_url":"https://api.github.com/users/brettdh/received_events","type":"User","site_admin":false},"repo":{"id":116596681,"name":"eslint-plugin-react","full_name":"brettdh/eslint-plugin-react","owner":{"login":"brettdh","id":91550,"avatar_url":"https://avatars3.githubusercontent.com/u/91550?v=4","gravatar_id":"","url":"https://api.github.com/users/brettdh","html_url":"https://github.com/brettdh","followers_url":"https://api.github.com/users/brettdh/followers","following_url":"https://api.github.com/users/brettdh/following{/other_user}","gists_url":"https://api.github.com/users/brettdh/gists{/gist_id}","starred_url":"https://api.github.com/users/brettdh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/brettdh/subscriptions","organizations_url":"https://api.github.com/users/brettdh/orgs","repos_url":"https://api.github.com/users/brettdh/repos","events_url":"https://api.github.com/users/brettdh/events{/privacy}","received_events_url":"https://api.github.com/users/brettdh/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/brettdh/eslint-plugin-react","description":"React specific linting rules for ESLint","fork":true,"url":"https://api.github.com/repos/brettdh/eslint-plugin-react","forks_url":"https://api.github.com/repos/brettdh/eslint-plugin-react/forks","keys_url":"https://api.github.com/repos/brettdh/eslint-plugin-react/keys{/key_id}","collaborators_url":"https://api.github.com/repos/brettdh/eslint-plugin-react/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/brettdh/eslint-plugin-react/teams","hooks_url":"https://api.github.com/repos/brettdh/eslint-plugin-react/hooks","issue_events_url":"https://api.github.com/repos/brettdh/eslint-plugin-react/issues/events{/number}","events_url":"https://api.github.com/repos/brettdh/eslint-plugin-react/events","assignees_url":"https://api.github.com/repos/brettdh/eslint-plugin-react/assignees{/user}","branches_url":"https://api.github.com/repos/brettdh/eslint-plugin-react/branches{/branch}","tags_url":"https://api.github.com/repos/brettdh/eslint-plugin-react/tags","blobs_url":"https://api.github.com/repos/brettdh/eslint-plugin-react/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/brettdh/eslint-plugin-react/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/brettdh/eslint-plugin-react/git/refs{/sha}","trees_url":"https://api.github.com/repos/brettdh/eslint-plugin-react/git/trees{/sha}","statuses_url":"https://api.github.com/repos/brettdh/eslint-plugin-react/statuses/{sha}","languages_url":"https://api.github.com/repos/brettdh/eslint-plugin-react/languages","stargazers_url":"https://api.github.com/repos/brettdh/eslint-plugin-react/stargazers","contributors_url":"https://api.github.com/repos/brettdh/eslint-plugin-react/contributors","subscribers_url":"https://api.github.com/repos/brettdh/eslint-plugin-react/subscribers","subscription_url":"https://api.github.com/repos/brettdh/eslint-plugin-react/subscription","commits_url":"https://api.github.com/repos/brettdh/eslint-plugin-react/commits{/sha}","git_commits_url":"https://api.github.com/repos/brettdh/eslint-plugin-react/git/commits{/sha}","comments_url":"https://api.github.com/repos/brettdh/eslint-plugin-react/comments{/number}","issue_comment_url":"https://api.github.com/repos/brettdh/eslint-plugin-react/issues/comments{/number}","contents_url":"https://api.github.com/repos/brettdh/eslint-plugin-react/contents/{+path}","compare_url":"https://api.github.com/repos/brettdh/eslint-plugin-react/compare/{base}...{head}","merges_url":"https://api.github.com/repos/brettdh/eslint-plugin-react/merges","archive_url":"https://api.github.com/repos/brettdh/eslint-plugin-react/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/brettdh/eslint-plugin-react/downloads","issues_url":"https://api.github.com/repos/brettdh/eslint-plugin-react/issues{/number}","pulls_url":"https://api.github.com/repos/brettdh/eslint-plugin-react/pulls{/number}","milestones_url":"https://api.github.com/repos/brettdh/eslint-plugin-react/milestones{/number}","notifications_url":"https://api.github.com/repos/brettdh/eslint-plugin-react/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/brettdh/eslint-plugin-react/labels{/name}","releases_url":"https://api.github.com/repos/brettdh/eslint-plugin-react/releases{/id}","deployments_url":"https://api.github.com/repos/brettdh/eslint-plugin-react/deployments","created_at":"2018-01-07T20:28:04Z","updated_at":"2018-01-07T20:28:06Z","pushed_at":"2018-02-21T14:57:05Z","git_url":"git://github.com/brettdh/eslint-plugin-react.git","ssh_url":"git@github.com:brettdh/eslint-plugin-react.git","clone_url":"https://github.com/brettdh/eslint-plugin-react.git","svn_url":"https://github.com/brettdh/eslint-plugin-react","homepage":null,"size":2925,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"yannickcr:master","ref":"master","sha":"abe8381c0d6748047224c430ce47f02e40160ed0","user":{"login":"yannickcr","id":13209,"avatar_url":"https://avatars2.githubusercontent.com/u/13209?v=4","gravatar_id":"","url":"https://api.github.com/users/yannickcr","html_url":"https://github.com/yannickcr","followers_url":"https://api.github.com/users/yannickcr/followers","following_url":"https://api.github.com/users/yannickcr/following{/other_user}","gists_url":"https://api.github.com/users/yannickcr/gists{/gist_id}","starred_url":"https://api.github.com/users/yannickcr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yannickcr/subscriptions","organizations_url":"https://api.github.com/users/yannickcr/orgs","repos_url":"https://api.github.com/users/yannickcr/repos","events_url":"https://api.github.com/users/yannickcr/events{/privacy}","received_events_url":"https://api.github.com/users/yannickcr/received_events","type":"User","site_admin":false},"repo":{"id":28061676,"name":"eslint-plugin-react","full_name":"yannickcr/eslint-plugin-react","owner":{"login":"yannickcr","id":13209,"avatar_url":"https://avatars2.githubusercontent.com/u/13209?v=4","gravatar_id":"","url":"https://api.github.com/users/yannickcr","html_url":"https://github.com/yannickcr","followers_url":"https://api.github.com/users/yannickcr/followers","following_url":"https://api.github.com/users/yannickcr/following{/other_user}","gists_url":"https://api.github.com/users/yannickcr/gists{/gist_id}","starred_url":"https://api.github.com/users/yannickcr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yannickcr/subscriptions","organizations_url":"https://api.github.com/users/yannickcr/orgs","repos_url":"https://api.github.com/users/yannickcr/repos","events_url":"https://api.github.com/users/yannickcr/events{/privacy}","received_events_url":"https://api.github.com/users/yannickcr/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/yannickcr/eslint-plugin-react","description":"React specific linting rules for ESLint","fork":false,"url":"https://api.github.com/repos/yannickcr/eslint-plugin-react","forks_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/forks","keys_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/keys{/key_id}","collaborators_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/teams","hooks_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/hooks","issue_events_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/issues/events{/number}","events_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/events","assignees_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/assignees{/user}","branches_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/branches{/branch}","tags_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/tags","blobs_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/git/refs{/sha}","trees_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/git/trees{/sha}","statuses_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/statuses/{sha}","languages_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/languages","stargazers_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/stargazers","contributors_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/contributors","subscribers_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/subscribers","subscription_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/subscription","commits_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/commits{/sha}","git_commits_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/git/commits{/sha}","comments_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/comments{/number}","issue_comment_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/issues/comments{/number}","contents_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/contents/{+path}","compare_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/compare/{base}...{head}","merges_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/merges","archive_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/downloads","issues_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/issues{/number}","pulls_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/pulls{/number}","milestones_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/milestones{/number}","notifications_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/labels{/name}","releases_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/releases{/id}","deployments_url":"https://api.github.com/repos/yannickcr/eslint-plugin-react/deployments","created_at":"2014-12-15T23:44:14Z","updated_at":"2018-02-23T06:32:53Z","pushed_at":"2018-02-21T14:57:07Z","git_url":"git://github.com/yannickcr/eslint-plugin-react.git","ssh_url":"git@github.com:yannickcr/eslint-plugin-react.git","clone_url":"https://github.com/yannickcr/eslint-plugin-react.git","svn_url":"https://github.com/yannickcr/eslint-plugin-react","homepage":null,"size":2920,"stargazers_count":3689,"watchers_count":3689,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":935,"mirror_url":null,"archived":false,"open_issues_count":344,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit"},"forks":935,"open_issues":344,"watchers":3689,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/yannickcr/eslint-plugin-react/pulls/1671"},"html":{"href":"https://github.com/yannickcr/eslint-plugin-react/pull/1671"},"issue":{"href":"https://api.github.com/repos/yannickcr/eslint-plugin-react/issues/1671"},"comments":{"href":"https://api.github.com/repos/yannickcr/eslint-plugin-react/issues/1671/comments"},"review_comments":{"href":"https://api.github.com/repos/yannickcr/eslint-plugin-react/pulls/1671/comments"},"review_comment":{"href":"https://api.github.com/repos/yannickcr/eslint-plugin-react/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/yannickcr/eslint-plugin-react/pulls/1671/commits"},"statuses":{"href":"https://api.github.com/repos/yannickcr/eslint-plugin-react/statuses/b83987ef09d15bb7d5424454a013ef20a33e206f"}},"author_association":"NONE"}}
{"actor":{"display_login":"ljharb"}}