├── .gitignore ├── .travis.yml ├── LICENSE ├── README.md ├── lib ├── extract.js ├── reshaper.js ├── traverse.js └── util.js ├── package.json └── test ├── basic.js ├── github.js ├── github_popular.json ├── objectHints.js └── util.js /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | 6 | # Runtime data 7 | pids 8 | *.pid 9 | *.seed 10 | 11 | # Directory for instrumented libs generated by jscoverage/JSCover 12 | lib-cov 13 | 14 | # Coverage directory used by tools like istanbul 15 | coverage 16 | 17 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 18 | .grunt 19 | 20 | # node-waf configuration 21 | .lock-wscript 22 | 23 | # Compiled binary addons (http://nodejs.org/api/addons.html) 24 | build/Release 25 | 26 | # Dependency directory 27 | node_modules 28 | 29 | # Optional npm cache directory 30 | .npm 31 | 32 | # Optional REPL history 33 | .node_repl_history 34 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | script: "npm run-script test-travis" 3 | # Coverage --> Coveralls 4 | after_script: "cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js" 5 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Joel Auterson 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Reshaper 2 | 3 | [![Build Status](https://travis-ci.org/JoelOtter/reshaper.svg?branch=master)](https://travis-ci.org/JoelOtter/reshaper) [![Coverage Status](https://coveralls.io/repos/github/JoelOtter/reshaper/badge.svg?branch=master)](https://coveralls.io/github/JoelOtter/reshaper?branch=master) [![](https://img.shields.io/npm/v/reshaper.svg)](https://www.npmjs.com/package/reshaper) 4 | 5 | Reshaper is a JavaScript library which can automatically restructure JavaScript objects to match a provided schema. It also provides users with some manual control, by way of a 'hint' system. 6 | 7 | To see some interactive examples, check out this [Kajero notebook](http://www.joelotter.com/reshaper). 8 | 9 | ## Installation 10 | 11 | `npm install reshaper` 12 | 13 | ## Usage 14 | 15 | #### `reshaper(data, schema, [hint])` 16 | 17 | - `data`: The JavaScript data structure to be reshaped. 18 | - `schema`: The structure we want our reshaped data to match. 19 | - `hint`: _(Optional)_ The name of an object key, given as a 'hint'. Keys matching this hint will be preferred. An array of keys can also be provided if desired. 20 | 21 | ## Examples 22 | 23 | ```javascript 24 | var reshaper = require('reshaper'); 25 | 26 | var peopleData = [ 27 | { 28 | name: 'Joel', 29 | info: { 30 | age: 22, 31 | height: 1.9, 32 | middleName: 'Robert', 33 | lastName: 'Auterson' 34 | } 35 | }, 36 | { 37 | name: 'Jake', 38 | info: { 39 | age: 24, 40 | height: 1.85, 41 | middleName: 'Wild', 42 | lastName: 'Hall' 43 | } 44 | } 45 | ]; 46 | 47 | var schema = ['String']; 48 | 49 | reshaper(peopleData, schema); 50 | // => ['Joel', 'Jake'] 51 | 52 | // We can give a 'hint', to say lastName is what we want. 53 | reshaper(peopleData, schema, 'lastName'); 54 | // => ['Auterson', 'Hall'] 55 | 56 | // Object keys get used as hints 57 | var schema = { 58 | age: ['Number'], 59 | height: ['Number'] 60 | }; 61 | 62 | reshaper(peopleData, schema); 63 | /* => 64 | { 65 | age: [22, 24], 66 | height: [1.9, 1.85] 67 | } 68 | */ 69 | 70 | ``` 71 | -------------------------------------------------------------------------------- /lib/extract.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Functions for extracting - creating the structure defined in the schema 3 | */ 4 | 5 | var util = require('./util'); 6 | var traverseAndFind = require('./traverse'); 7 | 8 | function getExtractionFunction (schema) { 9 | var type = util.typeString(schema, true); 10 | switch (type) { 11 | case 'Array': 12 | return extractArray; 13 | case 'Number': 14 | return extractNumber; 15 | case 'String': 16 | return extractString; 17 | case 'Object': 18 | return extractObject; 19 | case 'Boolean': 20 | return extractBoolean; 21 | } 22 | } 23 | 24 | function extractObject(data, schema, stacks, hints) { 25 | if (util.typeString(data) !== 'Error') { 26 | stacks.data.unshift(data); 27 | } 28 | var newStacks = { 29 | data: stacks.data, 30 | staleKeys: stacks.staleKeys.slice(), 31 | goodKeys: stacks.goodKeys.slice() 32 | }; 33 | var found; 34 | try { 35 | found = traverseAndFind(data, 'Object', newStacks, hints); 36 | } catch (err) { 37 | // If not found, create some dummy data. This will allow the 38 | // backtracking to work, rather than giving up here. 39 | found = {value: Error()}; 40 | } 41 | var object = found.value; 42 | var result = {value: {}}; 43 | var keys = Object.getOwnPropertyNames(schema); 44 | keys.forEach(function (key) { 45 | var valueType = schema[key]; 46 | var extractionFunction = getExtractionFunction(valueType); 47 | var hintType = util.typeString(hints); 48 | var newHints; 49 | if (hintType === 'Object') { 50 | if (hints.hasOwnProperty(key)) { 51 | var child = hints[key]; 52 | if (util.typeString(child) === 'Array') { 53 | newHints = child.slice(); 54 | newHints.push(key); 55 | } else if (util.typeString(child) === 'Object') { 56 | newHints = child; 57 | } else { 58 | newHints = [child]; 59 | newHints.push(key); 60 | } 61 | } else { 62 | newHints = hints; 63 | } 64 | } else { 65 | newHints = hints.slice(); 66 | newHints.push(key); 67 | } 68 | var extracted = extractionFunction(object, valueType, newStacks, newHints); 69 | result.value[key] = extracted.value; 70 | if (extracted.match) { 71 | newStacks.staleKeys.push(extracted.match); 72 | } 73 | }); 74 | return result; 75 | } 76 | 77 | function extractArrayFromBacktrack(data, schema, stacks, hints) { 78 | var newStacks = { 79 | data: stacks.data.slice(), 80 | goodKeys: stacks.goodKeys, 81 | staleKeys: stacks.staleKeys 82 | }; 83 | while (newStacks.data.length > 0) { 84 | try { 85 | return traverseAndFind(newStacks.data.shift(), 'Array', newStacks, hints); 86 | } catch (err) { 87 | continue; 88 | } 89 | } 90 | throw new util.NotFoundException(data, schema, hints); 91 | } 92 | 93 | function extractArray(data, schema, stacks, hints) { 94 | var arrayOf = schema[0]; 95 | var newStacks = { 96 | data: stacks.data, 97 | staleKeys: stacks.staleKeys.slice(), 98 | goodKeys: stacks.goodKeys.slice() 99 | }; 100 | var array; 101 | try { 102 | array = traverseAndFind(data, 'Array', newStacks, hints); 103 | } catch (err) { 104 | // Can't find? Might have gone too deep - use stack. 105 | try { 106 | array = extractArrayFromBacktrack(data, schema, newStacks, hints); 107 | } catch (err) { 108 | // Still nothing? OK. Let's make an array out of object properties. 109 | array = objectToArray(data, arrayOf); 110 | } 111 | } 112 | var result = {value: []}; 113 | // We've got the array from data, let's construct our new one 114 | var childExtractor = getExtractionFunction(arrayOf); 115 | var foundMatch; 116 | array.value.forEach(function (item) { 117 | try { 118 | var found = childExtractor(item, arrayOf, newStacks, hints); 119 | result.value.push(found.value); 120 | if (found.match !== undefined) { 121 | foundMatch = found.match; 122 | if (newStacks.goodKeys.indexOf(found.match) === -1) { 123 | newStacks.goodKeys.unshift(found.match); 124 | } 125 | } 126 | } catch (err) { 127 | // Don't add to result array 128 | } 129 | }); 130 | result.match = foundMatch; 131 | if (result.value.length === 0) { 132 | if (array.match) { 133 | newStacks.staleKeys.push(array.match); 134 | result = extractArray(data, schema, newStacks); 135 | } else { 136 | throw new util.NotFoundException(data, schema, hints); 137 | } 138 | } 139 | return result; 140 | } 141 | 142 | function objectToArray(object, type) { 143 | if (util.typeString(object) !== 'Object') { 144 | throw new util.NotFoundException(object, type); 145 | } 146 | var array = []; 147 | var keys = Object.getOwnPropertyNames(object); 148 | for (var i = 0; i < keys.length; i++) { 149 | var data = object[keys[i]]; 150 | if (util.typeString(data) === type) { 151 | array.push(data); 152 | } 153 | } 154 | // We don't want to return an empty array. 155 | if (array.length === 0) { 156 | throw new util.NotFoundException(object, type); 157 | } 158 | return {value: array}; 159 | } 160 | 161 | function extractNumber(data, schema, stacks, hints) { 162 | return traverseAndFind(data, 'Number', stacks, hints); 163 | } 164 | 165 | function extractString(data, schema, stacks, hints) { 166 | return traverseAndFind(data, 'String', stacks, hints); 167 | } 168 | 169 | function extractBoolean(data, schema, stacks, hints) { 170 | return traverseAndFind(data, 'Boolean', stacks, hints); 171 | } 172 | 173 | 174 | module.exports = getExtractionFunction; 175 | -------------------------------------------------------------------------------- /lib/reshaper.js: -------------------------------------------------------------------------------- 1 | var util = require('./util'); 2 | var getExtractionFunction = require('./extract'); 3 | 4 | function reshaper(data, schema, hint) { 5 | var stacks = { 6 | data: [], 7 | staleKeys: [], 8 | goodKeys: [] 9 | }; 10 | var hintType = util.typeString(hint); 11 | var hints; 12 | if (hintType === 'Object' || hintType === 'Array') { 13 | hints = hint; 14 | } else if (hint == undefined) { 15 | hints = []; 16 | } else { 17 | hints = [hint]; 18 | } 19 | return getExtractionFunction(schema)(data, schema, stacks, hints).value; 20 | } 21 | 22 | module.exports = reshaper; 23 | -------------------------------------------------------------------------------- /lib/traverse.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Functions for traversing the user-provided data structure. 3 | */ 4 | 5 | var util = require('./util'); 6 | 7 | // A traverse or extract operation returns an array. The first item in 8 | // the array is the result and the second, if present, is the hint that 9 | // was matched on. 10 | function traverseAndFind(data, searchType, stacks, hints, getFirst) { 11 | var dataType = util.typeString(data); 12 | if (dataType === searchType && getFirst !== false) { 13 | // We don't want to do this if we're explicitly only looking 14 | // for hints. 'Explicit' here means getFirst is false, rather 15 | // than simply undefined. 16 | return {value: data}; 17 | } 18 | var newHints; 19 | if (util.typeString(hints) === 'Array') { 20 | newHints = stacks.goodKeys.concat(hints); 21 | } else { 22 | newHints = hints; 23 | } 24 | var getFirst = (newHints === undefined || newHints.length === 0) || getFirst; 25 | switch(dataType) { 26 | case 'Object': 27 | return traverseObject(data, searchType, stacks, hints, getFirst); 28 | default: 29 | // Data is not traversible 30 | throw new util.NotFoundException(data, searchType, hints); 31 | } 32 | } 33 | 34 | function traverseWithDottedHint(data, searchType, stacks, hint, undotted) { 35 | // Search this key, unpacking the dotted hint 36 | var newStacks = { 37 | data: stacks.data, 38 | goodKeys: stacks.goodKeys, 39 | staleKeys: [] 40 | }; 41 | // First, adjust the staleKeys 42 | for (var j = 0; j < stacks.staleKeys.length; j++) { 43 | var stale = stacks.staleKeys[j]; 44 | var split = stale.split('.'); 45 | if (split.length > 1 && split[0] === undotted[0]) { 46 | newStacks.staleKeys.push(split.slice(1).join('.')); 47 | } 48 | } 49 | var dotHinted = traverseAndFind( 50 | data, searchType, newStacks, [undotted.slice(1).join('.')], false 51 | ); 52 | dotHinted.match = hint; 53 | return dotHinted; 54 | } 55 | 56 | function traverseWithHints(object, searchType, stacks, hints) { 57 | var keys = Object.getOwnPropertyNames(object); 58 | var newHints = stacks.goodKeys.concat(hints); 59 | for (var h = 0; h < newHints.length; h++) { 60 | var hint = newHints[h]; 61 | var undotted = hint.split('.'); 62 | for (var i = 0; i < keys.length; i++) { 63 | var data = object[keys[i]]; 64 | 65 | // If the hint is a dotted hint, attempt to unpack it. 66 | if (undotted.length > 1 && 67 | (undotted[0] === keys[i] || undotted[0] === '_')) { 68 | try { 69 | return traverseWithDottedHint( 70 | data, searchType, stacks, hint, undotted 71 | ); 72 | } catch (err) { 73 | // We didn't get anything with dotted hints, continue. 74 | } 75 | } 76 | 77 | // Not a dotted hint, or nothing found with dotted hint. 78 | // Search at this level with regular hints. 79 | if (util.typeString(data) === searchType && keys[i] === hint && 80 | stacks.staleKeys.indexOf(hint) === -1) { 81 | return {value: data, match: hint}; 82 | } 83 | } 84 | } 85 | throw new util.NotFoundException(object, searchType, hints); 86 | } 87 | 88 | function traverseWithGetFirst(object, searchType, stacks, hints, isFinal) { 89 | var keys = Object.getOwnPropertyNames(object); 90 | for (var i = 0; i < keys.length; i++) { 91 | if (stacks.staleKeys.indexOf(keys[i]) > -1) { 92 | continue; 93 | } 94 | try { 95 | var first = traverseAndFind( 96 | object[keys[i]], searchType, stacks, hints, true 97 | ); 98 | if (first.match === undefined) { 99 | first.match = keys[i]; 100 | } 101 | return first; 102 | } catch (err) { 103 | continue; 104 | } 105 | } 106 | throw new util.NotFoundException(object, searchType, hints); 107 | } 108 | 109 | function traverseObject(object, searchType, stacks, hints, getFirst) { 110 | var hintType = util.typeString(hints); 111 | var keys = Object.getOwnPropertyNames(object); 112 | 113 | // If we don't care about the hint, let's grab the first thing we find. 114 | if (getFirst) { 115 | return traverseWithGetFirst(object, searchType, stacks, hints); 116 | } 117 | 118 | // Search using the hints 119 | if (hintType === 'Array') { 120 | try { 121 | return traverseWithHints(object, searchType, stacks, hints); 122 | } catch (err) { 123 | // Nothing found at this level using hints. 124 | } 125 | } 126 | 127 | // If we get to here, we haven't found anything yet. Let's search the children. 128 | for (var i = 0; i < keys.length; i++) { 129 | try { 130 | return traverseAndFind( 131 | object[keys[i]], searchType, stacks, hints, false 132 | ); 133 | } catch (err) { 134 | continue; 135 | } 136 | } 137 | 138 | // No hints found anywhere. If we were only looking for these, stop now. 139 | if (getFirst === false) { 140 | throw new util.NotFoundException(object, searchType, hints); 141 | } 142 | 143 | // Still nothing found. Let's force a find-first. 144 | return traverseWithGetFirst(object, searchType, stacks, hints); 145 | } 146 | 147 | module.exports = traverseAndFind; 148 | -------------------------------------------------------------------------------- /lib/util.js: -------------------------------------------------------------------------------- 1 | function typeString (item, preserveStrings) { 2 | var typeString = Object.prototype.toString.call(item); 3 | typeString = typeString.split(' ')[1].split(']')[0]; 4 | if (preserveStrings && typeString === 'String') { 5 | return item; 6 | } 7 | return typeString; 8 | } 9 | 10 | function typesMatch (itemA, itemB) { 11 | return typeString(itemA) === typeString(itemB); 12 | } 13 | 14 | function removeFromArray(array, from, to) { 15 | var rest = array.slice((to || from) + 1 || array.length); 16 | array.length = from < 0 ? array.length + from : from; 17 | return array.push.apply(array, rest); 18 | }; 19 | 20 | function NotFoundException(data, schema, hint) { 21 | this.name = 'NotFoundException'; 22 | this.stack = (new Error()).stack; 23 | this.message = 'Could not find ' + typeString(schema, true); 24 | this.data = data; 25 | this.schema = schema; 26 | this.hint = hint; 27 | } 28 | NotFoundException.prototype = Object.create(Error.prototype); 29 | NotFoundException.prototype.constructor = NotFoundException; 30 | 31 | exports.typeString = typeString; 32 | exports.typesMatch = typesMatch; 33 | exports.removeFromArray = removeFromArray; 34 | exports.NotFoundException = NotFoundException; 35 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "reshaper", 3 | "version": "0.3.1", 4 | "description": "Reshape JavaScript data structures to match a schema", 5 | "author": "Joel Auterson ", 6 | "repository": { 7 | "type": "git", 8 | "url": "https://github.com/JoelOtter/reshaper" 9 | }, 10 | "main": "./lib/reshaper.js", 11 | "license": "MIT", 12 | "devDependencies": { 13 | "chai": "^3.5.0", 14 | "coveralls": "^2.11.9", 15 | "istanbul": "^0.4.2", 16 | "mocha": "^2.4.5" 17 | }, 18 | "scripts": { 19 | "test": "./node_modules/mocha/bin/mocha ./test/*", 20 | "test-travis": "./node_modules/istanbul/lib/cli.js cover ./node_modules/mocha/bin/_mocha -- -R spec ./test/*" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /test/basic.js: -------------------------------------------------------------------------------- 1 | var reshaper = require('../lib/reshaper'); 2 | var expect = require('chai').expect; 3 | 4 | describe('basic', function() { 5 | 6 | var schema = ['Number']; 7 | var genericSchema = [{ 8 | x: 'String', 9 | y: 'Number' 10 | }]; 11 | var data = [ 12 | {x: 12, y: 5}, 13 | {x: 2, y: 3}, 14 | {x: 9, y: 14} 15 | ]; 16 | var peopleData = [ 17 | { 18 | name: 'Joel', 19 | info: { 20 | age: 23, 21 | height: 1.9, 22 | middleName: 'Robert', 23 | lastName: 'Auterson', 24 | twitter: '@JoelOtter', 25 | softwareDeveloper: true 26 | } 27 | }, 28 | { 29 | name: 'Jake', 30 | info: { 31 | age: 24, 32 | height: 1.85, 33 | middleName: 'Wild', 34 | lastName: 'Hall', 35 | twitter: '@JakeWildHall', 36 | softwareDeveloper: false 37 | } 38 | } 39 | ]; 40 | 41 | it('should return array of x values without hinting', function() { 42 | var result = reshaper(data, schema); 43 | expect(result).to.eql([12, 2, 9]); 44 | }); 45 | 46 | it('should return array of y values with y hint', function() { 47 | var result = reshaper(data, schema, 'y'); 48 | expect(result).to.eql([5, 3, 14]); 49 | }); 50 | 51 | it('should extract ages from people data', function() { 52 | var result = reshaper(peopleData, schema); 53 | expect(result).to.eql([23, 24]); 54 | }); 55 | 56 | it('should extract first names from people data', function() { 57 | var schema = ['String']; 58 | var result = reshaper(peopleData, schema); 59 | expect(result).to.eql(['Joel', 'Jake']); 60 | }); 61 | 62 | it('should extract last names from people data', function() { 63 | var schema = ['String']; 64 | var result = reshaper(peopleData, schema, 'lastName'); 65 | expect(result).to.eql(['Auterson', 'Hall']); 66 | }); 67 | 68 | it('should handle booleans', function() { 69 | var schema = ['Boolean']; 70 | var result = reshaper(peopleData, schema); 71 | expect(result).to.eql([true, false]); 72 | }); 73 | 74 | it('should have appropriate backoff for arrays', function() { 75 | var data = { 76 | nums: [1, 2, 3], 77 | strs: ['a', 'b', 'c'] 78 | }; 79 | var result = reshaper(data, ['String']); 80 | expect(result).to.eql(['a', 'b', 'c']); 81 | }); 82 | 83 | it('should have appropriate backoff for objects', function() { 84 | var data = { 85 | thing: { 86 | a: 1, 87 | b: 2 88 | }, 89 | other: { 90 | c: 'e', 91 | d: 'f' 92 | } 93 | }; 94 | var schema = {one: 'String', two: 'String'}; 95 | expect(reshaper(data, schema)).to.eql({ 96 | one: 'e', 97 | two: 'f' 98 | }); 99 | }); 100 | 101 | it('should backoff even if hint is missing', function() { 102 | var data = { 103 | thing: { 104 | a: 1, 105 | b: 2 106 | }, 107 | other: { 108 | c: 'e', 109 | d: 'f' 110 | } 111 | }; 112 | var schema = {one: 'String', two: 'String'}; 113 | expect(reshaper(data, schema, {one: 'c'})).to.eql({ 114 | one: 'e', 115 | two: 'f' 116 | }); 117 | 118 | }); 119 | 120 | it('should extract arrays of simple objects from people data', function() { 121 | var schema = [{name: 'String', age: 'Number'}]; 122 | var result = reshaper(peopleData, schema); 123 | expect(result).to.eql([ 124 | { 125 | name: 'Joel', 126 | age: 23 127 | }, 128 | { 129 | name: 'Jake', 130 | age: 24 131 | } 132 | ]); 133 | }); 134 | 135 | it('should return the same data when called with a matching schema', function() { 136 | var schema = [ 137 | { 138 | name: 'String', 139 | info: { 140 | age: 'Number', 141 | height: 'Number', 142 | middleName: 'String', 143 | lastName: 'String', 144 | twitter: 'String', 145 | softwareDeveloper: 'Boolean' 146 | } 147 | } 148 | ]; 149 | var result = reshaper(peopleData, schema); 150 | expect(result).to.eql(peopleData); 151 | }); 152 | 153 | it('should extract separate arrays into an object', function() { 154 | var schema = { 155 | age: ['Number'], 156 | height: ['Number'] 157 | }; 158 | var result = reshaper(peopleData, schema); 159 | expect(result).to.eql({ 160 | age: [23, 24], 161 | height: [1.9, 1.85] 162 | }); 163 | }); 164 | 165 | it('should extract arrays from varying depths into object', function() { 166 | var schema = { 167 | name: ['String'], 168 | lastName: ['String'] 169 | }; 170 | var result = reshaper(peopleData, schema); 171 | expect(result).to.eql({ 172 | name: ['Joel', 'Jake'], 173 | lastName: ['Auterson', 'Hall'] 174 | }); 175 | }); 176 | 177 | it('should not matter what order the schema is in', function() { 178 | var schema = { 179 | name: ['String'], 180 | lastName: ['String'], 181 | middleName: ['String'] 182 | }; 183 | var result = reshaper(peopleData, schema); 184 | schema = { 185 | lastName: ['String'], 186 | middleName: ['String'], 187 | name: ['String'] 188 | }; 189 | var result2 = reshaper(peopleData, schema); 190 | expect(result2).to.eql(result); 191 | }); 192 | 193 | it('should, with no hint, pick the shallowest', function() { 194 | var schema = ['String']; 195 | var result = reshaper(peopleData, schema, 'firstName'); 196 | expect(result).to.eql(['Joel', 'Jake']); 197 | schema = { 198 | firstName: ['String'], 199 | lastName: ['String'] 200 | }; 201 | result = reshaper(peopleData, schema); 202 | expect(result).to.eql({ 203 | firstName: ['Joel', 'Jake'], 204 | lastName: ['Auterson', 'Hall'] 205 | }); 206 | }); 207 | 208 | it('should be able to construct arrays from different levels', function() { 209 | var rectangles = [ 210 | { 211 | width: 5, 212 | height: 4, 213 | colour: { 214 | red: 255, 215 | green: 128, 216 | blue: 0 217 | } 218 | }, 219 | { 220 | width: 10, 221 | height: 2, 222 | colour: { 223 | red: 50, 224 | green: 90, 225 | blue: 255 226 | } 227 | } 228 | ]; 229 | var schema = { 230 | width: ['Number'], 231 | red: ['Number'] 232 | }; 233 | var result = reshaper(rectangles, schema); 234 | expect(result).to.eql({ 235 | width: [5, 10], 236 | red: [255, 50] 237 | }); 238 | }); 239 | 240 | it('should be able to create an array from an object', function() { 241 | var data = { 242 | red: 1, 243 | green: 2, 244 | blue: 3 245 | }; 246 | var schema = { 247 | colour: ['Number'] 248 | }; 249 | var result = reshaper(data, schema); 250 | expect(result).to.eql({ 251 | colour: [1, 2, 3] 252 | }); 253 | }); 254 | 255 | it('should do object-array conversion on the outer elements', function() { 256 | var data = { 257 | a: 1, 258 | b: 2, 259 | cd: { 260 | c: 3, 261 | d: 4 262 | } 263 | }; 264 | var schema = ['Number']; 265 | var result = reshaper(data, schema); 266 | expect(result).to.eql([1, 2]); 267 | }); 268 | 269 | it('should allow hints to be used within objects', function() { 270 | var result = reshaper(peopleData, genericSchema, 'height'); 271 | expect(result).to.eql([ 272 | {x: 'Joel', y: 1.9}, 273 | {x: 'Jake', y: 1.85} 274 | ]); 275 | }); 276 | 277 | it('should allow multiple hints to be used', function() { 278 | var result = reshaper(peopleData, genericSchema, ['lastName', 'height']); 279 | expect(result).to.eql([ 280 | {x: 'Auterson', y: 1.9}, 281 | {x: 'Hall', y: 1.85} 282 | ]); 283 | }); 284 | 285 | it('should fix on a used key', function() { 286 | var data = [{a: 1, b: 2}, {b: 3, a: 4}]; 287 | var schema = ['Number']; 288 | var result = reshaper(data, schema); 289 | expect(result).to.eql([1, 4]); 290 | }); 291 | 292 | it('should avoid using hints twice', function() { 293 | var schema = { 294 | x: ['String'], 295 | y: ['String'] 296 | }; 297 | var result = reshaper(peopleData, schema, ['lastName', 'middleName']); 298 | expect(result).to.eql({ 299 | x: ['Auterson', 'Hall'], 300 | y: ['Robert', 'Wild'] 301 | }); 302 | var result = reshaper(peopleData, schema, ['middleName', 'lastName']); 303 | expect(result).to.eql({ 304 | y: ['Auterson', 'Hall'], 305 | x: ['Robert', 'Wild'] 306 | }); 307 | }); 308 | 309 | it('should throw exception if cannot create array from object', function() { 310 | var data = { 311 | a: 'a', 312 | b: 'b' 313 | }; 314 | var schema = ['Number']; 315 | expect(function() { 316 | reshaper(data, schema) 317 | }).to.throw('Could not find'); 318 | }); 319 | 320 | it('should throw exception if cannot create array from primitive', function() { 321 | expect(function() { 322 | reshaper('a', ['Number']) 323 | }).to.throw('Could not find'); 324 | }); 325 | 326 | it('should throw exception if part of schema cannot be found', function() { 327 | var schema = { 328 | words: ['String'], 329 | nums: ['Number'] 330 | }; 331 | expect(function() { 332 | reshaper([1, 2, 3], schema) 333 | }).to.throw('Could not find'); 334 | }); 335 | 336 | it('should be able to backtrack multiple levels', function() { 337 | var data = [ 338 | { 339 | name: 'Joel', 340 | pets: [ 341 | {name: 'Tony', age: 24} 342 | ] 343 | }, 344 | { 345 | name: 'Jake', 346 | pets: [ 347 | {name: 'Jim', age: 12}, 348 | {name: 'Rico', age: 207} 349 | ] 350 | } 351 | ]; 352 | var schema = { 353 | names: ['String'], 354 | ages: [{ 355 | age: ['Number'] 356 | }] 357 | }; 358 | expect(reshaper(data, schema)).to.eql({ 359 | names: ['Joel', 'Jake'], 360 | ages: [ 361 | {age: [24]}, 362 | {age: [12, 207]} 363 | ] 364 | }); 365 | }); 366 | 367 | it('should be able to backtrack from nested objects', function() { 368 | var schema = { 369 | names: ['String'], 370 | extra: { 371 | ages: ['Number'] 372 | } 373 | }; 374 | expect(reshaper(peopleData, schema)).to.eql({ 375 | names: ['Joel', 'Jake'], 376 | extra: { 377 | ages: [23, 24] 378 | } 379 | }); 380 | }); 381 | 382 | }); 383 | -------------------------------------------------------------------------------- /test/github.js: -------------------------------------------------------------------------------- 1 | var reshaper = require('../lib/reshaper'); 2 | var expect = require('chai').expect; 3 | var fs = require('fs'); 4 | 5 | var data = JSON.parse(fs.readFileSync('./test/github_popular.json')); 6 | 7 | describe('github popular repos', function() { 8 | 9 | it('should extract the correct numbers on with hints provided', function() { 10 | var schema = [ 11 | { 12 | x: 'Number', 13 | y: 'Number' 14 | } 15 | ]; 16 | var result = reshaper(data.items, schema, ['open_issues', 'stargazers_count']); 17 | var expd = data.items.map(function (item) { 18 | return { 19 | x: item.open_issues, 20 | y: item.stargazers_count 21 | }; 22 | }); 23 | expect(result).to.eql(expd); 24 | }); 25 | 26 | it('should still work with names added', function() { 27 | var schema = [ 28 | { 29 | x: 'Number', 30 | y: 'Number', 31 | label: 'String' 32 | } 33 | ]; 34 | var result = reshaper( 35 | data, schema, ['open_issues', 'stargazers_count', 'name'] 36 | ); 37 | var expd = data.items.map(function (item) { 38 | return { 39 | x: item.open_issues, 40 | y: item.stargazers_count, 41 | label: item.name 42 | }; 43 | }); 44 | expect(result).to.eql(expd); 45 | }); 46 | 47 | it('should work with object hints', function() { 48 | var schema = [{label: 'String', value: 'Number'}]; 49 | var hint = {label: 'name', value: 'stargazers_count'}; 50 | var result = reshaper(data, schema, hint); 51 | expect(result).to.eql(data.items.map(function (item) { 52 | return { 53 | label: item.name, 54 | value: item.stargazers_count 55 | } 56 | })); 57 | }); 58 | 59 | it('should work with dotted hints', function() { 60 | var schema = [{link: 'String', id: 'Number'}]; 61 | var hint = {link: 'owner.url', id: 'owner.id'}; 62 | var result = reshaper(data, schema, hint); 63 | expect(result).to.eql(data.items.map(function (item) { 64 | return { 65 | link: item.owner.url, 66 | id: item.owner.id 67 | }; 68 | })); 69 | }); 70 | 71 | it('should work with dotted hint wildcards', function() { 72 | var schema = [{repo: 'Number', person: 'Number'}]; 73 | var hint = {repo: 'id', person: '_.id'}; 74 | var result = reshaper(data, schema, hint); 75 | expect(result).to.eql(data.items.map(function (item) { 76 | return { 77 | repo: item.id, 78 | person: item.owner.id 79 | }; 80 | })); 81 | 82 | }); 83 | 84 | }); 85 | -------------------------------------------------------------------------------- /test/github_popular.json: -------------------------------------------------------------------------------- 1 | { 2 | "total_count": 2808296, 3 | "incomplete_results": false, 4 | "items": [ 5 | { 6 | "id": 49009950, 7 | "name": "HowToBeAProgrammer", 8 | "full_name": "braydie/HowToBeAProgrammer", 9 | "owner": { 10 | "login": "braydie", 11 | "id": 1651008, 12 | "avatar_url": "https://avatars.githubusercontent.com/u/1651008?v=3", 13 | "gravatar_id": "", 14 | "url": "https://api.github.com/users/braydie", 15 | "html_url": "https://github.com/braydie", 16 | "followers_url": "https://api.github.com/users/braydie/followers", 17 | "following_url": "https://api.github.com/users/braydie/following{/other_user}", 18 | "gists_url": "https://api.github.com/users/braydie/gists{/gist_id}", 19 | "starred_url": "https://api.github.com/users/braydie/starred{/owner}{/repo}", 20 | "subscriptions_url": "https://api.github.com/users/braydie/subscriptions", 21 | "organizations_url": "https://api.github.com/users/braydie/orgs", 22 | "repos_url": "https://api.github.com/users/braydie/repos", 23 | "events_url": "https://api.github.com/users/braydie/events{/privacy}", 24 | "received_events_url": "https://api.github.com/users/braydie/received_events", 25 | "type": "User", 26 | "site_admin": false 27 | }, 28 | "private": false, 29 | "html_url": "https://github.com/braydie/HowToBeAProgrammer", 30 | "description": "A guide on how to be a Programmer - originally published by Robert L Read", 31 | "fork": false, 32 | "url": "https://api.github.com/repos/braydie/HowToBeAProgrammer", 33 | "forks_url": "https://api.github.com/repos/braydie/HowToBeAProgrammer/forks", 34 | "keys_url": "https://api.github.com/repos/braydie/HowToBeAProgrammer/keys{/key_id}", 35 | "collaborators_url": "https://api.github.com/repos/braydie/HowToBeAProgrammer/collaborators{/collaborator}", 36 | "teams_url": "https://api.github.com/repos/braydie/HowToBeAProgrammer/teams", 37 | "hooks_url": "https://api.github.com/repos/braydie/HowToBeAProgrammer/hooks", 38 | "issue_events_url": "https://api.github.com/repos/braydie/HowToBeAProgrammer/issues/events{/number}", 39 | "events_url": "https://api.github.com/repos/braydie/HowToBeAProgrammer/events", 40 | "assignees_url": "https://api.github.com/repos/braydie/HowToBeAProgrammer/assignees{/user}", 41 | "branches_url": "https://api.github.com/repos/braydie/HowToBeAProgrammer/branches{/branch}", 42 | "tags_url": "https://api.github.com/repos/braydie/HowToBeAProgrammer/tags", 43 | "blobs_url": "https://api.github.com/repos/braydie/HowToBeAProgrammer/git/blobs{/sha}", 44 | "git_tags_url": "https://api.github.com/repos/braydie/HowToBeAProgrammer/git/tags{/sha}", 45 | "git_refs_url": "https://api.github.com/repos/braydie/HowToBeAProgrammer/git/refs{/sha}", 46 | "trees_url": "https://api.github.com/repos/braydie/HowToBeAProgrammer/git/trees{/sha}", 47 | "statuses_url": "https://api.github.com/repos/braydie/HowToBeAProgrammer/statuses/{sha}", 48 | "languages_url": "https://api.github.com/repos/braydie/HowToBeAProgrammer/languages", 49 | "stargazers_url": "https://api.github.com/repos/braydie/HowToBeAProgrammer/stargazers", 50 | "contributors_url": "https://api.github.com/repos/braydie/HowToBeAProgrammer/contributors", 51 | "subscribers_url": "https://api.github.com/repos/braydie/HowToBeAProgrammer/subscribers", 52 | "subscription_url": "https://api.github.com/repos/braydie/HowToBeAProgrammer/subscription", 53 | "commits_url": "https://api.github.com/repos/braydie/HowToBeAProgrammer/commits{/sha}", 54 | "git_commits_url": "https://api.github.com/repos/braydie/HowToBeAProgrammer/git/commits{/sha}", 55 | "comments_url": "https://api.github.com/repos/braydie/HowToBeAProgrammer/comments{/number}", 56 | "issue_comment_url": "https://api.github.com/repos/braydie/HowToBeAProgrammer/issues/comments{/number}", 57 | "contents_url": "https://api.github.com/repos/braydie/HowToBeAProgrammer/contents/{+path}", 58 | "compare_url": "https://api.github.com/repos/braydie/HowToBeAProgrammer/compare/{base}...{head}", 59 | "merges_url": "https://api.github.com/repos/braydie/HowToBeAProgrammer/merges", 60 | "archive_url": "https://api.github.com/repos/braydie/HowToBeAProgrammer/{archive_format}{/ref}", 61 | "downloads_url": "https://api.github.com/repos/braydie/HowToBeAProgrammer/downloads", 62 | "issues_url": "https://api.github.com/repos/braydie/HowToBeAProgrammer/issues{/number}", 63 | "pulls_url": "https://api.github.com/repos/braydie/HowToBeAProgrammer/pulls{/number}", 64 | "milestones_url": "https://api.github.com/repos/braydie/HowToBeAProgrammer/milestones{/number}", 65 | "notifications_url": "https://api.github.com/repos/braydie/HowToBeAProgrammer/notifications{?since,all,participating}", 66 | "labels_url": "https://api.github.com/repos/braydie/HowToBeAProgrammer/labels{/name}", 67 | "releases_url": "https://api.github.com/repos/braydie/HowToBeAProgrammer/releases{/id}", 68 | "deployments_url": "https://api.github.com/repos/braydie/HowToBeAProgrammer/deployments", 69 | "created_at": "2016-01-04T16:47:54Z", 70 | "updated_at": "2016-04-11T13:55:31Z", 71 | "pushed_at": "2016-04-09T16:21:05Z", 72 | "git_url": "git://github.com/braydie/HowToBeAProgrammer.git", 73 | "ssh_url": "git@github.com:braydie/HowToBeAProgrammer.git", 74 | "clone_url": "https://github.com/braydie/HowToBeAProgrammer.git", 75 | "svn_url": "https://github.com/braydie/HowToBeAProgrammer", 76 | "homepage": "https://braydie.gitbooks.io/how-to-be-a-programmer/content/", 77 | "size": 430, 78 | "stargazers_count": 10330, 79 | "watchers_count": 10330, 80 | "language": null, 81 | "has_issues": true, 82 | "has_downloads": true, 83 | "has_wiki": true, 84 | "has_pages": false, 85 | "forks_count": 816, 86 | "mirror_url": null, 87 | "open_issues_count": 9, 88 | "forks": 816, 89 | "open_issues": 9, 90 | "watchers": 10330, 91 | "default_branch": "master", 92 | "score": 1.0 93 | }, 94 | { 95 | "id": 50603846, 96 | "name": "parse-server", 97 | "full_name": "ParsePlatform/parse-server", 98 | "owner": { 99 | "login": "ParsePlatform", 100 | "id": 1294580, 101 | "avatar_url": "https://avatars.githubusercontent.com/u/1294580?v=3", 102 | "gravatar_id": "", 103 | "url": "https://api.github.com/users/ParsePlatform", 104 | "html_url": "https://github.com/ParsePlatform", 105 | "followers_url": "https://api.github.com/users/ParsePlatform/followers", 106 | "following_url": "https://api.github.com/users/ParsePlatform/following{/other_user}", 107 | "gists_url": "https://api.github.com/users/ParsePlatform/gists{/gist_id}", 108 | "starred_url": "https://api.github.com/users/ParsePlatform/starred{/owner}{/repo}", 109 | "subscriptions_url": "https://api.github.com/users/ParsePlatform/subscriptions", 110 | "organizations_url": "https://api.github.com/users/ParsePlatform/orgs", 111 | "repos_url": "https://api.github.com/users/ParsePlatform/repos", 112 | "events_url": "https://api.github.com/users/ParsePlatform/events{/privacy}", 113 | "received_events_url": "https://api.github.com/users/ParsePlatform/received_events", 114 | "type": "Organization", 115 | "site_admin": false 116 | }, 117 | "private": false, 118 | "html_url": "https://github.com/ParsePlatform/parse-server", 119 | "description": "Parse-compatible API server module for Node/Express", 120 | "fork": false, 121 | "url": "https://api.github.com/repos/ParsePlatform/parse-server", 122 | "forks_url": "https://api.github.com/repos/ParsePlatform/parse-server/forks", 123 | "keys_url": "https://api.github.com/repos/ParsePlatform/parse-server/keys{/key_id}", 124 | "collaborators_url": "https://api.github.com/repos/ParsePlatform/parse-server/collaborators{/collaborator}", 125 | "teams_url": "https://api.github.com/repos/ParsePlatform/parse-server/teams", 126 | "hooks_url": "https://api.github.com/repos/ParsePlatform/parse-server/hooks", 127 | "issue_events_url": "https://api.github.com/repos/ParsePlatform/parse-server/issues/events{/number}", 128 | "events_url": "https://api.github.com/repos/ParsePlatform/parse-server/events", 129 | "assignees_url": "https://api.github.com/repos/ParsePlatform/parse-server/assignees{/user}", 130 | "branches_url": "https://api.github.com/repos/ParsePlatform/parse-server/branches{/branch}", 131 | "tags_url": "https://api.github.com/repos/ParsePlatform/parse-server/tags", 132 | "blobs_url": "https://api.github.com/repos/ParsePlatform/parse-server/git/blobs{/sha}", 133 | "git_tags_url": "https://api.github.com/repos/ParsePlatform/parse-server/git/tags{/sha}", 134 | "git_refs_url": "https://api.github.com/repos/ParsePlatform/parse-server/git/refs{/sha}", 135 | "trees_url": "https://api.github.com/repos/ParsePlatform/parse-server/git/trees{/sha}", 136 | "statuses_url": "https://api.github.com/repos/ParsePlatform/parse-server/statuses/{sha}", 137 | "languages_url": "https://api.github.com/repos/ParsePlatform/parse-server/languages", 138 | "stargazers_url": "https://api.github.com/repos/ParsePlatform/parse-server/stargazers", 139 | "contributors_url": "https://api.github.com/repos/ParsePlatform/parse-server/contributors", 140 | "subscribers_url": "https://api.github.com/repos/ParsePlatform/parse-server/subscribers", 141 | "subscription_url": "https://api.github.com/repos/ParsePlatform/parse-server/subscription", 142 | "commits_url": "https://api.github.com/repos/ParsePlatform/parse-server/commits{/sha}", 143 | "git_commits_url": "https://api.github.com/repos/ParsePlatform/parse-server/git/commits{/sha}", 144 | "comments_url": "https://api.github.com/repos/ParsePlatform/parse-server/comments{/number}", 145 | "issue_comment_url": "https://api.github.com/repos/ParsePlatform/parse-server/issues/comments{/number}", 146 | "contents_url": "https://api.github.com/repos/ParsePlatform/parse-server/contents/{+path}", 147 | "compare_url": "https://api.github.com/repos/ParsePlatform/parse-server/compare/{base}...{head}", 148 | "merges_url": "https://api.github.com/repos/ParsePlatform/parse-server/merges", 149 | "archive_url": "https://api.github.com/repos/ParsePlatform/parse-server/{archive_format}{/ref}", 150 | "downloads_url": "https://api.github.com/repos/ParsePlatform/parse-server/downloads", 151 | "issues_url": "https://api.github.com/repos/ParsePlatform/parse-server/issues{/number}", 152 | "pulls_url": "https://api.github.com/repos/ParsePlatform/parse-server/pulls{/number}", 153 | "milestones_url": "https://api.github.com/repos/ParsePlatform/parse-server/milestones{/number}", 154 | "notifications_url": "https://api.github.com/repos/ParsePlatform/parse-server/notifications{?since,all,participating}", 155 | "labels_url": "https://api.github.com/repos/ParsePlatform/parse-server/labels{/name}", 156 | "releases_url": "https://api.github.com/repos/ParsePlatform/parse-server/releases{/id}", 157 | "deployments_url": "https://api.github.com/repos/ParsePlatform/parse-server/deployments", 158 | "created_at": "2016-01-28T18:29:14Z", 159 | "updated_at": "2016-04-11T14:20:53Z", 160 | "pushed_at": "2016-04-11T12:09:20Z", 161 | "git_url": "git://github.com/ParsePlatform/parse-server.git", 162 | "ssh_url": "git@github.com:ParsePlatform/parse-server.git", 163 | "clone_url": "https://github.com/ParsePlatform/parse-server.git", 164 | "svn_url": "https://github.com/ParsePlatform/parse-server", 165 | "homepage": null, 166 | "size": 3060, 167 | "stargazers_count": 8097, 168 | "watchers_count": 8097, 169 | "language": "JavaScript", 170 | "has_issues": true, 171 | "has_downloads": true, 172 | "has_wiki": true, 173 | "has_pages": false, 174 | "forks_count": 1957, 175 | "mirror_url": null, 176 | "open_issues_count": 52, 177 | "forks": 1957, 178 | "open_issues": 52, 179 | "watchers": 8097, 180 | "default_branch": "master", 181 | "score": 1.0 182 | }, 183 | { 184 | "id": 50134307, 185 | "name": "es6-cheatsheet", 186 | "full_name": "DrkSephy/es6-cheatsheet", 187 | "owner": { 188 | "login": "DrkSephy", 189 | "id": 1226900, 190 | "avatar_url": "https://avatars.githubusercontent.com/u/1226900?v=3", 191 | "gravatar_id": "", 192 | "url": "https://api.github.com/users/DrkSephy", 193 | "html_url": "https://github.com/DrkSephy", 194 | "followers_url": "https://api.github.com/users/DrkSephy/followers", 195 | "following_url": "https://api.github.com/users/DrkSephy/following{/other_user}", 196 | "gists_url": "https://api.github.com/users/DrkSephy/gists{/gist_id}", 197 | "starred_url": "https://api.github.com/users/DrkSephy/starred{/owner}{/repo}", 198 | "subscriptions_url": "https://api.github.com/users/DrkSephy/subscriptions", 199 | "organizations_url": "https://api.github.com/users/DrkSephy/orgs", 200 | "repos_url": "https://api.github.com/users/DrkSephy/repos", 201 | "events_url": "https://api.github.com/users/DrkSephy/events{/privacy}", 202 | "received_events_url": "https://api.github.com/users/DrkSephy/received_events", 203 | "type": "User", 204 | "site_admin": false 205 | }, 206 | "private": false, 207 | "html_url": "https://github.com/DrkSephy/es6-cheatsheet", 208 | "description": "ES2015 [ES6] cheatsheet containing tips, tricks, best practices and code snippets", 209 | "fork": false, 210 | "url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet", 211 | "forks_url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet/forks", 212 | "keys_url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet/keys{/key_id}", 213 | "collaborators_url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet/collaborators{/collaborator}", 214 | "teams_url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet/teams", 215 | "hooks_url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet/hooks", 216 | "issue_events_url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet/issues/events{/number}", 217 | "events_url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet/events", 218 | "assignees_url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet/assignees{/user}", 219 | "branches_url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet/branches{/branch}", 220 | "tags_url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet/tags", 221 | "blobs_url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet/git/blobs{/sha}", 222 | "git_tags_url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet/git/tags{/sha}", 223 | "git_refs_url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet/git/refs{/sha}", 224 | "trees_url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet/git/trees{/sha}", 225 | "statuses_url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet/statuses/{sha}", 226 | "languages_url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet/languages", 227 | "stargazers_url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet/stargazers", 228 | "contributors_url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet/contributors", 229 | "subscribers_url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet/subscribers", 230 | "subscription_url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet/subscription", 231 | "commits_url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet/commits{/sha}", 232 | "git_commits_url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet/git/commits{/sha}", 233 | "comments_url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet/comments{/number}", 234 | "issue_comment_url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet/issues/comments{/number}", 235 | "contents_url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet/contents/{+path}", 236 | "compare_url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet/compare/{base}...{head}", 237 | "merges_url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet/merges", 238 | "archive_url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet/{archive_format}{/ref}", 239 | "downloads_url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet/downloads", 240 | "issues_url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet/issues{/number}", 241 | "pulls_url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet/pulls{/number}", 242 | "milestones_url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet/milestones{/number}", 243 | "notifications_url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet/notifications{?since,all,participating}", 244 | "labels_url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet/labels{/name}", 245 | "releases_url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet/releases{/id}", 246 | "deployments_url": "https://api.github.com/repos/DrkSephy/es6-cheatsheet/deployments", 247 | "created_at": "2016-01-21T20:23:15Z", 248 | "updated_at": "2016-04-11T08:53:23Z", 249 | "pushed_at": "2016-04-10T19:10:14Z", 250 | "git_url": "git://github.com/DrkSephy/es6-cheatsheet.git", 251 | "ssh_url": "git@github.com:DrkSephy/es6-cheatsheet.git", 252 | "clone_url": "https://github.com/DrkSephy/es6-cheatsheet.git", 253 | "svn_url": "https://github.com/DrkSephy/es6-cheatsheet", 254 | "homepage": "http://slides.com/drksephy/ecmascript-2015", 255 | "size": 129, 256 | "stargazers_count": 7175, 257 | "watchers_count": 7175, 258 | "language": "JavaScript", 259 | "has_issues": true, 260 | "has_downloads": true, 261 | "has_wiki": true, 262 | "has_pages": false, 263 | "forks_count": 339, 264 | "mirror_url": null, 265 | "open_issues_count": 2, 266 | "forks": 339, 267 | "open_issues": 2, 268 | "watchers": 7175, 269 | "default_branch": "master", 270 | "score": 1.0 271 | }, 272 | { 273 | "id": 54346799, 274 | "name": "public-apis", 275 | "full_name": "toddmotto/public-apis", 276 | "owner": { 277 | "login": "toddmotto", 278 | "id": 1655968, 279 | "avatar_url": "https://avatars.githubusercontent.com/u/1655968?v=3", 280 | "gravatar_id": "", 281 | "url": "https://api.github.com/users/toddmotto", 282 | "html_url": "https://github.com/toddmotto", 283 | "followers_url": "https://api.github.com/users/toddmotto/followers", 284 | "following_url": "https://api.github.com/users/toddmotto/following{/other_user}", 285 | "gists_url": "https://api.github.com/users/toddmotto/gists{/gist_id}", 286 | "starred_url": "https://api.github.com/users/toddmotto/starred{/owner}{/repo}", 287 | "subscriptions_url": "https://api.github.com/users/toddmotto/subscriptions", 288 | "organizations_url": "https://api.github.com/users/toddmotto/orgs", 289 | "repos_url": "https://api.github.com/users/toddmotto/repos", 290 | "events_url": "https://api.github.com/users/toddmotto/events{/privacy}", 291 | "received_events_url": "https://api.github.com/users/toddmotto/received_events", 292 | "type": "User", 293 | "site_admin": false 294 | }, 295 | "private": false, 296 | "html_url": "https://github.com/toddmotto/public-apis", 297 | "description": "A collective list of public JSON APIs for use in web development.", 298 | "fork": false, 299 | "url": "https://api.github.com/repos/toddmotto/public-apis", 300 | "forks_url": "https://api.github.com/repos/toddmotto/public-apis/forks", 301 | "keys_url": "https://api.github.com/repos/toddmotto/public-apis/keys{/key_id}", 302 | "collaborators_url": "https://api.github.com/repos/toddmotto/public-apis/collaborators{/collaborator}", 303 | "teams_url": "https://api.github.com/repos/toddmotto/public-apis/teams", 304 | "hooks_url": "https://api.github.com/repos/toddmotto/public-apis/hooks", 305 | "issue_events_url": "https://api.github.com/repos/toddmotto/public-apis/issues/events{/number}", 306 | "events_url": "https://api.github.com/repos/toddmotto/public-apis/events", 307 | "assignees_url": "https://api.github.com/repos/toddmotto/public-apis/assignees{/user}", 308 | "branches_url": "https://api.github.com/repos/toddmotto/public-apis/branches{/branch}", 309 | "tags_url": "https://api.github.com/repos/toddmotto/public-apis/tags", 310 | "blobs_url": "https://api.github.com/repos/toddmotto/public-apis/git/blobs{/sha}", 311 | "git_tags_url": "https://api.github.com/repos/toddmotto/public-apis/git/tags{/sha}", 312 | "git_refs_url": "https://api.github.com/repos/toddmotto/public-apis/git/refs{/sha}", 313 | "trees_url": "https://api.github.com/repos/toddmotto/public-apis/git/trees{/sha}", 314 | "statuses_url": "https://api.github.com/repos/toddmotto/public-apis/statuses/{sha}", 315 | "languages_url": "https://api.github.com/repos/toddmotto/public-apis/languages", 316 | "stargazers_url": "https://api.github.com/repos/toddmotto/public-apis/stargazers", 317 | "contributors_url": "https://api.github.com/repos/toddmotto/public-apis/contributors", 318 | "subscribers_url": "https://api.github.com/repos/toddmotto/public-apis/subscribers", 319 | "subscription_url": "https://api.github.com/repos/toddmotto/public-apis/subscription", 320 | "commits_url": "https://api.github.com/repos/toddmotto/public-apis/commits{/sha}", 321 | "git_commits_url": "https://api.github.com/repos/toddmotto/public-apis/git/commits{/sha}", 322 | "comments_url": "https://api.github.com/repos/toddmotto/public-apis/comments{/number}", 323 | "issue_comment_url": "https://api.github.com/repos/toddmotto/public-apis/issues/comments{/number}", 324 | "contents_url": "https://api.github.com/repos/toddmotto/public-apis/contents/{+path}", 325 | "compare_url": "https://api.github.com/repos/toddmotto/public-apis/compare/{base}...{head}", 326 | "merges_url": "https://api.github.com/repos/toddmotto/public-apis/merges", 327 | "archive_url": "https://api.github.com/repos/toddmotto/public-apis/{archive_format}{/ref}", 328 | "downloads_url": "https://api.github.com/repos/toddmotto/public-apis/downloads", 329 | "issues_url": "https://api.github.com/repos/toddmotto/public-apis/issues{/number}", 330 | "pulls_url": "https://api.github.com/repos/toddmotto/public-apis/pulls{/number}", 331 | "milestones_url": "https://api.github.com/repos/toddmotto/public-apis/milestones{/number}", 332 | "notifications_url": "https://api.github.com/repos/toddmotto/public-apis/notifications{?since,all,participating}", 333 | "labels_url": "https://api.github.com/repos/toddmotto/public-apis/labels{/name}", 334 | "releases_url": "https://api.github.com/repos/toddmotto/public-apis/releases{/id}", 335 | "deployments_url": "https://api.github.com/repos/toddmotto/public-apis/deployments", 336 | "created_at": "2016-03-20T23:49:42Z", 337 | "updated_at": "2016-04-11T14:19:45Z", 338 | "pushed_at": "2016-04-11T13:30:38Z", 339 | "git_url": "git://github.com/toddmotto/public-apis.git", 340 | "ssh_url": "git@github.com:toddmotto/public-apis.git", 341 | "clone_url": "https://github.com/toddmotto/public-apis.git", 342 | "svn_url": "https://github.com/toddmotto/public-apis", 343 | "homepage": "https://toddmotto.com", 344 | "size": 153, 345 | "stargazers_count": 6879, 346 | "watchers_count": 6879, 347 | "language": null, 348 | "has_issues": true, 349 | "has_downloads": true, 350 | "has_wiki": true, 351 | "has_pages": false, 352 | "forks_count": 327, 353 | "mirror_url": null, 354 | "open_issues_count": 67, 355 | "forks": 327, 356 | "open_issues": 67, 357 | "watchers": 6879, 358 | "default_branch": "master", 359 | "score": 1.0 360 | }, 361 | { 362 | "id": 50803610, 363 | "name": "AlphaGo", 364 | "full_name": "Rochester-NRT/AlphaGo", 365 | "owner": { 366 | "login": "Rochester-NRT", 367 | "id": 17015390, 368 | "avatar_url": "https://avatars.githubusercontent.com/u/17015390?v=3", 369 | "gravatar_id": "", 370 | "url": "https://api.github.com/users/Rochester-NRT", 371 | "html_url": "https://github.com/Rochester-NRT", 372 | "followers_url": "https://api.github.com/users/Rochester-NRT/followers", 373 | "following_url": "https://api.github.com/users/Rochester-NRT/following{/other_user}", 374 | "gists_url": "https://api.github.com/users/Rochester-NRT/gists{/gist_id}", 375 | "starred_url": "https://api.github.com/users/Rochester-NRT/starred{/owner}{/repo}", 376 | "subscriptions_url": "https://api.github.com/users/Rochester-NRT/subscriptions", 377 | "organizations_url": "https://api.github.com/users/Rochester-NRT/orgs", 378 | "repos_url": "https://api.github.com/users/Rochester-NRT/repos", 379 | "events_url": "https://api.github.com/users/Rochester-NRT/events{/privacy}", 380 | "received_events_url": "https://api.github.com/users/Rochester-NRT/received_events", 381 | "type": "Organization", 382 | "site_admin": false 383 | }, 384 | "private": false, 385 | "html_url": "https://github.com/Rochester-NRT/AlphaGo", 386 | "description": "A replication of DeepMind's 2016 Nature publication, \"Mastering the game of Go with deep neural networks and tree search,\" details of which can be found on their website.", 387 | "fork": false, 388 | "url": "https://api.github.com/repos/Rochester-NRT/AlphaGo", 389 | "forks_url": "https://api.github.com/repos/Rochester-NRT/AlphaGo/forks", 390 | "keys_url": "https://api.github.com/repos/Rochester-NRT/AlphaGo/keys{/key_id}", 391 | "collaborators_url": "https://api.github.com/repos/Rochester-NRT/AlphaGo/collaborators{/collaborator}", 392 | "teams_url": "https://api.github.com/repos/Rochester-NRT/AlphaGo/teams", 393 | "hooks_url": "https://api.github.com/repos/Rochester-NRT/AlphaGo/hooks", 394 | "issue_events_url": "https://api.github.com/repos/Rochester-NRT/AlphaGo/issues/events{/number}", 395 | "events_url": "https://api.github.com/repos/Rochester-NRT/AlphaGo/events", 396 | "assignees_url": "https://api.github.com/repos/Rochester-NRT/AlphaGo/assignees{/user}", 397 | "branches_url": "https://api.github.com/repos/Rochester-NRT/AlphaGo/branches{/branch}", 398 | "tags_url": "https://api.github.com/repos/Rochester-NRT/AlphaGo/tags", 399 | "blobs_url": "https://api.github.com/repos/Rochester-NRT/AlphaGo/git/blobs{/sha}", 400 | "git_tags_url": "https://api.github.com/repos/Rochester-NRT/AlphaGo/git/tags{/sha}", 401 | "git_refs_url": "https://api.github.com/repos/Rochester-NRT/AlphaGo/git/refs{/sha}", 402 | "trees_url": "https://api.github.com/repos/Rochester-NRT/AlphaGo/git/trees{/sha}", 403 | "statuses_url": "https://api.github.com/repos/Rochester-NRT/AlphaGo/statuses/{sha}", 404 | "languages_url": "https://api.github.com/repos/Rochester-NRT/AlphaGo/languages", 405 | "stargazers_url": "https://api.github.com/repos/Rochester-NRT/AlphaGo/stargazers", 406 | "contributors_url": "https://api.github.com/repos/Rochester-NRT/AlphaGo/contributors", 407 | "subscribers_url": "https://api.github.com/repos/Rochester-NRT/AlphaGo/subscribers", 408 | "subscription_url": "https://api.github.com/repos/Rochester-NRT/AlphaGo/subscription", 409 | "commits_url": "https://api.github.com/repos/Rochester-NRT/AlphaGo/commits{/sha}", 410 | "git_commits_url": "https://api.github.com/repos/Rochester-NRT/AlphaGo/git/commits{/sha}", 411 | "comments_url": "https://api.github.com/repos/Rochester-NRT/AlphaGo/comments{/number}", 412 | "issue_comment_url": "https://api.github.com/repos/Rochester-NRT/AlphaGo/issues/comments{/number}", 413 | "contents_url": "https://api.github.com/repos/Rochester-NRT/AlphaGo/contents/{+path}", 414 | "compare_url": "https://api.github.com/repos/Rochester-NRT/AlphaGo/compare/{base}...{head}", 415 | "merges_url": "https://api.github.com/repos/Rochester-NRT/AlphaGo/merges", 416 | "archive_url": "https://api.github.com/repos/Rochester-NRT/AlphaGo/{archive_format}{/ref}", 417 | "downloads_url": "https://api.github.com/repos/Rochester-NRT/AlphaGo/downloads", 418 | "issues_url": "https://api.github.com/repos/Rochester-NRT/AlphaGo/issues{/number}", 419 | "pulls_url": "https://api.github.com/repos/Rochester-NRT/AlphaGo/pulls{/number}", 420 | "milestones_url": "https://api.github.com/repos/Rochester-NRT/AlphaGo/milestones{/number}", 421 | "notifications_url": "https://api.github.com/repos/Rochester-NRT/AlphaGo/notifications{?since,all,participating}", 422 | "labels_url": "https://api.github.com/repos/Rochester-NRT/AlphaGo/labels{/name}", 423 | "releases_url": "https://api.github.com/repos/Rochester-NRT/AlphaGo/releases{/id}", 424 | "deployments_url": "https://api.github.com/repos/Rochester-NRT/AlphaGo/deployments", 425 | "created_at": "2016-02-01T00:40:29Z", 426 | "updated_at": "2016-04-11T13:16:51Z", 427 | "pushed_at": "2016-04-09T19:59:28Z", 428 | "git_url": "git://github.com/Rochester-NRT/AlphaGo.git", 429 | "ssh_url": "git@github.com:Rochester-NRT/AlphaGo.git", 430 | "clone_url": "https://github.com/Rochester-NRT/AlphaGo.git", 431 | "svn_url": "https://github.com/Rochester-NRT/AlphaGo", 432 | "homepage": "", 433 | "size": 3665, 434 | "stargazers_count": 6774, 435 | "watchers_count": 6774, 436 | "language": "JavaScript", 437 | "has_issues": true, 438 | "has_downloads": true, 439 | "has_wiki": true, 440 | "has_pages": false, 441 | "forks_count": 1804, 442 | "mirror_url": null, 443 | "open_issues_count": 21, 444 | "forks": 1804, 445 | "open_issues": 21, 446 | "watchers": 6774, 447 | "default_branch": "develop", 448 | "score": 1.0 449 | }, 450 | { 451 | "id": 52287768, 452 | "name": "cash", 453 | "full_name": "dthree/cash", 454 | "owner": { 455 | "login": "dthree", 456 | "id": 10319897, 457 | "avatar_url": "https://avatars.githubusercontent.com/u/10319897?v=3", 458 | "gravatar_id": "", 459 | "url": "https://api.github.com/users/dthree", 460 | "html_url": "https://github.com/dthree", 461 | "followers_url": "https://api.github.com/users/dthree/followers", 462 | "following_url": "https://api.github.com/users/dthree/following{/other_user}", 463 | "gists_url": "https://api.github.com/users/dthree/gists{/gist_id}", 464 | "starred_url": "https://api.github.com/users/dthree/starred{/owner}{/repo}", 465 | "subscriptions_url": "https://api.github.com/users/dthree/subscriptions", 466 | "organizations_url": "https://api.github.com/users/dthree/orgs", 467 | "repos_url": "https://api.github.com/users/dthree/repos", 468 | "events_url": "https://api.github.com/users/dthree/events{/privacy}", 469 | "received_events_url": "https://api.github.com/users/dthree/received_events", 470 | "type": "User", 471 | "site_admin": false 472 | }, 473 | "private": false, 474 | "html_url": "https://github.com/dthree/cash", 475 | "description": "Cross-platform Linux commands in ES6", 476 | "fork": false, 477 | "url": "https://api.github.com/repos/dthree/cash", 478 | "forks_url": "https://api.github.com/repos/dthree/cash/forks", 479 | "keys_url": "https://api.github.com/repos/dthree/cash/keys{/key_id}", 480 | "collaborators_url": "https://api.github.com/repos/dthree/cash/collaborators{/collaborator}", 481 | "teams_url": "https://api.github.com/repos/dthree/cash/teams", 482 | "hooks_url": "https://api.github.com/repos/dthree/cash/hooks", 483 | "issue_events_url": "https://api.github.com/repos/dthree/cash/issues/events{/number}", 484 | "events_url": "https://api.github.com/repos/dthree/cash/events", 485 | "assignees_url": "https://api.github.com/repos/dthree/cash/assignees{/user}", 486 | "branches_url": "https://api.github.com/repos/dthree/cash/branches{/branch}", 487 | "tags_url": "https://api.github.com/repos/dthree/cash/tags", 488 | "blobs_url": "https://api.github.com/repos/dthree/cash/git/blobs{/sha}", 489 | "git_tags_url": "https://api.github.com/repos/dthree/cash/git/tags{/sha}", 490 | "git_refs_url": "https://api.github.com/repos/dthree/cash/git/refs{/sha}", 491 | "trees_url": "https://api.github.com/repos/dthree/cash/git/trees{/sha}", 492 | "statuses_url": "https://api.github.com/repos/dthree/cash/statuses/{sha}", 493 | "languages_url": "https://api.github.com/repos/dthree/cash/languages", 494 | "stargazers_url": "https://api.github.com/repos/dthree/cash/stargazers", 495 | "contributors_url": "https://api.github.com/repos/dthree/cash/contributors", 496 | "subscribers_url": "https://api.github.com/repos/dthree/cash/subscribers", 497 | "subscription_url": "https://api.github.com/repos/dthree/cash/subscription", 498 | "commits_url": "https://api.github.com/repos/dthree/cash/commits{/sha}", 499 | "git_commits_url": "https://api.github.com/repos/dthree/cash/git/commits{/sha}", 500 | "comments_url": "https://api.github.com/repos/dthree/cash/comments{/number}", 501 | "issue_comment_url": "https://api.github.com/repos/dthree/cash/issues/comments{/number}", 502 | "contents_url": "https://api.github.com/repos/dthree/cash/contents/{+path}", 503 | "compare_url": "https://api.github.com/repos/dthree/cash/compare/{base}...{head}", 504 | "merges_url": "https://api.github.com/repos/dthree/cash/merges", 505 | "archive_url": "https://api.github.com/repos/dthree/cash/{archive_format}{/ref}", 506 | "downloads_url": "https://api.github.com/repos/dthree/cash/downloads", 507 | "issues_url": "https://api.github.com/repos/dthree/cash/issues{/number}", 508 | "pulls_url": "https://api.github.com/repos/dthree/cash/pulls{/number}", 509 | "milestones_url": "https://api.github.com/repos/dthree/cash/milestones{/number}", 510 | "notifications_url": "https://api.github.com/repos/dthree/cash/notifications{?since,all,participating}", 511 | "labels_url": "https://api.github.com/repos/dthree/cash/labels{/name}", 512 | "releases_url": "https://api.github.com/repos/dthree/cash/releases{/id}", 513 | "deployments_url": "https://api.github.com/repos/dthree/cash/deployments", 514 | "created_at": "2016-02-22T16:34:24Z", 515 | "updated_at": "2016-04-11T11:27:56Z", 516 | "pushed_at": "2016-03-26T14:03:07Z", 517 | "git_url": "git://github.com/dthree/cash.git", 518 | "ssh_url": "git@github.com:dthree/cash.git", 519 | "clone_url": "https://github.com/dthree/cash.git", 520 | "svn_url": "https://github.com/dthree/cash", 521 | "homepage": "", 522 | "size": 352, 523 | "stargazers_count": 6632, 524 | "watchers_count": 6632, 525 | "language": "JavaScript", 526 | "has_issues": true, 527 | "has_downloads": true, 528 | "has_wiki": true, 529 | "has_pages": false, 530 | "forks_count": 160, 531 | "mirror_url": null, 532 | "open_issues_count": 28, 533 | "forks": 160, 534 | "open_issues": 28, 535 | "watchers": 6632, 536 | "default_branch": "master", 537 | "score": 1.0 538 | }, 539 | { 540 | "id": 51648174, 541 | "name": "30DaysofSwift", 542 | "full_name": "allenwong/30DaysofSwift", 543 | "owner": { 544 | "login": "allenwong", 545 | "id": 698982, 546 | "avatar_url": "https://avatars.githubusercontent.com/u/698982?v=3", 547 | "gravatar_id": "", 548 | "url": "https://api.github.com/users/allenwong", 549 | "html_url": "https://github.com/allenwong", 550 | "followers_url": "https://api.github.com/users/allenwong/followers", 551 | "following_url": "https://api.github.com/users/allenwong/following{/other_user}", 552 | "gists_url": "https://api.github.com/users/allenwong/gists{/gist_id}", 553 | "starred_url": "https://api.github.com/users/allenwong/starred{/owner}{/repo}", 554 | "subscriptions_url": "https://api.github.com/users/allenwong/subscriptions", 555 | "organizations_url": "https://api.github.com/users/allenwong/orgs", 556 | "repos_url": "https://api.github.com/users/allenwong/repos", 557 | "events_url": "https://api.github.com/users/allenwong/events{/privacy}", 558 | "received_events_url": "https://api.github.com/users/allenwong/received_events", 559 | "type": "User", 560 | "site_admin": false 561 | }, 562 | "private": false, 563 | "html_url": "https://github.com/allenwong/30DaysofSwift", 564 | "description": "A self-taught project to learn Swift.", 565 | "fork": false, 566 | "url": "https://api.github.com/repos/allenwong/30DaysofSwift", 567 | "forks_url": "https://api.github.com/repos/allenwong/30DaysofSwift/forks", 568 | "keys_url": "https://api.github.com/repos/allenwong/30DaysofSwift/keys{/key_id}", 569 | "collaborators_url": "https://api.github.com/repos/allenwong/30DaysofSwift/collaborators{/collaborator}", 570 | "teams_url": "https://api.github.com/repos/allenwong/30DaysofSwift/teams", 571 | "hooks_url": "https://api.github.com/repos/allenwong/30DaysofSwift/hooks", 572 | "issue_events_url": "https://api.github.com/repos/allenwong/30DaysofSwift/issues/events{/number}", 573 | "events_url": "https://api.github.com/repos/allenwong/30DaysofSwift/events", 574 | "assignees_url": "https://api.github.com/repos/allenwong/30DaysofSwift/assignees{/user}", 575 | "branches_url": "https://api.github.com/repos/allenwong/30DaysofSwift/branches{/branch}", 576 | "tags_url": "https://api.github.com/repos/allenwong/30DaysofSwift/tags", 577 | "blobs_url": "https://api.github.com/repos/allenwong/30DaysofSwift/git/blobs{/sha}", 578 | "git_tags_url": "https://api.github.com/repos/allenwong/30DaysofSwift/git/tags{/sha}", 579 | "git_refs_url": "https://api.github.com/repos/allenwong/30DaysofSwift/git/refs{/sha}", 580 | "trees_url": "https://api.github.com/repos/allenwong/30DaysofSwift/git/trees{/sha}", 581 | "statuses_url": "https://api.github.com/repos/allenwong/30DaysofSwift/statuses/{sha}", 582 | "languages_url": "https://api.github.com/repos/allenwong/30DaysofSwift/languages", 583 | "stargazers_url": "https://api.github.com/repos/allenwong/30DaysofSwift/stargazers", 584 | "contributors_url": "https://api.github.com/repos/allenwong/30DaysofSwift/contributors", 585 | "subscribers_url": "https://api.github.com/repos/allenwong/30DaysofSwift/subscribers", 586 | "subscription_url": "https://api.github.com/repos/allenwong/30DaysofSwift/subscription", 587 | "commits_url": "https://api.github.com/repos/allenwong/30DaysofSwift/commits{/sha}", 588 | "git_commits_url": "https://api.github.com/repos/allenwong/30DaysofSwift/git/commits{/sha}", 589 | "comments_url": "https://api.github.com/repos/allenwong/30DaysofSwift/comments{/number}", 590 | "issue_comment_url": "https://api.github.com/repos/allenwong/30DaysofSwift/issues/comments{/number}", 591 | "contents_url": "https://api.github.com/repos/allenwong/30DaysofSwift/contents/{+path}", 592 | "compare_url": "https://api.github.com/repos/allenwong/30DaysofSwift/compare/{base}...{head}", 593 | "merges_url": "https://api.github.com/repos/allenwong/30DaysofSwift/merges", 594 | "archive_url": "https://api.github.com/repos/allenwong/30DaysofSwift/{archive_format}{/ref}", 595 | "downloads_url": "https://api.github.com/repos/allenwong/30DaysofSwift/downloads", 596 | "issues_url": "https://api.github.com/repos/allenwong/30DaysofSwift/issues{/number}", 597 | "pulls_url": "https://api.github.com/repos/allenwong/30DaysofSwift/pulls{/number}", 598 | "milestones_url": "https://api.github.com/repos/allenwong/30DaysofSwift/milestones{/number}", 599 | "notifications_url": "https://api.github.com/repos/allenwong/30DaysofSwift/notifications{?since,all,participating}", 600 | "labels_url": "https://api.github.com/repos/allenwong/30DaysofSwift/labels{/name}", 601 | "releases_url": "https://api.github.com/repos/allenwong/30DaysofSwift/releases{/id}", 602 | "deployments_url": "https://api.github.com/repos/allenwong/30DaysofSwift/deployments", 603 | "created_at": "2016-02-13T14:02:12Z", 604 | "updated_at": "2016-04-11T05:53:30Z", 605 | "pushed_at": "2016-03-26T09:57:33Z", 606 | "git_url": "git://github.com/allenwong/30DaysofSwift.git", 607 | "ssh_url": "git@github.com:allenwong/30DaysofSwift.git", 608 | "clone_url": "https://github.com/allenwong/30DaysofSwift.git", 609 | "svn_url": "https://github.com/allenwong/30DaysofSwift", 610 | "homepage": "", 611 | "size": 169343, 612 | "stargazers_count": 6614, 613 | "watchers_count": 6614, 614 | "language": "Swift", 615 | "has_issues": true, 616 | "has_downloads": true, 617 | "has_wiki": true, 618 | "has_pages": false, 619 | "forks_count": 1025, 620 | "mirror_url": null, 621 | "open_issues_count": 3, 622 | "forks": 1025, 623 | "open_issues": 3, 624 | "watchers": 6614, 625 | "default_branch": "master", 626 | "score": 1.0 627 | }, 628 | { 629 | "id": 50264296, 630 | "name": "bulma", 631 | "full_name": "jgthms/bulma", 632 | "owner": { 633 | "login": "jgthms", 634 | "id": 1254808, 635 | "avatar_url": "https://avatars.githubusercontent.com/u/1254808?v=3", 636 | "gravatar_id": "", 637 | "url": "https://api.github.com/users/jgthms", 638 | "html_url": "https://github.com/jgthms", 639 | "followers_url": "https://api.github.com/users/jgthms/followers", 640 | "following_url": "https://api.github.com/users/jgthms/following{/other_user}", 641 | "gists_url": "https://api.github.com/users/jgthms/gists{/gist_id}", 642 | "starred_url": "https://api.github.com/users/jgthms/starred{/owner}{/repo}", 643 | "subscriptions_url": "https://api.github.com/users/jgthms/subscriptions", 644 | "organizations_url": "https://api.github.com/users/jgthms/orgs", 645 | "repos_url": "https://api.github.com/users/jgthms/repos", 646 | "events_url": "https://api.github.com/users/jgthms/events{/privacy}", 647 | "received_events_url": "https://api.github.com/users/jgthms/received_events", 648 | "type": "User", 649 | "site_admin": false 650 | }, 651 | "private": false, 652 | "html_url": "https://github.com/jgthms/bulma", 653 | "description": "Modern CSS framework based on Flexbox", 654 | "fork": false, 655 | "url": "https://api.github.com/repos/jgthms/bulma", 656 | "forks_url": "https://api.github.com/repos/jgthms/bulma/forks", 657 | "keys_url": "https://api.github.com/repos/jgthms/bulma/keys{/key_id}", 658 | "collaborators_url": "https://api.github.com/repos/jgthms/bulma/collaborators{/collaborator}", 659 | "teams_url": "https://api.github.com/repos/jgthms/bulma/teams", 660 | "hooks_url": "https://api.github.com/repos/jgthms/bulma/hooks", 661 | "issue_events_url": "https://api.github.com/repos/jgthms/bulma/issues/events{/number}", 662 | "events_url": "https://api.github.com/repos/jgthms/bulma/events", 663 | "assignees_url": "https://api.github.com/repos/jgthms/bulma/assignees{/user}", 664 | "branches_url": "https://api.github.com/repos/jgthms/bulma/branches{/branch}", 665 | "tags_url": "https://api.github.com/repos/jgthms/bulma/tags", 666 | "blobs_url": "https://api.github.com/repos/jgthms/bulma/git/blobs{/sha}", 667 | "git_tags_url": "https://api.github.com/repos/jgthms/bulma/git/tags{/sha}", 668 | "git_refs_url": "https://api.github.com/repos/jgthms/bulma/git/refs{/sha}", 669 | "trees_url": "https://api.github.com/repos/jgthms/bulma/git/trees{/sha}", 670 | "statuses_url": "https://api.github.com/repos/jgthms/bulma/statuses/{sha}", 671 | "languages_url": "https://api.github.com/repos/jgthms/bulma/languages", 672 | "stargazers_url": "https://api.github.com/repos/jgthms/bulma/stargazers", 673 | "contributors_url": "https://api.github.com/repos/jgthms/bulma/contributors", 674 | "subscribers_url": "https://api.github.com/repos/jgthms/bulma/subscribers", 675 | "subscription_url": "https://api.github.com/repos/jgthms/bulma/subscription", 676 | "commits_url": "https://api.github.com/repos/jgthms/bulma/commits{/sha}", 677 | "git_commits_url": "https://api.github.com/repos/jgthms/bulma/git/commits{/sha}", 678 | "comments_url": "https://api.github.com/repos/jgthms/bulma/comments{/number}", 679 | "issue_comment_url": "https://api.github.com/repos/jgthms/bulma/issues/comments{/number}", 680 | "contents_url": "https://api.github.com/repos/jgthms/bulma/contents/{+path}", 681 | "compare_url": "https://api.github.com/repos/jgthms/bulma/compare/{base}...{head}", 682 | "merges_url": "https://api.github.com/repos/jgthms/bulma/merges", 683 | "archive_url": "https://api.github.com/repos/jgthms/bulma/{archive_format}{/ref}", 684 | "downloads_url": "https://api.github.com/repos/jgthms/bulma/downloads", 685 | "issues_url": "https://api.github.com/repos/jgthms/bulma/issues{/number}", 686 | "pulls_url": "https://api.github.com/repos/jgthms/bulma/pulls{/number}", 687 | "milestones_url": "https://api.github.com/repos/jgthms/bulma/milestones{/number}", 688 | "notifications_url": "https://api.github.com/repos/jgthms/bulma/notifications{?since,all,participating}", 689 | "labels_url": "https://api.github.com/repos/jgthms/bulma/labels{/name}", 690 | "releases_url": "https://api.github.com/repos/jgthms/bulma/releases{/id}", 691 | "deployments_url": "https://api.github.com/repos/jgthms/bulma/deployments", 692 | "created_at": "2016-01-23T23:48:34Z", 693 | "updated_at": "2016-04-11T13:56:49Z", 694 | "pushed_at": "2016-04-10T23:43:38Z", 695 | "git_url": "git://github.com/jgthms/bulma.git", 696 | "ssh_url": "git@github.com:jgthms/bulma.git", 697 | "clone_url": "https://github.com/jgthms/bulma.git", 698 | "svn_url": "https://github.com/jgthms/bulma", 699 | "homepage": "http://bulma.io", 700 | "size": 664, 701 | "stargazers_count": 6062, 702 | "watchers_count": 6062, 703 | "language": "CSS", 704 | "has_issues": true, 705 | "has_downloads": true, 706 | "has_wiki": true, 707 | "has_pages": false, 708 | "forks_count": 284, 709 | "mirror_url": null, 710 | "open_issues_count": 43, 711 | "forks": 284, 712 | "open_issues": 43, 713 | "watchers": 6062, 714 | "default_branch": "master", 715 | "score": 1.0 716 | }, 717 | { 718 | "id": 52113921, 719 | "name": "draft-js", 720 | "full_name": "facebook/draft-js", 721 | "owner": { 722 | "login": "facebook", 723 | "id": 69631, 724 | "avatar_url": "https://avatars.githubusercontent.com/u/69631?v=3", 725 | "gravatar_id": "", 726 | "url": "https://api.github.com/users/facebook", 727 | "html_url": "https://github.com/facebook", 728 | "followers_url": "https://api.github.com/users/facebook/followers", 729 | "following_url": "https://api.github.com/users/facebook/following{/other_user}", 730 | "gists_url": "https://api.github.com/users/facebook/gists{/gist_id}", 731 | "starred_url": "https://api.github.com/users/facebook/starred{/owner}{/repo}", 732 | "subscriptions_url": "https://api.github.com/users/facebook/subscriptions", 733 | "organizations_url": "https://api.github.com/users/facebook/orgs", 734 | "repos_url": "https://api.github.com/users/facebook/repos", 735 | "events_url": "https://api.github.com/users/facebook/events{/privacy}", 736 | "received_events_url": "https://api.github.com/users/facebook/received_events", 737 | "type": "Organization", 738 | "site_admin": false 739 | }, 740 | "private": false, 741 | "html_url": "https://github.com/facebook/draft-js", 742 | "description": "A React framework for building text editors.", 743 | "fork": false, 744 | "url": "https://api.github.com/repos/facebook/draft-js", 745 | "forks_url": "https://api.github.com/repos/facebook/draft-js/forks", 746 | "keys_url": "https://api.github.com/repos/facebook/draft-js/keys{/key_id}", 747 | "collaborators_url": "https://api.github.com/repos/facebook/draft-js/collaborators{/collaborator}", 748 | "teams_url": "https://api.github.com/repos/facebook/draft-js/teams", 749 | "hooks_url": "https://api.github.com/repos/facebook/draft-js/hooks", 750 | "issue_events_url": "https://api.github.com/repos/facebook/draft-js/issues/events{/number}", 751 | "events_url": "https://api.github.com/repos/facebook/draft-js/events", 752 | "assignees_url": "https://api.github.com/repos/facebook/draft-js/assignees{/user}", 753 | "branches_url": "https://api.github.com/repos/facebook/draft-js/branches{/branch}", 754 | "tags_url": "https://api.github.com/repos/facebook/draft-js/tags", 755 | "blobs_url": "https://api.github.com/repos/facebook/draft-js/git/blobs{/sha}", 756 | "git_tags_url": "https://api.github.com/repos/facebook/draft-js/git/tags{/sha}", 757 | "git_refs_url": "https://api.github.com/repos/facebook/draft-js/git/refs{/sha}", 758 | "trees_url": "https://api.github.com/repos/facebook/draft-js/git/trees{/sha}", 759 | "statuses_url": "https://api.github.com/repos/facebook/draft-js/statuses/{sha}", 760 | "languages_url": "https://api.github.com/repos/facebook/draft-js/languages", 761 | "stargazers_url": "https://api.github.com/repos/facebook/draft-js/stargazers", 762 | "contributors_url": "https://api.github.com/repos/facebook/draft-js/contributors", 763 | "subscribers_url": "https://api.github.com/repos/facebook/draft-js/subscribers", 764 | "subscription_url": "https://api.github.com/repos/facebook/draft-js/subscription", 765 | "commits_url": "https://api.github.com/repos/facebook/draft-js/commits{/sha}", 766 | "git_commits_url": "https://api.github.com/repos/facebook/draft-js/git/commits{/sha}", 767 | "comments_url": "https://api.github.com/repos/facebook/draft-js/comments{/number}", 768 | "issue_comment_url": "https://api.github.com/repos/facebook/draft-js/issues/comments{/number}", 769 | "contents_url": "https://api.github.com/repos/facebook/draft-js/contents/{+path}", 770 | "compare_url": "https://api.github.com/repos/facebook/draft-js/compare/{base}...{head}", 771 | "merges_url": "https://api.github.com/repos/facebook/draft-js/merges", 772 | "archive_url": "https://api.github.com/repos/facebook/draft-js/{archive_format}{/ref}", 773 | "downloads_url": "https://api.github.com/repos/facebook/draft-js/downloads", 774 | "issues_url": "https://api.github.com/repos/facebook/draft-js/issues{/number}", 775 | "pulls_url": "https://api.github.com/repos/facebook/draft-js/pulls{/number}", 776 | "milestones_url": "https://api.github.com/repos/facebook/draft-js/milestones{/number}", 777 | "notifications_url": "https://api.github.com/repos/facebook/draft-js/notifications{?since,all,participating}", 778 | "labels_url": "https://api.github.com/repos/facebook/draft-js/labels{/name}", 779 | "releases_url": "https://api.github.com/repos/facebook/draft-js/releases{/id}", 780 | "deployments_url": "https://api.github.com/repos/facebook/draft-js/deployments", 781 | "created_at": "2016-02-19T20:18:26Z", 782 | "updated_at": "2016-04-11T12:45:29Z", 783 | "pushed_at": "2016-04-10T19:45:03Z", 784 | "git_url": "git://github.com/facebook/draft-js.git", 785 | "ssh_url": "git@github.com:facebook/draft-js.git", 786 | "clone_url": "https://github.com/facebook/draft-js.git", 787 | "svn_url": "https://github.com/facebook/draft-js", 788 | "homepage": "https://facebook.github.io/draft-js/", 789 | "size": 2575, 790 | "stargazers_count": 5924, 791 | "watchers_count": 5924, 792 | "language": "JavaScript", 793 | "has_issues": true, 794 | "has_downloads": true, 795 | "has_wiki": true, 796 | "has_pages": true, 797 | "forks_count": 311, 798 | "mirror_url": null, 799 | "open_issues_count": 87, 800 | "forks": 311, 801 | "open_issues": 87, 802 | "watchers": 5924, 803 | "default_branch": "master", 804 | "score": 1.0 805 | }, 806 | { 807 | "id": 50301368, 808 | "name": "maybe", 809 | "full_name": "p-e-w/maybe", 810 | "owner": { 811 | "login": "p-e-w", 812 | "id": 2702526, 813 | "avatar_url": "https://avatars.githubusercontent.com/u/2702526?v=3", 814 | "gravatar_id": "", 815 | "url": "https://api.github.com/users/p-e-w", 816 | "html_url": "https://github.com/p-e-w", 817 | "followers_url": "https://api.github.com/users/p-e-w/followers", 818 | "following_url": "https://api.github.com/users/p-e-w/following{/other_user}", 819 | "gists_url": "https://api.github.com/users/p-e-w/gists{/gist_id}", 820 | "starred_url": "https://api.github.com/users/p-e-w/starred{/owner}{/repo}", 821 | "subscriptions_url": "https://api.github.com/users/p-e-w/subscriptions", 822 | "organizations_url": "https://api.github.com/users/p-e-w/orgs", 823 | "repos_url": "https://api.github.com/users/p-e-w/repos", 824 | "events_url": "https://api.github.com/users/p-e-w/events{/privacy}", 825 | "received_events_url": "https://api.github.com/users/p-e-w/received_events", 826 | "type": "User", 827 | "site_admin": false 828 | }, 829 | "private": false, 830 | "html_url": "https://github.com/p-e-w/maybe", 831 | "description": " :open_file_folder: :rabbit2: :tophat: See what a program does before deciding whether you really want it to happen.", 832 | "fork": false, 833 | "url": "https://api.github.com/repos/p-e-w/maybe", 834 | "forks_url": "https://api.github.com/repos/p-e-w/maybe/forks", 835 | "keys_url": "https://api.github.com/repos/p-e-w/maybe/keys{/key_id}", 836 | "collaborators_url": "https://api.github.com/repos/p-e-w/maybe/collaborators{/collaborator}", 837 | "teams_url": "https://api.github.com/repos/p-e-w/maybe/teams", 838 | "hooks_url": "https://api.github.com/repos/p-e-w/maybe/hooks", 839 | "issue_events_url": "https://api.github.com/repos/p-e-w/maybe/issues/events{/number}", 840 | "events_url": "https://api.github.com/repos/p-e-w/maybe/events", 841 | "assignees_url": "https://api.github.com/repos/p-e-w/maybe/assignees{/user}", 842 | "branches_url": "https://api.github.com/repos/p-e-w/maybe/branches{/branch}", 843 | "tags_url": "https://api.github.com/repos/p-e-w/maybe/tags", 844 | "blobs_url": "https://api.github.com/repos/p-e-w/maybe/git/blobs{/sha}", 845 | "git_tags_url": "https://api.github.com/repos/p-e-w/maybe/git/tags{/sha}", 846 | "git_refs_url": "https://api.github.com/repos/p-e-w/maybe/git/refs{/sha}", 847 | "trees_url": "https://api.github.com/repos/p-e-w/maybe/git/trees{/sha}", 848 | "statuses_url": "https://api.github.com/repos/p-e-w/maybe/statuses/{sha}", 849 | "languages_url": "https://api.github.com/repos/p-e-w/maybe/languages", 850 | "stargazers_url": "https://api.github.com/repos/p-e-w/maybe/stargazers", 851 | "contributors_url": "https://api.github.com/repos/p-e-w/maybe/contributors", 852 | "subscribers_url": "https://api.github.com/repos/p-e-w/maybe/subscribers", 853 | "subscription_url": "https://api.github.com/repos/p-e-w/maybe/subscription", 854 | "commits_url": "https://api.github.com/repos/p-e-w/maybe/commits{/sha}", 855 | "git_commits_url": "https://api.github.com/repos/p-e-w/maybe/git/commits{/sha}", 856 | "comments_url": "https://api.github.com/repos/p-e-w/maybe/comments{/number}", 857 | "issue_comment_url": "https://api.github.com/repos/p-e-w/maybe/issues/comments{/number}", 858 | "contents_url": "https://api.github.com/repos/p-e-w/maybe/contents/{+path}", 859 | "compare_url": "https://api.github.com/repos/p-e-w/maybe/compare/{base}...{head}", 860 | "merges_url": "https://api.github.com/repos/p-e-w/maybe/merges", 861 | "archive_url": "https://api.github.com/repos/p-e-w/maybe/{archive_format}{/ref}", 862 | "downloads_url": "https://api.github.com/repos/p-e-w/maybe/downloads", 863 | "issues_url": "https://api.github.com/repos/p-e-w/maybe/issues{/number}", 864 | "pulls_url": "https://api.github.com/repos/p-e-w/maybe/pulls{/number}", 865 | "milestones_url": "https://api.github.com/repos/p-e-w/maybe/milestones{/number}", 866 | "notifications_url": "https://api.github.com/repos/p-e-w/maybe/notifications{?since,all,participating}", 867 | "labels_url": "https://api.github.com/repos/p-e-w/maybe/labels{/name}", 868 | "releases_url": "https://api.github.com/repos/p-e-w/maybe/releases{/id}", 869 | "deployments_url": "https://api.github.com/repos/p-e-w/maybe/deployments", 870 | "created_at": "2016-01-24T18:29:30Z", 871 | "updated_at": "2016-04-11T12:45:29Z", 872 | "pushed_at": "2016-04-10T11:51:50Z", 873 | "git_url": "git://github.com/p-e-w/maybe.git", 874 | "ssh_url": "git@github.com:p-e-w/maybe.git", 875 | "clone_url": "https://github.com/p-e-w/maybe.git", 876 | "svn_url": "https://github.com/p-e-w/maybe", 877 | "homepage": null, 878 | "size": 107, 879 | "stargazers_count": 5777, 880 | "watchers_count": 5777, 881 | "language": "Python", 882 | "has_issues": true, 883 | "has_downloads": true, 884 | "has_wiki": true, 885 | "has_pages": false, 886 | "forks_count": 145, 887 | "mirror_url": null, 888 | "open_issues_count": 11, 889 | "forks": 145, 890 | "open_issues": 11, 891 | "watchers": 5777, 892 | "default_branch": "master", 893 | "score": 1.0 894 | }, 895 | { 896 | "id": 49086513, 897 | "name": "ChakraCore", 898 | "full_name": "Microsoft/ChakraCore", 899 | "owner": { 900 | "login": "Microsoft", 901 | "id": 6154722, 902 | "avatar_url": "https://avatars.githubusercontent.com/u/6154722?v=3", 903 | "gravatar_id": "", 904 | "url": "https://api.github.com/users/Microsoft", 905 | "html_url": "https://github.com/Microsoft", 906 | "followers_url": "https://api.github.com/users/Microsoft/followers", 907 | "following_url": "https://api.github.com/users/Microsoft/following{/other_user}", 908 | "gists_url": "https://api.github.com/users/Microsoft/gists{/gist_id}", 909 | "starred_url": "https://api.github.com/users/Microsoft/starred{/owner}{/repo}", 910 | "subscriptions_url": "https://api.github.com/users/Microsoft/subscriptions", 911 | "organizations_url": "https://api.github.com/users/Microsoft/orgs", 912 | "repos_url": "https://api.github.com/users/Microsoft/repos", 913 | "events_url": "https://api.github.com/users/Microsoft/events{/privacy}", 914 | "received_events_url": "https://api.github.com/users/Microsoft/received_events", 915 | "type": "Organization", 916 | "site_admin": false 917 | }, 918 | "private": false, 919 | "html_url": "https://github.com/Microsoft/ChakraCore", 920 | "description": "ChakraCore is the core part of the Chakra Javascript engine that powers Microsoft Edge", 921 | "fork": false, 922 | "url": "https://api.github.com/repos/Microsoft/ChakraCore", 923 | "forks_url": "https://api.github.com/repos/Microsoft/ChakraCore/forks", 924 | "keys_url": "https://api.github.com/repos/Microsoft/ChakraCore/keys{/key_id}", 925 | "collaborators_url": "https://api.github.com/repos/Microsoft/ChakraCore/collaborators{/collaborator}", 926 | "teams_url": "https://api.github.com/repos/Microsoft/ChakraCore/teams", 927 | "hooks_url": "https://api.github.com/repos/Microsoft/ChakraCore/hooks", 928 | "issue_events_url": "https://api.github.com/repos/Microsoft/ChakraCore/issues/events{/number}", 929 | "events_url": "https://api.github.com/repos/Microsoft/ChakraCore/events", 930 | "assignees_url": "https://api.github.com/repos/Microsoft/ChakraCore/assignees{/user}", 931 | "branches_url": "https://api.github.com/repos/Microsoft/ChakraCore/branches{/branch}", 932 | "tags_url": "https://api.github.com/repos/Microsoft/ChakraCore/tags", 933 | "blobs_url": "https://api.github.com/repos/Microsoft/ChakraCore/git/blobs{/sha}", 934 | "git_tags_url": "https://api.github.com/repos/Microsoft/ChakraCore/git/tags{/sha}", 935 | "git_refs_url": "https://api.github.com/repos/Microsoft/ChakraCore/git/refs{/sha}", 936 | "trees_url": "https://api.github.com/repos/Microsoft/ChakraCore/git/trees{/sha}", 937 | "statuses_url": "https://api.github.com/repos/Microsoft/ChakraCore/statuses/{sha}", 938 | "languages_url": "https://api.github.com/repos/Microsoft/ChakraCore/languages", 939 | "stargazers_url": "https://api.github.com/repos/Microsoft/ChakraCore/stargazers", 940 | "contributors_url": "https://api.github.com/repos/Microsoft/ChakraCore/contributors", 941 | "subscribers_url": "https://api.github.com/repos/Microsoft/ChakraCore/subscribers", 942 | "subscription_url": "https://api.github.com/repos/Microsoft/ChakraCore/subscription", 943 | "commits_url": "https://api.github.com/repos/Microsoft/ChakraCore/commits{/sha}", 944 | "git_commits_url": "https://api.github.com/repos/Microsoft/ChakraCore/git/commits{/sha}", 945 | "comments_url": "https://api.github.com/repos/Microsoft/ChakraCore/comments{/number}", 946 | "issue_comment_url": "https://api.github.com/repos/Microsoft/ChakraCore/issues/comments{/number}", 947 | "contents_url": "https://api.github.com/repos/Microsoft/ChakraCore/contents/{+path}", 948 | "compare_url": "https://api.github.com/repos/Microsoft/ChakraCore/compare/{base}...{head}", 949 | "merges_url": "https://api.github.com/repos/Microsoft/ChakraCore/merges", 950 | "archive_url": "https://api.github.com/repos/Microsoft/ChakraCore/{archive_format}{/ref}", 951 | "downloads_url": "https://api.github.com/repos/Microsoft/ChakraCore/downloads", 952 | "issues_url": "https://api.github.com/repos/Microsoft/ChakraCore/issues{/number}", 953 | "pulls_url": "https://api.github.com/repos/Microsoft/ChakraCore/pulls{/number}", 954 | "milestones_url": "https://api.github.com/repos/Microsoft/ChakraCore/milestones{/number}", 955 | "notifications_url": "https://api.github.com/repos/Microsoft/ChakraCore/notifications{?since,all,participating}", 956 | "labels_url": "https://api.github.com/repos/Microsoft/ChakraCore/labels{/name}", 957 | "releases_url": "https://api.github.com/repos/Microsoft/ChakraCore/releases{/id}", 958 | "deployments_url": "https://api.github.com/repos/Microsoft/ChakraCore/deployments", 959 | "created_at": "2016-01-05T19:05:31Z", 960 | "updated_at": "2016-04-11T12:45:28Z", 961 | "pushed_at": "2016-04-11T13:21:57Z", 962 | "git_url": "git://github.com/Microsoft/ChakraCore.git", 963 | "ssh_url": "git@github.com:Microsoft/ChakraCore.git", 964 | "clone_url": "https://github.com/Microsoft/ChakraCore.git", 965 | "svn_url": "https://github.com/Microsoft/ChakraCore", 966 | "homepage": null, 967 | "size": 29629, 968 | "stargazers_count": 5081, 969 | "watchers_count": 5081, 970 | "language": "JavaScript", 971 | "has_issues": true, 972 | "has_downloads": true, 973 | "has_wiki": true, 974 | "has_pages": false, 975 | "forks_count": 551, 976 | "mirror_url": null, 977 | "open_issues_count": 133, 978 | "forks": 551, 979 | "open_issues": 133, 980 | "watchers": 5081, 981 | "default_branch": "master", 982 | "score": 1.0 983 | }, 984 | { 985 | "id": 53228513, 986 | "name": "neural-doodle", 987 | "full_name": "alexjc/neural-doodle", 988 | "owner": { 989 | "login": "alexjc", 990 | "id": 445208, 991 | "avatar_url": "https://avatars.githubusercontent.com/u/445208?v=3", 992 | "gravatar_id": "", 993 | "url": "https://api.github.com/users/alexjc", 994 | "html_url": "https://github.com/alexjc", 995 | "followers_url": "https://api.github.com/users/alexjc/followers", 996 | "following_url": "https://api.github.com/users/alexjc/following{/other_user}", 997 | "gists_url": "https://api.github.com/users/alexjc/gists{/gist_id}", 998 | "starred_url": "https://api.github.com/users/alexjc/starred{/owner}{/repo}", 999 | "subscriptions_url": "https://api.github.com/users/alexjc/subscriptions", 1000 | "organizations_url": "https://api.github.com/users/alexjc/orgs", 1001 | "repos_url": "https://api.github.com/users/alexjc/repos", 1002 | "events_url": "https://api.github.com/users/alexjc/events{/privacy}", 1003 | "received_events_url": "https://api.github.com/users/alexjc/received_events", 1004 | "type": "User", 1005 | "site_admin": false 1006 | }, 1007 | "private": false, 1008 | "html_url": "https://github.com/alexjc/neural-doodle", 1009 | "description": "Turn your two-bit doodles into fine artworks with deep neural networks! An implementation of Semantic Style Transfer.", 1010 | "fork": false, 1011 | "url": "https://api.github.com/repos/alexjc/neural-doodle", 1012 | "forks_url": "https://api.github.com/repos/alexjc/neural-doodle/forks", 1013 | "keys_url": "https://api.github.com/repos/alexjc/neural-doodle/keys{/key_id}", 1014 | "collaborators_url": "https://api.github.com/repos/alexjc/neural-doodle/collaborators{/collaborator}", 1015 | "teams_url": "https://api.github.com/repos/alexjc/neural-doodle/teams", 1016 | "hooks_url": "https://api.github.com/repos/alexjc/neural-doodle/hooks", 1017 | "issue_events_url": "https://api.github.com/repos/alexjc/neural-doodle/issues/events{/number}", 1018 | "events_url": "https://api.github.com/repos/alexjc/neural-doodle/events", 1019 | "assignees_url": "https://api.github.com/repos/alexjc/neural-doodle/assignees{/user}", 1020 | "branches_url": "https://api.github.com/repos/alexjc/neural-doodle/branches{/branch}", 1021 | "tags_url": "https://api.github.com/repos/alexjc/neural-doodle/tags", 1022 | "blobs_url": "https://api.github.com/repos/alexjc/neural-doodle/git/blobs{/sha}", 1023 | "git_tags_url": "https://api.github.com/repos/alexjc/neural-doodle/git/tags{/sha}", 1024 | "git_refs_url": "https://api.github.com/repos/alexjc/neural-doodle/git/refs{/sha}", 1025 | "trees_url": "https://api.github.com/repos/alexjc/neural-doodle/git/trees{/sha}", 1026 | "statuses_url": "https://api.github.com/repos/alexjc/neural-doodle/statuses/{sha}", 1027 | "languages_url": "https://api.github.com/repos/alexjc/neural-doodle/languages", 1028 | "stargazers_url": "https://api.github.com/repos/alexjc/neural-doodle/stargazers", 1029 | "contributors_url": "https://api.github.com/repos/alexjc/neural-doodle/contributors", 1030 | "subscribers_url": "https://api.github.com/repos/alexjc/neural-doodle/subscribers", 1031 | "subscription_url": "https://api.github.com/repos/alexjc/neural-doodle/subscription", 1032 | "commits_url": "https://api.github.com/repos/alexjc/neural-doodle/commits{/sha}", 1033 | "git_commits_url": "https://api.github.com/repos/alexjc/neural-doodle/git/commits{/sha}", 1034 | "comments_url": "https://api.github.com/repos/alexjc/neural-doodle/comments{/number}", 1035 | "issue_comment_url": "https://api.github.com/repos/alexjc/neural-doodle/issues/comments{/number}", 1036 | "contents_url": "https://api.github.com/repos/alexjc/neural-doodle/contents/{+path}", 1037 | "compare_url": "https://api.github.com/repos/alexjc/neural-doodle/compare/{base}...{head}", 1038 | "merges_url": "https://api.github.com/repos/alexjc/neural-doodle/merges", 1039 | "archive_url": "https://api.github.com/repos/alexjc/neural-doodle/{archive_format}{/ref}", 1040 | "downloads_url": "https://api.github.com/repos/alexjc/neural-doodle/downloads", 1041 | "issues_url": "https://api.github.com/repos/alexjc/neural-doodle/issues{/number}", 1042 | "pulls_url": "https://api.github.com/repos/alexjc/neural-doodle/pulls{/number}", 1043 | "milestones_url": "https://api.github.com/repos/alexjc/neural-doodle/milestones{/number}", 1044 | "notifications_url": "https://api.github.com/repos/alexjc/neural-doodle/notifications{?since,all,participating}", 1045 | "labels_url": "https://api.github.com/repos/alexjc/neural-doodle/labels{/name}", 1046 | "releases_url": "https://api.github.com/repos/alexjc/neural-doodle/releases{/id}", 1047 | "deployments_url": "https://api.github.com/repos/alexjc/neural-doodle/deployments", 1048 | "created_at": "2016-03-05T23:35:18Z", 1049 | "updated_at": "2016-04-11T14:33:51Z", 1050 | "pushed_at": "2016-04-04T21:10:22Z", 1051 | "git_url": "git://github.com/alexjc/neural-doodle.git", 1052 | "ssh_url": "git@github.com:alexjc/neural-doodle.git", 1053 | "clone_url": "https://github.com/alexjc/neural-doodle.git", 1054 | "svn_url": "https://github.com/alexjc/neural-doodle", 1055 | "homepage": "", 1056 | "size": 2563, 1057 | "stargazers_count": 5063, 1058 | "watchers_count": 5063, 1059 | "language": "Python", 1060 | "has_issues": true, 1061 | "has_downloads": true, 1062 | "has_wiki": false, 1063 | "has_pages": false, 1064 | "forks_count": 296, 1065 | "mirror_url": null, 1066 | "open_issues_count": 28, 1067 | "forks": 296, 1068 | "open_issues": 28, 1069 | "watchers": 5063, 1070 | "default_branch": "master", 1071 | "score": 1.0 1072 | }, 1073 | { 1074 | "id": 49020217, 1075 | "name": "react-howto", 1076 | "full_name": "petehunt/react-howto", 1077 | "owner": { 1078 | "login": "petehunt", 1079 | "id": 239742, 1080 | "avatar_url": "https://avatars.githubusercontent.com/u/239742?v=3", 1081 | "gravatar_id": "", 1082 | "url": "https://api.github.com/users/petehunt", 1083 | "html_url": "https://github.com/petehunt", 1084 | "followers_url": "https://api.github.com/users/petehunt/followers", 1085 | "following_url": "https://api.github.com/users/petehunt/following{/other_user}", 1086 | "gists_url": "https://api.github.com/users/petehunt/gists{/gist_id}", 1087 | "starred_url": "https://api.github.com/users/petehunt/starred{/owner}{/repo}", 1088 | "subscriptions_url": "https://api.github.com/users/petehunt/subscriptions", 1089 | "organizations_url": "https://api.github.com/users/petehunt/orgs", 1090 | "repos_url": "https://api.github.com/users/petehunt/repos", 1091 | "events_url": "https://api.github.com/users/petehunt/events{/privacy}", 1092 | "received_events_url": "https://api.github.com/users/petehunt/received_events", 1093 | "type": "User", 1094 | "site_admin": false 1095 | }, 1096 | "private": false, 1097 | "html_url": "https://github.com/petehunt/react-howto", 1098 | "description": "Your guide to the (sometimes overwhelming!) React ecosystem.", 1099 | "fork": false, 1100 | "url": "https://api.github.com/repos/petehunt/react-howto", 1101 | "forks_url": "https://api.github.com/repos/petehunt/react-howto/forks", 1102 | "keys_url": "https://api.github.com/repos/petehunt/react-howto/keys{/key_id}", 1103 | "collaborators_url": "https://api.github.com/repos/petehunt/react-howto/collaborators{/collaborator}", 1104 | "teams_url": "https://api.github.com/repos/petehunt/react-howto/teams", 1105 | "hooks_url": "https://api.github.com/repos/petehunt/react-howto/hooks", 1106 | "issue_events_url": "https://api.github.com/repos/petehunt/react-howto/issues/events{/number}", 1107 | "events_url": "https://api.github.com/repos/petehunt/react-howto/events", 1108 | "assignees_url": "https://api.github.com/repos/petehunt/react-howto/assignees{/user}", 1109 | "branches_url": "https://api.github.com/repos/petehunt/react-howto/branches{/branch}", 1110 | "tags_url": "https://api.github.com/repos/petehunt/react-howto/tags", 1111 | "blobs_url": "https://api.github.com/repos/petehunt/react-howto/git/blobs{/sha}", 1112 | "git_tags_url": "https://api.github.com/repos/petehunt/react-howto/git/tags{/sha}", 1113 | "git_refs_url": "https://api.github.com/repos/petehunt/react-howto/git/refs{/sha}", 1114 | "trees_url": "https://api.github.com/repos/petehunt/react-howto/git/trees{/sha}", 1115 | "statuses_url": "https://api.github.com/repos/petehunt/react-howto/statuses/{sha}", 1116 | "languages_url": "https://api.github.com/repos/petehunt/react-howto/languages", 1117 | "stargazers_url": "https://api.github.com/repos/petehunt/react-howto/stargazers", 1118 | "contributors_url": "https://api.github.com/repos/petehunt/react-howto/contributors", 1119 | "subscribers_url": "https://api.github.com/repos/petehunt/react-howto/subscribers", 1120 | "subscription_url": "https://api.github.com/repos/petehunt/react-howto/subscription", 1121 | "commits_url": "https://api.github.com/repos/petehunt/react-howto/commits{/sha}", 1122 | "git_commits_url": "https://api.github.com/repos/petehunt/react-howto/git/commits{/sha}", 1123 | "comments_url": "https://api.github.com/repos/petehunt/react-howto/comments{/number}", 1124 | "issue_comment_url": "https://api.github.com/repos/petehunt/react-howto/issues/comments{/number}", 1125 | "contents_url": "https://api.github.com/repos/petehunt/react-howto/contents/{+path}", 1126 | "compare_url": "https://api.github.com/repos/petehunt/react-howto/compare/{base}...{head}", 1127 | "merges_url": "https://api.github.com/repos/petehunt/react-howto/merges", 1128 | "archive_url": "https://api.github.com/repos/petehunt/react-howto/{archive_format}{/ref}", 1129 | "downloads_url": "https://api.github.com/repos/petehunt/react-howto/downloads", 1130 | "issues_url": "https://api.github.com/repos/petehunt/react-howto/issues{/number}", 1131 | "pulls_url": "https://api.github.com/repos/petehunt/react-howto/pulls{/number}", 1132 | "milestones_url": "https://api.github.com/repos/petehunt/react-howto/milestones{/number}", 1133 | "notifications_url": "https://api.github.com/repos/petehunt/react-howto/notifications{?since,all,participating}", 1134 | "labels_url": "https://api.github.com/repos/petehunt/react-howto/labels{/name}", 1135 | "releases_url": "https://api.github.com/repos/petehunt/react-howto/releases{/id}", 1136 | "deployments_url": "https://api.github.com/repos/petehunt/react-howto/deployments", 1137 | "created_at": "2016-01-04T20:10:18Z", 1138 | "updated_at": "2016-04-11T14:09:46Z", 1139 | "pushed_at": "2016-04-02T10:15:56Z", 1140 | "git_url": "git://github.com/petehunt/react-howto.git", 1141 | "ssh_url": "git@github.com:petehunt/react-howto.git", 1142 | "clone_url": "https://github.com/petehunt/react-howto.git", 1143 | "svn_url": "https://github.com/petehunt/react-howto", 1144 | "homepage": "", 1145 | "size": 67, 1146 | "stargazers_count": 5035, 1147 | "watchers_count": 5035, 1148 | "language": null, 1149 | "has_issues": true, 1150 | "has_downloads": true, 1151 | "has_wiki": true, 1152 | "has_pages": false, 1153 | "forks_count": 242, 1154 | "mirror_url": null, 1155 | "open_issues_count": 14, 1156 | "forks": 242, 1157 | "open_issues": 14, 1158 | "watchers": 5035, 1159 | "default_branch": "master", 1160 | "score": 1.0 1161 | }, 1162 | { 1163 | "id": 50447720, 1164 | "name": "swift-algorithm-club", 1165 | "full_name": "hollance/swift-algorithm-club", 1166 | "owner": { 1167 | "login": "hollance", 1168 | "id": 346853, 1169 | "avatar_url": "https://avatars.githubusercontent.com/u/346853?v=3", 1170 | "gravatar_id": "", 1171 | "url": "https://api.github.com/users/hollance", 1172 | "html_url": "https://github.com/hollance", 1173 | "followers_url": "https://api.github.com/users/hollance/followers", 1174 | "following_url": "https://api.github.com/users/hollance/following{/other_user}", 1175 | "gists_url": "https://api.github.com/users/hollance/gists{/gist_id}", 1176 | "starred_url": "https://api.github.com/users/hollance/starred{/owner}{/repo}", 1177 | "subscriptions_url": "https://api.github.com/users/hollance/subscriptions", 1178 | "organizations_url": "https://api.github.com/users/hollance/orgs", 1179 | "repos_url": "https://api.github.com/users/hollance/repos", 1180 | "events_url": "https://api.github.com/users/hollance/events{/privacy}", 1181 | "received_events_url": "https://api.github.com/users/hollance/received_events", 1182 | "type": "User", 1183 | "site_admin": false 1184 | }, 1185 | "private": false, 1186 | "html_url": "https://github.com/hollance/swift-algorithm-club", 1187 | "description": "Algorithms and data structures in Swift, with explanations!", 1188 | "fork": false, 1189 | "url": "https://api.github.com/repos/hollance/swift-algorithm-club", 1190 | "forks_url": "https://api.github.com/repos/hollance/swift-algorithm-club/forks", 1191 | "keys_url": "https://api.github.com/repos/hollance/swift-algorithm-club/keys{/key_id}", 1192 | "collaborators_url": "https://api.github.com/repos/hollance/swift-algorithm-club/collaborators{/collaborator}", 1193 | "teams_url": "https://api.github.com/repos/hollance/swift-algorithm-club/teams", 1194 | "hooks_url": "https://api.github.com/repos/hollance/swift-algorithm-club/hooks", 1195 | "issue_events_url": "https://api.github.com/repos/hollance/swift-algorithm-club/issues/events{/number}", 1196 | "events_url": "https://api.github.com/repos/hollance/swift-algorithm-club/events", 1197 | "assignees_url": "https://api.github.com/repos/hollance/swift-algorithm-club/assignees{/user}", 1198 | "branches_url": "https://api.github.com/repos/hollance/swift-algorithm-club/branches{/branch}", 1199 | "tags_url": "https://api.github.com/repos/hollance/swift-algorithm-club/tags", 1200 | "blobs_url": "https://api.github.com/repos/hollance/swift-algorithm-club/git/blobs{/sha}", 1201 | "git_tags_url": "https://api.github.com/repos/hollance/swift-algorithm-club/git/tags{/sha}", 1202 | "git_refs_url": "https://api.github.com/repos/hollance/swift-algorithm-club/git/refs{/sha}", 1203 | "trees_url": "https://api.github.com/repos/hollance/swift-algorithm-club/git/trees{/sha}", 1204 | "statuses_url": "https://api.github.com/repos/hollance/swift-algorithm-club/statuses/{sha}", 1205 | "languages_url": "https://api.github.com/repos/hollance/swift-algorithm-club/languages", 1206 | "stargazers_url": "https://api.github.com/repos/hollance/swift-algorithm-club/stargazers", 1207 | "contributors_url": "https://api.github.com/repos/hollance/swift-algorithm-club/contributors", 1208 | "subscribers_url": "https://api.github.com/repos/hollance/swift-algorithm-club/subscribers", 1209 | "subscription_url": "https://api.github.com/repos/hollance/swift-algorithm-club/subscription", 1210 | "commits_url": "https://api.github.com/repos/hollance/swift-algorithm-club/commits{/sha}", 1211 | "git_commits_url": "https://api.github.com/repos/hollance/swift-algorithm-club/git/commits{/sha}", 1212 | "comments_url": "https://api.github.com/repos/hollance/swift-algorithm-club/comments{/number}", 1213 | "issue_comment_url": "https://api.github.com/repos/hollance/swift-algorithm-club/issues/comments{/number}", 1214 | "contents_url": "https://api.github.com/repos/hollance/swift-algorithm-club/contents/{+path}", 1215 | "compare_url": "https://api.github.com/repos/hollance/swift-algorithm-club/compare/{base}...{head}", 1216 | "merges_url": "https://api.github.com/repos/hollance/swift-algorithm-club/merges", 1217 | "archive_url": "https://api.github.com/repos/hollance/swift-algorithm-club/{archive_format}{/ref}", 1218 | "downloads_url": "https://api.github.com/repos/hollance/swift-algorithm-club/downloads", 1219 | "issues_url": "https://api.github.com/repos/hollance/swift-algorithm-club/issues{/number}", 1220 | "pulls_url": "https://api.github.com/repos/hollance/swift-algorithm-club/pulls{/number}", 1221 | "milestones_url": "https://api.github.com/repos/hollance/swift-algorithm-club/milestones{/number}", 1222 | "notifications_url": "https://api.github.com/repos/hollance/swift-algorithm-club/notifications{?since,all,participating}", 1223 | "labels_url": "https://api.github.com/repos/hollance/swift-algorithm-club/labels{/name}", 1224 | "releases_url": "https://api.github.com/repos/hollance/swift-algorithm-club/releases{/id}", 1225 | "deployments_url": "https://api.github.com/repos/hollance/swift-algorithm-club/deployments", 1226 | "created_at": "2016-01-26T17:56:12Z", 1227 | "updated_at": "2016-04-11T13:53:07Z", 1228 | "pushed_at": "2016-04-11T12:33:35Z", 1229 | "git_url": "git://github.com/hollance/swift-algorithm-club.git", 1230 | "ssh_url": "git@github.com:hollance/swift-algorithm-club.git", 1231 | "clone_url": "https://github.com/hollance/swift-algorithm-club.git", 1232 | "svn_url": "https://github.com/hollance/swift-algorithm-club", 1233 | "homepage": null, 1234 | "size": 4320, 1235 | "stargazers_count": 4868, 1236 | "watchers_count": 4868, 1237 | "language": "Swift", 1238 | "has_issues": true, 1239 | "has_downloads": true, 1240 | "has_wiki": true, 1241 | "has_pages": false, 1242 | "forks_count": 420, 1243 | "mirror_url": null, 1244 | "open_issues_count": 22, 1245 | "forks": 420, 1246 | "open_issues": 22, 1247 | "watchers": 4868, 1248 | "default_branch": "master", 1249 | "score": 1.0 1250 | }, 1251 | { 1252 | "id": 49010787, 1253 | "name": "vim-galore", 1254 | "full_name": "mhinz/vim-galore", 1255 | "owner": { 1256 | "login": "mhinz", 1257 | "id": 972014, 1258 | "avatar_url": "https://avatars.githubusercontent.com/u/972014?v=3", 1259 | "gravatar_id": "", 1260 | "url": "https://api.github.com/users/mhinz", 1261 | "html_url": "https://github.com/mhinz", 1262 | "followers_url": "https://api.github.com/users/mhinz/followers", 1263 | "following_url": "https://api.github.com/users/mhinz/following{/other_user}", 1264 | "gists_url": "https://api.github.com/users/mhinz/gists{/gist_id}", 1265 | "starred_url": "https://api.github.com/users/mhinz/starred{/owner}{/repo}", 1266 | "subscriptions_url": "https://api.github.com/users/mhinz/subscriptions", 1267 | "organizations_url": "https://api.github.com/users/mhinz/orgs", 1268 | "repos_url": "https://api.github.com/users/mhinz/repos", 1269 | "events_url": "https://api.github.com/users/mhinz/events{/privacy}", 1270 | "received_events_url": "https://api.github.com/users/mhinz/received_events", 1271 | "type": "User", 1272 | "site_admin": false 1273 | }, 1274 | "private": false, 1275 | "html_url": "https://github.com/mhinz/vim-galore", 1276 | "description": "All things Vim and Neovim!", 1277 | "fork": false, 1278 | "url": "https://api.github.com/repos/mhinz/vim-galore", 1279 | "forks_url": "https://api.github.com/repos/mhinz/vim-galore/forks", 1280 | "keys_url": "https://api.github.com/repos/mhinz/vim-galore/keys{/key_id}", 1281 | "collaborators_url": "https://api.github.com/repos/mhinz/vim-galore/collaborators{/collaborator}", 1282 | "teams_url": "https://api.github.com/repos/mhinz/vim-galore/teams", 1283 | "hooks_url": "https://api.github.com/repos/mhinz/vim-galore/hooks", 1284 | "issue_events_url": "https://api.github.com/repos/mhinz/vim-galore/issues/events{/number}", 1285 | "events_url": "https://api.github.com/repos/mhinz/vim-galore/events", 1286 | "assignees_url": "https://api.github.com/repos/mhinz/vim-galore/assignees{/user}", 1287 | "branches_url": "https://api.github.com/repos/mhinz/vim-galore/branches{/branch}", 1288 | "tags_url": "https://api.github.com/repos/mhinz/vim-galore/tags", 1289 | "blobs_url": "https://api.github.com/repos/mhinz/vim-galore/git/blobs{/sha}", 1290 | "git_tags_url": "https://api.github.com/repos/mhinz/vim-galore/git/tags{/sha}", 1291 | "git_refs_url": "https://api.github.com/repos/mhinz/vim-galore/git/refs{/sha}", 1292 | "trees_url": "https://api.github.com/repos/mhinz/vim-galore/git/trees{/sha}", 1293 | "statuses_url": "https://api.github.com/repos/mhinz/vim-galore/statuses/{sha}", 1294 | "languages_url": "https://api.github.com/repos/mhinz/vim-galore/languages", 1295 | "stargazers_url": "https://api.github.com/repos/mhinz/vim-galore/stargazers", 1296 | "contributors_url": "https://api.github.com/repos/mhinz/vim-galore/contributors", 1297 | "subscribers_url": "https://api.github.com/repos/mhinz/vim-galore/subscribers", 1298 | "subscription_url": "https://api.github.com/repos/mhinz/vim-galore/subscription", 1299 | "commits_url": "https://api.github.com/repos/mhinz/vim-galore/commits{/sha}", 1300 | "git_commits_url": "https://api.github.com/repos/mhinz/vim-galore/git/commits{/sha}", 1301 | "comments_url": "https://api.github.com/repos/mhinz/vim-galore/comments{/number}", 1302 | "issue_comment_url": "https://api.github.com/repos/mhinz/vim-galore/issues/comments{/number}", 1303 | "contents_url": "https://api.github.com/repos/mhinz/vim-galore/contents/{+path}", 1304 | "compare_url": "https://api.github.com/repos/mhinz/vim-galore/compare/{base}...{head}", 1305 | "merges_url": "https://api.github.com/repos/mhinz/vim-galore/merges", 1306 | "archive_url": "https://api.github.com/repos/mhinz/vim-galore/{archive_format}{/ref}", 1307 | "downloads_url": "https://api.github.com/repos/mhinz/vim-galore/downloads", 1308 | "issues_url": "https://api.github.com/repos/mhinz/vim-galore/issues{/number}", 1309 | "pulls_url": "https://api.github.com/repos/mhinz/vim-galore/pulls{/number}", 1310 | "milestones_url": "https://api.github.com/repos/mhinz/vim-galore/milestones{/number}", 1311 | "notifications_url": "https://api.github.com/repos/mhinz/vim-galore/notifications{?since,all,participating}", 1312 | "labels_url": "https://api.github.com/repos/mhinz/vim-galore/labels{/name}", 1313 | "releases_url": "https://api.github.com/repos/mhinz/vim-galore/releases{/id}", 1314 | "deployments_url": "https://api.github.com/repos/mhinz/vim-galore/deployments", 1315 | "created_at": "2016-01-04T17:02:16Z", 1316 | "updated_at": "2016-04-11T13:46:48Z", 1317 | "pushed_at": "2016-04-02T21:10:34Z", 1318 | "git_url": "git://github.com/mhinz/vim-galore.git", 1319 | "ssh_url": "git@github.com:mhinz/vim-galore.git", 1320 | "clone_url": "https://github.com/mhinz/vim-galore.git", 1321 | "svn_url": "https://github.com/mhinz/vim-galore", 1322 | "homepage": "", 1323 | "size": 605, 1324 | "stargazers_count": 4585, 1325 | "watchers_count": 4585, 1326 | "language": "VimL", 1327 | "has_issues": true, 1328 | "has_downloads": true, 1329 | "has_wiki": false, 1330 | "has_pages": false, 1331 | "forks_count": 148, 1332 | "mirror_url": null, 1333 | "open_issues_count": 5, 1334 | "forks": 148, 1335 | "open_issues": 5, 1336 | "watchers": 4585, 1337 | "default_branch": "master", 1338 | "score": 1.0 1339 | }, 1340 | { 1341 | "id": 51071818, 1342 | "name": "diff-so-fancy", 1343 | "full_name": "so-fancy/diff-so-fancy", 1344 | "owner": { 1345 | "login": "so-fancy", 1346 | "id": 17226113, 1347 | "avatar_url": "https://avatars.githubusercontent.com/u/17226113?v=3", 1348 | "gravatar_id": "", 1349 | "url": "https://api.github.com/users/so-fancy", 1350 | "html_url": "https://github.com/so-fancy", 1351 | "followers_url": "https://api.github.com/users/so-fancy/followers", 1352 | "following_url": "https://api.github.com/users/so-fancy/following{/other_user}", 1353 | "gists_url": "https://api.github.com/users/so-fancy/gists{/gist_id}", 1354 | "starred_url": "https://api.github.com/users/so-fancy/starred{/owner}{/repo}", 1355 | "subscriptions_url": "https://api.github.com/users/so-fancy/subscriptions", 1356 | "organizations_url": "https://api.github.com/users/so-fancy/orgs", 1357 | "repos_url": "https://api.github.com/users/so-fancy/repos", 1358 | "events_url": "https://api.github.com/users/so-fancy/events{/privacy}", 1359 | "received_events_url": "https://api.github.com/users/so-fancy/received_events", 1360 | "type": "Organization", 1361 | "site_admin": false 1362 | }, 1363 | "private": false, 1364 | "html_url": "https://github.com/so-fancy/diff-so-fancy", 1365 | "description": "Good-lookin' diffs with diff-highlight and more", 1366 | "fork": false, 1367 | "url": "https://api.github.com/repos/so-fancy/diff-so-fancy", 1368 | "forks_url": "https://api.github.com/repos/so-fancy/diff-so-fancy/forks", 1369 | "keys_url": "https://api.github.com/repos/so-fancy/diff-so-fancy/keys{/key_id}", 1370 | "collaborators_url": "https://api.github.com/repos/so-fancy/diff-so-fancy/collaborators{/collaborator}", 1371 | "teams_url": "https://api.github.com/repos/so-fancy/diff-so-fancy/teams", 1372 | "hooks_url": "https://api.github.com/repos/so-fancy/diff-so-fancy/hooks", 1373 | "issue_events_url": "https://api.github.com/repos/so-fancy/diff-so-fancy/issues/events{/number}", 1374 | "events_url": "https://api.github.com/repos/so-fancy/diff-so-fancy/events", 1375 | "assignees_url": "https://api.github.com/repos/so-fancy/diff-so-fancy/assignees{/user}", 1376 | "branches_url": "https://api.github.com/repos/so-fancy/diff-so-fancy/branches{/branch}", 1377 | "tags_url": "https://api.github.com/repos/so-fancy/diff-so-fancy/tags", 1378 | "blobs_url": "https://api.github.com/repos/so-fancy/diff-so-fancy/git/blobs{/sha}", 1379 | "git_tags_url": "https://api.github.com/repos/so-fancy/diff-so-fancy/git/tags{/sha}", 1380 | "git_refs_url": "https://api.github.com/repos/so-fancy/diff-so-fancy/git/refs{/sha}", 1381 | "trees_url": "https://api.github.com/repos/so-fancy/diff-so-fancy/git/trees{/sha}", 1382 | "statuses_url": "https://api.github.com/repos/so-fancy/diff-so-fancy/statuses/{sha}", 1383 | "languages_url": "https://api.github.com/repos/so-fancy/diff-so-fancy/languages", 1384 | "stargazers_url": "https://api.github.com/repos/so-fancy/diff-so-fancy/stargazers", 1385 | "contributors_url": "https://api.github.com/repos/so-fancy/diff-so-fancy/contributors", 1386 | "subscribers_url": "https://api.github.com/repos/so-fancy/diff-so-fancy/subscribers", 1387 | "subscription_url": "https://api.github.com/repos/so-fancy/diff-so-fancy/subscription", 1388 | "commits_url": "https://api.github.com/repos/so-fancy/diff-so-fancy/commits{/sha}", 1389 | "git_commits_url": "https://api.github.com/repos/so-fancy/diff-so-fancy/git/commits{/sha}", 1390 | "comments_url": "https://api.github.com/repos/so-fancy/diff-so-fancy/comments{/number}", 1391 | "issue_comment_url": "https://api.github.com/repos/so-fancy/diff-so-fancy/issues/comments{/number}", 1392 | "contents_url": "https://api.github.com/repos/so-fancy/diff-so-fancy/contents/{+path}", 1393 | "compare_url": "https://api.github.com/repos/so-fancy/diff-so-fancy/compare/{base}...{head}", 1394 | "merges_url": "https://api.github.com/repos/so-fancy/diff-so-fancy/merges", 1395 | "archive_url": "https://api.github.com/repos/so-fancy/diff-so-fancy/{archive_format}{/ref}", 1396 | "downloads_url": "https://api.github.com/repos/so-fancy/diff-so-fancy/downloads", 1397 | "issues_url": "https://api.github.com/repos/so-fancy/diff-so-fancy/issues{/number}", 1398 | "pulls_url": "https://api.github.com/repos/so-fancy/diff-so-fancy/pulls{/number}", 1399 | "milestones_url": "https://api.github.com/repos/so-fancy/diff-so-fancy/milestones{/number}", 1400 | "notifications_url": "https://api.github.com/repos/so-fancy/diff-so-fancy/notifications{?since,all,participating}", 1401 | "labels_url": "https://api.github.com/repos/so-fancy/diff-so-fancy/labels{/name}", 1402 | "releases_url": "https://api.github.com/repos/so-fancy/diff-so-fancy/releases{/id}", 1403 | "deployments_url": "https://api.github.com/repos/so-fancy/diff-so-fancy/deployments", 1404 | "created_at": "2016-02-04T11:32:08Z", 1405 | "updated_at": "2016-04-11T13:30:31Z", 1406 | "pushed_at": "2016-04-05T15:35:57Z", 1407 | "git_url": "git://github.com/so-fancy/diff-so-fancy.git", 1408 | "ssh_url": "git@github.com:so-fancy/diff-so-fancy.git", 1409 | "clone_url": "https://github.com/so-fancy/diff-so-fancy.git", 1410 | "svn_url": "https://github.com/so-fancy/diff-so-fancy", 1411 | "homepage": "", 1412 | "size": 138, 1413 | "stargazers_count": 4456, 1414 | "watchers_count": 4456, 1415 | "language": "Shell", 1416 | "has_issues": true, 1417 | "has_downloads": true, 1418 | "has_wiki": true, 1419 | "has_pages": false, 1420 | "forks_count": 76, 1421 | "mirror_url": null, 1422 | "open_issues_count": 9, 1423 | "forks": 76, 1424 | "open_issues": 9, 1425 | "watchers": 4456, 1426 | "default_branch": "master", 1427 | "score": 1.0 1428 | }, 1429 | { 1430 | "id": 49668250, 1431 | "name": "dear-github", 1432 | "full_name": "dear-github/dear-github", 1433 | "owner": { 1434 | "login": "dear-github", 1435 | "id": 16708458, 1436 | "avatar_url": "https://avatars.githubusercontent.com/u/16708458?v=3", 1437 | "gravatar_id": "", 1438 | "url": "https://api.github.com/users/dear-github", 1439 | "html_url": "https://github.com/dear-github", 1440 | "followers_url": "https://api.github.com/users/dear-github/followers", 1441 | "following_url": "https://api.github.com/users/dear-github/following{/other_user}", 1442 | "gists_url": "https://api.github.com/users/dear-github/gists{/gist_id}", 1443 | "starred_url": "https://api.github.com/users/dear-github/starred{/owner}{/repo}", 1444 | "subscriptions_url": "https://api.github.com/users/dear-github/subscriptions", 1445 | "organizations_url": "https://api.github.com/users/dear-github/orgs", 1446 | "repos_url": "https://api.github.com/users/dear-github/repos", 1447 | "events_url": "https://api.github.com/users/dear-github/events{/privacy}", 1448 | "received_events_url": "https://api.github.com/users/dear-github/received_events", 1449 | "type": "Organization", 1450 | "site_admin": false 1451 | }, 1452 | "private": false, 1453 | "html_url": "https://github.com/dear-github/dear-github", 1454 | "description": " :incoming_envelope: An open letter to GitHub from the maintainers of open source projects", 1455 | "fork": false, 1456 | "url": "https://api.github.com/repos/dear-github/dear-github", 1457 | "forks_url": "https://api.github.com/repos/dear-github/dear-github/forks", 1458 | "keys_url": "https://api.github.com/repos/dear-github/dear-github/keys{/key_id}", 1459 | "collaborators_url": "https://api.github.com/repos/dear-github/dear-github/collaborators{/collaborator}", 1460 | "teams_url": "https://api.github.com/repos/dear-github/dear-github/teams", 1461 | "hooks_url": "https://api.github.com/repos/dear-github/dear-github/hooks", 1462 | "issue_events_url": "https://api.github.com/repos/dear-github/dear-github/issues/events{/number}", 1463 | "events_url": "https://api.github.com/repos/dear-github/dear-github/events", 1464 | "assignees_url": "https://api.github.com/repos/dear-github/dear-github/assignees{/user}", 1465 | "branches_url": "https://api.github.com/repos/dear-github/dear-github/branches{/branch}", 1466 | "tags_url": "https://api.github.com/repos/dear-github/dear-github/tags", 1467 | "blobs_url": "https://api.github.com/repos/dear-github/dear-github/git/blobs{/sha}", 1468 | "git_tags_url": "https://api.github.com/repos/dear-github/dear-github/git/tags{/sha}", 1469 | "git_refs_url": "https://api.github.com/repos/dear-github/dear-github/git/refs{/sha}", 1470 | "trees_url": "https://api.github.com/repos/dear-github/dear-github/git/trees{/sha}", 1471 | "statuses_url": "https://api.github.com/repos/dear-github/dear-github/statuses/{sha}", 1472 | "languages_url": "https://api.github.com/repos/dear-github/dear-github/languages", 1473 | "stargazers_url": "https://api.github.com/repos/dear-github/dear-github/stargazers", 1474 | "contributors_url": "https://api.github.com/repos/dear-github/dear-github/contributors", 1475 | "subscribers_url": "https://api.github.com/repos/dear-github/dear-github/subscribers", 1476 | "subscription_url": "https://api.github.com/repos/dear-github/dear-github/subscription", 1477 | "commits_url": "https://api.github.com/repos/dear-github/dear-github/commits{/sha}", 1478 | "git_commits_url": "https://api.github.com/repos/dear-github/dear-github/git/commits{/sha}", 1479 | "comments_url": "https://api.github.com/repos/dear-github/dear-github/comments{/number}", 1480 | "issue_comment_url": "https://api.github.com/repos/dear-github/dear-github/issues/comments{/number}", 1481 | "contents_url": "https://api.github.com/repos/dear-github/dear-github/contents/{+path}", 1482 | "compare_url": "https://api.github.com/repos/dear-github/dear-github/compare/{base}...{head}", 1483 | "merges_url": "https://api.github.com/repos/dear-github/dear-github/merges", 1484 | "archive_url": "https://api.github.com/repos/dear-github/dear-github/{archive_format}{/ref}", 1485 | "downloads_url": "https://api.github.com/repos/dear-github/dear-github/downloads", 1486 | "issues_url": "https://api.github.com/repos/dear-github/dear-github/issues{/number}", 1487 | "pulls_url": "https://api.github.com/repos/dear-github/dear-github/pulls{/number}", 1488 | "milestones_url": "https://api.github.com/repos/dear-github/dear-github/milestones{/number}", 1489 | "notifications_url": "https://api.github.com/repos/dear-github/dear-github/notifications{?since,all,participating}", 1490 | "labels_url": "https://api.github.com/repos/dear-github/dear-github/labels{/name}", 1491 | "releases_url": "https://api.github.com/repos/dear-github/dear-github/releases{/id}", 1492 | "deployments_url": "https://api.github.com/repos/dear-github/dear-github/deployments", 1493 | "created_at": "2016-01-14T19:00:39Z", 1494 | "updated_at": "2016-04-10T12:33:54Z", 1495 | "pushed_at": "2016-03-24T05:15:54Z", 1496 | "git_url": "git://github.com/dear-github/dear-github.git", 1497 | "ssh_url": "git@github.com:dear-github/dear-github.git", 1498 | "clone_url": "https://github.com/dear-github/dear-github.git", 1499 | "svn_url": "https://github.com/dear-github/dear-github", 1500 | "homepage": "", 1501 | "size": 57, 1502 | "stargazers_count": 4371, 1503 | "watchers_count": 4371, 1504 | "language": null, 1505 | "has_issues": true, 1506 | "has_downloads": true, 1507 | "has_wiki": true, 1508 | "has_pages": false, 1509 | "forks_count": 97, 1510 | "mirror_url": null, 1511 | "open_issues_count": 72, 1512 | "forks": 97, 1513 | "open_issues": 72, 1514 | "watchers": 4371, 1515 | "default_branch": "master", 1516 | "score": 1.0 1517 | }, 1518 | { 1519 | "id": 51649722, 1520 | "name": "how2", 1521 | "full_name": "santinic/how2", 1522 | "owner": { 1523 | "login": "santinic", 1524 | "id": 179558, 1525 | "avatar_url": "https://avatars.githubusercontent.com/u/179558?v=3", 1526 | "gravatar_id": "", 1527 | "url": "https://api.github.com/users/santinic", 1528 | "html_url": "https://github.com/santinic", 1529 | "followers_url": "https://api.github.com/users/santinic/followers", 1530 | "following_url": "https://api.github.com/users/santinic/following{/other_user}", 1531 | "gists_url": "https://api.github.com/users/santinic/gists{/gist_id}", 1532 | "starred_url": "https://api.github.com/users/santinic/starred{/owner}{/repo}", 1533 | "subscriptions_url": "https://api.github.com/users/santinic/subscriptions", 1534 | "organizations_url": "https://api.github.com/users/santinic/orgs", 1535 | "repos_url": "https://api.github.com/users/santinic/repos", 1536 | "events_url": "https://api.github.com/users/santinic/events{/privacy}", 1537 | "received_events_url": "https://api.github.com/users/santinic/received_events", 1538 | "type": "User", 1539 | "site_admin": false 1540 | }, 1541 | "private": false, 1542 | "html_url": "https://github.com/santinic/how2", 1543 | "description": "stackoverflow from the terminal", 1544 | "fork": false, 1545 | "url": "https://api.github.com/repos/santinic/how2", 1546 | "forks_url": "https://api.github.com/repos/santinic/how2/forks", 1547 | "keys_url": "https://api.github.com/repos/santinic/how2/keys{/key_id}", 1548 | "collaborators_url": "https://api.github.com/repos/santinic/how2/collaborators{/collaborator}", 1549 | "teams_url": "https://api.github.com/repos/santinic/how2/teams", 1550 | "hooks_url": "https://api.github.com/repos/santinic/how2/hooks", 1551 | "issue_events_url": "https://api.github.com/repos/santinic/how2/issues/events{/number}", 1552 | "events_url": "https://api.github.com/repos/santinic/how2/events", 1553 | "assignees_url": "https://api.github.com/repos/santinic/how2/assignees{/user}", 1554 | "branches_url": "https://api.github.com/repos/santinic/how2/branches{/branch}", 1555 | "tags_url": "https://api.github.com/repos/santinic/how2/tags", 1556 | "blobs_url": "https://api.github.com/repos/santinic/how2/git/blobs{/sha}", 1557 | "git_tags_url": "https://api.github.com/repos/santinic/how2/git/tags{/sha}", 1558 | "git_refs_url": "https://api.github.com/repos/santinic/how2/git/refs{/sha}", 1559 | "trees_url": "https://api.github.com/repos/santinic/how2/git/trees{/sha}", 1560 | "statuses_url": "https://api.github.com/repos/santinic/how2/statuses/{sha}", 1561 | "languages_url": "https://api.github.com/repos/santinic/how2/languages", 1562 | "stargazers_url": "https://api.github.com/repos/santinic/how2/stargazers", 1563 | "contributors_url": "https://api.github.com/repos/santinic/how2/contributors", 1564 | "subscribers_url": "https://api.github.com/repos/santinic/how2/subscribers", 1565 | "subscription_url": "https://api.github.com/repos/santinic/how2/subscription", 1566 | "commits_url": "https://api.github.com/repos/santinic/how2/commits{/sha}", 1567 | "git_commits_url": "https://api.github.com/repos/santinic/how2/git/commits{/sha}", 1568 | "comments_url": "https://api.github.com/repos/santinic/how2/comments{/number}", 1569 | "issue_comment_url": "https://api.github.com/repos/santinic/how2/issues/comments{/number}", 1570 | "contents_url": "https://api.github.com/repos/santinic/how2/contents/{+path}", 1571 | "compare_url": "https://api.github.com/repos/santinic/how2/compare/{base}...{head}", 1572 | "merges_url": "https://api.github.com/repos/santinic/how2/merges", 1573 | "archive_url": "https://api.github.com/repos/santinic/how2/{archive_format}{/ref}", 1574 | "downloads_url": "https://api.github.com/repos/santinic/how2/downloads", 1575 | "issues_url": "https://api.github.com/repos/santinic/how2/issues{/number}", 1576 | "pulls_url": "https://api.github.com/repos/santinic/how2/pulls{/number}", 1577 | "milestones_url": "https://api.github.com/repos/santinic/how2/milestones{/number}", 1578 | "notifications_url": "https://api.github.com/repos/santinic/how2/notifications{?since,all,participating}", 1579 | "labels_url": "https://api.github.com/repos/santinic/how2/labels{/name}", 1580 | "releases_url": "https://api.github.com/repos/santinic/how2/releases{/id}", 1581 | "deployments_url": "https://api.github.com/repos/santinic/how2/deployments", 1582 | "created_at": "2016-02-13T14:42:16Z", 1583 | "updated_at": "2016-04-10T06:58:40Z", 1584 | "pushed_at": "2016-03-19T10:34:49Z", 1585 | "git_url": "git://github.com/santinic/how2.git", 1586 | "ssh_url": "git@github.com:santinic/how2.git", 1587 | "clone_url": "https://github.com/santinic/how2.git", 1588 | "svn_url": "https://github.com/santinic/how2", 1589 | "homepage": "", 1590 | "size": 2257, 1591 | "stargazers_count": 4227, 1592 | "watchers_count": 4227, 1593 | "language": "JavaScript", 1594 | "has_issues": true, 1595 | "has_downloads": true, 1596 | "has_wiki": true, 1597 | "has_pages": false, 1598 | "forks_count": 94, 1599 | "mirror_url": null, 1600 | "open_issues_count": 24, 1601 | "forks": 94, 1602 | "open_issues": 24, 1603 | "watchers": 4227, 1604 | "default_branch": "master", 1605 | "score": 1.0 1606 | }, 1607 | { 1608 | "id": 53639099, 1609 | "name": "the-super-tiny-compiler", 1610 | "full_name": "thejameskyle/the-super-tiny-compiler", 1611 | "owner": { 1612 | "login": "thejameskyle", 1613 | "id": 952783, 1614 | "avatar_url": "https://avatars.githubusercontent.com/u/952783?v=3", 1615 | "gravatar_id": "", 1616 | "url": "https://api.github.com/users/thejameskyle", 1617 | "html_url": "https://github.com/thejameskyle", 1618 | "followers_url": "https://api.github.com/users/thejameskyle/followers", 1619 | "following_url": "https://api.github.com/users/thejameskyle/following{/other_user}", 1620 | "gists_url": "https://api.github.com/users/thejameskyle/gists{/gist_id}", 1621 | "starred_url": "https://api.github.com/users/thejameskyle/starred{/owner}{/repo}", 1622 | "subscriptions_url": "https://api.github.com/users/thejameskyle/subscriptions", 1623 | "organizations_url": "https://api.github.com/users/thejameskyle/orgs", 1624 | "repos_url": "https://api.github.com/users/thejameskyle/repos", 1625 | "events_url": "https://api.github.com/users/thejameskyle/events{/privacy}", 1626 | "received_events_url": "https://api.github.com/users/thejameskyle/received_events", 1627 | "type": "User", 1628 | "site_admin": false 1629 | }, 1630 | "private": false, 1631 | "html_url": "https://github.com/thejameskyle/the-super-tiny-compiler", 1632 | "description": ":snowman: Possibly the smallest compiler ever", 1633 | "fork": false, 1634 | "url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler", 1635 | "forks_url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler/forks", 1636 | "keys_url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler/keys{/key_id}", 1637 | "collaborators_url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler/collaborators{/collaborator}", 1638 | "teams_url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler/teams", 1639 | "hooks_url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler/hooks", 1640 | "issue_events_url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler/issues/events{/number}", 1641 | "events_url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler/events", 1642 | "assignees_url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler/assignees{/user}", 1643 | "branches_url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler/branches{/branch}", 1644 | "tags_url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler/tags", 1645 | "blobs_url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler/git/blobs{/sha}", 1646 | "git_tags_url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler/git/tags{/sha}", 1647 | "git_refs_url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler/git/refs{/sha}", 1648 | "trees_url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler/git/trees{/sha}", 1649 | "statuses_url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler/statuses/{sha}", 1650 | "languages_url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler/languages", 1651 | "stargazers_url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler/stargazers", 1652 | "contributors_url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler/contributors", 1653 | "subscribers_url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler/subscribers", 1654 | "subscription_url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler/subscription", 1655 | "commits_url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler/commits{/sha}", 1656 | "git_commits_url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler/git/commits{/sha}", 1657 | "comments_url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler/comments{/number}", 1658 | "issue_comment_url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler/issues/comments{/number}", 1659 | "contents_url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler/contents/{+path}", 1660 | "compare_url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler/compare/{base}...{head}", 1661 | "merges_url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler/merges", 1662 | "archive_url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler/{archive_format}{/ref}", 1663 | "downloads_url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler/downloads", 1664 | "issues_url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler/issues{/number}", 1665 | "pulls_url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler/pulls{/number}", 1666 | "milestones_url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler/milestones{/number}", 1667 | "notifications_url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler/notifications{?since,all,participating}", 1668 | "labels_url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler/labels{/name}", 1669 | "releases_url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler/releases{/id}", 1670 | "deployments_url": "https://api.github.com/repos/thejameskyle/the-super-tiny-compiler/deployments", 1671 | "created_at": "2016-03-11T04:19:18Z", 1672 | "updated_at": "2016-04-11T14:17:43Z", 1673 | "pushed_at": "2016-04-10T23:27:56Z", 1674 | "git_url": "git://github.com/thejameskyle/the-super-tiny-compiler.git", 1675 | "ssh_url": "git@github.com:thejameskyle/the-super-tiny-compiler.git", 1676 | "clone_url": "https://github.com/thejameskyle/the-super-tiny-compiler.git", 1677 | "svn_url": "https://github.com/thejameskyle/the-super-tiny-compiler", 1678 | "homepage": "", 1679 | "size": 72, 1680 | "stargazers_count": 4159, 1681 | "watchers_count": 4159, 1682 | "language": "JavaScript", 1683 | "has_issues": true, 1684 | "has_downloads": true, 1685 | "has_wiki": true, 1686 | "has_pages": false, 1687 | "forks_count": 194, 1688 | "mirror_url": null, 1689 | "open_issues_count": 3, 1690 | "forks": 194, 1691 | "open_issues": 3, 1692 | "watchers": 4159, 1693 | "default_branch": "master", 1694 | "score": 1.0 1695 | }, 1696 | { 1697 | "id": 48894950, 1698 | "name": "wechat-deleted-friends", 1699 | "full_name": "0x5e/wechat-deleted-friends", 1700 | "owner": { 1701 | "login": "0x5e", 1702 | "id": 5144674, 1703 | "avatar_url": "https://avatars.githubusercontent.com/u/5144674?v=3", 1704 | "gravatar_id": "", 1705 | "url": "https://api.github.com/users/0x5e", 1706 | "html_url": "https://github.com/0x5e", 1707 | "followers_url": "https://api.github.com/users/0x5e/followers", 1708 | "following_url": "https://api.github.com/users/0x5e/following{/other_user}", 1709 | "gists_url": "https://api.github.com/users/0x5e/gists{/gist_id}", 1710 | "starred_url": "https://api.github.com/users/0x5e/starred{/owner}{/repo}", 1711 | "subscriptions_url": "https://api.github.com/users/0x5e/subscriptions", 1712 | "organizations_url": "https://api.github.com/users/0x5e/orgs", 1713 | "repos_url": "https://api.github.com/users/0x5e/repos", 1714 | "events_url": "https://api.github.com/users/0x5e/events{/privacy}", 1715 | "received_events_url": "https://api.github.com/users/0x5e/received_events", 1716 | "type": "User", 1717 | "site_admin": false 1718 | }, 1719 | "private": false, 1720 | "html_url": "https://github.com/0x5e/wechat-deleted-friends", 1721 | "description": "查看被删的微信好友", 1722 | "fork": false, 1723 | "url": "https://api.github.com/repos/0x5e/wechat-deleted-friends", 1724 | "forks_url": "https://api.github.com/repos/0x5e/wechat-deleted-friends/forks", 1725 | "keys_url": "https://api.github.com/repos/0x5e/wechat-deleted-friends/keys{/key_id}", 1726 | "collaborators_url": "https://api.github.com/repos/0x5e/wechat-deleted-friends/collaborators{/collaborator}", 1727 | "teams_url": "https://api.github.com/repos/0x5e/wechat-deleted-friends/teams", 1728 | "hooks_url": "https://api.github.com/repos/0x5e/wechat-deleted-friends/hooks", 1729 | "issue_events_url": "https://api.github.com/repos/0x5e/wechat-deleted-friends/issues/events{/number}", 1730 | "events_url": "https://api.github.com/repos/0x5e/wechat-deleted-friends/events", 1731 | "assignees_url": "https://api.github.com/repos/0x5e/wechat-deleted-friends/assignees{/user}", 1732 | "branches_url": "https://api.github.com/repos/0x5e/wechat-deleted-friends/branches{/branch}", 1733 | "tags_url": "https://api.github.com/repos/0x5e/wechat-deleted-friends/tags", 1734 | "blobs_url": "https://api.github.com/repos/0x5e/wechat-deleted-friends/git/blobs{/sha}", 1735 | "git_tags_url": "https://api.github.com/repos/0x5e/wechat-deleted-friends/git/tags{/sha}", 1736 | "git_refs_url": "https://api.github.com/repos/0x5e/wechat-deleted-friends/git/refs{/sha}", 1737 | "trees_url": "https://api.github.com/repos/0x5e/wechat-deleted-friends/git/trees{/sha}", 1738 | "statuses_url": "https://api.github.com/repos/0x5e/wechat-deleted-friends/statuses/{sha}", 1739 | "languages_url": "https://api.github.com/repos/0x5e/wechat-deleted-friends/languages", 1740 | "stargazers_url": "https://api.github.com/repos/0x5e/wechat-deleted-friends/stargazers", 1741 | "contributors_url": "https://api.github.com/repos/0x5e/wechat-deleted-friends/contributors", 1742 | "subscribers_url": "https://api.github.com/repos/0x5e/wechat-deleted-friends/subscribers", 1743 | "subscription_url": "https://api.github.com/repos/0x5e/wechat-deleted-friends/subscription", 1744 | "commits_url": "https://api.github.com/repos/0x5e/wechat-deleted-friends/commits{/sha}", 1745 | "git_commits_url": "https://api.github.com/repos/0x5e/wechat-deleted-friends/git/commits{/sha}", 1746 | "comments_url": "https://api.github.com/repos/0x5e/wechat-deleted-friends/comments{/number}", 1747 | "issue_comment_url": "https://api.github.com/repos/0x5e/wechat-deleted-friends/issues/comments{/number}", 1748 | "contents_url": "https://api.github.com/repos/0x5e/wechat-deleted-friends/contents/{+path}", 1749 | "compare_url": "https://api.github.com/repos/0x5e/wechat-deleted-friends/compare/{base}...{head}", 1750 | "merges_url": "https://api.github.com/repos/0x5e/wechat-deleted-friends/merges", 1751 | "archive_url": "https://api.github.com/repos/0x5e/wechat-deleted-friends/{archive_format}{/ref}", 1752 | "downloads_url": "https://api.github.com/repos/0x5e/wechat-deleted-friends/downloads", 1753 | "issues_url": "https://api.github.com/repos/0x5e/wechat-deleted-friends/issues{/number}", 1754 | "pulls_url": "https://api.github.com/repos/0x5e/wechat-deleted-friends/pulls{/number}", 1755 | "milestones_url": "https://api.github.com/repos/0x5e/wechat-deleted-friends/milestones{/number}", 1756 | "notifications_url": "https://api.github.com/repos/0x5e/wechat-deleted-friends/notifications{?since,all,participating}", 1757 | "labels_url": "https://api.github.com/repos/0x5e/wechat-deleted-friends/labels{/name}", 1758 | "releases_url": "https://api.github.com/repos/0x5e/wechat-deleted-friends/releases{/id}", 1759 | "deployments_url": "https://api.github.com/repos/0x5e/wechat-deleted-friends/deployments", 1760 | "created_at": "2016-01-02T01:28:59Z", 1761 | "updated_at": "2016-04-11T13:46:11Z", 1762 | "pushed_at": "2016-04-07T09:37:22Z", 1763 | "git_url": "git://github.com/0x5e/wechat-deleted-friends.git", 1764 | "ssh_url": "git@github.com:0x5e/wechat-deleted-friends.git", 1765 | "clone_url": "https://github.com/0x5e/wechat-deleted-friends.git", 1766 | "svn_url": "https://github.com/0x5e/wechat-deleted-friends", 1767 | "homepage": null, 1768 | "size": 79, 1769 | "stargazers_count": 4146, 1770 | "watchers_count": 4146, 1771 | "language": "Python", 1772 | "has_issues": true, 1773 | "has_downloads": true, 1774 | "has_wiki": true, 1775 | "has_pages": false, 1776 | "forks_count": 1539, 1777 | "mirror_url": null, 1778 | "open_issues_count": 38, 1779 | "forks": 1539, 1780 | "open_issues": 38, 1781 | "watchers": 4146, 1782 | "default_branch": "master", 1783 | "score": 1.0 1784 | }, 1785 | { 1786 | "id": 51184395, 1787 | "name": "git-blame-someone-else", 1788 | "full_name": "jayphelps/git-blame-someone-else", 1789 | "owner": { 1790 | "login": "jayphelps", 1791 | "id": 762949, 1792 | "avatar_url": "https://avatars.githubusercontent.com/u/762949?v=3", 1793 | "gravatar_id": "", 1794 | "url": "https://api.github.com/users/jayphelps", 1795 | "html_url": "https://github.com/jayphelps", 1796 | "followers_url": "https://api.github.com/users/jayphelps/followers", 1797 | "following_url": "https://api.github.com/users/jayphelps/following{/other_user}", 1798 | "gists_url": "https://api.github.com/users/jayphelps/gists{/gist_id}", 1799 | "starred_url": "https://api.github.com/users/jayphelps/starred{/owner}{/repo}", 1800 | "subscriptions_url": "https://api.github.com/users/jayphelps/subscriptions", 1801 | "organizations_url": "https://api.github.com/users/jayphelps/orgs", 1802 | "repos_url": "https://api.github.com/users/jayphelps/repos", 1803 | "events_url": "https://api.github.com/users/jayphelps/events{/privacy}", 1804 | "received_events_url": "https://api.github.com/users/jayphelps/received_events", 1805 | "type": "User", 1806 | "site_admin": false 1807 | }, 1808 | "private": false, 1809 | "html_url": "https://github.com/jayphelps/git-blame-someone-else", 1810 | "description": "Blame someone else for your bad code.", 1811 | "fork": false, 1812 | "url": "https://api.github.com/repos/jayphelps/git-blame-someone-else", 1813 | "forks_url": "https://api.github.com/repos/jayphelps/git-blame-someone-else/forks", 1814 | "keys_url": "https://api.github.com/repos/jayphelps/git-blame-someone-else/keys{/key_id}", 1815 | "collaborators_url": "https://api.github.com/repos/jayphelps/git-blame-someone-else/collaborators{/collaborator}", 1816 | "teams_url": "https://api.github.com/repos/jayphelps/git-blame-someone-else/teams", 1817 | "hooks_url": "https://api.github.com/repos/jayphelps/git-blame-someone-else/hooks", 1818 | "issue_events_url": "https://api.github.com/repos/jayphelps/git-blame-someone-else/issues/events{/number}", 1819 | "events_url": "https://api.github.com/repos/jayphelps/git-blame-someone-else/events", 1820 | "assignees_url": "https://api.github.com/repos/jayphelps/git-blame-someone-else/assignees{/user}", 1821 | "branches_url": "https://api.github.com/repos/jayphelps/git-blame-someone-else/branches{/branch}", 1822 | "tags_url": "https://api.github.com/repos/jayphelps/git-blame-someone-else/tags", 1823 | "blobs_url": "https://api.github.com/repos/jayphelps/git-blame-someone-else/git/blobs{/sha}", 1824 | "git_tags_url": "https://api.github.com/repos/jayphelps/git-blame-someone-else/git/tags{/sha}", 1825 | "git_refs_url": "https://api.github.com/repos/jayphelps/git-blame-someone-else/git/refs{/sha}", 1826 | "trees_url": "https://api.github.com/repos/jayphelps/git-blame-someone-else/git/trees{/sha}", 1827 | "statuses_url": "https://api.github.com/repos/jayphelps/git-blame-someone-else/statuses/{sha}", 1828 | "languages_url": "https://api.github.com/repos/jayphelps/git-blame-someone-else/languages", 1829 | "stargazers_url": "https://api.github.com/repos/jayphelps/git-blame-someone-else/stargazers", 1830 | "contributors_url": "https://api.github.com/repos/jayphelps/git-blame-someone-else/contributors", 1831 | "subscribers_url": "https://api.github.com/repos/jayphelps/git-blame-someone-else/subscribers", 1832 | "subscription_url": "https://api.github.com/repos/jayphelps/git-blame-someone-else/subscription", 1833 | "commits_url": "https://api.github.com/repos/jayphelps/git-blame-someone-else/commits{/sha}", 1834 | "git_commits_url": "https://api.github.com/repos/jayphelps/git-blame-someone-else/git/commits{/sha}", 1835 | "comments_url": "https://api.github.com/repos/jayphelps/git-blame-someone-else/comments{/number}", 1836 | "issue_comment_url": "https://api.github.com/repos/jayphelps/git-blame-someone-else/issues/comments{/number}", 1837 | "contents_url": "https://api.github.com/repos/jayphelps/git-blame-someone-else/contents/{+path}", 1838 | "compare_url": "https://api.github.com/repos/jayphelps/git-blame-someone-else/compare/{base}...{head}", 1839 | "merges_url": "https://api.github.com/repos/jayphelps/git-blame-someone-else/merges", 1840 | "archive_url": "https://api.github.com/repos/jayphelps/git-blame-someone-else/{archive_format}{/ref}", 1841 | "downloads_url": "https://api.github.com/repos/jayphelps/git-blame-someone-else/downloads", 1842 | "issues_url": "https://api.github.com/repos/jayphelps/git-blame-someone-else/issues{/number}", 1843 | "pulls_url": "https://api.github.com/repos/jayphelps/git-blame-someone-else/pulls{/number}", 1844 | "milestones_url": "https://api.github.com/repos/jayphelps/git-blame-someone-else/milestones{/number}", 1845 | "notifications_url": "https://api.github.com/repos/jayphelps/git-blame-someone-else/notifications{?since,all,participating}", 1846 | "labels_url": "https://api.github.com/repos/jayphelps/git-blame-someone-else/labels{/name}", 1847 | "releases_url": "https://api.github.com/repos/jayphelps/git-blame-someone-else/releases{/id}", 1848 | "deployments_url": "https://api.github.com/repos/jayphelps/git-blame-someone-else/deployments", 1849 | "created_at": "2016-02-06T01:25:55Z", 1850 | "updated_at": "2016-04-11T13:57:58Z", 1851 | "pushed_at": "2016-04-05T12:57:57Z", 1852 | "git_url": "git://github.com/jayphelps/git-blame-someone-else.git", 1853 | "ssh_url": "git@github.com:jayphelps/git-blame-someone-else.git", 1854 | "clone_url": "https://github.com/jayphelps/git-blame-someone-else.git", 1855 | "svn_url": "https://github.com/jayphelps/git-blame-someone-else", 1856 | "homepage": null, 1857 | "size": 6, 1858 | "stargazers_count": 3663, 1859 | "watchers_count": 3663, 1860 | "language": "Shell", 1861 | "has_issues": true, 1862 | "has_downloads": true, 1863 | "has_wiki": true, 1864 | "has_pages": false, 1865 | "forks_count": 109, 1866 | "mirror_url": null, 1867 | "open_issues_count": 19, 1868 | "forks": 109, 1869 | "open_issues": 19, 1870 | "watchers": 3663, 1871 | "default_branch": "master", 1872 | "score": 1.0 1873 | }, 1874 | { 1875 | "id": 54449566, 1876 | "name": "alexa-avs-raspberry-pi", 1877 | "full_name": "amzn/alexa-avs-raspberry-pi", 1878 | "owner": { 1879 | "login": "amzn", 1880 | "id": 8594673, 1881 | "avatar_url": "https://avatars.githubusercontent.com/u/8594673?v=3", 1882 | "gravatar_id": "", 1883 | "url": "https://api.github.com/users/amzn", 1884 | "html_url": "https://github.com/amzn", 1885 | "followers_url": "https://api.github.com/users/amzn/followers", 1886 | "following_url": "https://api.github.com/users/amzn/following{/other_user}", 1887 | "gists_url": "https://api.github.com/users/amzn/gists{/gist_id}", 1888 | "starred_url": "https://api.github.com/users/amzn/starred{/owner}{/repo}", 1889 | "subscriptions_url": "https://api.github.com/users/amzn/subscriptions", 1890 | "organizations_url": "https://api.github.com/users/amzn/orgs", 1891 | "repos_url": "https://api.github.com/users/amzn/repos", 1892 | "events_url": "https://api.github.com/users/amzn/events{/privacy}", 1893 | "received_events_url": "https://api.github.com/users/amzn/received_events", 1894 | "type": "Organization", 1895 | "site_admin": false 1896 | }, 1897 | "private": false, 1898 | "html_url": "https://github.com/amzn/alexa-avs-raspberry-pi", 1899 | "description": "This project demonstrates how to access and test the Alexa Voice Service using a Java client (running on a Raspberry Pi), and a Node.js server.", 1900 | "fork": false, 1901 | "url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi", 1902 | "forks_url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi/forks", 1903 | "keys_url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi/keys{/key_id}", 1904 | "collaborators_url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi/collaborators{/collaborator}", 1905 | "teams_url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi/teams", 1906 | "hooks_url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi/hooks", 1907 | "issue_events_url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi/issues/events{/number}", 1908 | "events_url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi/events", 1909 | "assignees_url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi/assignees{/user}", 1910 | "branches_url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi/branches{/branch}", 1911 | "tags_url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi/tags", 1912 | "blobs_url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi/git/blobs{/sha}", 1913 | "git_tags_url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi/git/tags{/sha}", 1914 | "git_refs_url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi/git/refs{/sha}", 1915 | "trees_url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi/git/trees{/sha}", 1916 | "statuses_url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi/statuses/{sha}", 1917 | "languages_url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi/languages", 1918 | "stargazers_url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi/stargazers", 1919 | "contributors_url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi/contributors", 1920 | "subscribers_url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi/subscribers", 1921 | "subscription_url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi/subscription", 1922 | "commits_url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi/commits{/sha}", 1923 | "git_commits_url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi/git/commits{/sha}", 1924 | "comments_url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi/comments{/number}", 1925 | "issue_comment_url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi/issues/comments{/number}", 1926 | "contents_url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi/contents/{+path}", 1927 | "compare_url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi/compare/{base}...{head}", 1928 | "merges_url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi/merges", 1929 | "archive_url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi/{archive_format}{/ref}", 1930 | "downloads_url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi/downloads", 1931 | "issues_url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi/issues{/number}", 1932 | "pulls_url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi/pulls{/number}", 1933 | "milestones_url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi/milestones{/number}", 1934 | "notifications_url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi/notifications{?since,all,participating}", 1935 | "labels_url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi/labels{/name}", 1936 | "releases_url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi/releases{/id}", 1937 | "deployments_url": "https://api.github.com/repos/amzn/alexa-avs-raspberry-pi/deployments", 1938 | "created_at": "2016-03-22T06:03:32Z", 1939 | "updated_at": "2016-04-11T11:16:14Z", 1940 | "pushed_at": "2016-04-08T17:25:26Z", 1941 | "git_url": "git://github.com/amzn/alexa-avs-raspberry-pi.git", 1942 | "ssh_url": "git@github.com:amzn/alexa-avs-raspberry-pi.git", 1943 | "clone_url": "https://github.com/amzn/alexa-avs-raspberry-pi.git", 1944 | "svn_url": "https://github.com/amzn/alexa-avs-raspberry-pi", 1945 | "homepage": "https://developer.amazon.com/avs", 1946 | "size": 10360, 1947 | "stargazers_count": 3614, 1948 | "watchers_count": 3614, 1949 | "language": null, 1950 | "has_issues": true, 1951 | "has_downloads": true, 1952 | "has_wiki": false, 1953 | "has_pages": false, 1954 | "forks_count": 375, 1955 | "mirror_url": null, 1956 | "open_issues_count": 65, 1957 | "forks": 375, 1958 | "open_issues": 65, 1959 | "watchers": 3614, 1960 | "default_branch": "master", 1961 | "score": 1.0 1962 | }, 1963 | { 1964 | "id": 51771596, 1965 | "name": "okayNav", 1966 | "full_name": "VPenkov/okayNav", 1967 | "owner": { 1968 | "login": "VPenkov", 1969 | "id": 1693651, 1970 | "avatar_url": "https://avatars.githubusercontent.com/u/1693651?v=3", 1971 | "gravatar_id": "", 1972 | "url": "https://api.github.com/users/VPenkov", 1973 | "html_url": "https://github.com/VPenkov", 1974 | "followers_url": "https://api.github.com/users/VPenkov/followers", 1975 | "following_url": "https://api.github.com/users/VPenkov/following{/other_user}", 1976 | "gists_url": "https://api.github.com/users/VPenkov/gists{/gist_id}", 1977 | "starred_url": "https://api.github.com/users/VPenkov/starred{/owner}{/repo}", 1978 | "subscriptions_url": "https://api.github.com/users/VPenkov/subscriptions", 1979 | "organizations_url": "https://api.github.com/users/VPenkov/orgs", 1980 | "repos_url": "https://api.github.com/users/VPenkov/repos", 1981 | "events_url": "https://api.github.com/users/VPenkov/events{/privacy}", 1982 | "received_events_url": "https://api.github.com/users/VPenkov/received_events", 1983 | "type": "User", 1984 | "site_admin": false 1985 | }, 1986 | "private": false, 1987 | "html_url": "https://github.com/VPenkov/okayNav", 1988 | "description": "The world's okayest responsive navigation", 1989 | "fork": false, 1990 | "url": "https://api.github.com/repos/VPenkov/okayNav", 1991 | "forks_url": "https://api.github.com/repos/VPenkov/okayNav/forks", 1992 | "keys_url": "https://api.github.com/repos/VPenkov/okayNav/keys{/key_id}", 1993 | "collaborators_url": "https://api.github.com/repos/VPenkov/okayNav/collaborators{/collaborator}", 1994 | "teams_url": "https://api.github.com/repos/VPenkov/okayNav/teams", 1995 | "hooks_url": "https://api.github.com/repos/VPenkov/okayNav/hooks", 1996 | "issue_events_url": "https://api.github.com/repos/VPenkov/okayNav/issues/events{/number}", 1997 | "events_url": "https://api.github.com/repos/VPenkov/okayNav/events", 1998 | "assignees_url": "https://api.github.com/repos/VPenkov/okayNav/assignees{/user}", 1999 | "branches_url": "https://api.github.com/repos/VPenkov/okayNav/branches{/branch}", 2000 | "tags_url": "https://api.github.com/repos/VPenkov/okayNav/tags", 2001 | "blobs_url": "https://api.github.com/repos/VPenkov/okayNav/git/blobs{/sha}", 2002 | "git_tags_url": "https://api.github.com/repos/VPenkov/okayNav/git/tags{/sha}", 2003 | "git_refs_url": "https://api.github.com/repos/VPenkov/okayNav/git/refs{/sha}", 2004 | "trees_url": "https://api.github.com/repos/VPenkov/okayNav/git/trees{/sha}", 2005 | "statuses_url": "https://api.github.com/repos/VPenkov/okayNav/statuses/{sha}", 2006 | "languages_url": "https://api.github.com/repos/VPenkov/okayNav/languages", 2007 | "stargazers_url": "https://api.github.com/repos/VPenkov/okayNav/stargazers", 2008 | "contributors_url": "https://api.github.com/repos/VPenkov/okayNav/contributors", 2009 | "subscribers_url": "https://api.github.com/repos/VPenkov/okayNav/subscribers", 2010 | "subscription_url": "https://api.github.com/repos/VPenkov/okayNav/subscription", 2011 | "commits_url": "https://api.github.com/repos/VPenkov/okayNav/commits{/sha}", 2012 | "git_commits_url": "https://api.github.com/repos/VPenkov/okayNav/git/commits{/sha}", 2013 | "comments_url": "https://api.github.com/repos/VPenkov/okayNav/comments{/number}", 2014 | "issue_comment_url": "https://api.github.com/repos/VPenkov/okayNav/issues/comments{/number}", 2015 | "contents_url": "https://api.github.com/repos/VPenkov/okayNav/contents/{+path}", 2016 | "compare_url": "https://api.github.com/repos/VPenkov/okayNav/compare/{base}...{head}", 2017 | "merges_url": "https://api.github.com/repos/VPenkov/okayNav/merges", 2018 | "archive_url": "https://api.github.com/repos/VPenkov/okayNav/{archive_format}{/ref}", 2019 | "downloads_url": "https://api.github.com/repos/VPenkov/okayNav/downloads", 2020 | "issues_url": "https://api.github.com/repos/VPenkov/okayNav/issues{/number}", 2021 | "pulls_url": "https://api.github.com/repos/VPenkov/okayNav/pulls{/number}", 2022 | "milestones_url": "https://api.github.com/repos/VPenkov/okayNav/milestones{/number}", 2023 | "notifications_url": "https://api.github.com/repos/VPenkov/okayNav/notifications{?since,all,participating}", 2024 | "labels_url": "https://api.github.com/repos/VPenkov/okayNav/labels{/name}", 2025 | "releases_url": "https://api.github.com/repos/VPenkov/okayNav/releases{/id}", 2026 | "deployments_url": "https://api.github.com/repos/VPenkov/okayNav/deployments", 2027 | "created_at": "2016-02-15T17:12:47Z", 2028 | "updated_at": "2016-04-11T13:28:46Z", 2029 | "pushed_at": "2016-03-18T16:07:18Z", 2030 | "git_url": "git://github.com/VPenkov/okayNav.git", 2031 | "ssh_url": "git@github.com:VPenkov/okayNav.git", 2032 | "clone_url": "https://github.com/VPenkov/okayNav.git", 2033 | "svn_url": "https://github.com/VPenkov/okayNav", 2034 | "homepage": null, 2035 | "size": 2773, 2036 | "stargazers_count": 3600, 2037 | "watchers_count": 3600, 2038 | "language": "JavaScript", 2039 | "has_issues": true, 2040 | "has_downloads": true, 2041 | "has_wiki": true, 2042 | "has_pages": false, 2043 | "forks_count": 251, 2044 | "mirror_url": null, 2045 | "open_issues_count": 15, 2046 | "forks": 251, 2047 | "open_issues": 15, 2048 | "watchers": 3600, 2049 | "default_branch": "master", 2050 | "score": 1.0 2051 | }, 2052 | { 2053 | "id": 49910095, 2054 | "name": "vapor", 2055 | "full_name": "qutheory/vapor", 2056 | "owner": { 2057 | "login": "qutheory", 2058 | "id": 17364220, 2059 | "avatar_url": "https://avatars.githubusercontent.com/u/17364220?v=3", 2060 | "gravatar_id": "", 2061 | "url": "https://api.github.com/users/qutheory", 2062 | "html_url": "https://github.com/qutheory", 2063 | "followers_url": "https://api.github.com/users/qutheory/followers", 2064 | "following_url": "https://api.github.com/users/qutheory/following{/other_user}", 2065 | "gists_url": "https://api.github.com/users/qutheory/gists{/gist_id}", 2066 | "starred_url": "https://api.github.com/users/qutheory/starred{/owner}{/repo}", 2067 | "subscriptions_url": "https://api.github.com/users/qutheory/subscriptions", 2068 | "organizations_url": "https://api.github.com/users/qutheory/orgs", 2069 | "repos_url": "https://api.github.com/users/qutheory/repos", 2070 | "events_url": "https://api.github.com/users/qutheory/events{/privacy}", 2071 | "received_events_url": "https://api.github.com/users/qutheory/received_events", 2072 | "type": "Organization", 2073 | "site_admin": false 2074 | }, 2075 | "private": false, 2076 | "html_url": "https://github.com/qutheory/vapor", 2077 | "description": "An elegant web framework for Swift >=2.2 that works on OS X and Ubuntu.", 2078 | "fork": false, 2079 | "url": "https://api.github.com/repos/qutheory/vapor", 2080 | "forks_url": "https://api.github.com/repos/qutheory/vapor/forks", 2081 | "keys_url": "https://api.github.com/repos/qutheory/vapor/keys{/key_id}", 2082 | "collaborators_url": "https://api.github.com/repos/qutheory/vapor/collaborators{/collaborator}", 2083 | "teams_url": "https://api.github.com/repos/qutheory/vapor/teams", 2084 | "hooks_url": "https://api.github.com/repos/qutheory/vapor/hooks", 2085 | "issue_events_url": "https://api.github.com/repos/qutheory/vapor/issues/events{/number}", 2086 | "events_url": "https://api.github.com/repos/qutheory/vapor/events", 2087 | "assignees_url": "https://api.github.com/repos/qutheory/vapor/assignees{/user}", 2088 | "branches_url": "https://api.github.com/repos/qutheory/vapor/branches{/branch}", 2089 | "tags_url": "https://api.github.com/repos/qutheory/vapor/tags", 2090 | "blobs_url": "https://api.github.com/repos/qutheory/vapor/git/blobs{/sha}", 2091 | "git_tags_url": "https://api.github.com/repos/qutheory/vapor/git/tags{/sha}", 2092 | "git_refs_url": "https://api.github.com/repos/qutheory/vapor/git/refs{/sha}", 2093 | "trees_url": "https://api.github.com/repos/qutheory/vapor/git/trees{/sha}", 2094 | "statuses_url": "https://api.github.com/repos/qutheory/vapor/statuses/{sha}", 2095 | "languages_url": "https://api.github.com/repos/qutheory/vapor/languages", 2096 | "stargazers_url": "https://api.github.com/repos/qutheory/vapor/stargazers", 2097 | "contributors_url": "https://api.github.com/repos/qutheory/vapor/contributors", 2098 | "subscribers_url": "https://api.github.com/repos/qutheory/vapor/subscribers", 2099 | "subscription_url": "https://api.github.com/repos/qutheory/vapor/subscription", 2100 | "commits_url": "https://api.github.com/repos/qutheory/vapor/commits{/sha}", 2101 | "git_commits_url": "https://api.github.com/repos/qutheory/vapor/git/commits{/sha}", 2102 | "comments_url": "https://api.github.com/repos/qutheory/vapor/comments{/number}", 2103 | "issue_comment_url": "https://api.github.com/repos/qutheory/vapor/issues/comments{/number}", 2104 | "contents_url": "https://api.github.com/repos/qutheory/vapor/contents/{+path}", 2105 | "compare_url": "https://api.github.com/repos/qutheory/vapor/compare/{base}...{head}", 2106 | "merges_url": "https://api.github.com/repos/qutheory/vapor/merges", 2107 | "archive_url": "https://api.github.com/repos/qutheory/vapor/{archive_format}{/ref}", 2108 | "downloads_url": "https://api.github.com/repos/qutheory/vapor/downloads", 2109 | "issues_url": "https://api.github.com/repos/qutheory/vapor/issues{/number}", 2110 | "pulls_url": "https://api.github.com/repos/qutheory/vapor/pulls{/number}", 2111 | "milestones_url": "https://api.github.com/repos/qutheory/vapor/milestones{/number}", 2112 | "notifications_url": "https://api.github.com/repos/qutheory/vapor/notifications{?since,all,participating}", 2113 | "labels_url": "https://api.github.com/repos/qutheory/vapor/labels{/name}", 2114 | "releases_url": "https://api.github.com/repos/qutheory/vapor/releases{/id}", 2115 | "deployments_url": "https://api.github.com/repos/qutheory/vapor/deployments", 2116 | "created_at": "2016-01-18T22:37:52Z", 2117 | "updated_at": "2016-04-11T12:45:29Z", 2118 | "pushed_at": "2016-04-11T13:33:11Z", 2119 | "git_url": "git://github.com/qutheory/vapor.git", 2120 | "ssh_url": "git@github.com:qutheory/vapor.git", 2121 | "clone_url": "https://github.com/qutheory/vapor.git", 2122 | "svn_url": "https://github.com/qutheory/vapor", 2123 | "homepage": "qutheory.io", 2124 | "size": 6281, 2125 | "stargazers_count": 3537, 2126 | "watchers_count": 3537, 2127 | "language": "Swift", 2128 | "has_issues": true, 2129 | "has_downloads": true, 2130 | "has_wiki": true, 2131 | "has_pages": false, 2132 | "forks_count": 168, 2133 | "mirror_url": null, 2134 | "open_issues_count": 4, 2135 | "forks": 168, 2136 | "open_issues": 4, 2137 | "watchers": 3537, 2138 | "default_branch": "master", 2139 | "score": 1.0 2140 | }, 2141 | { 2142 | "id": 54173593, 2143 | "name": "react-storybook", 2144 | "full_name": "kadirahq/react-storybook", 2145 | "owner": { 2146 | "login": "kadirahq", 2147 | "id": 13164545, 2148 | "avatar_url": "https://avatars.githubusercontent.com/u/13164545?v=3", 2149 | "gravatar_id": "", 2150 | "url": "https://api.github.com/users/kadirahq", 2151 | "html_url": "https://github.com/kadirahq", 2152 | "followers_url": "https://api.github.com/users/kadirahq/followers", 2153 | "following_url": "https://api.github.com/users/kadirahq/following{/other_user}", 2154 | "gists_url": "https://api.github.com/users/kadirahq/gists{/gist_id}", 2155 | "starred_url": "https://api.github.com/users/kadirahq/starred{/owner}{/repo}", 2156 | "subscriptions_url": "https://api.github.com/users/kadirahq/subscriptions", 2157 | "organizations_url": "https://api.github.com/users/kadirahq/orgs", 2158 | "repos_url": "https://api.github.com/users/kadirahq/repos", 2159 | "events_url": "https://api.github.com/users/kadirahq/events{/privacy}", 2160 | "received_events_url": "https://api.github.com/users/kadirahq/received_events", 2161 | "type": "Organization", 2162 | "site_admin": false 2163 | }, 2164 | "private": false, 2165 | "html_url": "https://github.com/kadirahq/react-storybook", 2166 | "description": "Isolate your React UI Component development from the main app", 2167 | "fork": false, 2168 | "url": "https://api.github.com/repos/kadirahq/react-storybook", 2169 | "forks_url": "https://api.github.com/repos/kadirahq/react-storybook/forks", 2170 | "keys_url": "https://api.github.com/repos/kadirahq/react-storybook/keys{/key_id}", 2171 | "collaborators_url": "https://api.github.com/repos/kadirahq/react-storybook/collaborators{/collaborator}", 2172 | "teams_url": "https://api.github.com/repos/kadirahq/react-storybook/teams", 2173 | "hooks_url": "https://api.github.com/repos/kadirahq/react-storybook/hooks", 2174 | "issue_events_url": "https://api.github.com/repos/kadirahq/react-storybook/issues/events{/number}", 2175 | "events_url": "https://api.github.com/repos/kadirahq/react-storybook/events", 2176 | "assignees_url": "https://api.github.com/repos/kadirahq/react-storybook/assignees{/user}", 2177 | "branches_url": "https://api.github.com/repos/kadirahq/react-storybook/branches{/branch}", 2178 | "tags_url": "https://api.github.com/repos/kadirahq/react-storybook/tags", 2179 | "blobs_url": "https://api.github.com/repos/kadirahq/react-storybook/git/blobs{/sha}", 2180 | "git_tags_url": "https://api.github.com/repos/kadirahq/react-storybook/git/tags{/sha}", 2181 | "git_refs_url": "https://api.github.com/repos/kadirahq/react-storybook/git/refs{/sha}", 2182 | "trees_url": "https://api.github.com/repos/kadirahq/react-storybook/git/trees{/sha}", 2183 | "statuses_url": "https://api.github.com/repos/kadirahq/react-storybook/statuses/{sha}", 2184 | "languages_url": "https://api.github.com/repos/kadirahq/react-storybook/languages", 2185 | "stargazers_url": "https://api.github.com/repos/kadirahq/react-storybook/stargazers", 2186 | "contributors_url": "https://api.github.com/repos/kadirahq/react-storybook/contributors", 2187 | "subscribers_url": "https://api.github.com/repos/kadirahq/react-storybook/subscribers", 2188 | "subscription_url": "https://api.github.com/repos/kadirahq/react-storybook/subscription", 2189 | "commits_url": "https://api.github.com/repos/kadirahq/react-storybook/commits{/sha}", 2190 | "git_commits_url": "https://api.github.com/repos/kadirahq/react-storybook/git/commits{/sha}", 2191 | "comments_url": "https://api.github.com/repos/kadirahq/react-storybook/comments{/number}", 2192 | "issue_comment_url": "https://api.github.com/repos/kadirahq/react-storybook/issues/comments{/number}", 2193 | "contents_url": "https://api.github.com/repos/kadirahq/react-storybook/contents/{+path}", 2194 | "compare_url": "https://api.github.com/repos/kadirahq/react-storybook/compare/{base}...{head}", 2195 | "merges_url": "https://api.github.com/repos/kadirahq/react-storybook/merges", 2196 | "archive_url": "https://api.github.com/repos/kadirahq/react-storybook/{archive_format}{/ref}", 2197 | "downloads_url": "https://api.github.com/repos/kadirahq/react-storybook/downloads", 2198 | "issues_url": "https://api.github.com/repos/kadirahq/react-storybook/issues{/number}", 2199 | "pulls_url": "https://api.github.com/repos/kadirahq/react-storybook/pulls{/number}", 2200 | "milestones_url": "https://api.github.com/repos/kadirahq/react-storybook/milestones{/number}", 2201 | "notifications_url": "https://api.github.com/repos/kadirahq/react-storybook/notifications{?since,all,participating}", 2202 | "labels_url": "https://api.github.com/repos/kadirahq/react-storybook/labels{/name}", 2203 | "releases_url": "https://api.github.com/repos/kadirahq/react-storybook/releases{/id}", 2204 | "deployments_url": "https://api.github.com/repos/kadirahq/react-storybook/deployments", 2205 | "created_at": "2016-03-18T04:23:44Z", 2206 | "updated_at": "2016-04-11T14:29:01Z", 2207 | "pushed_at": "2016-04-11T14:12:40Z", 2208 | "git_url": "git://github.com/kadirahq/react-storybook.git", 2209 | "ssh_url": "git@github.com:kadirahq/react-storybook.git", 2210 | "clone_url": "https://github.com/kadirahq/react-storybook.git", 2211 | "svn_url": "https://github.com/kadirahq/react-storybook", 2212 | "homepage": "", 2213 | "size": 765, 2214 | "stargazers_count": 3428, 2215 | "watchers_count": 3428, 2216 | "language": "JavaScript", 2217 | "has_issues": true, 2218 | "has_downloads": true, 2219 | "has_wiki": true, 2220 | "has_pages": false, 2221 | "forks_count": 104, 2222 | "mirror_url": null, 2223 | "open_issues_count": 37, 2224 | "forks": 104, 2225 | "open_issues": 37, 2226 | "watchers": 3428, 2227 | "default_branch": "master", 2228 | "score": 1.0 2229 | }, 2230 | { 2231 | "id": 49760504, 2232 | "name": "TrumpScript", 2233 | "full_name": "samshadwell/TrumpScript", 2234 | "owner": { 2235 | "login": "samshadwell", 2236 | "id": 3265633, 2237 | "avatar_url": "https://avatars.githubusercontent.com/u/3265633?v=3", 2238 | "gravatar_id": "", 2239 | "url": "https://api.github.com/users/samshadwell", 2240 | "html_url": "https://github.com/samshadwell", 2241 | "followers_url": "https://api.github.com/users/samshadwell/followers", 2242 | "following_url": "https://api.github.com/users/samshadwell/following{/other_user}", 2243 | "gists_url": "https://api.github.com/users/samshadwell/gists{/gist_id}", 2244 | "starred_url": "https://api.github.com/users/samshadwell/starred{/owner}{/repo}", 2245 | "subscriptions_url": "https://api.github.com/users/samshadwell/subscriptions", 2246 | "organizations_url": "https://api.github.com/users/samshadwell/orgs", 2247 | "repos_url": "https://api.github.com/users/samshadwell/repos", 2248 | "events_url": "https://api.github.com/users/samshadwell/events{/privacy}", 2249 | "received_events_url": "https://api.github.com/users/samshadwell/received_events", 2250 | "type": "User", 2251 | "site_admin": false 2252 | }, 2253 | "private": false, 2254 | "html_url": "https://github.com/samshadwell/TrumpScript", 2255 | "description": "Make Python great again", 2256 | "fork": false, 2257 | "url": "https://api.github.com/repos/samshadwell/TrumpScript", 2258 | "forks_url": "https://api.github.com/repos/samshadwell/TrumpScript/forks", 2259 | "keys_url": "https://api.github.com/repos/samshadwell/TrumpScript/keys{/key_id}", 2260 | "collaborators_url": "https://api.github.com/repos/samshadwell/TrumpScript/collaborators{/collaborator}", 2261 | "teams_url": "https://api.github.com/repos/samshadwell/TrumpScript/teams", 2262 | "hooks_url": "https://api.github.com/repos/samshadwell/TrumpScript/hooks", 2263 | "issue_events_url": "https://api.github.com/repos/samshadwell/TrumpScript/issues/events{/number}", 2264 | "events_url": "https://api.github.com/repos/samshadwell/TrumpScript/events", 2265 | "assignees_url": "https://api.github.com/repos/samshadwell/TrumpScript/assignees{/user}", 2266 | "branches_url": "https://api.github.com/repos/samshadwell/TrumpScript/branches{/branch}", 2267 | "tags_url": "https://api.github.com/repos/samshadwell/TrumpScript/tags", 2268 | "blobs_url": "https://api.github.com/repos/samshadwell/TrumpScript/git/blobs{/sha}", 2269 | "git_tags_url": "https://api.github.com/repos/samshadwell/TrumpScript/git/tags{/sha}", 2270 | "git_refs_url": "https://api.github.com/repos/samshadwell/TrumpScript/git/refs{/sha}", 2271 | "trees_url": "https://api.github.com/repos/samshadwell/TrumpScript/git/trees{/sha}", 2272 | "statuses_url": "https://api.github.com/repos/samshadwell/TrumpScript/statuses/{sha}", 2273 | "languages_url": "https://api.github.com/repos/samshadwell/TrumpScript/languages", 2274 | "stargazers_url": "https://api.github.com/repos/samshadwell/TrumpScript/stargazers", 2275 | "contributors_url": "https://api.github.com/repos/samshadwell/TrumpScript/contributors", 2276 | "subscribers_url": "https://api.github.com/repos/samshadwell/TrumpScript/subscribers", 2277 | "subscription_url": "https://api.github.com/repos/samshadwell/TrumpScript/subscription", 2278 | "commits_url": "https://api.github.com/repos/samshadwell/TrumpScript/commits{/sha}", 2279 | "git_commits_url": "https://api.github.com/repos/samshadwell/TrumpScript/git/commits{/sha}", 2280 | "comments_url": "https://api.github.com/repos/samshadwell/TrumpScript/comments{/number}", 2281 | "issue_comment_url": "https://api.github.com/repos/samshadwell/TrumpScript/issues/comments{/number}", 2282 | "contents_url": "https://api.github.com/repos/samshadwell/TrumpScript/contents/{+path}", 2283 | "compare_url": "https://api.github.com/repos/samshadwell/TrumpScript/compare/{base}...{head}", 2284 | "merges_url": "https://api.github.com/repos/samshadwell/TrumpScript/merges", 2285 | "archive_url": "https://api.github.com/repos/samshadwell/TrumpScript/{archive_format}{/ref}", 2286 | "downloads_url": "https://api.github.com/repos/samshadwell/TrumpScript/downloads", 2287 | "issues_url": "https://api.github.com/repos/samshadwell/TrumpScript/issues{/number}", 2288 | "pulls_url": "https://api.github.com/repos/samshadwell/TrumpScript/pulls{/number}", 2289 | "milestones_url": "https://api.github.com/repos/samshadwell/TrumpScript/milestones{/number}", 2290 | "notifications_url": "https://api.github.com/repos/samshadwell/TrumpScript/notifications{?since,all,participating}", 2291 | "labels_url": "https://api.github.com/repos/samshadwell/TrumpScript/labels{/name}", 2292 | "releases_url": "https://api.github.com/repos/samshadwell/TrumpScript/releases{/id}", 2293 | "deployments_url": "https://api.github.com/repos/samshadwell/TrumpScript/deployments", 2294 | "created_at": "2016-01-16T05:23:07Z", 2295 | "updated_at": "2016-04-11T12:09:40Z", 2296 | "pushed_at": "2016-03-25T09:23:42Z", 2297 | "git_url": "git://github.com/samshadwell/TrumpScript.git", 2298 | "ssh_url": "git@github.com:samshadwell/TrumpScript.git", 2299 | "clone_url": "https://github.com/samshadwell/TrumpScript.git", 2300 | "svn_url": "https://github.com/samshadwell/TrumpScript", 2301 | "homepage": "", 2302 | "size": 338, 2303 | "stargazers_count": 3335, 2304 | "watchers_count": 3335, 2305 | "language": "Python", 2306 | "has_issues": true, 2307 | "has_downloads": true, 2308 | "has_wiki": true, 2309 | "has_pages": true, 2310 | "forks_count": 203, 2311 | "mirror_url": null, 2312 | "open_issues_count": 34, 2313 | "forks": 203, 2314 | "open_issues": 34, 2315 | "watchers": 3335, 2316 | "default_branch": "master", 2317 | "score": 1.0 2318 | }, 2319 | { 2320 | "id": 51620349, 2321 | "name": "Advance", 2322 | "full_name": "storehouse/Advance", 2323 | "owner": { 2324 | "login": "storehouse", 2325 | "id": 3597545, 2326 | "avatar_url": "https://avatars.githubusercontent.com/u/3597545?v=3", 2327 | "gravatar_id": "", 2328 | "url": "https://api.github.com/users/storehouse", 2329 | "html_url": "https://github.com/storehouse", 2330 | "followers_url": "https://api.github.com/users/storehouse/followers", 2331 | "following_url": "https://api.github.com/users/storehouse/following{/other_user}", 2332 | "gists_url": "https://api.github.com/users/storehouse/gists{/gist_id}", 2333 | "starred_url": "https://api.github.com/users/storehouse/starred{/owner}{/repo}", 2334 | "subscriptions_url": "https://api.github.com/users/storehouse/subscriptions", 2335 | "organizations_url": "https://api.github.com/users/storehouse/orgs", 2336 | "repos_url": "https://api.github.com/users/storehouse/repos", 2337 | "events_url": "https://api.github.com/users/storehouse/events{/privacy}", 2338 | "received_events_url": "https://api.github.com/users/storehouse/received_events", 2339 | "type": "Organization", 2340 | "site_admin": false 2341 | }, 2342 | "private": false, 2343 | "html_url": "https://github.com/storehouse/Advance", 2344 | "description": "A powerful animation framework for iOS, tvOS, and OS X.", 2345 | "fork": false, 2346 | "url": "https://api.github.com/repos/storehouse/Advance", 2347 | "forks_url": "https://api.github.com/repos/storehouse/Advance/forks", 2348 | "keys_url": "https://api.github.com/repos/storehouse/Advance/keys{/key_id}", 2349 | "collaborators_url": "https://api.github.com/repos/storehouse/Advance/collaborators{/collaborator}", 2350 | "teams_url": "https://api.github.com/repos/storehouse/Advance/teams", 2351 | "hooks_url": "https://api.github.com/repos/storehouse/Advance/hooks", 2352 | "issue_events_url": "https://api.github.com/repos/storehouse/Advance/issues/events{/number}", 2353 | "events_url": "https://api.github.com/repos/storehouse/Advance/events", 2354 | "assignees_url": "https://api.github.com/repos/storehouse/Advance/assignees{/user}", 2355 | "branches_url": "https://api.github.com/repos/storehouse/Advance/branches{/branch}", 2356 | "tags_url": "https://api.github.com/repos/storehouse/Advance/tags", 2357 | "blobs_url": "https://api.github.com/repos/storehouse/Advance/git/blobs{/sha}", 2358 | "git_tags_url": "https://api.github.com/repos/storehouse/Advance/git/tags{/sha}", 2359 | "git_refs_url": "https://api.github.com/repos/storehouse/Advance/git/refs{/sha}", 2360 | "trees_url": "https://api.github.com/repos/storehouse/Advance/git/trees{/sha}", 2361 | "statuses_url": "https://api.github.com/repos/storehouse/Advance/statuses/{sha}", 2362 | "languages_url": "https://api.github.com/repos/storehouse/Advance/languages", 2363 | "stargazers_url": "https://api.github.com/repos/storehouse/Advance/stargazers", 2364 | "contributors_url": "https://api.github.com/repos/storehouse/Advance/contributors", 2365 | "subscribers_url": "https://api.github.com/repos/storehouse/Advance/subscribers", 2366 | "subscription_url": "https://api.github.com/repos/storehouse/Advance/subscription", 2367 | "commits_url": "https://api.github.com/repos/storehouse/Advance/commits{/sha}", 2368 | "git_commits_url": "https://api.github.com/repos/storehouse/Advance/git/commits{/sha}", 2369 | "comments_url": "https://api.github.com/repos/storehouse/Advance/comments{/number}", 2370 | "issue_comment_url": "https://api.github.com/repos/storehouse/Advance/issues/comments{/number}", 2371 | "contents_url": "https://api.github.com/repos/storehouse/Advance/contents/{+path}", 2372 | "compare_url": "https://api.github.com/repos/storehouse/Advance/compare/{base}...{head}", 2373 | "merges_url": "https://api.github.com/repos/storehouse/Advance/merges", 2374 | "archive_url": "https://api.github.com/repos/storehouse/Advance/{archive_format}{/ref}", 2375 | "downloads_url": "https://api.github.com/repos/storehouse/Advance/downloads", 2376 | "issues_url": "https://api.github.com/repos/storehouse/Advance/issues{/number}", 2377 | "pulls_url": "https://api.github.com/repos/storehouse/Advance/pulls{/number}", 2378 | "milestones_url": "https://api.github.com/repos/storehouse/Advance/milestones{/number}", 2379 | "notifications_url": "https://api.github.com/repos/storehouse/Advance/notifications{?since,all,participating}", 2380 | "labels_url": "https://api.github.com/repos/storehouse/Advance/labels{/name}", 2381 | "releases_url": "https://api.github.com/repos/storehouse/Advance/releases{/id}", 2382 | "deployments_url": "https://api.github.com/repos/storehouse/Advance/deployments", 2383 | "created_at": "2016-02-12T22:20:07Z", 2384 | "updated_at": "2016-04-11T12:41:22Z", 2385 | "pushed_at": "2016-04-06T17:55:24Z", 2386 | "git_url": "git://github.com/storehouse/Advance.git", 2387 | "ssh_url": "git@github.com:storehouse/Advance.git", 2388 | "clone_url": "https://github.com/storehouse/Advance.git", 2389 | "svn_url": "https://github.com/storehouse/Advance", 2390 | "homepage": "", 2391 | "size": 4789, 2392 | "stargazers_count": 3292, 2393 | "watchers_count": 3292, 2394 | "language": "Swift", 2395 | "has_issues": true, 2396 | "has_downloads": true, 2397 | "has_wiki": true, 2398 | "has_pages": true, 2399 | "forks_count": 176, 2400 | "mirror_url": null, 2401 | "open_issues_count": 0, 2402 | "forks": 176, 2403 | "open_issues": 0, 2404 | "watchers": 3292, 2405 | "default_branch": "master", 2406 | "score": 1.0 2407 | }, 2408 | { 2409 | "id": 51148780, 2410 | "name": "android-architecture", 2411 | "full_name": "googlesamples/android-architecture", 2412 | "owner": { 2413 | "login": "googlesamples", 2414 | "id": 7378196, 2415 | "avatar_url": "https://avatars.githubusercontent.com/u/7378196?v=3", 2416 | "gravatar_id": "", 2417 | "url": "https://api.github.com/users/googlesamples", 2418 | "html_url": "https://github.com/googlesamples", 2419 | "followers_url": "https://api.github.com/users/googlesamples/followers", 2420 | "following_url": "https://api.github.com/users/googlesamples/following{/other_user}", 2421 | "gists_url": "https://api.github.com/users/googlesamples/gists{/gist_id}", 2422 | "starred_url": "https://api.github.com/users/googlesamples/starred{/owner}{/repo}", 2423 | "subscriptions_url": "https://api.github.com/users/googlesamples/subscriptions", 2424 | "organizations_url": "https://api.github.com/users/googlesamples/orgs", 2425 | "repos_url": "https://api.github.com/users/googlesamples/repos", 2426 | "events_url": "https://api.github.com/users/googlesamples/events{/privacy}", 2427 | "received_events_url": "https://api.github.com/users/googlesamples/received_events", 2428 | "type": "Organization", 2429 | "site_admin": false 2430 | }, 2431 | "private": false, 2432 | "html_url": "https://github.com/googlesamples/android-architecture", 2433 | "description": "A collection of samples to discuss and showcase different architectural tools and patterns for Android apps.", 2434 | "fork": false, 2435 | "url": "https://api.github.com/repos/googlesamples/android-architecture", 2436 | "forks_url": "https://api.github.com/repos/googlesamples/android-architecture/forks", 2437 | "keys_url": "https://api.github.com/repos/googlesamples/android-architecture/keys{/key_id}", 2438 | "collaborators_url": "https://api.github.com/repos/googlesamples/android-architecture/collaborators{/collaborator}", 2439 | "teams_url": "https://api.github.com/repos/googlesamples/android-architecture/teams", 2440 | "hooks_url": "https://api.github.com/repos/googlesamples/android-architecture/hooks", 2441 | "issue_events_url": "https://api.github.com/repos/googlesamples/android-architecture/issues/events{/number}", 2442 | "events_url": "https://api.github.com/repos/googlesamples/android-architecture/events", 2443 | "assignees_url": "https://api.github.com/repos/googlesamples/android-architecture/assignees{/user}", 2444 | "branches_url": "https://api.github.com/repos/googlesamples/android-architecture/branches{/branch}", 2445 | "tags_url": "https://api.github.com/repos/googlesamples/android-architecture/tags", 2446 | "blobs_url": "https://api.github.com/repos/googlesamples/android-architecture/git/blobs{/sha}", 2447 | "git_tags_url": "https://api.github.com/repos/googlesamples/android-architecture/git/tags{/sha}", 2448 | "git_refs_url": "https://api.github.com/repos/googlesamples/android-architecture/git/refs{/sha}", 2449 | "trees_url": "https://api.github.com/repos/googlesamples/android-architecture/git/trees{/sha}", 2450 | "statuses_url": "https://api.github.com/repos/googlesamples/android-architecture/statuses/{sha}", 2451 | "languages_url": "https://api.github.com/repos/googlesamples/android-architecture/languages", 2452 | "stargazers_url": "https://api.github.com/repos/googlesamples/android-architecture/stargazers", 2453 | "contributors_url": "https://api.github.com/repos/googlesamples/android-architecture/contributors", 2454 | "subscribers_url": "https://api.github.com/repos/googlesamples/android-architecture/subscribers", 2455 | "subscription_url": "https://api.github.com/repos/googlesamples/android-architecture/subscription", 2456 | "commits_url": "https://api.github.com/repos/googlesamples/android-architecture/commits{/sha}", 2457 | "git_commits_url": "https://api.github.com/repos/googlesamples/android-architecture/git/commits{/sha}", 2458 | "comments_url": "https://api.github.com/repos/googlesamples/android-architecture/comments{/number}", 2459 | "issue_comment_url": "https://api.github.com/repos/googlesamples/android-architecture/issues/comments{/number}", 2460 | "contents_url": "https://api.github.com/repos/googlesamples/android-architecture/contents/{+path}", 2461 | "compare_url": "https://api.github.com/repos/googlesamples/android-architecture/compare/{base}...{head}", 2462 | "merges_url": "https://api.github.com/repos/googlesamples/android-architecture/merges", 2463 | "archive_url": "https://api.github.com/repos/googlesamples/android-architecture/{archive_format}{/ref}", 2464 | "downloads_url": "https://api.github.com/repos/googlesamples/android-architecture/downloads", 2465 | "issues_url": "https://api.github.com/repos/googlesamples/android-architecture/issues{/number}", 2466 | "pulls_url": "https://api.github.com/repos/googlesamples/android-architecture/pulls{/number}", 2467 | "milestones_url": "https://api.github.com/repos/googlesamples/android-architecture/milestones{/number}", 2468 | "notifications_url": "https://api.github.com/repos/googlesamples/android-architecture/notifications{?since,all,participating}", 2469 | "labels_url": "https://api.github.com/repos/googlesamples/android-architecture/labels{/name}", 2470 | "releases_url": "https://api.github.com/repos/googlesamples/android-architecture/releases{/id}", 2471 | "deployments_url": "https://api.github.com/repos/googlesamples/android-architecture/deployments", 2472 | "created_at": "2016-02-05T13:42:07Z", 2473 | "updated_at": "2016-04-11T14:32:47Z", 2474 | "pushed_at": "2016-04-11T12:23:37Z", 2475 | "git_url": "git://github.com/googlesamples/android-architecture.git", 2476 | "ssh_url": "git@github.com:googlesamples/android-architecture.git", 2477 | "clone_url": "https://github.com/googlesamples/android-architecture.git", 2478 | "svn_url": "https://github.com/googlesamples/android-architecture", 2479 | "homepage": "", 2480 | "size": 6858, 2481 | "stargazers_count": 3206, 2482 | "watchers_count": 3206, 2483 | "language": null, 2484 | "has_issues": true, 2485 | "has_downloads": true, 2486 | "has_wiki": true, 2487 | "has_pages": false, 2488 | "forks_count": 363, 2489 | "mirror_url": null, 2490 | "open_issues_count": 18, 2491 | "forks": 363, 2492 | "open_issues": 18, 2493 | "watchers": 3206, 2494 | "default_branch": "master", 2495 | "score": 1.0 2496 | }, 2497 | { 2498 | "id": 52598117, 2499 | "name": "statuspage", 2500 | "full_name": "pyupio/statuspage", 2501 | "owner": { 2502 | "login": "pyupio", 2503 | "id": 16113910, 2504 | "avatar_url": "https://avatars.githubusercontent.com/u/16113910?v=3", 2505 | "gravatar_id": "", 2506 | "url": "https://api.github.com/users/pyupio", 2507 | "html_url": "https://github.com/pyupio", 2508 | "followers_url": "https://api.github.com/users/pyupio/followers", 2509 | "following_url": "https://api.github.com/users/pyupio/following{/other_user}", 2510 | "gists_url": "https://api.github.com/users/pyupio/gists{/gist_id}", 2511 | "starred_url": "https://api.github.com/users/pyupio/starred{/owner}{/repo}", 2512 | "subscriptions_url": "https://api.github.com/users/pyupio/subscriptions", 2513 | "organizations_url": "https://api.github.com/users/pyupio/orgs", 2514 | "repos_url": "https://api.github.com/users/pyupio/repos", 2515 | "events_url": "https://api.github.com/users/pyupio/events{/privacy}", 2516 | "received_events_url": "https://api.github.com/users/pyupio/received_events", 2517 | "type": "Organization", 2518 | "site_admin": false 2519 | }, 2520 | "private": false, 2521 | "html_url": "https://github.com/pyupio/statuspage", 2522 | "description": "A statuspage generator that lets you host your statuspage for free on Github.", 2523 | "fork": false, 2524 | "url": "https://api.github.com/repos/pyupio/statuspage", 2525 | "forks_url": "https://api.github.com/repos/pyupio/statuspage/forks", 2526 | "keys_url": "https://api.github.com/repos/pyupio/statuspage/keys{/key_id}", 2527 | "collaborators_url": "https://api.github.com/repos/pyupio/statuspage/collaborators{/collaborator}", 2528 | "teams_url": "https://api.github.com/repos/pyupio/statuspage/teams", 2529 | "hooks_url": "https://api.github.com/repos/pyupio/statuspage/hooks", 2530 | "issue_events_url": "https://api.github.com/repos/pyupio/statuspage/issues/events{/number}", 2531 | "events_url": "https://api.github.com/repos/pyupio/statuspage/events", 2532 | "assignees_url": "https://api.github.com/repos/pyupio/statuspage/assignees{/user}", 2533 | "branches_url": "https://api.github.com/repos/pyupio/statuspage/branches{/branch}", 2534 | "tags_url": "https://api.github.com/repos/pyupio/statuspage/tags", 2535 | "blobs_url": "https://api.github.com/repos/pyupio/statuspage/git/blobs{/sha}", 2536 | "git_tags_url": "https://api.github.com/repos/pyupio/statuspage/git/tags{/sha}", 2537 | "git_refs_url": "https://api.github.com/repos/pyupio/statuspage/git/refs{/sha}", 2538 | "trees_url": "https://api.github.com/repos/pyupio/statuspage/git/trees{/sha}", 2539 | "statuses_url": "https://api.github.com/repos/pyupio/statuspage/statuses/{sha}", 2540 | "languages_url": "https://api.github.com/repos/pyupio/statuspage/languages", 2541 | "stargazers_url": "https://api.github.com/repos/pyupio/statuspage/stargazers", 2542 | "contributors_url": "https://api.github.com/repos/pyupio/statuspage/contributors", 2543 | "subscribers_url": "https://api.github.com/repos/pyupio/statuspage/subscribers", 2544 | "subscription_url": "https://api.github.com/repos/pyupio/statuspage/subscription", 2545 | "commits_url": "https://api.github.com/repos/pyupio/statuspage/commits{/sha}", 2546 | "git_commits_url": "https://api.github.com/repos/pyupio/statuspage/git/commits{/sha}", 2547 | "comments_url": "https://api.github.com/repos/pyupio/statuspage/comments{/number}", 2548 | "issue_comment_url": "https://api.github.com/repos/pyupio/statuspage/issues/comments{/number}", 2549 | "contents_url": "https://api.github.com/repos/pyupio/statuspage/contents/{+path}", 2550 | "compare_url": "https://api.github.com/repos/pyupio/statuspage/compare/{base}...{head}", 2551 | "merges_url": "https://api.github.com/repos/pyupio/statuspage/merges", 2552 | "archive_url": "https://api.github.com/repos/pyupio/statuspage/{archive_format}{/ref}", 2553 | "downloads_url": "https://api.github.com/repos/pyupio/statuspage/downloads", 2554 | "issues_url": "https://api.github.com/repos/pyupio/statuspage/issues{/number}", 2555 | "pulls_url": "https://api.github.com/repos/pyupio/statuspage/pulls{/number}", 2556 | "milestones_url": "https://api.github.com/repos/pyupio/statuspage/milestones{/number}", 2557 | "notifications_url": "https://api.github.com/repos/pyupio/statuspage/notifications{?since,all,participating}", 2558 | "labels_url": "https://api.github.com/repos/pyupio/statuspage/labels{/name}", 2559 | "releases_url": "https://api.github.com/repos/pyupio/statuspage/releases{/id}", 2560 | "deployments_url": "https://api.github.com/repos/pyupio/statuspage/deployments", 2561 | "created_at": "2016-02-26T10:47:27Z", 2562 | "updated_at": "2016-04-11T13:16:58Z", 2563 | "pushed_at": "2016-04-07T18:34:13Z", 2564 | "git_url": "git://github.com/pyupio/statuspage.git", 2565 | "ssh_url": "git@github.com:pyupio/statuspage.git", 2566 | "clone_url": "https://github.com/pyupio/statuspage.git", 2567 | "svn_url": "https://github.com/pyupio/statuspage", 2568 | "homepage": "", 2569 | "size": 28667, 2570 | "stargazers_count": 3033, 2571 | "watchers_count": 3033, 2572 | "language": "Python", 2573 | "has_issues": true, 2574 | "has_downloads": true, 2575 | "has_wiki": true, 2576 | "has_pages": false, 2577 | "forks_count": 89, 2578 | "mirror_url": null, 2579 | "open_issues_count": 19, 2580 | "forks": 89, 2581 | "open_issues": 19, 2582 | "watchers": 3033, 2583 | "default_branch": "master", 2584 | "score": 1.0 2585 | }, 2586 | { 2587 | "id": 50586840, 2588 | "name": "mjml", 2589 | "full_name": "mjmlio/mjml", 2590 | "owner": { 2591 | "login": "mjmlio", 2592 | "id": 16115896, 2593 | "avatar_url": "https://avatars.githubusercontent.com/u/16115896?v=3", 2594 | "gravatar_id": "", 2595 | "url": "https://api.github.com/users/mjmlio", 2596 | "html_url": "https://github.com/mjmlio", 2597 | "followers_url": "https://api.github.com/users/mjmlio/followers", 2598 | "following_url": "https://api.github.com/users/mjmlio/following{/other_user}", 2599 | "gists_url": "https://api.github.com/users/mjmlio/gists{/gist_id}", 2600 | "starred_url": "https://api.github.com/users/mjmlio/starred{/owner}{/repo}", 2601 | "subscriptions_url": "https://api.github.com/users/mjmlio/subscriptions", 2602 | "organizations_url": "https://api.github.com/users/mjmlio/orgs", 2603 | "repos_url": "https://api.github.com/users/mjmlio/repos", 2604 | "events_url": "https://api.github.com/users/mjmlio/events{/privacy}", 2605 | "received_events_url": "https://api.github.com/users/mjmlio/received_events", 2606 | "type": "Organization", 2607 | "site_admin": false 2608 | }, 2609 | "private": false, 2610 | "html_url": "https://github.com/mjmlio/mjml", 2611 | "description": "MJML: the only framework that makes responsive-email easy", 2612 | "fork": false, 2613 | "url": "https://api.github.com/repos/mjmlio/mjml", 2614 | "forks_url": "https://api.github.com/repos/mjmlio/mjml/forks", 2615 | "keys_url": "https://api.github.com/repos/mjmlio/mjml/keys{/key_id}", 2616 | "collaborators_url": "https://api.github.com/repos/mjmlio/mjml/collaborators{/collaborator}", 2617 | "teams_url": "https://api.github.com/repos/mjmlio/mjml/teams", 2618 | "hooks_url": "https://api.github.com/repos/mjmlio/mjml/hooks", 2619 | "issue_events_url": "https://api.github.com/repos/mjmlio/mjml/issues/events{/number}", 2620 | "events_url": "https://api.github.com/repos/mjmlio/mjml/events", 2621 | "assignees_url": "https://api.github.com/repos/mjmlio/mjml/assignees{/user}", 2622 | "branches_url": "https://api.github.com/repos/mjmlio/mjml/branches{/branch}", 2623 | "tags_url": "https://api.github.com/repos/mjmlio/mjml/tags", 2624 | "blobs_url": "https://api.github.com/repos/mjmlio/mjml/git/blobs{/sha}", 2625 | "git_tags_url": "https://api.github.com/repos/mjmlio/mjml/git/tags{/sha}", 2626 | "git_refs_url": "https://api.github.com/repos/mjmlio/mjml/git/refs{/sha}", 2627 | "trees_url": "https://api.github.com/repos/mjmlio/mjml/git/trees{/sha}", 2628 | "statuses_url": "https://api.github.com/repos/mjmlio/mjml/statuses/{sha}", 2629 | "languages_url": "https://api.github.com/repos/mjmlio/mjml/languages", 2630 | "stargazers_url": "https://api.github.com/repos/mjmlio/mjml/stargazers", 2631 | "contributors_url": "https://api.github.com/repos/mjmlio/mjml/contributors", 2632 | "subscribers_url": "https://api.github.com/repos/mjmlio/mjml/subscribers", 2633 | "subscription_url": "https://api.github.com/repos/mjmlio/mjml/subscription", 2634 | "commits_url": "https://api.github.com/repos/mjmlio/mjml/commits{/sha}", 2635 | "git_commits_url": "https://api.github.com/repos/mjmlio/mjml/git/commits{/sha}", 2636 | "comments_url": "https://api.github.com/repos/mjmlio/mjml/comments{/number}", 2637 | "issue_comment_url": "https://api.github.com/repos/mjmlio/mjml/issues/comments{/number}", 2638 | "contents_url": "https://api.github.com/repos/mjmlio/mjml/contents/{+path}", 2639 | "compare_url": "https://api.github.com/repos/mjmlio/mjml/compare/{base}...{head}", 2640 | "merges_url": "https://api.github.com/repos/mjmlio/mjml/merges", 2641 | "archive_url": "https://api.github.com/repos/mjmlio/mjml/{archive_format}{/ref}", 2642 | "downloads_url": "https://api.github.com/repos/mjmlio/mjml/downloads", 2643 | "issues_url": "https://api.github.com/repos/mjmlio/mjml/issues{/number}", 2644 | "pulls_url": "https://api.github.com/repos/mjmlio/mjml/pulls{/number}", 2645 | "milestones_url": "https://api.github.com/repos/mjmlio/mjml/milestones{/number}", 2646 | "notifications_url": "https://api.github.com/repos/mjmlio/mjml/notifications{?since,all,participating}", 2647 | "labels_url": "https://api.github.com/repos/mjmlio/mjml/labels{/name}", 2648 | "releases_url": "https://api.github.com/repos/mjmlio/mjml/releases{/id}", 2649 | "deployments_url": "https://api.github.com/repos/mjmlio/mjml/deployments", 2650 | "created_at": "2016-01-28T14:04:05Z", 2651 | "updated_at": "2016-04-10T21:33:50Z", 2652 | "pushed_at": "2016-04-11T13:04:15Z", 2653 | "git_url": "git://github.com/mjmlio/mjml.git", 2654 | "ssh_url": "git@github.com:mjmlio/mjml.git", 2655 | "clone_url": "https://github.com/mjmlio/mjml.git", 2656 | "svn_url": "https://github.com/mjmlio/mjml", 2657 | "homepage": "https://mjml.io", 2658 | "size": 923, 2659 | "stargazers_count": 3024, 2660 | "watchers_count": 3024, 2661 | "language": "JavaScript", 2662 | "has_issues": true, 2663 | "has_downloads": true, 2664 | "has_wiki": true, 2665 | "has_pages": false, 2666 | "forks_count": 162, 2667 | "mirror_url": null, 2668 | "open_issues_count": 60, 2669 | "forks": 162, 2670 | "open_issues": 60, 2671 | "watchers": 3024, 2672 | "default_branch": "master", 2673 | "score": 1.0 2674 | } 2675 | ] 2676 | } 2677 | -------------------------------------------------------------------------------- /test/objectHints.js: -------------------------------------------------------------------------------- 1 | var reshaper = require('../lib/reshaper'); 2 | var expect = require('chai').expect; 3 | 4 | describe('object hints', function() { 5 | 6 | var peopleData = [ 7 | { 8 | name: 'Joel', 9 | info: { 10 | age: 23, 11 | height: 1.9, 12 | middleName: 'Robert', 13 | lastName: 'Auterson', 14 | twitter: '@JoelOtter' 15 | } 16 | }, 17 | { 18 | name: 'Jake', 19 | info: { 20 | age: 24, 21 | height: 1.85, 22 | middleName: 'Wild', 23 | lastName: 'Hall', 24 | twitter: '@JakeWildHall' 25 | } 26 | } 27 | ]; 28 | 29 | var peoplePetData = [ 30 | { 31 | name: 'Joel', 32 | pet: { 33 | name: 'Tony', 34 | species: 'Dog', 35 | toy: { 36 | name: 'Wobbles' 37 | } 38 | } 39 | }, 40 | { 41 | name: 'Andrea', 42 | pet: { 43 | name: 'Carluccio', 44 | species: 'Pasta', 45 | toy: { 46 | name: 'Luigi' 47 | } 48 | } 49 | } 50 | ]; 51 | 52 | it('should allow object hints', function() { 53 | var schema = { 54 | x: ['String'], 55 | y: ['String'] 56 | }; 57 | var hint = { 58 | x: 'twitter', 59 | y: 'middleName' 60 | }; 61 | var result = reshaper(peopleData, schema, hint); 62 | expect(result).to.eql({ 63 | x: ['@JoelOtter', '@JakeWildHall'], 64 | y: ['Robert', 'Wild'] 65 | }); 66 | }); 67 | 68 | it('should allow nested object hints', function() { 69 | var schema = { 70 | x: ['String'], 71 | y: [{ 72 | a: 'String', 73 | b: 'Number' 74 | }] 75 | }; 76 | var hint = { 77 | x: 'middleName', 78 | y: { 79 | a: 'twitter', 80 | b: 'height' 81 | } 82 | }; 83 | var result = reshaper(peopleData, schema, hint); 84 | expect(result).to.eql({ 85 | x: ['Robert', 'Wild'], 86 | y: [ 87 | { 88 | a: '@JoelOtter', 89 | b: 1.9 90 | }, 91 | { 92 | a: '@JakeWildHall', 93 | b: 1.85 94 | } 95 | ] 96 | }); 97 | }); 98 | 99 | it('should allow array hints inside objects', function() { 100 | var schema = { 101 | x: ['String'], 102 | y: [{ 103 | a: 'String', 104 | b: 'Number' 105 | }] 106 | }; 107 | var hint = { 108 | x: 'middleName', 109 | y: ['twitter', 'height'] 110 | }; 111 | var result = reshaper(peopleData, schema, hint); 112 | expect(result).to.eql({ 113 | x: ['Robert', 'Wild'], 114 | y: [ 115 | { 116 | a: '@JoelOtter', 117 | b: 1.9 118 | }, 119 | { 120 | a: '@JakeWildHall', 121 | b: 1.85 122 | } 123 | ] 124 | }); 125 | }); 126 | 127 | it('should allow missing hints', function() { 128 | var schema = { 129 | a: ['String'], 130 | b: ['String'] 131 | }; 132 | var hint = { 133 | a: 'lastName' 134 | }; 135 | var result = reshaper(peopleData, schema, hint); 136 | expect(result).to.eql({ 137 | a: ['Auterson', 'Hall'], 138 | b: ['Joel', 'Jake'] 139 | }); 140 | }); 141 | 142 | it('should allow dotted hints', function() { 143 | var schema = [{ 144 | name: 'String', 145 | pet: 'String' 146 | }]; 147 | 148 | var result = reshaper(peoplePetData, schema, {pet: 'pet.name'}); 149 | expect(result).to.eql([ 150 | {name: 'Joel', pet: 'Tony'}, 151 | {name: 'Andrea', pet: 'Carluccio'} 152 | ]); 153 | result = reshaper(peoplePetData, schema, {pet: 'pet.toy.name'}); 154 | expect(result).to.eql([ 155 | {name: 'Joel', pet: 'Wobbles'}, 156 | {name: 'Andrea', pet: 'Luigi'} 157 | ]); 158 | }); 159 | 160 | it('should allow wildcards in dotted hints', function() { 161 | var schema = [{ 162 | name: 'String', 163 | pet: 'String' 164 | }]; 165 | 166 | result = reshaper(peoplePetData, schema, {pet: '_._.name'}); 167 | expect(result).to.eql([ 168 | {name: 'Joel', pet: 'Wobbles'}, 169 | {name: 'Andrea', pet: 'Luigi'} 170 | ]); 171 | }); 172 | 173 | }); 174 | -------------------------------------------------------------------------------- /test/util.js: -------------------------------------------------------------------------------- 1 | var expect = require('chai').expect; 2 | var util = require('../lib/util'); 3 | 4 | describe('util', function() { 5 | 6 | describe('#typeString()', function() { 7 | 8 | it('should return "Null" for null', function() { 9 | expect(util.typeString(null)).to.equal('Null'); 10 | }); 11 | 12 | it('should return "Undefined" for undefined', function() { 13 | expect(util.typeString(undefined)).to.equal('Undefined'); 14 | }); 15 | 16 | it('should return "String" for a string without preserveString', function() { 17 | expect(util.typeString('hello', true)).to.equal('hello'); 18 | }); 19 | 20 | it('should return the string itself with preserveString', function() { 21 | expect(util.typeString('hello', true)).to.equal('hello'); 22 | }); 23 | 24 | it('should return "Array" for an array', function() { 25 | expect(util.typeString([])).to.equal('Array'); 26 | expect(util.typeString([1])).to.equal('Array'); 27 | }); 28 | 29 | it('should return "Number" for a number', function() { 30 | expect(util.typeString(0)).to.equal('Number'); 31 | expect(util.typeString(NaN)).to.equal('Number'); 32 | expect(util.typeString(Infinity)).to.equal('Number'); 33 | }); 34 | 35 | it('should return "Object" for an object', function() { 36 | expect(util.typeString({})).to.equal('Object'); 37 | expect(util.typeString({test: 1})).to.equal('Object'); 38 | }); 39 | 40 | it('should return "Function" for a function', function() { 41 | expect(util.typeString(console.log)).to.equal('Function'); 42 | }); 43 | 44 | }); 45 | 46 | describe('#typesMatch()', function() { 47 | 48 | it('should return True for two different objects', function() { 49 | expect(util.typesMatch({test: 1}, {test: 2})).to.equal(true); 50 | }); 51 | 52 | it('should return False for an object and an array', function() { 53 | expect(util.typesMatch({}, [])).to.equal(false); 54 | }); 55 | 56 | }); 57 | 58 | describe('#removeFromArray', function() { 59 | 60 | var arr = [1, 2, 3, 4]; 61 | 62 | it('should remove item at index', function() { 63 | var a = arr.slice(); 64 | util.removeFromArray(a, 1); 65 | expect(a).to.eql([1, 3, 4]); 66 | }); 67 | 68 | it('should remove items from -> to inclusive', function() { 69 | var a = arr.slice(); 70 | util.removeFromArray(a, 1, 3); 71 | expect(a).to.eql([1]); 72 | }); 73 | 74 | it('should allow negative from values', function() { 75 | var a = arr.slice(); 76 | util.removeFromArray(a, -1); 77 | expect(a).to.eql([1, 2, 3]); 78 | }); 79 | 80 | }); 81 | 82 | }); 83 | --------------------------------------------------------------------------------