{"action":"created","comment":{"url":"https://api.github.com/repos/calebmer/postgraphql/pulls/comments/83432357","pull_request_review_id":4278160,"id":83432357,"diff_hunk":"@@ -0,0 +1,50 @@\n+/**\n+ * A utility function for easily building an object from lists *without*\n+ * tolerating duplicate keys. If any duplicate keys are seen an error will be\n+ * thrown.\n+ *\n+ * This is useful for when we are building map objects as is often done for\n+ * GraphQL configs.\n+ *\n+ * This is pretty much identical to the Lodash `_.fromPairs` function.\n+ *\n+ * ## Example:\n+ * ```js\n+ * const actual = buildObject(\n+ *   [\n+ *     ['a', 1],\n+ *     ['b', 2],\n+ *   ],\n+ *   [\n+ *     ['c', 3],\n+ *   ]\n+ * )\n+ *\n+ * const expected = {\n+ *   a: 1,\n+ *   b: 2,\n+ *   c: 3,\n+ * }\n+ *\n+ * assert.deepEqual(actual, expected)\n+ * ```\n+ */\n+export default function buildObject <T>(\n+  ...entriess: Array<Array<[string, T] | undefined | null | false>>\n+): { [key: string]: T } {\n+  const object = {}\n+\n+  entriess.forEach(entries => entries.forEach(entry => {\n+    if (!entry)\n+      return\n+\n+    const [key, value] = entry\n+\n+    if (object.hasOwnProperty(key))\n+      throw new Error(`Naming conflict when building object. Cannot have two definitions for property '${key}'.`)","path":"src/graphql/utils/buildObject.ts","position":44,"original_position":44,"commit_id":"3f728b046f860c64d23c12ad84de6ca3c0fe3794","original_commit_id":"71b3961f32864b3bc9f57653abc2547f27078736","user":{"login":"bendiy","id":571574,"avatar_url":"https://avatars.githubusercontent.com/u/571574?v=3","gravatar_id":"","url":"https://api.github.com/users/bendiy","html_url":"https://github.com/bendiy","followers_url":"https://api.github.com/users/bendiy/followers","following_url":"https://api.github.com/users/bendiy/following{/other_user}","gists_url":"https://api.github.com/users/bendiy/gists{/gist_id}","starred_url":"https://api.github.com/users/bendiy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bendiy/subscriptions","organizations_url":"https://api.github.com/users/bendiy/orgs","repos_url":"https://api.github.com/users/bendiy/repos","events_url":"https://api.github.com/users/bendiy/events{/privacy}","received_events_url":"https://api.github.com/users/bendiy/received_events","type":"User","site_admin":false},"body":"I think the best solution would be to split the two into `condition` and `properties` and _never the twain shall meet_. I think you'll find most API make this split. I don't know the code or GraphQL well, so I'm not sure if that's possible.","created_at":"2016-10-14T14:26:30Z","updated_at":"2016-10-14T14:26:30Z","html_url":"https://github.com/calebmer/postgraphql/pull/145#discussion_r83432357","pull_request_url":"https://api.github.com/repos/calebmer/postgraphql/pulls/145","_links":{"self":{"href":"https://api.github.com/repos/calebmer/postgraphql/pulls/comments/83432357"},"html":{"href":"https://github.com/calebmer/postgraphql/pull/145#discussion_r83432357"},"pull_request":{"href":"https://api.github.com/repos/calebmer/postgraphql/pulls/145"}}},"pull_request":{"url":"https://api.github.com/repos/calebmer/postgraphql/pulls/145","id":88600618,"html_url":"https://github.com/calebmer/postgraphql/pull/145","diff_url":"https://github.com/calebmer/postgraphql/pull/145.diff","patch_url":"https://github.com/calebmer/postgraphql/pull/145.patch","issue_url":"https://api.github.com/repos/calebmer/postgraphql/issues/145","number":145,"state":"open","locked":false,"title":"PostGraphQL 2 Beta","user":{"login":"calebmer","id":8282507,"avatar_url":"https://avatars.githubusercontent.com/u/8282507?v=3","gravatar_id":"","url":"https://api.github.com/users/calebmer","html_url":"https://github.com/calebmer","followers_url":"https://api.github.com/users/calebmer/followers","following_url":"https://api.github.com/users/calebmer/following{/other_user}","gists_url":"https://api.github.com/users/calebmer/gists{/gist_id}","starred_url":"https://api.github.com/users/calebmer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/calebmer/subscriptions","organizations_url":"https://api.github.com/users/calebmer/orgs","repos_url":"https://api.github.com/users/calebmer/repos","events_url":"https://api.github.com/users/calebmer/events{/privacy}","received_events_url":"https://api.github.com/users/calebmer/received_events","type":"User","site_admin":false},"body":"# PostGraphQL 2 Beta\r\n\r\nWith this PR, I’m very excited to announce PostGraphQL 2 is now in beta 🎉\r\n\r\nGet it now and start playing around by running (make sure you have a database running on `postgres://localhost:5432`):\r\n\r\n```bash\r\nnpm install -g postgraphql@next\r\npostgraphql\r\n```\r\n\r\nPostGraphQL 2 fixes a number of long standing bugs, makes some breaking changes to reflect emerging GraphQL best practices, and sets a foundation which can be used to do truly amazing things in the future (most popularly MySQL support). To understand more of the theory behind PostGraphQL 2, read “[#87 My vision for the future of PostGraphQL](https://github.com/calebmer/postgraphql/issues/87).”\r\n\r\nA number of breaking changes were made in PostGraphQL 2. I hate making breaking changes, especially given that GraphQL itself is designed to be change-tolerant, but I felt these were (in most cases) necessary small fixes that would be best for PostGraphQL’s feature. While this PostGraphQL 2 release does add a lot of things, remember that its real purpose is to create a strong base on which to build a data interfacing platform. Therefore, it felt like breaking changes made sense. If you disagree with any breaking changes, let me know! I would be more than happy to add a flag to provide backwards compatibility where possible. I’m hoping most breaking changes are small enough to not be a big deal, and perhaps even be desired changes. Most are inspired by dialog with the community.\r\n\r\n## New Stuff\r\n- **Friendly console UI.** Now when you run PostGraphQL it has colors and a much more useful request logger. See a preview image in [this tweet](https://twitter.com/calebmer/status/784898536903176192).\r\n- **Easy to use CLI.** PostGraphQL can now be run without a single option! Just run `postgraphql` and we will automatically connect to your local database running at `postgres://localhost:5432` and the `public` schema. Before the release a `--demo` flag will also be added which will connect you to a database running in the cloud. So easy you have to try 😉\r\n- **Authentication.** For a while PostGraphQL supported authorization so users could only see their data, but not authentication which meant you would need to build a small service to issue JSON Web Tokens. In PostGraphQL 2.0.0, this is no longer required. I’ll be writing up an authentication tutorial before the final release.\r\n- **Better Postgres types support,** including compound types. PostGraphQL now uses ISO 8601 for dates and times (#107), custom handling of interval types, better support for Postgres ranges (#90), correct handling for all array types, and support for dynamic JSON with the `--dynamic-json` flag (#102). Compound type support means now you can create nested objects in your schemas, input or output.\r\n- **No `rowId` fields by default.** By default, PostGraphQL no longer renames `id` columns to `rowId`. This was a controversial decision made in PostGraphQL 1 to support Relay 1, as Relay 1 requires the `id` field to be a special global id. However, it would appear that the [GraphQL team is moving towards a standard global field name in `__id`](https://github.com/facebook/graphql/issues/188). This new field name makes a lot of sense for PostGraphQL so now all global ids are named `__id` by default. However, this does not mean PostGraphQL no longer supports Relay 1! You could use the [Relay 1 fork that supports `__id`](https://github.com/facebook/relay/issues/1061#issuecomment-230721693), or you could pass the option `--classic-ids` to PostGraphQL which will use the original behavior. If you prefer the classic behavior, all power to you!\r\n- **Related tables included in mutations.** If you are using Relay 1, it may be helpful to have access to related rows from mutations at the payload level (#110, #114, #115). In PostGraphQL 2, such rows are included in the mutation payload for create, update, delete, and procedure mutations.\r\n- **Mutations using any unique identifier.** With PostGraphQL 2 you can execute update and delete mutations using the global `Node` identifier. The row’s primary key, or a unique constraint (#126).\r\n- **Cursor pagination by offset.** The “correct” way to implement cursor pagination in GraphQL does not involve using SQL limits and offsets. Rather PostGraphQL must control the columns and the ordering. This makes using custom orderings incredibly difficult. Whether you had a view that was already ordered or a connection procedure that defined an order. Now that offset cursor pagination is implemented, we can support natural ordering as well as the “correct” method. Offset ordering has a few gotchas, but they aren’t bad enough to warrant not having this feature.\r\n- **Better field names.** It has been annoying to many that the top level method of selecting rows has been named `{tableName}Nodes`, as in `personNodes` or `postNodes`. This was originally because I was against bringing in a pluralization package, mainly because it may have been awkward for non-English speakers. However, as PostGraphQL aims to be more and more extensible, it isn’t hard to change/add pluralization rules. So in PostGraphQL 2, names are not pluralized and read like `allPeople` or `allPosts`. This feels like much more natural and may always be configured.\r\n- **Introspection of multiple schemas.** In PostGraphQL 1, you could only introspect a single schema. In 2 you can introspect as many as you would like.\r\n\r\n## Other Breaking Changes\r\n- No more `--development` flag. Instead all of the features in `--development` have been broken out into their own flags. The reason this was done is because sometimes a GraphiQL interface in production makes since. GraphiQL is now also enabled by default, use `--disable-graphiql` to disable it.\r\n- GraphQL and GraphiQL live on different routes. In PostGraphQL 1 if you went to the `/graphql` route with a browser, you would see GraphiQL. This turns out to not be a best practice as it tightly couples GraphiQL to the GraphQL endpoint. If we wanted to add features to GraphiQL like a headers editor, or a SQL terminal it would be much more difficult if the routes were not separated. Whenever you start PostGraphQL you will be told the exact URL GraphiQL is served on so you won’t be confused.\r\n- “Insert” mutations renamed to “Create.” This is to better reflect the industry standard CRUD acronym which stands for: create, read, update delete. “Insert” was initially chosen to feel more like SQL.\r\n- No more “new” prefix in update mutation (#125). The “new” prefix in PostGraphQL 1 has gotten some understandable complaints as it has made updating rows without first renaming the fields impossible. The types for update mutations have been refactored so that now there is one `patch` object whose fields correspond to the object’s fields.\r\n- Removed the `descending` argument in connection fields, instead descending information is contained in the `orderBy` enum. So instead of configuring `orderBy: NAME, descending: true`, you would instead just write: `orderBy: NAME_DESC` or `orderBy: NAME_ASC`.\r\n- The root level `viewer` field has been renamed to `query` in PostGraphQL 2. The root level `viewer` field is a hack for Relay 1 to workaround some of Relay 1’s limitations when it comes to top level fields (such limitations should be gone in Relay 2). However, the `viewer` field could also have some semantic meaning such as the literal “viewer,“ or “current user” of the schema. By naming this root field `viewer`, PostGraphQL 1 disallowed users to add their own implementation for `viewer`. In PostGraphQL 2, the field still exists, but it has been renamed to `query`. It can be used in the exact same way, just now with a better name :wink:\r\n\r\n## Steps To Release\r\nThe core codebase for PostGraphQL 2.0.0 is done and ready for production use. The reason it isn’t going straight to a release is that there are a few extra things that need to be done.\r\n\r\nAlso, I wanted to add a period of time to allow for feedback. Once we hit 2.0.0, I don’t want to make any breaking changes for as long as possible, so now would be the time to make those breaking changes!\r\n\r\nThe list of things that need to get done before we can release are as follows.\r\n\r\n- [ ] Improve forum example schema. I want to add the concept of likes to the forum example schema and a full authorization/authentication example.\r\n- [ ] Write documentation article explaining how authentication and authorization works.\r\n- [ ] Deploy a demo database and demo PostGraphQL instance to enable starting PostGraphQL with `postgraphql --demo`.\r\n- [ ] Upgrade some existing apps using PostGraphQL 1. Including the Relay example (#66).\r\n\r\n## What Comes Next?\r\nSo what’s the plan after PostGraphQL 2.0.0 is released? We’ll continue with my rough timeline as proposed in #87, but here it is again with a few extra things.\r\n\r\n- Documentation/marketing website. We really need this…\r\n- GitHub GraphQL API equivalence. GitHub recently announced their GraphQL API. How awesome would it be if we could make a PostGraphQL implementation of that API 😉\r\n- Extensibility. This is a big one. Being able to extend PostGraphQL in Node.js is important to the future of the project.\r\n- Performance. Experiment with different ways of executing queries to make PostGraphQL as fast as possible.\r\n- CMS?\r\n\r\n* * *\r\n\r\nPlease try out PostGraphQL 2 and tell me what you think! It’s as easy as (if you have a Postgres database running on `postgres://localhost:5432`):\r\n\r\n```\r\nnpm install -g postgraphql@next\r\npostgraphql\r\n```","created_at":"2016-10-10T00:24:13Z","updated_at":"2016-10-14T14:26:30Z","closed_at":null,"merged_at":null,"merge_commit_sha":"117ac39ac5c1653955c6e296dc3d941eee0eb22f","assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/calebmer/postgraphql/milestones/1","html_url":"https://github.com/calebmer/postgraphql/milestones/2.0.0","labels_url":"https://api.github.com/repos/calebmer/postgraphql/milestones/1/labels","id":2066629,"number":1,"title":"2.0.0","description":null,"creator":{"login":"calebmer","id":8282507,"avatar_url":"https://avatars.githubusercontent.com/u/8282507?v=3","gravatar_id":"","url":"https://api.github.com/users/calebmer","html_url":"https://github.com/calebmer","followers_url":"https://api.github.com/users/calebmer/followers","following_url":"https://api.github.com/users/calebmer/following{/other_user}","gists_url":"https://api.github.com/users/calebmer/gists{/gist_id}","starred_url":"https://api.github.com/users/calebmer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/calebmer/subscriptions","organizations_url":"https://api.github.com/users/calebmer/orgs","repos_url":"https://api.github.com/users/calebmer/repos","events_url":"https://api.github.com/users/calebmer/events{/privacy}","received_events_url":"https://api.github.com/users/calebmer/received_events","type":"User","site_admin":false},"open_issues":1,"closed_issues":11,"state":"open","created_at":"2016-10-13T01:35:46Z","updated_at":"2016-10-13T17:33:56Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/calebmer/postgraphql/pulls/145/commits","review_comments_url":"https://api.github.com/repos/calebmer/postgraphql/pulls/145/comments","review_comment_url":"https://api.github.com/repos/calebmer/postgraphql/pulls/comments{/number}","comments_url":"https://api.github.com/repos/calebmer/postgraphql/issues/145/comments","statuses_url":"https://api.github.com/repos/calebmer/postgraphql/statuses/3f728b046f860c64d23c12ad84de6ca3c0fe3794","head":{"label":"calebmer:next","ref":"next","sha":"3f728b046f860c64d23c12ad84de6ca3c0fe3794","user":{"login":"calebmer","id":8282507,"avatar_url":"https://avatars.githubusercontent.com/u/8282507?v=3","gravatar_id":"","url":"https://api.github.com/users/calebmer","html_url":"https://github.com/calebmer","followers_url":"https://api.github.com/users/calebmer/followers","following_url":"https://api.github.com/users/calebmer/following{/other_user}","gists_url":"https://api.github.com/users/calebmer/gists{/gist_id}","starred_url":"https://api.github.com/users/calebmer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/calebmer/subscriptions","organizations_url":"https://api.github.com/users/calebmer/orgs","repos_url":"https://api.github.com/users/calebmer/repos","events_url":"https://api.github.com/users/calebmer/events{/privacy}","received_events_url":"https://api.github.com/users/calebmer/received_events","type":"User","site_admin":false},"repo":{"id":56271158,"name":"postgraphql","full_name":"calebmer/postgraphql","owner":{"login":"calebmer","id":8282507,"avatar_url":"https://avatars.githubusercontent.com/u/8282507?v=3","gravatar_id":"","url":"https://api.github.com/users/calebmer","html_url":"https://github.com/calebmer","followers_url":"https://api.github.com/users/calebmer/followers","following_url":"https://api.github.com/users/calebmer/following{/other_user}","gists_url":"https://api.github.com/users/calebmer/gists{/gist_id}","starred_url":"https://api.github.com/users/calebmer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/calebmer/subscriptions","organizations_url":"https://api.github.com/users/calebmer/orgs","repos_url":"https://api.github.com/users/calebmer/repos","events_url":"https://api.github.com/users/calebmer/events{/privacy}","received_events_url":"https://api.github.com/users/calebmer/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/calebmer/postgraphql","description":"A GraphQL API created by reflection over a PostgreSQL schema.","fork":false,"url":"https://api.github.com/repos/calebmer/postgraphql","forks_url":"https://api.github.com/repos/calebmer/postgraphql/forks","keys_url":"https://api.github.com/repos/calebmer/postgraphql/keys{/key_id}","collaborators_url":"https://api.github.com/repos/calebmer/postgraphql/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/calebmer/postgraphql/teams","hooks_url":"https://api.github.com/repos/calebmer/postgraphql/hooks","issue_events_url":"https://api.github.com/repos/calebmer/postgraphql/issues/events{/number}","events_url":"https://api.github.com/repos/calebmer/postgraphql/events","assignees_url":"https://api.github.com/repos/calebmer/postgraphql/assignees{/user}","branches_url":"https://api.github.com/repos/calebmer/postgraphql/branches{/branch}","tags_url":"https://api.github.com/repos/calebmer/postgraphql/tags","blobs_url":"https://api.github.com/repos/calebmer/postgraphql/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/calebmer/postgraphql/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/calebmer/postgraphql/git/refs{/sha}","trees_url":"https://api.github.com/repos/calebmer/postgraphql/git/trees{/sha}","statuses_url":"https://api.github.com/repos/calebmer/postgraphql/statuses/{sha}","languages_url":"https://api.github.com/repos/calebmer/postgraphql/languages","stargazers_url":"https://api.github.com/repos/calebmer/postgraphql/stargazers","contributors_url":"https://api.github.com/repos/calebmer/postgraphql/contributors","subscribers_url":"https://api.github.com/repos/calebmer/postgraphql/subscribers","subscription_url":"https://api.github.com/repos/calebmer/postgraphql/subscription","commits_url":"https://api.github.com/repos/calebmer/postgraphql/commits{/sha}","git_commits_url":"https://api.github.com/repos/calebmer/postgraphql/git/commits{/sha}","comments_url":"https://api.github.com/repos/calebmer/postgraphql/comments{/number}","issue_comment_url":"https://api.github.com/repos/calebmer/postgraphql/issues/comments{/number}","contents_url":"https://api.github.com/repos/calebmer/postgraphql/contents/{+path}","compare_url":"https://api.github.com/repos/calebmer/postgraphql/compare/{base}...{head}","merges_url":"https://api.github.com/repos/calebmer/postgraphql/merges","archive_url":"https://api.github.com/repos/calebmer/postgraphql/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/calebmer/postgraphql/downloads","issues_url":"https://api.github.com/repos/calebmer/postgraphql/issues{/number}","pulls_url":"https://api.github.com/repos/calebmer/postgraphql/pulls{/number}","milestones_url":"https://api.github.com/repos/calebmer/postgraphql/milestones{/number}","notifications_url":"https://api.github.com/repos/calebmer/postgraphql/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/calebmer/postgraphql/labels{/name}","releases_url":"https://api.github.com/repos/calebmer/postgraphql/releases{/id}","deployments_url":"https://api.github.com/repos/calebmer/postgraphql/deployments","created_at":"2016-04-14T21:29:19Z","updated_at":"2016-10-14T09:25:10Z","pushed_at":"2016-10-14T13:42:43Z","git_url":"git://github.com/calebmer/postgraphql.git","ssh_url":"git@github.com:calebmer/postgraphql.git","clone_url":"https://github.com/calebmer/postgraphql.git","svn_url":"https://github.com/calebmer/postgraphql","homepage":"","size":1527,"stargazers_count":1946,"watchers_count":1946,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":50,"mirror_url":null,"open_issues_count":19,"forks":50,"open_issues":19,"watchers":1946,"default_branch":"master"}},"base":{"label":"calebmer:master","ref":"master","sha":"647eea414f7b79c59baed0d314b580fcfa3cfbfc","user":{"login":"calebmer","id":8282507,"avatar_url":"https://avatars.githubusercontent.com/u/8282507?v=3","gravatar_id":"","url":"https://api.github.com/users/calebmer","html_url":"https://github.com/calebmer","followers_url":"https://api.github.com/users/calebmer/followers","following_url":"https://api.github.com/users/calebmer/following{/other_user}","gists_url":"https://api.github.com/users/calebmer/gists{/gist_id}","starred_url":"https://api.github.com/users/calebmer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/calebmer/subscriptions","organizations_url":"https://api.github.com/users/calebmer/orgs","repos_url":"https://api.github.com/users/calebmer/repos","events_url":"https://api.github.com/users/calebmer/events{/privacy}","received_events_url":"https://api.github.com/users/calebmer/received_events","type":"User","site_admin":false},"repo":{"id":56271158,"name":"postgraphql","full_name":"calebmer/postgraphql","owner":{"login":"calebmer","id":8282507,"avatar_url":"https://avatars.githubusercontent.com/u/8282507?v=3","gravatar_id":"","url":"https://api.github.com/users/calebmer","html_url":"https://github.com/calebmer","followers_url":"https://api.github.com/users/calebmer/followers","following_url":"https://api.github.com/users/calebmer/following{/other_user}","gists_url":"https://api.github.com/users/calebmer/gists{/gist_id}","starred_url":"https://api.github.com/users/calebmer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/calebmer/subscriptions","organizations_url":"https://api.github.com/users/calebmer/orgs","repos_url":"https://api.github.com/users/calebmer/repos","events_url":"https://api.github.com/users/calebmer/events{/privacy}","received_events_url":"https://api.github.com/users/calebmer/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/calebmer/postgraphql","description":"A GraphQL API created by reflection over a PostgreSQL schema.","fork":false,"url":"https://api.github.com/repos/calebmer/postgraphql","forks_url":"https://api.github.com/repos/calebmer/postgraphql/forks","keys_url":"https://api.github.com/repos/calebmer/postgraphql/keys{/key_id}","collaborators_url":"https://api.github.com/repos/calebmer/postgraphql/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/calebmer/postgraphql/teams","hooks_url":"https://api.github.com/repos/calebmer/postgraphql/hooks","issue_events_url":"https://api.github.com/repos/calebmer/postgraphql/issues/events{/number}","events_url":"https://api.github.com/repos/calebmer/postgraphql/events","assignees_url":"https://api.github.com/repos/calebmer/postgraphql/assignees{/user}","branches_url":"https://api.github.com/repos/calebmer/postgraphql/branches{/branch}","tags_url":"https://api.github.com/repos/calebmer/postgraphql/tags","blobs_url":"https://api.github.com/repos/calebmer/postgraphql/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/calebmer/postgraphql/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/calebmer/postgraphql/git/refs{/sha}","trees_url":"https://api.github.com/repos/calebmer/postgraphql/git/trees{/sha}","statuses_url":"https://api.github.com/repos/calebmer/postgraphql/statuses/{sha}","languages_url":"https://api.github.com/repos/calebmer/postgraphql/languages","stargazers_url":"https://api.github.com/repos/calebmer/postgraphql/stargazers","contributors_url":"https://api.github.com/repos/calebmer/postgraphql/contributors","subscribers_url":"https://api.github.com/repos/calebmer/postgraphql/subscribers","subscription_url":"https://api.github.com/repos/calebmer/postgraphql/subscription","commits_url":"https://api.github.com/repos/calebmer/postgraphql/commits{/sha}","git_commits_url":"https://api.github.com/repos/calebmer/postgraphql/git/commits{/sha}","comments_url":"https://api.github.com/repos/calebmer/postgraphql/comments{/number}","issue_comment_url":"https://api.github.com/repos/calebmer/postgraphql/issues/comments{/number}","contents_url":"https://api.github.com/repos/calebmer/postgraphql/contents/{+path}","compare_url":"https://api.github.com/repos/calebmer/postgraphql/compare/{base}...{head}","merges_url":"https://api.github.com/repos/calebmer/postgraphql/merges","archive_url":"https://api.github.com/repos/calebmer/postgraphql/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/calebmer/postgraphql/downloads","issues_url":"https://api.github.com/repos/calebmer/postgraphql/issues{/number}","pulls_url":"https://api.github.com/repos/calebmer/postgraphql/pulls{/number}","milestones_url":"https://api.github.com/repos/calebmer/postgraphql/milestones{/number}","notifications_url":"https://api.github.com/repos/calebmer/postgraphql/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/calebmer/postgraphql/labels{/name}","releases_url":"https://api.github.com/repos/calebmer/postgraphql/releases{/id}","deployments_url":"https://api.github.com/repos/calebmer/postgraphql/deployments","created_at":"2016-04-14T21:29:19Z","updated_at":"2016-10-14T09:25:10Z","pushed_at":"2016-10-14T13:42:43Z","git_url":"git://github.com/calebmer/postgraphql.git","ssh_url":"git@github.com:calebmer/postgraphql.git","clone_url":"https://github.com/calebmer/postgraphql.git","svn_url":"https://github.com/calebmer/postgraphql","homepage":"","size":1527,"stargazers_count":1946,"watchers_count":1946,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":50,"mirror_url":null,"open_issues_count":19,"forks":50,"open_issues":19,"watchers":1946,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/calebmer/postgraphql/pulls/145"},"html":{"href":"https://github.com/calebmer/postgraphql/pull/145"},"issue":{"href":"https://api.github.com/repos/calebmer/postgraphql/issues/145"},"comments":{"href":"https://api.github.com/repos/calebmer/postgraphql/issues/145/comments"},"review_comments":{"href":"https://api.github.com/repos/calebmer/postgraphql/pulls/145/comments"},"review_comment":{"href":"https://api.github.com/repos/calebmer/postgraphql/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/calebmer/postgraphql/pulls/145/commits"},"statuses":{"href":"https://api.github.com/repos/calebmer/postgraphql/statuses/3f728b046f860c64d23c12ad84de6ca3c0fe3794"}}}}
{"actor":{"display_login":"bendiy"}}