{"action":"created","comment":{"url":"https://api.github.com/repos/keystonejs/keystone/pulls/comments/73744266","id":73744266,"diff_hunk":"@@ -0,0 +1,119 @@\n+/* eslint-disable react/jsx-no-bind */\n+\n+import assign from 'object-assign';\n+import React from 'react';\n+import Field from '../Field';\n+import Domify from 'react-domify';\n+\n+import { Fields } from 'FieldTypes';\n+import { Button, GlyphButton } from '../../../admin/client/App/elemental';\n+import InvalidFieldType from '../../../admin/client/App/shared/InvalidFieldType';\n+\n+function generateId () {\n+\treturn Math.random().toString(36).substr(2, 9);\n+};\n+\n+module.exports = Field.create({\n+\tdisplayName: 'ListField',\n+\tstatics: {\n+\t\ttype: 'List',\n+\t},\n+\tpropTypes: {\n+\t\tfields: React.PropTypes.object.isRequired,\n+\t\tlabel: React.PropTypes.string,\n+\t\tonChange: React.PropTypes.func.isRequired,\n+\t\tpath: React.PropTypes.string.isRequired,\n+\t\tvalue: React.PropTypes.array,\n+\t},\n+\taddItem () {\n+\t\tconst value = this.props.value.slice();\n+\t\tvalue.push({\n+\t\t\t_id: generateId(),\n+\t\t\t_isNew: true,\n+\t\t});\n+\t\tthis.props.onChange({\n+\t\t\tpath: this.props.path,\n+\t\t\tvalue: value,\n+\t\t});\n+\t},\n+\tremoveItem (index) {\n+\t\tconst oldValue = this.props.value;\n+\t\tconst value = oldValue.slice(0, index).concat(oldValue.slice(index + 1));\n+\t\tthis.props.onChange({\n+\t\t\tpath: this.props.path,\n+\t\t\tvalue: value,\n+\t\t});\n+\t},\n+\thandleFieldChange (index, event) {\n+\t\tconst value = this.props.value.slice();\n+\t\tconst update = value[index];\n+\t\tupdate[event.path] = event.value;\n+\t\tvalue.splice(index, 1, update);\n+\t\tthis.props.onChange({\n+\t\t\tpath: this.props.path,\n+\t\t\tvalue: value,\n+\t\t});\n+\t},\n+\trenderFieldsForItem (index, value) {\n+\t\treturn Object.keys(this.props.fields).map((path) => {\n+\t\t\tconst field = this.props.fields[path];\n+\t\t\tif (typeof Fields[field.type] !== 'function') {\n+\t\t\t\treturn React.createElement(InvalidFieldType, { type: field.type, path: field.path, key: field.path });\n+\t\t\t}\n+\t\t\tconst props = assign({}, field);\n+\t\t\tprops.value = value[field.path];\n+\t\t\tprops.values = value;\n+\t\t\tprops.onChange = this.handleFieldChange.bind(this, index);\n+\t\t\tprops.mode = 'edit';\n+\t\t\tprops.inputNamePrefix = `${this.props.path}[${index}]`;\n+\t\t\tprops.key = field.path;\n+\t\t\t// TODO ?\n+\t\t\t// if (props.dependsOn) {\n+\t\t\t// \tprops.currentDependencies = {};\n+\t\t\t// \tObject.keys(props.dependsOn).forEach(dep => {\n+\t\t\t// \t\tprops.currentDependencies[dep] = this.state.values[dep];\n+\t\t\t// \t});\n+\t\t\t// }\n+\t\t\treturn React.createElement(Fields[field.type], props);\n+\t\t}, this);\n+\t},\n+\trenderItems () {\n+\t\treturn (\n+\t\t\t<div>","path":"fields/types/list/ListField.js","position":82,"original_position":82,"commit_id":"35d479fbf20f15f783eab0ba8fd7a0dd456875ac","original_commit_id":"35d479fbf20f15f783eab0ba8fd7a0dd456875ac","user":{"login":"wmertens","id":54934,"avatar_url":"https://avatars.githubusercontent.com/u/54934?v=3","gravatar_id":"","url":"https://api.github.com/users/wmertens","html_url":"https://github.com/wmertens","followers_url":"https://api.github.com/users/wmertens/followers","following_url":"https://api.github.com/users/wmertens/following{/other_user}","gists_url":"https://api.github.com/users/wmertens/gists{/gist_id}","starred_url":"https://api.github.com/users/wmertens/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wmertens/subscriptions","organizations_url":"https://api.github.com/users/wmertens/orgs","repos_url":"https://api.github.com/users/wmertens/repos","events_url":"https://api.github.com/users/wmertens/events{/privacy}","received_events_url":"https://api.github.com/users/wmertens/received_events","type":"User","site_admin":false},"body":"We had a lot of code like this in our projects and we came to the conclusion that it is hard to maintain. This function mixes application logic with presentation.\r\n\r\nSo what we do now, and what we are really happy about, is create a small component which has only one job: to lay out the data calculated here. We give those components a `Dom` suffix and we generally create them as pure functions in the same file, except if they end up being shared.\r\n\r\nSo this `renderItems()` would return an array of\r\n```jsx\r\n<ItemDom {...{key, name, id, onAdd, onRemove}}>\r\n  {this.renderFieldsForItem(index, value)}\r\n</ItemDom>\r\n```\r\nand higher up we'd have\r\n```jsx\r\nconst ItemDom = ({name, id, onAdd, onRemove, children}) => (\r\n  <div style...>\r\n    {id && <input type=\"hidden\" name={name} value={id}/>}\r\n    {children}\r\n    buttons...\r\n  </div>\r\n)\r\n```\r\n(or probably in a shared folder since other Fields need it too)","created_at":"2016-08-05T19:05:15Z","updated_at":"2016-08-05T19:05:15Z","html_url":"https://github.com/keystonejs/keystone/pull/3282#discussion_r73744266","pull_request_url":"https://api.github.com/repos/keystonejs/keystone/pulls/3282","_links":{"self":{"href":"https://api.github.com/repos/keystonejs/keystone/pulls/comments/73744266"},"html":{"href":"https://github.com/keystonejs/keystone/pull/3282#discussion_r73744266"},"pull_request":{"href":"https://api.github.com/repos/keystonejs/keystone/pulls/3282"}}},"pull_request":{"url":"https://api.github.com/repos/keystonejs/keystone/pulls/3282","id":80266890,"html_url":"https://github.com/keystonejs/keystone/pull/3282","diff_url":"https://github.com/keystonejs/keystone/pull/3282.diff","patch_url":"https://github.com/keystonejs/keystone/pull/3282.patch","issue_url":"https://api.github.com/repos/keystonejs/keystone/issues/3282","number":3282,"state":"open","locked":false,"title":"Nested lists","user":{"login":"JedWatson","id":872310,"avatar_url":"https://avatars.githubusercontent.com/u/872310?v=3","gravatar_id":"","url":"https://api.github.com/users/JedWatson","html_url":"https://github.com/JedWatson","followers_url":"https://api.github.com/users/JedWatson/followers","following_url":"https://api.github.com/users/JedWatson/following{/other_user}","gists_url":"https://api.github.com/users/JedWatson/gists{/gist_id}","starred_url":"https://api.github.com/users/JedWatson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JedWatson/subscriptions","organizations_url":"https://api.github.com/users/JedWatson/orgs","repos_url":"https://api.github.com/users/JedWatson/repos","events_url":"https://api.github.com/users/JedWatson/events{/privacy}","received_events_url":"https://api.github.com/users/JedWatson/received_events","type":"User","site_admin":false},"body":"### WIP\r\n\r\nThis PR adds the long-awaited feature of nested schema support for Keystone 🎉 \r\n\r\nSee keystonejs/keystone-test-project#17 for example.\r\n\r\nTo work with this, you'll need to switch over to the new API by removing both instances of `/legacy` from this file: https://github.com/keystonejs/keystone/blob/master/admin/client/utils/List.js\r\n\r\nYet to be done:\r\n\r\n- [ ] Recursive input validation\r\n- [ ] Recursive `.updateItem` calls (required for field types with async updates)\r\n- [ ] Recursive `.getData()` calls (required for complex field types)\r\n- [ ] UI is pretty basic\r\n\r\n... and probably more.","created_at":"2016-08-05T16:00:34Z","updated_at":"2016-08-05T19:05:15Z","closed_at":null,"merged_at":null,"merge_commit_sha":"0259277341291bf42952b1de127c56aaa5f7b5f0","assignee":{"login":"JedWatson","id":872310,"avatar_url":"https://avatars.githubusercontent.com/u/872310?v=3","gravatar_id":"","url":"https://api.github.com/users/JedWatson","html_url":"https://github.com/JedWatson","followers_url":"https://api.github.com/users/JedWatson/followers","following_url":"https://api.github.com/users/JedWatson/following{/other_user}","gists_url":"https://api.github.com/users/JedWatson/gists{/gist_id}","starred_url":"https://api.github.com/users/JedWatson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JedWatson/subscriptions","organizations_url":"https://api.github.com/users/JedWatson/orgs","repos_url":"https://api.github.com/users/JedWatson/repos","events_url":"https://api.github.com/users/JedWatson/events{/privacy}","received_events_url":"https://api.github.com/users/JedWatson/received_events","type":"User","site_admin":false},"assignees":[{"login":"JedWatson","id":872310,"avatar_url":"https://avatars.githubusercontent.com/u/872310?v=3","gravatar_id":"","url":"https://api.github.com/users/JedWatson","html_url":"https://github.com/JedWatson","followers_url":"https://api.github.com/users/JedWatson/followers","following_url":"https://api.github.com/users/JedWatson/following{/other_user}","gists_url":"https://api.github.com/users/JedWatson/gists{/gist_id}","starred_url":"https://api.github.com/users/JedWatson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JedWatson/subscriptions","organizations_url":"https://api.github.com/users/JedWatson/orgs","repos_url":"https://api.github.com/users/JedWatson/repos","events_url":"https://api.github.com/users/JedWatson/events{/privacy}","received_events_url":"https://api.github.com/users/JedWatson/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/keystonejs/keystone/milestones/5","html_url":"https://github.com/keystonejs/keystone/milestones/0.4.0","labels_url":"https://api.github.com/repos/keystonejs/keystone/milestones/5/labels","id":917933,"number":5,"title":"0.4.0","description":"","creator":{"login":"morenoh149","id":587438,"avatar_url":"https://avatars.githubusercontent.com/u/587438?v=3","gravatar_id":"","url":"https://api.github.com/users/morenoh149","html_url":"https://github.com/morenoh149","followers_url":"https://api.github.com/users/morenoh149/followers","following_url":"https://api.github.com/users/morenoh149/following{/other_user}","gists_url":"https://api.github.com/users/morenoh149/gists{/gist_id}","starred_url":"https://api.github.com/users/morenoh149/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/morenoh149/subscriptions","organizations_url":"https://api.github.com/users/morenoh149/orgs","repos_url":"https://api.github.com/users/morenoh149/repos","events_url":"https://api.github.com/users/morenoh149/events{/privacy}","received_events_url":"https://api.github.com/users/morenoh149/received_events","type":"User","site_admin":false},"open_issues":29,"closed_issues":68,"state":"open","created_at":"2014-12-30T20:01:34Z","updated_at":"2016-08-05T16:00:41Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/keystonejs/keystone/pulls/3282/commits","review_comments_url":"https://api.github.com/repos/keystonejs/keystone/pulls/3282/comments","review_comment_url":"https://api.github.com/repos/keystonejs/keystone/pulls/comments{/number}","comments_url":"https://api.github.com/repos/keystonejs/keystone/issues/3282/comments","statuses_url":"https://api.github.com/repos/keystonejs/keystone/statuses/35d479fbf20f15f783eab0ba8fd7a0dd456875ac","head":{"label":"keystonejs:nested-lists","ref":"nested-lists","sha":"35d479fbf20f15f783eab0ba8fd7a0dd456875ac","user":{"login":"keystonejs","id":6118534,"avatar_url":"https://avatars.githubusercontent.com/u/6118534?v=3","gravatar_id":"","url":"https://api.github.com/users/keystonejs","html_url":"https://github.com/keystonejs","followers_url":"https://api.github.com/users/keystonejs/followers","following_url":"https://api.github.com/users/keystonejs/following{/other_user}","gists_url":"https://api.github.com/users/keystonejs/gists{/gist_id}","starred_url":"https://api.github.com/users/keystonejs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/keystonejs/subscriptions","organizations_url":"https://api.github.com/users/keystonejs/orgs","repos_url":"https://api.github.com/users/keystonejs/repos","events_url":"https://api.github.com/users/keystonejs/events{/privacy}","received_events_url":"https://api.github.com/users/keystonejs/received_events","type":"Organization","site_admin":false},"repo":{"id":11116372,"name":"keystone","full_name":"keystonejs/keystone","owner":{"login":"keystonejs","id":6118534,"avatar_url":"https://avatars.githubusercontent.com/u/6118534?v=3","gravatar_id":"","url":"https://api.github.com/users/keystonejs","html_url":"https://github.com/keystonejs","followers_url":"https://api.github.com/users/keystonejs/followers","following_url":"https://api.github.com/users/keystonejs/following{/other_user}","gists_url":"https://api.github.com/users/keystonejs/gists{/gist_id}","starred_url":"https://api.github.com/users/keystonejs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/keystonejs/subscriptions","organizations_url":"https://api.github.com/users/keystonejs/orgs","repos_url":"https://api.github.com/users/keystonejs/repos","events_url":"https://api.github.com/users/keystonejs/events{/privacy}","received_events_url":"https://api.github.com/users/keystonejs/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/keystonejs/keystone","description":"node.js cms and web app framework","fork":false,"url":"https://api.github.com/repos/keystonejs/keystone","forks_url":"https://api.github.com/repos/keystonejs/keystone/forks","keys_url":"https://api.github.com/repos/keystonejs/keystone/keys{/key_id}","collaborators_url":"https://api.github.com/repos/keystonejs/keystone/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/keystonejs/keystone/teams","hooks_url":"https://api.github.com/repos/keystonejs/keystone/hooks","issue_events_url":"https://api.github.com/repos/keystonejs/keystone/issues/events{/number}","events_url":"https://api.github.com/repos/keystonejs/keystone/events","assignees_url":"https://api.github.com/repos/keystonejs/keystone/assignees{/user}","branches_url":"https://api.github.com/repos/keystonejs/keystone/branches{/branch}","tags_url":"https://api.github.com/repos/keystonejs/keystone/tags","blobs_url":"https://api.github.com/repos/keystonejs/keystone/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/keystonejs/keystone/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/keystonejs/keystone/git/refs{/sha}","trees_url":"https://api.github.com/repos/keystonejs/keystone/git/trees{/sha}","statuses_url":"https://api.github.com/repos/keystonejs/keystone/statuses/{sha}","languages_url":"https://api.github.com/repos/keystonejs/keystone/languages","stargazers_url":"https://api.github.com/repos/keystonejs/keystone/stargazers","contributors_url":"https://api.github.com/repos/keystonejs/keystone/contributors","subscribers_url":"https://api.github.com/repos/keystonejs/keystone/subscribers","subscription_url":"https://api.github.com/repos/keystonejs/keystone/subscription","commits_url":"https://api.github.com/repos/keystonejs/keystone/commits{/sha}","git_commits_url":"https://api.github.com/repos/keystonejs/keystone/git/commits{/sha}","comments_url":"https://api.github.com/repos/keystonejs/keystone/comments{/number}","issue_comment_url":"https://api.github.com/repos/keystonejs/keystone/issues/comments{/number}","contents_url":"https://api.github.com/repos/keystonejs/keystone/contents/{+path}","compare_url":"https://api.github.com/repos/keystonejs/keystone/compare/{base}...{head}","merges_url":"https://api.github.com/repos/keystonejs/keystone/merges","archive_url":"https://api.github.com/repos/keystonejs/keystone/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/keystonejs/keystone/downloads","issues_url":"https://api.github.com/repos/keystonejs/keystone/issues{/number}","pulls_url":"https://api.github.com/repos/keystonejs/keystone/pulls{/number}","milestones_url":"https://api.github.com/repos/keystonejs/keystone/milestones{/number}","notifications_url":"https://api.github.com/repos/keystonejs/keystone/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/keystonejs/keystone/labels{/name}","releases_url":"https://api.github.com/repos/keystonejs/keystone/releases{/id}","deployments_url":"https://api.github.com/repos/keystonejs/keystone/deployments","created_at":"2013-07-02T05:01:55Z","updated_at":"2016-08-05T17:39:42Z","pushed_at":"2016-08-05T16:27:01Z","git_url":"git://github.com/keystonejs/keystone.git","ssh_url":"git@github.com:keystonejs/keystone.git","clone_url":"https://github.com/keystonejs/keystone.git","svn_url":"https://github.com/keystonejs/keystone","homepage":"http://www.keystonejs.com","size":155619,"stargazers_count":7183,"watchers_count":7183,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":1177,"mirror_url":null,"open_issues_count":218,"forks":1177,"open_issues":218,"watchers":7183,"default_branch":"master"}},"base":{"label":"keystonejs:master","ref":"master","sha":"4b169372bae15d4ad28714ee59261a889cc98e21","user":{"login":"keystonejs","id":6118534,"avatar_url":"https://avatars.githubusercontent.com/u/6118534?v=3","gravatar_id":"","url":"https://api.github.com/users/keystonejs","html_url":"https://github.com/keystonejs","followers_url":"https://api.github.com/users/keystonejs/followers","following_url":"https://api.github.com/users/keystonejs/following{/other_user}","gists_url":"https://api.github.com/users/keystonejs/gists{/gist_id}","starred_url":"https://api.github.com/users/keystonejs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/keystonejs/subscriptions","organizations_url":"https://api.github.com/users/keystonejs/orgs","repos_url":"https://api.github.com/users/keystonejs/repos","events_url":"https://api.github.com/users/keystonejs/events{/privacy}","received_events_url":"https://api.github.com/users/keystonejs/received_events","type":"Organization","site_admin":false},"repo":{"id":11116372,"name":"keystone","full_name":"keystonejs/keystone","owner":{"login":"keystonejs","id":6118534,"avatar_url":"https://avatars.githubusercontent.com/u/6118534?v=3","gravatar_id":"","url":"https://api.github.com/users/keystonejs","html_url":"https://github.com/keystonejs","followers_url":"https://api.github.com/users/keystonejs/followers","following_url":"https://api.github.com/users/keystonejs/following{/other_user}","gists_url":"https://api.github.com/users/keystonejs/gists{/gist_id}","starred_url":"https://api.github.com/users/keystonejs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/keystonejs/subscriptions","organizations_url":"https://api.github.com/users/keystonejs/orgs","repos_url":"https://api.github.com/users/keystonejs/repos","events_url":"https://api.github.com/users/keystonejs/events{/privacy}","received_events_url":"https://api.github.com/users/keystonejs/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/keystonejs/keystone","description":"node.js cms and web app framework","fork":false,"url":"https://api.github.com/repos/keystonejs/keystone","forks_url":"https://api.github.com/repos/keystonejs/keystone/forks","keys_url":"https://api.github.com/repos/keystonejs/keystone/keys{/key_id}","collaborators_url":"https://api.github.com/repos/keystonejs/keystone/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/keystonejs/keystone/teams","hooks_url":"https://api.github.com/repos/keystonejs/keystone/hooks","issue_events_url":"https://api.github.com/repos/keystonejs/keystone/issues/events{/number}","events_url":"https://api.github.com/repos/keystonejs/keystone/events","assignees_url":"https://api.github.com/repos/keystonejs/keystone/assignees{/user}","branches_url":"https://api.github.com/repos/keystonejs/keystone/branches{/branch}","tags_url":"https://api.github.com/repos/keystonejs/keystone/tags","blobs_url":"https://api.github.com/repos/keystonejs/keystone/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/keystonejs/keystone/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/keystonejs/keystone/git/refs{/sha}","trees_url":"https://api.github.com/repos/keystonejs/keystone/git/trees{/sha}","statuses_url":"https://api.github.com/repos/keystonejs/keystone/statuses/{sha}","languages_url":"https://api.github.com/repos/keystonejs/keystone/languages","stargazers_url":"https://api.github.com/repos/keystonejs/keystone/stargazers","contributors_url":"https://api.github.com/repos/keystonejs/keystone/contributors","subscribers_url":"https://api.github.com/repos/keystonejs/keystone/subscribers","subscription_url":"https://api.github.com/repos/keystonejs/keystone/subscription","commits_url":"https://api.github.com/repos/keystonejs/keystone/commits{/sha}","git_commits_url":"https://api.github.com/repos/keystonejs/keystone/git/commits{/sha}","comments_url":"https://api.github.com/repos/keystonejs/keystone/comments{/number}","issue_comment_url":"https://api.github.com/repos/keystonejs/keystone/issues/comments{/number}","contents_url":"https://api.github.com/repos/keystonejs/keystone/contents/{+path}","compare_url":"https://api.github.com/repos/keystonejs/keystone/compare/{base}...{head}","merges_url":"https://api.github.com/repos/keystonejs/keystone/merges","archive_url":"https://api.github.com/repos/keystonejs/keystone/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/keystonejs/keystone/downloads","issues_url":"https://api.github.com/repos/keystonejs/keystone/issues{/number}","pulls_url":"https://api.github.com/repos/keystonejs/keystone/pulls{/number}","milestones_url":"https://api.github.com/repos/keystonejs/keystone/milestones{/number}","notifications_url":"https://api.github.com/repos/keystonejs/keystone/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/keystonejs/keystone/labels{/name}","releases_url":"https://api.github.com/repos/keystonejs/keystone/releases{/id}","deployments_url":"https://api.github.com/repos/keystonejs/keystone/deployments","created_at":"2013-07-02T05:01:55Z","updated_at":"2016-08-05T17:39:42Z","pushed_at":"2016-08-05T16:27:01Z","git_url":"git://github.com/keystonejs/keystone.git","ssh_url":"git@github.com:keystonejs/keystone.git","clone_url":"https://github.com/keystonejs/keystone.git","svn_url":"https://github.com/keystonejs/keystone","homepage":"http://www.keystonejs.com","size":155619,"stargazers_count":7183,"watchers_count":7183,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":1177,"mirror_url":null,"open_issues_count":218,"forks":1177,"open_issues":218,"watchers":7183,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/keystonejs/keystone/pulls/3282"},"html":{"href":"https://github.com/keystonejs/keystone/pull/3282"},"issue":{"href":"https://api.github.com/repos/keystonejs/keystone/issues/3282"},"comments":{"href":"https://api.github.com/repos/keystonejs/keystone/issues/3282/comments"},"review_comments":{"href":"https://api.github.com/repos/keystonejs/keystone/pulls/3282/comments"},"review_comment":{"href":"https://api.github.com/repos/keystonejs/keystone/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/keystonejs/keystone/pulls/3282/commits"},"statuses":{"href":"https://api.github.com/repos/keystonejs/keystone/statuses/35d479fbf20f15f783eab0ba8fd7a0dd456875ac"}}}}
{"actor":{"display_login":"wmertens"}}