{"action":"created","comment":{"url":"https://api.github.com/repos/nodejs/node-chakracore/pulls/comments/82073921","pull_request_review_id":3007029,"id":82073921,"diff_hunk":"@@ -0,0 +1,1304 @@\n+// Copyright Microsoft. All rights reserved.\n+//\n+// Permission is hereby granted, free of charge, to any person obtaining a copy\n+// of this software and associated documentation files(the 'Software'), to\n+// deal in the Software without restriction, including without limitation the\n+// rights to use, copy, modify, merge, publish, distribute, sublicense, and / or\n+// sell copies of the Software, and to permit persons to whom the Software is\n+// furnished to do so, subject to the following conditions :\n+//\n+// The above copyright notice and this permission notice shall be included in\n+// all copies or substantial portions of the Software.\n+//\n+// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE\n+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n+// IN THE SOFTWARE.\n+\n+/* eslint-disable strict */\n+(function(globalObject, keepAliveObject, traceDebugJson) {\n+  var globalExecutionState;\n+  var pendingMessages = [];\n+\n+  var Logger = (function() {\n+    var logTypes = {\n+      API: 1,\n+      Output: 2,\n+      Input: 3,\n+      Error: 4\n+    };\n+\n+    var enabledLogType = [];\n+    enabledLogType[logTypes.API] = false; // For development purpose\n+    enabledLogType[logTypes.Output] = traceDebugJson === true;\n+    enabledLogType[logTypes.Input] = traceDebugJson === true;\n+    enabledLogType[logTypes.Error] = false; // For development purpose\n+\n+    function logFunc(logType, argsArray) {\n+      if (enabledLogType[logType]) {\n+        var printStr = '';\n+        for (var index in argsArray) {\n+          var obj = argsArray[index];\n+          if (obj != undefined) {\n+            printStr += (typeof obj != 'string') ? JSON.stringify(obj) : obj;\n+            printStr += ': ';\n+          }\n+        }\n+        chakraDebug.log(printStr);\n+      }\n+    }\n+\n+    return {\n+      LogAPI: function(msg, obj) {\n+        logFunc(logTypes.API, arguments);\n+      },\n+      LogOutput: function(msg, obj) {\n+        logFunc(logTypes.Output, arguments);\n+      },\n+      LogInput: function(msg, obj) {\n+        logFunc(logTypes.Input, arguments);\n+      },\n+      LogError: function(msg, obj) {\n+        logFunc(logTypes.Error, arguments);\n+      }\n+    };\n+  })();\n+\n+  function CallHostFunctionNoLog(fn) {\n+    var args = [].slice.call(arguments, 1);\n+    var start = new Date();\n+    var result = fn.apply(undefined, args);\n+    var end = new Date();\n+    Logger.LogAPI(`${fn.name}(${args}):${end - start}`);\n+    return result;\n+  }\n+\n+  function CallHostFunction(fn) {\n+    var args = [].slice.call(arguments, 1);\n+    var start = new Date();\n+    var result = fn.apply(undefined, args);\n+    var end = new Date();\n+    Logger.LogAPI(`${fn.name}(${args}):${end - start}`, result);\n+    return result;\n+  }\n+\n+  if (!globalObject.Debug) {\n+    Object.defineProperty(globalObject, 'Debug', {\n+      value: {}, enumerable: false, configurable: false, writable: false\n+    });\n+  }\n+\n+  var Debug = globalObject.Debug;\n+\n+  Debug.ScriptBreakPointType = {\n+    ScriptId: 0,\n+    ScriptName: 1,\n+    ScriptRegExp: 2\n+  };\n+\n+  Debug.setListener = function(fn) { };\n+\n+  Debug.setBreakPoint = function(func, line, column) {\n+    Logger.LogAPI(`Debug.setBreakPoint(${func},${line},${column})`);\n+    var funcInfo = CallHostFunction(chakraDebug.JsDiagGetFunctionPosition,\n+                                     func);\n+    var bpId = -1;\n+\n+    if (funcInfo.scriptId >= 0) {\n+      var scriptObj = DebugManager.ScriptsManager.GetScript(funcInfo.scriptId);\n+      var bpLine = funcInfo.firstStatementLine + line;\n+      var bpColumn = funcInfo.firstStatementColumn + column;\n+      var v8Breakpoint = new V8Breakpoint(Debug.ScriptBreakPointType.ScriptId,\n+                              funcInfo.scriptId, scriptObj, bpLine, bpColumn);\n+      if (v8Breakpoint.Set()) {\n+        bpId = v8Breakpoint.Id();\n+        DebugManager.BreakpointManager.AddBreakpoint(v8Breakpoint);\n+      }\n+    }\n+\n+    return bpId;\n+  };\n+\n+  function AddChildrens(obj) {\n+    if ('display' in obj) {\n+      if (!('value' in obj) || !isFinite(obj['value']) ||\n+        obj['value'] == null || obj['value'] == undefined) {\n+        obj['value'] = obj['display'];\n+      }\n+      if (!('text' in obj)) {\n+        obj['text'] = obj['display'];\n+      }\n+      if (!('className' in obj)) {\n+        obj['className'] = obj['type'];\n+      }\n+    }\n+\n+    if ('className' in obj && obj['className'] == 'Object') {\n+      obj.constructorFunction = {\n+        'ref': globalExecutionState.GetObjectEvalHandle()\n+      };\n+      obj.protoObject = {\n+        'ref': globalExecutionState.GetObjectProtoEvalHandle()\n+      };\n+      obj.prototypeObject = {\n+        'ref': globalExecutionState.GetObjectPrototypeEvalHandle()\n+      };\n+    }\n+\n+    var PROPERTY_ATTRIBUTE_HAVE_CHILDRENS = 0x1;\n+    //var PROPERTY_ATTRIBUTE_READ_ONLY_VALUE = 0x2;\n+\n+    if (('propertyAttributes' in obj) &&\n+      ((obj['propertyAttributes'] & PROPERTY_ATTRIBUTE_HAVE_CHILDRENS) ==\n+      PROPERTY_ATTRIBUTE_HAVE_CHILDRENS)) {\n+      var objectHandle = obj['handle'];\n+\n+      var childProperties = CallHostFunction(chakraDebug.JsDiagGetProperties,\n+        objectHandle, 0, 1000);\n+\n+      var propertiesArray = [];\n+      ['properties', 'debuggerOnlyProperties'].forEach(\n+        function(propertyCategory) {\n+          var properties = childProperties[propertyCategory];\n+          for (var propsLen = 0; propsLen < properties.length; ++propsLen) {\n+            propertiesArray.push({\n+              'name': properties[propsLen]['name'],\n+              'propertyType': 0,\n+              'ref': properties[propsLen]['handle']\n+            });\n+          }\n+        });\n+      obj['properties'] = propertiesArray;\n+    }\n+  }\n+\n+  var DebugManager = (function() {\n+    var _internalHandle = Number.MAX_SAFE_INTEGER;\n+\n+    function GetNextInternalHandle() {\n+      return --_internalHandle;\n+    }\n+\n+    var _nextResponseSeq = 0;\n+\n+    function Response(request) {\n+      this.seq = _nextResponseSeq++;\n+      this.type = 'response';\n+      this.request_seq = request.seq;\n+      this.command = request.command;\n+      this.success = false;\n+      this.running = globalExecutionState ? false : true;\n+    }\n+\n+    var _nextEventSeq = 0;\n+\n+    function Event(eventName) {\n+      this.seq = _nextEventSeq++;\n+      this.type = 'event';\n+      this.event = eventName;\n+      this.success = true;\n+      this.running = globalExecutionState ? false : true;\n+    }\n+\n+    var Utility = {\n+      MakeResponse: function(request) {\n+        return new Response(request);\n+      },\n+      MakeEvent: function(eventName) {\n+        return new Event(eventName);\n+      },\n+      CreateScopeAndRef: function(scopeType, propertiesArray, index,\n+                                    frameIndex) {\n+        var scopeRef = GetNextInternalHandle();\n+        var scopeAndRef = {};\n+        scopeAndRef.scope = {\n+          'type': scopeType,\n+          'index': index,\n+          'frameIndex': frameIndex,\n+          'object': {\n+            'ref': scopeRef\n+          }\n+        };\n+        var properties = [];\n+        for (var propsLen = 0; propsLen < propertiesArray.length; ++propsLen) {\n+          properties.push({\n+            'name': propertiesArray[propsLen]['name'],\n+            'propertyType': 0,\n+            'ref': propertiesArray[propsLen]['handle']\n+          });\n+        }\n+        scopeAndRef.ref = {\n+          'handle': scopeRef,\n+          'type': 'object',\n+          'className': 'Object',\n+          'constructorFunction': {\n+            'ref': globalExecutionState.GetObjectEvalHandle()\n+          },\n+          'protoObject': {\n+            'ref': globalExecutionState.GetObjectProtoEvalHandle()\n+          },\n+          'prototypeObject': {\n+            'ref': globalExecutionState.GetObjectPrototypeEvalHandle()\n+          },\n+          'properties': properties\n+        };\n+\n+        return scopeAndRef;\n+      }\n+    };\n+\n+    var _breakpoints = [];\n+    var _pendingBreakpoints = [];\n+\n+    var BreakpointManager = {\n+      GetBreakpoints: function() {\n+        var breakpoints = CallHostFunction(chakraDebug.JsDiagGetBreakpoints);\n+        var activeBreakpointList = [];\n+        breakpoints.forEach(function(element, index, array) {\n+          var bpId = element.breakpointId;\n+          activeBreakpointList[bpId] = _breakpoints[bpId];\n+        });\n+        _breakpoints = activeBreakpointList;\n+        return _breakpoints;\n+      },\n+      GetBreakpoint: function(id) {\n+        return _breakpoints[id];\n+      },\n+      AddBreakpoint: function(v8Breakpoint) {\n+        _breakpoints[v8Breakpoint.Id()] = v8Breakpoint;\n+      },\n+      AddPendingBreakpoint: function(request) {\n+        _pendingBreakpoints.push(request);\n+      },\n+      ProcessPendingBreakpoints: function() {\n+        var unResolvedBreakpoints = [];\n+        var pendingBreakpointRequest;\n+        while (pendingBreakpointRequest = _pendingBreakpoints.shift()) {\n+          Logger.LogOutput('ProcessPendingBreakpoints pendingBreakpointRequest'\n+                         , pendingBreakpointRequest);\n+          try {\n+            var response = new DebugManager.Utility.MakeResponse(\n+                                                    pendingBreakpointRequest);\n+            var v8CommandProcessor = new V8CommandProcessor();\n+            v8CommandProcessor[pendingBreakpointRequest.command](\n+                                   pendingBreakpointRequest, response, false);\n+            if (response.success) {\n+              var responseJson = JSON.stringify(response);\n+              Logger.LogOutput('ProcessPendingBreakpoints responseJson',\n+                               responseJson);\n+              chakraDebug.SendDelayedRespose(responseJson);\n+            } else {\n+              unResolvedBreakpoints.push(pendingBreakpointRequest);\n+            }\n+          } catch (ex) {\n+            Logger.LogError('ProcessPendingBreakpoints exception: ' +\n+                           ex.message,\n+                           ex.stack);\n+          }\n+        }\n+        Array.prototype.push.apply(_pendingBreakpoints, unResolvedBreakpoints);\n+      },\n+      RemoveBreakpoint: function(id) {\n+        var v8Breakpoint = _breakpoints[id];\n+        if (v8Breakpoint) {\n+          v8Breakpoint.Remove();\n+          delete _breakpoints[id];\n+        }\n+      }\n+    };\n+\n+    var _scripts = [];\n+    var _scriptHandles = [];\n+\n+    var ScriptsManager = {\n+      GetScripts: function() {\n+        var scriptsArray = CallHostFunctionNoLog(chakraDebug.JsDiagGetScripts);\n+        scriptsArray.forEach(function(element, index, array) {\n+          if (!_scripts[element.scriptId]) {\n+            var scriptHandle = GetNextInternalHandle();\n+            _scriptHandles[scriptHandle] = scriptHandle;\n+            _scripts[element.scriptId] = new V8Script(element, scriptHandle);\n+          }\n+        });\n+        return _scripts;\n+      },\n+      GetScript: function(scriptId) {\n+        if (!_scripts[scriptId]) {\n+          this.GetScripts();\n+        }\n+        return _scripts[scriptId];\n+      },\n+      IsScriptHandle: function(handle) {\n+        return (_scriptHandles[handle]) ? true : false;\n+      },\n+      GetScriptFromHandle: function(handle) {\n+        for (var i = 0; i < _scripts.length; ++i) {\n+          if (_scripts[i] && _scripts[i].GetHandle() == handle) {\n+            return _scripts[i];\n+          }\n+        }\n+      },\n+      GetScriptFromFileName: function(fileName) {\n+        var scripts = this.GetScripts();\n+        for (var i = 0; i < scripts.length; ++i) {\n+          if (scripts[i] && scripts[i].IsSameFileName(fileName)) {\n+            return scripts[i];\n+          }\n+        }\n+      },\n+      GetScriptFromMatchingFileName: function(regexToMatch) {\n+        var scripts = this.GetScripts();\n+        for (var i = 0; i < scripts.length; ++i) {\n+          if (scripts[i] && scripts[i].GetFileName() &&\n+            scripts[i].GetFileName().match(regexToMatch)) {\n+            return scripts[i];\n+          }\n+        }\n+      }\n+    };\n+\n+    return {\n+      Utility: Utility, BreakpointManager: BreakpointManager,\n+      ScriptsManager: ScriptsManager\n+    };\n+  })();\n+\n+\n+  var ExecutionStateType = {\n+    Break: 0,\n+    Async: 1\n+  };\n+\n+  function ExecutionState(stateType, scriptId) {\n+    this.type = stateType;\n+    this.breakScriptId = scriptId;\n+    this.frames = undefined;\n+    this.objectEval = undefined;\n+    this.objectProtoEval = undefined;\n+    this.objectPrototypeEval = undefined;\n+  }\n+\n+  ExecutionState.prototype.ChangeToBreak = function() {\n+    this.type = ExecutionStateType.Break;\n+  };\n+\n+  ExecutionState.prototype.IsAsyncBreak = function() {\n+    return this.type == ExecutionStateType.Async;\n+  };\n+\n+  ExecutionState.prototype.GetBreakScriptId = function() {\n+    return this.breakScriptId;\n+  };\n+\n+  ExecutionState.prototype.GetFrames = function() {\n+    if (!this.frames || this.frames.length == 0) {\n+      var _frames = [];\n+      var stackTrace = CallHostFunction(chakraDebug.JsDiagGetStackTrace);\n+      stackTrace.forEach(function(element, index, array) {\n+        _frames.push(new V8Frame(element));\n+      });\n+\n+      this.frames = _frames;\n+    }\n+    return this.frames;\n+  };\n+\n+  ExecutionState.prototype.GetObjectEvalHandle = function() {\n+    if (!this.objectEval) {\n+      var objEval = CallHostFunction(chakraDebug.JsDiagEvaluate, 'Object', 0);\n+      this.objectEval = objEval[1];","path":"deps/chakrashim/lib/chakra_debug.js","position":412,"original_position":412,"commit_id":"e5d1660fbd69a2aa4584a961eee9504e64f8b5b4","original_commit_id":"e5d1660fbd69a2aa4584a961eee9504e64f8b5b4","user":{"login":"kunalspathak","id":12488060,"avatar_url":"https://avatars.githubusercontent.com/u/12488060?v=3","gravatar_id":"","url":"https://api.github.com/users/kunalspathak","html_url":"https://github.com/kunalspathak","followers_url":"https://api.github.com/users/kunalspathak/followers","following_url":"https://api.github.com/users/kunalspathak/following{/other_user}","gists_url":"https://api.github.com/users/kunalspathak/gists{/gist_id}","starred_url":"https://api.github.com/users/kunalspathak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kunalspathak/subscriptions","organizations_url":"https://api.github.com/users/kunalspathak/orgs","repos_url":"https://api.github.com/users/kunalspathak/repos","events_url":"https://api.github.com/users/kunalspathak/events{/privacy}","received_events_url":"https://api.github.com/users/kunalspathak/received_events","type":"User","site_admin":false},"body":">bjEval[1] [](start = 25, length = 9)\r\n\r\nIf i understand correctly, objEval[0] holds if call succeed or not. You never check that?","created_at":"2016-10-05T21:23:39Z","updated_at":"2016-10-05T21:23:39Z","html_url":"https://github.com/nodejs/node-chakracore/pull/126#discussion_r82073921","pull_request_url":"https://api.github.com/repos/nodejs/node-chakracore/pulls/126","_links":{"self":{"href":"https://api.github.com/repos/nodejs/node-chakracore/pulls/comments/82073921"},"html":{"href":"https://github.com/nodejs/node-chakracore/pull/126#discussion_r82073921"},"pull_request":{"href":"https://api.github.com/repos/nodejs/node-chakracore/pulls/126"}}},"pull_request":{"url":"https://api.github.com/repos/nodejs/node-chakracore/pulls/126","id":87208419,"html_url":"https://github.com/nodejs/node-chakracore/pull/126","diff_url":"https://github.com/nodejs/node-chakracore/pull/126.diff","patch_url":"https://github.com/nodejs/node-chakracore/pull/126.patch","issue_url":"https://api.github.com/repos/nodejs/node-chakracore/issues/126","number":126,"state":"open","locked":false,"title":"deps: chakrashim enable JavaScript debugging","user":{"login":"agarwal-sandeep","id":12059066,"avatar_url":"https://avatars.githubusercontent.com/u/12059066?v=3","gravatar_id":"","url":"https://api.github.com/users/agarwal-sandeep","html_url":"https://github.com/agarwal-sandeep","followers_url":"https://api.github.com/users/agarwal-sandeep/followers","following_url":"https://api.github.com/users/agarwal-sandeep/following{/other_user}","gists_url":"https://api.github.com/users/agarwal-sandeep/gists{/gist_id}","starred_url":"https://api.github.com/users/agarwal-sandeep/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/agarwal-sandeep/subscriptions","organizations_url":"https://api.github.com/users/agarwal-sandeep/orgs","repos_url":"https://api.github.com/users/agarwal-sandeep/repos","events_url":"https://api.github.com/users/agarwal-sandeep/events{/privacy}","received_events_url":"https://api.github.com/users/agarwal-sandeep/received_events","type":"User","site_admin":false},"body":"<!--\r\nThank you for your pull request. Please review below requirements.\r\n\r\nBug fixes and new features should include tests and possibly benchmarks.\r\n\r\nContributors guide: https://github.com/nodejs/node/blob/master/CONTRIBUTING.md\r\n-->\r\n\r\n##### Checklist\r\n<!-- Remove items that do not apply. For completed items, change [ ] to [x]. -->\r\n\r\n- [x] `make -j4 test` (UNIX), or `vcbuild test nosign` (Windows) passes\r\n- [x] commit message follows commit guidelines\r\n\r\n##### Affected core subsystem(s)\r\n<!-- Provide affected core subsystem(s) (like doc, cluster, crypto, etc). -->\r\nchakrashim, node\r\n\r\n##### Description of change\r\n<!-- Provide a description of the change below this comment. -->\r\n\r\nThis change adds JavaScript debugging support in node-chakracore by using\r\nJsRT debugging apis added in chakracore release 1.3. A shim convert v8\r\ndebugging protocol messages to chakracore debugging apis and visa-versa.\r\n\r\nnode-chakracore only expose the debugging protocol messages and doesn't\r\nshim all the apis which v8 provides, so it is only debuggable using tools\r\nwhich just relies on debugging protocol json and doesn't use internals\r\nof v8 debugging implementations.\r\n\r\n\r\nPR-URL: nodejs/node-chakracore#[To be filled]\r\nReviewed-By: [To be filled]","created_at":"2016-09-28T21:49:49Z","updated_at":"2016-10-05T21:23:39Z","closed_at":null,"merged_at":null,"merge_commit_sha":"3be586df1a3c11b8e1a01cac0dc091bd812a6130","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/nodejs/node-chakracore/pulls/126/commits","review_comments_url":"https://api.github.com/repos/nodejs/node-chakracore/pulls/126/comments","review_comment_url":"https://api.github.com/repos/nodejs/node-chakracore/pulls/comments{/number}","comments_url":"https://api.github.com/repos/nodejs/node-chakracore/issues/126/comments","statuses_url":"https://api.github.com/repos/nodejs/node-chakracore/statuses/e5d1660fbd69a2aa4584a961eee9504e64f8b5b4","head":{"label":"agarwal-sandeep:debugging-vscode-pr","ref":"debugging-vscode-pr","sha":"e5d1660fbd69a2aa4584a961eee9504e64f8b5b4","user":{"login":"agarwal-sandeep","id":12059066,"avatar_url":"https://avatars.githubusercontent.com/u/12059066?v=3","gravatar_id":"","url":"https://api.github.com/users/agarwal-sandeep","html_url":"https://github.com/agarwal-sandeep","followers_url":"https://api.github.com/users/agarwal-sandeep/followers","following_url":"https://api.github.com/users/agarwal-sandeep/following{/other_user}","gists_url":"https://api.github.com/users/agarwal-sandeep/gists{/gist_id}","starred_url":"https://api.github.com/users/agarwal-sandeep/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/agarwal-sandeep/subscriptions","organizations_url":"https://api.github.com/users/agarwal-sandeep/orgs","repos_url":"https://api.github.com/users/agarwal-sandeep/repos","events_url":"https://api.github.com/users/agarwal-sandeep/events{/privacy}","received_events_url":"https://api.github.com/users/agarwal-sandeep/received_events","type":"User","site_admin":false},"repo":{"id":53895834,"name":"node-chakracore","full_name":"agarwal-sandeep/node-chakracore","owner":{"login":"agarwal-sandeep","id":12059066,"avatar_url":"https://avatars.githubusercontent.com/u/12059066?v=3","gravatar_id":"","url":"https://api.github.com/users/agarwal-sandeep","html_url":"https://github.com/agarwal-sandeep","followers_url":"https://api.github.com/users/agarwal-sandeep/followers","following_url":"https://api.github.com/users/agarwal-sandeep/following{/other_user}","gists_url":"https://api.github.com/users/agarwal-sandeep/gists{/gist_id}","starred_url":"https://api.github.com/users/agarwal-sandeep/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/agarwal-sandeep/subscriptions","organizations_url":"https://api.github.com/users/agarwal-sandeep/orgs","repos_url":"https://api.github.com/users/agarwal-sandeep/repos","events_url":"https://api.github.com/users/agarwal-sandeep/events{/privacy}","received_events_url":"https://api.github.com/users/agarwal-sandeep/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/agarwal-sandeep/node-chakracore","description":"Node.js on ChakraCore :sparkles::turtle::rocket::sparkles:","fork":true,"url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore","forks_url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore/forks","keys_url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore/keys{/key_id}","collaborators_url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore/teams","hooks_url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore/hooks","issue_events_url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore/issues/events{/number}","events_url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore/events","assignees_url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore/assignees{/user}","branches_url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore/branches{/branch}","tags_url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore/tags","blobs_url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore/git/refs{/sha}","trees_url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore/git/trees{/sha}","statuses_url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore/statuses/{sha}","languages_url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore/languages","stargazers_url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore/stargazers","contributors_url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore/contributors","subscribers_url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore/subscribers","subscription_url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore/subscription","commits_url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore/commits{/sha}","git_commits_url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore/git/commits{/sha}","comments_url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore/comments{/number}","issue_comment_url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore/issues/comments{/number}","contents_url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore/contents/{+path}","compare_url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore/compare/{base}...{head}","merges_url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore/merges","archive_url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore/downloads","issues_url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore/issues{/number}","pulls_url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore/pulls{/number}","milestones_url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore/milestones{/number}","notifications_url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore/labels{/name}","releases_url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore/releases{/id}","deployments_url":"https://api.github.com/repos/agarwal-sandeep/node-chakracore/deployments","created_at":"2016-03-14T22:16:47Z","updated_at":"2016-03-14T22:16:51Z","pushed_at":"2016-09-28T21:48:08Z","git_url":"git://github.com/agarwal-sandeep/node-chakracore.git","ssh_url":"git@github.com:agarwal-sandeep/node-chakracore.git","clone_url":"https://github.com/agarwal-sandeep/node-chakracore.git","svn_url":"https://github.com/agarwal-sandeep/node-chakracore","homepage":"","size":217026,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"debugging-ttd-preview"}},"base":{"label":"nodejs:chakracore-master","ref":"chakracore-master","sha":"6b9de405e14c8332ff99a95bb0e6fca481213340","user":{"login":"nodejs","id":9950313,"avatar_url":"https://avatars.githubusercontent.com/u/9950313?v=3","gravatar_id":"","url":"https://api.github.com/users/nodejs","html_url":"https://github.com/nodejs","followers_url":"https://api.github.com/users/nodejs/followers","following_url":"https://api.github.com/users/nodejs/following{/other_user}","gists_url":"https://api.github.com/users/nodejs/gists{/gist_id}","starred_url":"https://api.github.com/users/nodejs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nodejs/subscriptions","organizations_url":"https://api.github.com/users/nodejs/orgs","repos_url":"https://api.github.com/users/nodejs/repos","events_url":"https://api.github.com/users/nodejs/events{/privacy}","received_events_url":"https://api.github.com/users/nodejs/received_events","type":"Organization","site_admin":false},"repo":{"id":46881155,"name":"node-chakracore","full_name":"nodejs/node-chakracore","owner":{"login":"nodejs","id":9950313,"avatar_url":"https://avatars.githubusercontent.com/u/9950313?v=3","gravatar_id":"","url":"https://api.github.com/users/nodejs","html_url":"https://github.com/nodejs","followers_url":"https://api.github.com/users/nodejs/followers","following_url":"https://api.github.com/users/nodejs/following{/other_user}","gists_url":"https://api.github.com/users/nodejs/gists{/gist_id}","starred_url":"https://api.github.com/users/nodejs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nodejs/subscriptions","organizations_url":"https://api.github.com/users/nodejs/orgs","repos_url":"https://api.github.com/users/nodejs/repos","events_url":"https://api.github.com/users/nodejs/events{/privacy}","received_events_url":"https://api.github.com/users/nodejs/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/nodejs/node-chakracore","description":"Node.js on ChakraCore :sparkles::turtle::rocket::sparkles:","fork":false,"url":"https://api.github.com/repos/nodejs/node-chakracore","forks_url":"https://api.github.com/repos/nodejs/node-chakracore/forks","keys_url":"https://api.github.com/repos/nodejs/node-chakracore/keys{/key_id}","collaborators_url":"https://api.github.com/repos/nodejs/node-chakracore/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/nodejs/node-chakracore/teams","hooks_url":"https://api.github.com/repos/nodejs/node-chakracore/hooks","issue_events_url":"https://api.github.com/repos/nodejs/node-chakracore/issues/events{/number}","events_url":"https://api.github.com/repos/nodejs/node-chakracore/events","assignees_url":"https://api.github.com/repos/nodejs/node-chakracore/assignees{/user}","branches_url":"https://api.github.com/repos/nodejs/node-chakracore/branches{/branch}","tags_url":"https://api.github.com/repos/nodejs/node-chakracore/tags","blobs_url":"https://api.github.com/repos/nodejs/node-chakracore/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/nodejs/node-chakracore/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/nodejs/node-chakracore/git/refs{/sha}","trees_url":"https://api.github.com/repos/nodejs/node-chakracore/git/trees{/sha}","statuses_url":"https://api.github.com/repos/nodejs/node-chakracore/statuses/{sha}","languages_url":"https://api.github.com/repos/nodejs/node-chakracore/languages","stargazers_url":"https://api.github.com/repos/nodejs/node-chakracore/stargazers","contributors_url":"https://api.github.com/repos/nodejs/node-chakracore/contributors","subscribers_url":"https://api.github.com/repos/nodejs/node-chakracore/subscribers","subscription_url":"https://api.github.com/repos/nodejs/node-chakracore/subscription","commits_url":"https://api.github.com/repos/nodejs/node-chakracore/commits{/sha}","git_commits_url":"https://api.github.com/repos/nodejs/node-chakracore/git/commits{/sha}","comments_url":"https://api.github.com/repos/nodejs/node-chakracore/comments{/number}","issue_comment_url":"https://api.github.com/repos/nodejs/node-chakracore/issues/comments{/number}","contents_url":"https://api.github.com/repos/nodejs/node-chakracore/contents/{+path}","compare_url":"https://api.github.com/repos/nodejs/node-chakracore/compare/{base}...{head}","merges_url":"https://api.github.com/repos/nodejs/node-chakracore/merges","archive_url":"https://api.github.com/repos/nodejs/node-chakracore/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/nodejs/node-chakracore/downloads","issues_url":"https://api.github.com/repos/nodejs/node-chakracore/issues{/number}","pulls_url":"https://api.github.com/repos/nodejs/node-chakracore/pulls{/number}","milestones_url":"https://api.github.com/repos/nodejs/node-chakracore/milestones{/number}","notifications_url":"https://api.github.com/repos/nodejs/node-chakracore/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/nodejs/node-chakracore/labels{/name}","releases_url":"https://api.github.com/repos/nodejs/node-chakracore/releases{/id}","deployments_url":"https://api.github.com/repos/nodejs/node-chakracore/deployments","created_at":"2015-11-25T19:09:26Z","updated_at":"2016-10-05T13:19:44Z","pushed_at":"2016-10-05T20:22:34Z","git_url":"git://github.com/nodejs/node-chakracore.git","ssh_url":"git@github.com:nodejs/node-chakracore.git","clone_url":"https://github.com/nodejs/node-chakracore.git","svn_url":"https://github.com/nodejs/node-chakracore","homepage":"","size":229012,"stargazers_count":803,"watchers_count":803,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":60,"mirror_url":null,"open_issues_count":30,"forks":60,"open_issues":30,"watchers":803,"default_branch":"chakracore-master"}},"_links":{"self":{"href":"https://api.github.com/repos/nodejs/node-chakracore/pulls/126"},"html":{"href":"https://github.com/nodejs/node-chakracore/pull/126"},"issue":{"href":"https://api.github.com/repos/nodejs/node-chakracore/issues/126"},"comments":{"href":"https://api.github.com/repos/nodejs/node-chakracore/issues/126/comments"},"review_comments":{"href":"https://api.github.com/repos/nodejs/node-chakracore/pulls/126/comments"},"review_comment":{"href":"https://api.github.com/repos/nodejs/node-chakracore/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/nodejs/node-chakracore/pulls/126/commits"},"statuses":{"href":"https://api.github.com/repos/nodejs/node-chakracore/statuses/e5d1660fbd69a2aa4584a961eee9504e64f8b5b4"}}}}
{"actor":{"display_login":"kunalspathak"}}