{"action":"created","comment":{"url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/pulls/comments/111017520","pull_request_review_id":32232241,"id":111017520,"diff_hunk":"@@ -1,365 +1,479 @@\n-\"use strict\";\n-\n+'use strict';\n var Cesium = require('cesium');\n-var Promise = require('bluebird');\n-var byline = require('byline');\n-var fs = require('fs-extra');\n var path = require('path');\n+var Promise = require('bluebird');\n \n+var ArrayStorage = require('./ArrayStorage');\n var loadImage = require('./image');\n-var Material = require('./mtl');\n+var loadMtl = require('./mtl');\n+var readLines = require('./readLines');\n \n-var Cartesian3 = Cesium.Cartesian3;\n+var combine = Cesium.combine;\n+var ComponentDatatype = Cesium.ComponentDatatype;\n+var defaultValue = Cesium.defaultValue;\n var defined = Cesium.defined;\n+var RuntimeError = Cesium.RuntimeError;\n \n-module.exports = parseObj;\n+module.exports = loadObj;\n \n-// OBJ regex patterns are from ThreeJS (https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/OBJLoader.js)\n+// Object name (o) -> node\n+// Group name (g) -> mesh\n+// Material name (usemtl) -> primitive\n \n-function parseObj(objFile, inputPath) {\n-    return getObjInfo(objFile, inputPath)\n-        .then(function(result) {\n-            var info = result.info;\n-            var materials = result.materials;\n-            var images = result.images;\n-            return processObj(objFile, info, materials, images);\n-        });\n+function Node() {\n+    this.name = undefined;\n+    this.meshes = [];\n }\n \n-function processObj(objFile, info, materials, images) {\n-    return new Promise(function(resolve) {\n-        // A vertex is specified by indexes into each of the attribute arrays,\n-        // but these indexes may be different. This maps the separate indexes to a single index.\n-        var vertexCache = {};\n-        var vertexCount = 0;\n-\n-        var vertexArray = [];\n-\n-        var positions = [];\n-        var normals = [];\n-        var uvs = [];\n-\n-        var positionMin = [Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE];\n-        var positionMax = [-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE];\n-\n-        var hasNormals = info.hasNormals;\n-        var hasUVs = info.hasUVs;\n-\n-        var materialGroups = {}; // Map material to index array\n-        var currentIndexArray;\n-\n-        // Switch to the material-specific index array, or create it if it doesn't exist\n-        function useMaterial(material) {\n-            if (!defined(materials[material])) {\n-                useDefaultMaterial();\n-            } else {\n-                currentIndexArray = materialGroups[material];\n-                if (!defined(currentIndexArray)) {\n-                    currentIndexArray = [];\n-                    materialGroups[material] = currentIndexArray;\n-                }\n-            }\n+function Mesh() {\n+    this.name = undefined;\n+    this.primitives = [];\n+    this.positions = new ArrayStorage(ComponentDatatype.FLOAT);\n+    this.normals = new ArrayStorage(ComponentDatatype.FLOAT);\n+    this.uvs = new ArrayStorage(ComponentDatatype.FLOAT);\n+}\n+\n+function Primitive() {\n+    this.material = undefined;\n+    this.indices = new ArrayStorage(ComponentDatatype.UNSIGNED_INT);\n+}\n+\n+// OBJ regex patterns are modified from ThreeJS (https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/OBJLoader.js)\n+var vertexPattern = /v( +[\\d|\\.|\\+|\\-|e|E]+)( +[\\d|\\.|\\+|\\-|e|E]+)( +[\\d|\\.|\\+|\\-|e|E]+)/;                                                      // v float float float\n+var normalPattern = /vn( +[\\d|\\.|\\+|\\-|e|E]+)( +[\\d|\\.|\\+|\\-|e|E]+)( +[\\d|\\.|\\+|\\-|e|E]+)/;                                                     // vn float float float\n+var uvPattern = /vt( +[\\d|\\.|\\+|\\-|e|E]+)( +[\\d|\\.|\\+|\\-|e|E]+)/;                                                                               // vt float float\n+var facePattern1 = /f( +-?\\d+)\\/?( +-?\\d+)\\/?( +-?\\d+)\\/?( +-?\\d+)?\\/?/;                                                                        // f vertex vertex vertex ...\n+var facePattern2 = /f( +(-?\\d+)\\/(-?\\d+)\\/?)( +(-?\\d+)\\/(-?\\d+)\\/?)( +(-?\\d+)\\/(-?\\d+)\\/?)( +(-?\\d+)\\/(-?\\d+)\\/?)?/;                            // f vertex/uv vertex/uv vertex/uv ...\n+var facePattern3 = /f( +(-?\\d+)\\/(-?\\d+)\\/(-?\\d+))( +(-?\\d+)\\/(-?\\d+)\\/(-?\\d+))( +(-?\\d+)\\/(-?\\d+)\\/(-?\\d+))( +(-?\\d+)\\/(-?\\d+)\\/(-?\\d+))?/;    // f vertex/uv/normal vertex/uv/normal vertex/uv/normal ...\n+var facePattern4 = /f( +(-?\\d+)\\/\\/(-?\\d+))( +(-?\\d+)\\/\\/(-?\\d+))( +(-?\\d+)\\/\\/(-?\\d+))( +(-?\\d+)\\/\\/(-?\\d+))?/;                                // f vertex//normal vertex//normal vertex//normal ...\n+\n+/**\n+ * Parse an obj file.\n+ *\n+ * @param {String} objPath Path to the obj file.\n+ * @param {Object} [options] An object with the following properties:\n+ * @param {Boolean} [options.hasTransparency=false] Do a more exhaustive check for texture transparency by looking at the alpha channel of each pixel.\n+ * @param {Boolean} [options.secure=false] Prevent the converter from reading image or mtl files outside of the input obj directory.\n+ * @param {Boolean} [options.logger] A callback function for handling logged messages. Defaults to console.log.\n+ * @returns {Promise} A promise resolving to the obj data.\n+ * @exception {RuntimeError} The file does not have any geometry information in it.\n+ *\n+ * @private\n+ */\n+function loadObj(objPath, options) {\n+    // The defaults are set in convert as well, this just helps with testing loadObj individually\n+    options = combine(options, {\n+        hasTransparency : false,\n+        secure : false,\n+        logger : function(message) {\n+            console.log(message);\n         }\n+    });\n+\n+    // Global store of vertex attributes listed in the obj file\n+    var positions = new ArrayStorage(ComponentDatatype.FLOAT);\n+    var normals = new ArrayStorage(ComponentDatatype.FLOAT);\n+    var uvs = new ArrayStorage(ComponentDatatype.FLOAT);\n+\n+    // The current node, mesh, and primitive\n+    var node;\n+    var mesh;\n+    var primitive;\n+\n+    // All nodes seen in the obj\n+    var nodes = [];\n+\n+    // Used to build the indices. The vertex cache is unique to each mesh.\n+    var vertexCache = {};\n+    var vertexCacheLimit = 1000000;","path":"lib/obj.js","position":129,"original_position":138,"commit_id":"de92b58bebd8566e3a75e0c8adff7401bf4723f0","original_commit_id":"28d081e0ae2fbcf33f9b952b435f72b76db6fcf9","user":{"login":"lilleyse","id":915398,"avatar_url":"https://avatars1.githubusercontent.com/u/915398?v=3","gravatar_id":"","url":"https://api.github.com/users/lilleyse","html_url":"https://github.com/lilleyse","followers_url":"https://api.github.com/users/lilleyse/followers","following_url":"https://api.github.com/users/lilleyse/following{/other_user}","gists_url":"https://api.github.com/users/lilleyse/gists{/gist_id}","starred_url":"https://api.github.com/users/lilleyse/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lilleyse/subscriptions","organizations_url":"https://api.github.com/users/lilleyse/orgs","repos_url":"https://api.github.com/users/lilleyse/repos","events_url":"https://api.github.com/users/lilleyse/events{/privacy}","received_events_url":"https://api.github.com/users/lilleyse/received_events","type":"User","site_admin":false},"body":"This is just what I've found to be a good number after experimentation. I don't think it needs to be configurable. This also applies to `ArrayStorage` numbers too.","created_at":"2017-04-11T21:26:45Z","updated_at":"2017-04-11T21:26:45Z","html_url":"https://github.com/AnalyticalGraphicsInc/obj2gltf/pull/49#discussion_r111017520","pull_request_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/pulls/49","_links":{"self":{"href":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/pulls/comments/111017520"},"html":{"href":"https://github.com/AnalyticalGraphicsInc/obj2gltf/pull/49#discussion_r111017520"},"pull_request":{"href":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/pulls/49"}}},"pull_request":{"url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/pulls/49","id":110643206,"html_url":"https://github.com/AnalyticalGraphicsInc/obj2gltf/pull/49","diff_url":"https://github.com/AnalyticalGraphicsInc/obj2gltf/pull/49.diff","patch_url":"https://github.com/AnalyticalGraphicsInc/obj2gltf/pull/49.patch","issue_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/issues/49","number":49,"state":"open","locked":false,"title":"Refactor and Tests","user":{"login":"lilleyse","id":915398,"avatar_url":"https://avatars1.githubusercontent.com/u/915398?v=3","gravatar_id":"","url":"https://api.github.com/users/lilleyse","html_url":"https://github.com/lilleyse","followers_url":"https://api.github.com/users/lilleyse/followers","following_url":"https://api.github.com/users/lilleyse/following{/other_user}","gists_url":"https://api.github.com/users/lilleyse/gists{/gist_id}","starred_url":"https://api.github.com/users/lilleyse/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lilleyse/subscriptions","organizations_url":"https://api.github.com/users/lilleyse/orgs","repos_url":"https://api.github.com/users/lilleyse/repos","events_url":"https://api.github.com/users/lilleyse/events{/privacy}","received_events_url":"https://api.github.com/users/lilleyse/received_events","type":"User","site_admin":false},"body":"This refactor fixes a few long-standing issues with this project:\r\n\r\n* Obj objects and groups were getting merged automatically based on material, which should be left as an optional optimization for gltf-pipeline. The gltf converted here is very true to the original obj.\r\n* Trouble with loading large models. This will now load obj files that are about 1 GB. Due to node memory limitations, it can't get much higher than that. In the future we can look into out-of-core loading, but the simplicity here is nice.\r\n* Some material improvements, especially for textured models without normals.\r\n* Added documentation and tests\r\n\r\nTo-do:\r\n* [x] More testing - most models convert well when using `--bypassPipeline`, so there are some issues to look into for gltf-pipeline","created_at":"2017-03-14T15:09:34Z","updated_at":"2017-04-11T21:26:45Z","closed_at":null,"merged_at":null,"merge_commit_sha":"7282ec8520e9ee9f8b801b53fdc38877982e2086","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/pulls/49/commits","review_comments_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/pulls/49/comments","review_comment_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/pulls/comments{/number}","comments_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/issues/49/comments","statuses_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/statuses/de92b58bebd8566e3a75e0c8adff7401bf4723f0","head":{"label":"AnalyticalGraphicsInc:major-cleanup","ref":"major-cleanup","sha":"de92b58bebd8566e3a75e0c8adff7401bf4723f0","user":{"login":"AnalyticalGraphicsInc","id":1490220,"avatar_url":"https://avatars3.githubusercontent.com/u/1490220?v=3","gravatar_id":"","url":"https://api.github.com/users/AnalyticalGraphicsInc","html_url":"https://github.com/AnalyticalGraphicsInc","followers_url":"https://api.github.com/users/AnalyticalGraphicsInc/followers","following_url":"https://api.github.com/users/AnalyticalGraphicsInc/following{/other_user}","gists_url":"https://api.github.com/users/AnalyticalGraphicsInc/gists{/gist_id}","starred_url":"https://api.github.com/users/AnalyticalGraphicsInc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AnalyticalGraphicsInc/subscriptions","organizations_url":"https://api.github.com/users/AnalyticalGraphicsInc/orgs","repos_url":"https://api.github.com/users/AnalyticalGraphicsInc/repos","events_url":"https://api.github.com/users/AnalyticalGraphicsInc/events{/privacy}","received_events_url":"https://api.github.com/users/AnalyticalGraphicsInc/received_events","type":"Organization","site_admin":false},"repo":{"id":44277172,"name":"obj2gltf","full_name":"AnalyticalGraphicsInc/obj2gltf","owner":{"login":"AnalyticalGraphicsInc","id":1490220,"avatar_url":"https://avatars3.githubusercontent.com/u/1490220?v=3","gravatar_id":"","url":"https://api.github.com/users/AnalyticalGraphicsInc","html_url":"https://github.com/AnalyticalGraphicsInc","followers_url":"https://api.github.com/users/AnalyticalGraphicsInc/followers","following_url":"https://api.github.com/users/AnalyticalGraphicsInc/following{/other_user}","gists_url":"https://api.github.com/users/AnalyticalGraphicsInc/gists{/gist_id}","starred_url":"https://api.github.com/users/AnalyticalGraphicsInc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AnalyticalGraphicsInc/subscriptions","organizations_url":"https://api.github.com/users/AnalyticalGraphicsInc/orgs","repos_url":"https://api.github.com/users/AnalyticalGraphicsInc/repos","events_url":"https://api.github.com/users/AnalyticalGraphicsInc/events{/privacy}","received_events_url":"https://api.github.com/users/AnalyticalGraphicsInc/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/AnalyticalGraphicsInc/obj2gltf","description":"Convert OBJ assets to glTF","fork":false,"url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf","forks_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/forks","keys_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/keys{/key_id}","collaborators_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/teams","hooks_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/hooks","issue_events_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/issues/events{/number}","events_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/events","assignees_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/assignees{/user}","branches_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/branches{/branch}","tags_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/tags","blobs_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/git/refs{/sha}","trees_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/git/trees{/sha}","statuses_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/statuses/{sha}","languages_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/languages","stargazers_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/stargazers","contributors_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/contributors","subscribers_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/subscribers","subscription_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/subscription","commits_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/commits{/sha}","git_commits_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/git/commits{/sha}","comments_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/comments{/number}","issue_comment_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/issues/comments{/number}","contents_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/contents/{+path}","compare_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/compare/{base}...{head}","merges_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/merges","archive_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/downloads","issues_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/issues{/number}","pulls_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/pulls{/number}","milestones_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/milestones{/number}","notifications_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/labels{/name}","releases_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/releases{/id}","deployments_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/deployments","created_at":"2015-10-14T21:21:45Z","updated_at":"2017-03-28T13:27:37Z","pushed_at":"2017-04-11T21:24:36Z","git_url":"git://github.com/AnalyticalGraphicsInc/obj2gltf.git","ssh_url":"git@github.com:AnalyticalGraphicsInc/obj2gltf.git","clone_url":"https://github.com/AnalyticalGraphicsInc/obj2gltf.git","svn_url":"https://github.com/AnalyticalGraphicsInc/obj2gltf","homepage":null,"size":260,"stargazers_count":59,"watchers_count":59,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":18,"mirror_url":null,"open_issues_count":15,"forks":18,"open_issues":15,"watchers":59,"default_branch":"master"}},"base":{"label":"AnalyticalGraphicsInc:master","ref":"master","sha":"233d163b4cbfdf94a18a63adf7aaf57f0b0918d2","user":{"login":"AnalyticalGraphicsInc","id":1490220,"avatar_url":"https://avatars3.githubusercontent.com/u/1490220?v=3","gravatar_id":"","url":"https://api.github.com/users/AnalyticalGraphicsInc","html_url":"https://github.com/AnalyticalGraphicsInc","followers_url":"https://api.github.com/users/AnalyticalGraphicsInc/followers","following_url":"https://api.github.com/users/AnalyticalGraphicsInc/following{/other_user}","gists_url":"https://api.github.com/users/AnalyticalGraphicsInc/gists{/gist_id}","starred_url":"https://api.github.com/users/AnalyticalGraphicsInc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AnalyticalGraphicsInc/subscriptions","organizations_url":"https://api.github.com/users/AnalyticalGraphicsInc/orgs","repos_url":"https://api.github.com/users/AnalyticalGraphicsInc/repos","events_url":"https://api.github.com/users/AnalyticalGraphicsInc/events{/privacy}","received_events_url":"https://api.github.com/users/AnalyticalGraphicsInc/received_events","type":"Organization","site_admin":false},"repo":{"id":44277172,"name":"obj2gltf","full_name":"AnalyticalGraphicsInc/obj2gltf","owner":{"login":"AnalyticalGraphicsInc","id":1490220,"avatar_url":"https://avatars3.githubusercontent.com/u/1490220?v=3","gravatar_id":"","url":"https://api.github.com/users/AnalyticalGraphicsInc","html_url":"https://github.com/AnalyticalGraphicsInc","followers_url":"https://api.github.com/users/AnalyticalGraphicsInc/followers","following_url":"https://api.github.com/users/AnalyticalGraphicsInc/following{/other_user}","gists_url":"https://api.github.com/users/AnalyticalGraphicsInc/gists{/gist_id}","starred_url":"https://api.github.com/users/AnalyticalGraphicsInc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AnalyticalGraphicsInc/subscriptions","organizations_url":"https://api.github.com/users/AnalyticalGraphicsInc/orgs","repos_url":"https://api.github.com/users/AnalyticalGraphicsInc/repos","events_url":"https://api.github.com/users/AnalyticalGraphicsInc/events{/privacy}","received_events_url":"https://api.github.com/users/AnalyticalGraphicsInc/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/AnalyticalGraphicsInc/obj2gltf","description":"Convert OBJ assets to glTF","fork":false,"url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf","forks_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/forks","keys_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/keys{/key_id}","collaborators_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/teams","hooks_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/hooks","issue_events_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/issues/events{/number}","events_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/events","assignees_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/assignees{/user}","branches_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/branches{/branch}","tags_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/tags","blobs_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/git/refs{/sha}","trees_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/git/trees{/sha}","statuses_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/statuses/{sha}","languages_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/languages","stargazers_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/stargazers","contributors_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/contributors","subscribers_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/subscribers","subscription_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/subscription","commits_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/commits{/sha}","git_commits_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/git/commits{/sha}","comments_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/comments{/number}","issue_comment_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/issues/comments{/number}","contents_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/contents/{+path}","compare_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/compare/{base}...{head}","merges_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/merges","archive_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/downloads","issues_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/issues{/number}","pulls_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/pulls{/number}","milestones_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/milestones{/number}","notifications_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/labels{/name}","releases_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/releases{/id}","deployments_url":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/deployments","created_at":"2015-10-14T21:21:45Z","updated_at":"2017-03-28T13:27:37Z","pushed_at":"2017-04-11T21:24:36Z","git_url":"git://github.com/AnalyticalGraphicsInc/obj2gltf.git","ssh_url":"git@github.com:AnalyticalGraphicsInc/obj2gltf.git","clone_url":"https://github.com/AnalyticalGraphicsInc/obj2gltf.git","svn_url":"https://github.com/AnalyticalGraphicsInc/obj2gltf","homepage":null,"size":260,"stargazers_count":59,"watchers_count":59,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":18,"mirror_url":null,"open_issues_count":15,"forks":18,"open_issues":15,"watchers":59,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/pulls/49"},"html":{"href":"https://github.com/AnalyticalGraphicsInc/obj2gltf/pull/49"},"issue":{"href":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/issues/49"},"comments":{"href":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/issues/49/comments"},"review_comments":{"href":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/pulls/49/comments"},"review_comment":{"href":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/pulls/49/commits"},"statuses":{"href":"https://api.github.com/repos/AnalyticalGraphicsInc/obj2gltf/statuses/de92b58bebd8566e3a75e0c8adff7401bf4723f0"}}}}
{"actor":{"display_login":"lilleyse"}}