{"action":"created","comment":{"url":"https://api.github.com/repos/googleapis/nodejs-bigtable/pulls/comments/174312312","pull_request_review_id":103645705,"id":174312312,"diff_hunk":"@@ -61,12 +61,14 @@ var methods = (Mutation.methods = {\n  * @param {string} bytes - Base64 encoded string.\n  * @returns {string|number|buffer}\n  */\n-Mutation.convertFromBytes = function(bytes, options) {\n-  var buf = Buffer.from(bytes, 'base64');\n-  var num = new Int64(buf).toNumber();\n+Mutation.convertFromBytes = function(bytes, options, isPossibleNumber) {","path":"src/mutation.js","position":7,"original_position":7,"commit_id":"14db39645a4457698e44fca607707a143e5c0bdf","original_commit_id":"14db39645a4457698e44fca607707a143e5c0bdf","user":{"login":"stephenplusplus","id":723048,"avatar_url":"https://avatars0.githubusercontent.com/u/723048?v=4","gravatar_id":"","url":"https://api.github.com/users/stephenplusplus","html_url":"https://github.com/stephenplusplus","followers_url":"https://api.github.com/users/stephenplusplus/followers","following_url":"https://api.github.com/users/stephenplusplus/following{/other_user}","gists_url":"https://api.github.com/users/stephenplusplus/gists{/gist_id}","starred_url":"https://api.github.com/users/stephenplusplus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stephenplusplus/subscriptions","organizations_url":"https://api.github.com/users/stephenplusplus/orgs","repos_url":"https://api.github.com/users/stephenplusplus/repos","events_url":"https://api.github.com/users/stephenplusplus/events{/privacy}","received_events_url":"https://api.github.com/users/stephenplusplus/received_events","type":"User","site_admin":false},"body":"Can `isPossibleNumber` be `options.isPossibleNumber`?","created_at":"2018-03-13T23:07:51Z","updated_at":"2018-03-13T23:07:51Z","html_url":"https://github.com/googleapis/nodejs-bigtable/pull/46#discussion_r174312312","pull_request_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/pulls/46","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/googleapis/nodejs-bigtable/pulls/comments/174312312"},"html":{"href":"https://github.com/googleapis/nodejs-bigtable/pull/46#discussion_r174312312"},"pull_request":{"href":"https://api.github.com/repos/googleapis/nodejs-bigtable/pulls/46"}}},"pull_request":{"url":"https://api.github.com/repos/googleapis/nodejs-bigtable/pulls/46","id":170089017,"html_url":"https://github.com/googleapis/nodejs-bigtable/pull/46","diff_url":"https://github.com/googleapis/nodejs-bigtable/pull/46.diff","patch_url":"https://github.com/googleapis/nodejs-bigtable/pull/46.patch","issue_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/issues/46","number":46,"state":"open","locked":false,"title":"Improve transform perf","user":{"login":"kolodny","id":1187604,"avatar_url":"https://avatars2.githubusercontent.com/u/1187604?v=4","gravatar_id":"","url":"https://api.github.com/users/kolodny","html_url":"https://github.com/kolodny","followers_url":"https://api.github.com/users/kolodny/followers","following_url":"https://api.github.com/users/kolodny/following{/other_user}","gists_url":"https://api.github.com/users/kolodny/gists{/gist_id}","starred_url":"https://api.github.com/users/kolodny/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kolodny/subscriptions","organizations_url":"https://api.github.com/users/kolodny/orgs","repos_url":"https://api.github.com/users/kolodny/repos","events_url":"https://api.github.com/users/kolodny/events{/privacy}","received_events_url":"https://api.github.com/users/kolodny/received_events","type":"User","site_admin":false},"body":"### Blocked on #35 \r\n\r\nGeneral performance improvements for chunktransform\r\n\r\n- [x] Tests and linter pass\r\n- [x] Code coverage does not decrease (if any source code was changed)\r\n~- Appropriate docs were updated (if necessary)~\r\n\r\n\r\nFor reference this is the file used to measure chunktransform benchmarks:\r\n\r\n```js\r\nconst Bigtable = require('./');\r\nconst ChunkTransformer = require('./src/chunktransformer');\r\nconst mutation = require('./src/mutation.js');\r\nconst through = require('through2');\r\nconst crypto = require('crypto');\r\n\r\nconst ProtoBuf = require('protobufjs');\r\nconst path = require('path');\r\nconst protosRoot = path.resolve(__dirname, './protos');\r\nfunction applyProtoRoot(filename, root) {\r\n  filename.root = path.resolve(filename.root) + '/';\r\n  root.resolvePath = function(originPath, importPath, alreadyNormalized) {\r\n    return ProtoBuf.util.path.resolve(\r\n      filename.root,\r\n      importPath,\r\n      alreadyNormalized\r\n    );\r\n  };\r\n  return filename.file;\r\n}\r\nconst root = new ProtoBuf.Root();\r\nroot.loadSync(\r\n  applyProtoRoot(\r\n    {\r\n      root: protosRoot,\r\n      file: 'google/bigtable/v2/bigtable.proto',\r\n    },\r\n    root\r\n  ),\r\n  { keepCase: false }\r\n);\r\nconst ReadRowsResponse = root.lookupType('google.bigtable.v2.ReadRowsResponse');\r\nconst CellChunk = root.lookupType(\r\n  'google.bigtable.v2.ReadRowsResponse.CellChunk'\r\n);\r\n\r\n\r\nconst allChunks = [];\r\n\r\n\r\nlet randomString = crypto.randomBytes(1024 / 2).toString('hex');\r\nconst get1MibString = () => {\r\n  return randomString;\r\n}\r\n\r\nconst makeChunk = ({ rowKey = null, commit = false, index } = {}) => {\r\n  const chunk = {\r\n    qualifier: { value: mutation.convertToBytes(`field${index}`) },\r\n    timestampMicros: 0,\r\n    value: mutation.convertToBytes(get1MibString()),\r\n    // valueSize: 0,\r\n    commitRow: commit,\r\n  }\r\n  if (rowKey) {\r\n    chunk.rowKey = mutation.convertToBytes(rowKey);\r\n    chunk.familyName = { value: 'family' };\r\n  }\r\n  return chunk;\r\n};\r\n\r\nfunction rowResponses(rowKey) {\r\n  allChunks.push(makeChunk({ rowKey, index: 0 }));\r\n\r\n  for (let index = 1; index < 9; index++) {\r\n    allChunks.push(makeChunk({ index }))\r\n  }\r\n  allChunks.push(makeChunk({ commit: true, index: 9 }));\r\n}\r\n\r\n\r\nconst bigtable = new Bigtable();\r\n\r\nconst INSTANCE = bigtable.instance('instance');\r\nconst TABLE = INSTANCE.table('table');\r\n\r\nlet start;\r\nstart = new Date();\r\nfor (let i = 0; i < 40000; i++) {\r\n  rowResponses(`Row${i}`);\r\n}\r\nconst response = { chunks: allChunks };\r\nconst readRowsResponse = ReadRowsResponse.fromObject(response, {\r\n  defaults: true,\r\n  longs: String,\r\n  oneofs: true,\r\n});\r\nconsole.log(`Generated in ${new Date() - start}`);\r\n\r\nstart = new Date();\r\nconst encoded = ReadRowsResponse.encode(readRowsResponse).finish();\r\nconsole.log(`Encoded in ${new Date() - start}`);\r\n\r\nstart = new Date();\r\nconst dataToEmit = ReadRowsResponse.decode(encoded);\r\nconsole.log(`Decoded in ${new Date() - start}`);\r\n\r\nTABLE.requestStream = () => {\r\n  const emitter = through.obj();\r\n  setImmediate(() => {\r\n    setImmediate(() => {\r\n      // emitter.emit('data', ReadRowsResponse.decode(encoded));\r\n      emitter.emit('data', dataToEmit);\r\n      setImmediate(() => {\r\n        emitter.emit('end');\r\n      });\r\n    })\r\n  })\r\n  return emitter;\r\n};\r\n\r\nconst transformer = new ChunkTransformer({ decode: false });\r\nlet totalRows = 0;\r\n\r\nstart = new Date();\r\nTABLE.requestStream().pipe(transformer)\r\n  .on('data', row => {\r\n    totalRows++\r\n  })\r\n  .on('end', () => {\r\n    console.log(`Emit ${totalRows} took ${new Date() - start}`);\r\n    clearTimeout(timeout);\r\n  })\r\n;\r\n\r\nconst timeout = setTimeout(() => {}, 10000); // keep process alive\r\n```\r\n\r\nBefore the first commit, this logged:\r\n\r\n```\r\nGenerated in 2005\r\nEncoded in 1790\r\nDecoded in 1023\r\nEmit 40000 took 1371\r\n```\r\n\r\nAfter the first commit it moved the emits/transforms to about 1000ms\r\nAfter the second commit it dropped to be in the 450ms +/- 50ms\r\n\r\nNote that the generating, encoding, and decoding times didn't change. I'm not too sure about how streaming services work with GAPIC (if they come in as encoded messages) which would make the decoding the real bottleneck (and which we don't technically control).\r\n\r\nThere's still some more work that can be done to increase transform speed, in particular the fact that a buffer can be holding a big number [source](https://github.com/googleapis/nodejs-bigtable/blob/c870a17dd3fda4c5da09456ba932a0c6f071e88a/src/mutation.js#L66-L69) and [test](https://github.com/googleapis/nodejs-bigtable/blob/c870a17dd3fda4c5da09456ba932a0c6f071e88a/test/mutation.js#L47-L61), which is used for [`Mutation.encodeSetCell`](https://github.com/googleapis/nodejs-bigtable/blob/c870a17dd3fda4c5da09456ba932a0c6f071e88a/src/mutation.js#L129-L178).  \r\nRemoving that bit puts the transform performance to be in the mid 300ms range. I'll follow up on this last bit in another issue or offline.","created_at":"2018-02-20T02:29:19Z","updated_at":"2018-03-13T23:07:51Z","closed_at":null,"merged_at":null,"merge_commit_sha":"d349415e9571a09188695ae344179c09b1c9a5af","assignee":{"login":"kolodny","id":1187604,"avatar_url":"https://avatars2.githubusercontent.com/u/1187604?v=4","gravatar_id":"","url":"https://api.github.com/users/kolodny","html_url":"https://github.com/kolodny","followers_url":"https://api.github.com/users/kolodny/followers","following_url":"https://api.github.com/users/kolodny/following{/other_user}","gists_url":"https://api.github.com/users/kolodny/gists{/gist_id}","starred_url":"https://api.github.com/users/kolodny/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kolodny/subscriptions","organizations_url":"https://api.github.com/users/kolodny/orgs","repos_url":"https://api.github.com/users/kolodny/repos","events_url":"https://api.github.com/users/kolodny/events{/privacy}","received_events_url":"https://api.github.com/users/kolodny/received_events","type":"User","site_admin":false},"assignees":[{"login":"kolodny","id":1187604,"avatar_url":"https://avatars2.githubusercontent.com/u/1187604?v=4","gravatar_id":"","url":"https://api.github.com/users/kolodny","html_url":"https://github.com/kolodny","followers_url":"https://api.github.com/users/kolodny/followers","following_url":"https://api.github.com/users/kolodny/following{/other_user}","gists_url":"https://api.github.com/users/kolodny/gists{/gist_id}","starred_url":"https://api.github.com/users/kolodny/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kolodny/subscriptions","organizations_url":"https://api.github.com/users/kolodny/orgs","repos_url":"https://api.github.com/users/kolodny/repos","events_url":"https://api.github.com/users/kolodny/events{/privacy}","received_events_url":"https://api.github.com/users/kolodny/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":728773886,"url":"https://api.github.com/repos/googleapis/nodejs-bigtable/labels/cla:%20yes","name":"cla: yes","color":"c2e0c6","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/pulls/46/commits","review_comments_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/pulls/46/comments","review_comment_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/pulls/comments{/number}","comments_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/issues/46/comments","statuses_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/statuses/14db39645a4457698e44fca607707a143e5c0bdf","head":{"label":"kolodny:improve-transform-perf","ref":"improve-transform-perf","sha":"14db39645a4457698e44fca607707a143e5c0bdf","user":{"login":"kolodny","id":1187604,"avatar_url":"https://avatars2.githubusercontent.com/u/1187604?v=4","gravatar_id":"","url":"https://api.github.com/users/kolodny","html_url":"https://github.com/kolodny","followers_url":"https://api.github.com/users/kolodny/followers","following_url":"https://api.github.com/users/kolodny/following{/other_user}","gists_url":"https://api.github.com/users/kolodny/gists{/gist_id}","starred_url":"https://api.github.com/users/kolodny/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kolodny/subscriptions","organizations_url":"https://api.github.com/users/kolodny/orgs","repos_url":"https://api.github.com/users/kolodny/repos","events_url":"https://api.github.com/users/kolodny/events{/privacy}","received_events_url":"https://api.github.com/users/kolodny/received_events","type":"User","site_admin":false},"repo":{"id":110584343,"name":"nodejs-bigtable","full_name":"kolodny/nodejs-bigtable","owner":{"login":"kolodny","id":1187604,"avatar_url":"https://avatars2.githubusercontent.com/u/1187604?v=4","gravatar_id":"","url":"https://api.github.com/users/kolodny","html_url":"https://github.com/kolodny","followers_url":"https://api.github.com/users/kolodny/followers","following_url":"https://api.github.com/users/kolodny/following{/other_user}","gists_url":"https://api.github.com/users/kolodny/gists{/gist_id}","starred_url":"https://api.github.com/users/kolodny/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kolodny/subscriptions","organizations_url":"https://api.github.com/users/kolodny/orgs","repos_url":"https://api.github.com/users/kolodny/repos","events_url":"https://api.github.com/users/kolodny/events{/privacy}","received_events_url":"https://api.github.com/users/kolodny/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/kolodny/nodejs-bigtable","description":"Node.js client for Google Cloud Bigtable: Google's NoSQL Big Data database service.","fork":true,"url":"https://api.github.com/repos/kolodny/nodejs-bigtable","forks_url":"https://api.github.com/repos/kolodny/nodejs-bigtable/forks","keys_url":"https://api.github.com/repos/kolodny/nodejs-bigtable/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kolodny/nodejs-bigtable/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kolodny/nodejs-bigtable/teams","hooks_url":"https://api.github.com/repos/kolodny/nodejs-bigtable/hooks","issue_events_url":"https://api.github.com/repos/kolodny/nodejs-bigtable/issues/events{/number}","events_url":"https://api.github.com/repos/kolodny/nodejs-bigtable/events","assignees_url":"https://api.github.com/repos/kolodny/nodejs-bigtable/assignees{/user}","branches_url":"https://api.github.com/repos/kolodny/nodejs-bigtable/branches{/branch}","tags_url":"https://api.github.com/repos/kolodny/nodejs-bigtable/tags","blobs_url":"https://api.github.com/repos/kolodny/nodejs-bigtable/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kolodny/nodejs-bigtable/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kolodny/nodejs-bigtable/git/refs{/sha}","trees_url":"https://api.github.com/repos/kolodny/nodejs-bigtable/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kolodny/nodejs-bigtable/statuses/{sha}","languages_url":"https://api.github.com/repos/kolodny/nodejs-bigtable/languages","stargazers_url":"https://api.github.com/repos/kolodny/nodejs-bigtable/stargazers","contributors_url":"https://api.github.com/repos/kolodny/nodejs-bigtable/contributors","subscribers_url":"https://api.github.com/repos/kolodny/nodejs-bigtable/subscribers","subscription_url":"https://api.github.com/repos/kolodny/nodejs-bigtable/subscription","commits_url":"https://api.github.com/repos/kolodny/nodejs-bigtable/commits{/sha}","git_commits_url":"https://api.github.com/repos/kolodny/nodejs-bigtable/git/commits{/sha}","comments_url":"https://api.github.com/repos/kolodny/nodejs-bigtable/comments{/number}","issue_comment_url":"https://api.github.com/repos/kolodny/nodejs-bigtable/issues/comments{/number}","contents_url":"https://api.github.com/repos/kolodny/nodejs-bigtable/contents/{+path}","compare_url":"https://api.github.com/repos/kolodny/nodejs-bigtable/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kolodny/nodejs-bigtable/merges","archive_url":"https://api.github.com/repos/kolodny/nodejs-bigtable/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kolodny/nodejs-bigtable/downloads","issues_url":"https://api.github.com/repos/kolodny/nodejs-bigtable/issues{/number}","pulls_url":"https://api.github.com/repos/kolodny/nodejs-bigtable/pulls{/number}","milestones_url":"https://api.github.com/repos/kolodny/nodejs-bigtable/milestones{/number}","notifications_url":"https://api.github.com/repos/kolodny/nodejs-bigtable/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kolodny/nodejs-bigtable/labels{/name}","releases_url":"https://api.github.com/repos/kolodny/nodejs-bigtable/releases{/id}","deployments_url":"https://api.github.com/repos/kolodny/nodejs-bigtable/deployments","created_at":"2017-11-13T18:18:13Z","updated_at":"2017-11-13T18:18:15Z","pushed_at":"2018-03-13T20:48:39Z","git_url":"git://github.com/kolodny/nodejs-bigtable.git","ssh_url":"git@github.com:kolodny/nodejs-bigtable.git","clone_url":"https://github.com/kolodny/nodejs-bigtable.git","svn_url":"https://github.com/kolodny/nodejs-bigtable","homepage":"https://cloud.google.com/bigtable/","size":605,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"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":"googleapis:master","ref":"master","sha":"7abb15d0d3b70f87354f13c2dbb99eee3638ea4b","user":{"login":"googleapis","id":16785467,"avatar_url":"https://avatars3.githubusercontent.com/u/16785467?v=4","gravatar_id":"","url":"https://api.github.com/users/googleapis","html_url":"https://github.com/googleapis","followers_url":"https://api.github.com/users/googleapis/followers","following_url":"https://api.github.com/users/googleapis/following{/other_user}","gists_url":"https://api.github.com/users/googleapis/gists{/gist_id}","starred_url":"https://api.github.com/users/googleapis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/googleapis/subscriptions","organizations_url":"https://api.github.com/users/googleapis/orgs","repos_url":"https://api.github.com/users/googleapis/repos","events_url":"https://api.github.com/users/googleapis/events{/privacy}","received_events_url":"https://api.github.com/users/googleapis/received_events","type":"Organization","site_admin":false},"repo":{"id":98463312,"name":"nodejs-bigtable","full_name":"googleapis/nodejs-bigtable","owner":{"login":"googleapis","id":16785467,"avatar_url":"https://avatars3.githubusercontent.com/u/16785467?v=4","gravatar_id":"","url":"https://api.github.com/users/googleapis","html_url":"https://github.com/googleapis","followers_url":"https://api.github.com/users/googleapis/followers","following_url":"https://api.github.com/users/googleapis/following{/other_user}","gists_url":"https://api.github.com/users/googleapis/gists{/gist_id}","starred_url":"https://api.github.com/users/googleapis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/googleapis/subscriptions","organizations_url":"https://api.github.com/users/googleapis/orgs","repos_url":"https://api.github.com/users/googleapis/repos","events_url":"https://api.github.com/users/googleapis/events{/privacy}","received_events_url":"https://api.github.com/users/googleapis/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/googleapis/nodejs-bigtable","description":"Node.js client for Google Cloud Bigtable: Google's NoSQL Big Data database service.","fork":false,"url":"https://api.github.com/repos/googleapis/nodejs-bigtable","forks_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/forks","keys_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/keys{/key_id}","collaborators_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/teams","hooks_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/hooks","issue_events_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/issues/events{/number}","events_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/events","assignees_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/assignees{/user}","branches_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/branches{/branch}","tags_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/tags","blobs_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/git/refs{/sha}","trees_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/git/trees{/sha}","statuses_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/statuses/{sha}","languages_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/languages","stargazers_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/stargazers","contributors_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/contributors","subscribers_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/subscribers","subscription_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/subscription","commits_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/commits{/sha}","git_commits_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/git/commits{/sha}","comments_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/comments{/number}","issue_comment_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/issues/comments{/number}","contents_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/contents/{+path}","compare_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/compare/{base}...{head}","merges_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/merges","archive_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/downloads","issues_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/issues{/number}","pulls_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/pulls{/number}","milestones_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/milestones{/number}","notifications_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/labels{/name}","releases_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/releases{/id}","deployments_url":"https://api.github.com/repos/googleapis/nodejs-bigtable/deployments","created_at":"2017-07-26T20:29:37Z","updated_at":"2018-03-13T20:27:34Z","pushed_at":"2018-03-13T22:44:09Z","git_url":"git://github.com/googleapis/nodejs-bigtable.git","ssh_url":"git@github.com:googleapis/nodejs-bigtable.git","clone_url":"https://github.com/googleapis/nodejs-bigtable.git","svn_url":"https://github.com/googleapis/nodejs-bigtable","homepage":"https://cloud.google.com/bigtable/","size":468,"stargazers_count":7,"watchers_count":7,"language":"JavaScript","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":12,"mirror_url":null,"archived":false,"open_issues_count":3,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":12,"open_issues":3,"watchers":7,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/googleapis/nodejs-bigtable/pulls/46"},"html":{"href":"https://github.com/googleapis/nodejs-bigtable/pull/46"},"issue":{"href":"https://api.github.com/repos/googleapis/nodejs-bigtable/issues/46"},"comments":{"href":"https://api.github.com/repos/googleapis/nodejs-bigtable/issues/46/comments"},"review_comments":{"href":"https://api.github.com/repos/googleapis/nodejs-bigtable/pulls/46/comments"},"review_comment":{"href":"https://api.github.com/repos/googleapis/nodejs-bigtable/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/googleapis/nodejs-bigtable/pulls/46/commits"},"statuses":{"href":"https://api.github.com/repos/googleapis/nodejs-bigtable/statuses/14db39645a4457698e44fca607707a143e5c0bdf"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"stephenplusplus"}}