├── .gitignore ├── README.md ├── data └── sites.json ├── index.js ├── licence ├── package-lock.json └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Check if a user name exists on multiple websites 2 | 3 | ## Install 4 | 5 | Run 6 | 7 | ````bash 8 | $ git clone https://github.com/Drozerah/check-user-name.git 9 | ```` 10 | Then 11 | 12 | ````bash 13 | $ npm install 14 | ```` 15 | 16 | ## Default checking 17 | 18 | ````bash 19 | $ npm run start 20 | ```` 21 | 22 | This command will run the application and check if the default user name `john_doe` exists over 138 websites 23 | 24 | ## Real checking 25 | 26 | ````bash 27 | $ npm run start myUserName 28 | ```` 29 | 30 | This command will run the application and check if the user name `myUserName` exists over 138 websites 31 | 32 | __Author__ 33 | 34 | - Thomas G. aka Drozerah - [GitHub](https://github.com/Drozerah) 35 | 36 | __License__ 37 | 38 | - [ISC](licence) © Thomas G. aka Drozerah 39 | -------------------------------------------------------------------------------- /data/sites.json: -------------------------------------------------------------------------------- 1 | [{ 2 | "name": "Photobucket", 3 | "url": "https://photobucket.co/" 4 | }, { 5 | "name": "HackerOne", 6 | "url": "https://hackerone.com/" 7 | }, { 8 | "name": "About.me", 9 | "url": "https://about.me/" 10 | }, { 11 | "name": "last.fm", 12 | "url": "https://last.fm/" 13 | }, { 14 | "name": "YouPic", 15 | "url": "https://youpic.com/" 16 | }, { 17 | "name": "9GAG", 18 | "url": "https://9gag.com/" 19 | }, { 20 | "name": "Twitch", 21 | "url": "https://www.twitch.tv/" 22 | }, { 23 | "name": "Pastebin", 24 | "url": "https://pastebin.com/" 25 | }, { 26 | "name": "Canva", 27 | "url": "https://www.canva.com/" 28 | }, { 29 | "name": "Crunchyroll", 30 | "url": "https://www.crunchyroll.com/" 31 | }, { 32 | "name": "SlideShare", 33 | "url": "https://slideshare.net/" 34 | }, { 35 | "name": "CashMe", 36 | "url": "https://cash.me/" 37 | }, { 38 | "name": "Gumroad", 39 | "url": "https://www.gumroad.com/" 40 | }, { 41 | "name": "EVE Online", 42 | "url": "https://eveonline.com/" 43 | }, { 44 | "name": "Etsy", 45 | "url": "https://www.etsy.com/" 46 | }, { 47 | "name": "Quora", 48 | "url": "https://www.quora.com/" 49 | }, { 50 | "name": "Badoo", 51 | "url": "https://badoo.com/" 52 | }, { 53 | "name": "iMGSRC.RU", 54 | "url": "https://imgsrc.ru/" 55 | }, { 56 | "name": "EyeEm", 57 | "url": "https://www.eyeem.com/" 58 | }, { 59 | "name": "WebNode", 60 | "url": "https://www.webnode.cz/" 61 | }, { 62 | "name": "GitHub", 63 | "url": "https://github.com/" 64 | }, { 65 | "name": "Codepen", 66 | "url": "https://codepen.io/" 67 | }, { 68 | "name": "LiveJournal", 69 | "url": "https://www.livejournal.com/" 70 | }, { 71 | "name": "Slack", 72 | "url": "https://slack.com/" 73 | }, { 74 | "name": "CreativeMarket", 75 | "url": "https://creativemarket.com/" 76 | }, { 77 | "name": "Instructables", 78 | "url": "https://www.instructables.com/" 79 | }, { 80 | "name": "Pixabay", 81 | "url": "https://pixabay.com/" 82 | }, { 83 | "name": "devRant", 84 | "url": "https://devrant.com/" 85 | }, { 86 | "name": "House-Mixes", 87 | "url": "https://www.house-mixes.com/" 88 | }, { 89 | "name": "Mastodon", 90 | "url": "https://mastodon.social/" 91 | }, { 92 | "name": "Wix", 93 | "url": "https://wix.com/" 94 | }, { 95 | "name": "Kaggle", 96 | "url": "https://www.kaggle.com/" 97 | }, { 98 | "name": "Spotify", 99 | "url": "https://open.spotify.com/" 100 | }, { 101 | "name": "Academia.edu", 102 | "url": "https://www.academia.edu/" 103 | }, { 104 | "name": "Reddit", 105 | "url": "https://www.reddit.com/" 106 | }, { 107 | "name": "Keybase", 108 | "url": "https://keybase.io/" 109 | }, { 110 | "name": "ProductHunt", 111 | "url": "https://www.producthunt.com/" 112 | }, { 113 | "name": "VirusTotal", 114 | "url": "https://www.virustotal.com/" 115 | }, { 116 | "name": "Gravatar", 117 | "url": "https://en.gravatar.com/" 118 | }, { 119 | "name": "Cloob", 120 | "url": "https://www.cloob.com/" 121 | }, { 122 | "name": "npm", 123 | "url": "https://www.npmjs.com/" 124 | }, { 125 | "name": "Roblox", 126 | "url": "https://www.roblox.com/" 127 | }, { 128 | "name": "Kongregate", 129 | "url": "https://www.kongregate.com/" 130 | }, { 131 | "name": "Ebay", 132 | "url": "https://www.ebay.com/" 133 | }, { 134 | "name": "GoodReads", 135 | "url": "https://www.goodreads.com/" 136 | }, { 137 | "name": "Wikia", 138 | "url": "https://www.wikia.com/" 139 | }, { 140 | "name": "Venmo", 141 | "url": "https://venmo.com/" 142 | }, { 143 | "name": "BugCrowd", 144 | "url": "https://bugcrowd.com/" 145 | }, { 146 | "name": "VK", 147 | "url": "https://vk.com/" 148 | }, { 149 | "name": "Disqus", 150 | "url": "https://disqus.com/" 151 | }, { 152 | "name": "Vimeo", 153 | "url": "https://vimeo.com/" 154 | }, { 155 | "name": "BitCoinForum", 156 | "url": "https://bitcoinforum.com/" 157 | }, { 158 | "name": "Designspiration", 159 | "url": "https://www.designspiration.net/" 160 | }, { 161 | "name": "TradingView", 162 | "url": "https://www.tradingview.com/" 163 | }, { 164 | "name": "MeetMe", 165 | "url": "https://www.meetme.com/" 166 | }, { 167 | "name": "HackerNews", 168 | "url": "https://news.ycombinator.com/" 169 | }, { 170 | "name": "Unsplash", 171 | "url": "https://unsplash.com/" 172 | }, { 173 | "name": "BitBucket", 174 | "url": "https://bitbucket.org/" 175 | }, { 176 | "name": "500px", 177 | "url": "https://500px.com/" 178 | }, { 179 | "name": "Behance", 180 | "url": "https://www.behance.net/" 181 | }, { 182 | "name": "Issuu", 183 | "url": "https://issuu.com/" 184 | }, { 185 | "name": "Dribbble", 186 | "url": "https://dribbble.com/" 187 | }, { 188 | "name": "Contently", 189 | "url": "https://contently.com/" 190 | }, { 191 | "name": "Steam", 192 | "url": "https://steamcommunity.com/" 193 | }, { 194 | "name": "MyAnimeList", 195 | "url": "https://myanimelist.net/" 196 | }, { 197 | "name": "tunein", 198 | "url": "https://tunein.com/user/" 199 | }, { 200 | "name": "GitLab", 201 | "url": "https://gitlab.com/" 202 | }, { 203 | "name": "Telegram", 204 | "url": "https://t.me/" 205 | }, { 206 | "name": "Pinterest", 207 | "url": "https://www.pinterest.com/" 208 | }, { 209 | "name": "Kik", 210 | "url": "https://kik.me/" 211 | }, { 212 | "name": "Gitee", 213 | "url": "https://gitee.com/" 214 | }, { 215 | "name": "ReverbNation", 216 | "url": "https://www.reverbnation.com/" 217 | }, { 218 | "name": "TripAdvisor", 219 | "url": "https://tripadvisor.com/" 220 | }, { 221 | "name": "Investing.com", 222 | "url": "https://www.investing.com/" 223 | }, { 224 | "name": "Blogger", 225 | "url": "https://www.blogger.com/" 226 | }, { 227 | "name": "ImageShack", 228 | "url": "https://imageshack.us/" 229 | }, { 230 | "name": "Aptoide", 231 | "url": "https://en.aptoide.com/" 232 | }, { 233 | "name": "Plug.DJ", 234 | "url": "https://plug.dj/" 235 | }, { 236 | "name": "SteamGroup", 237 | "url": "https://steamcommunity.com/" 238 | }, { 239 | "name": "DEV Community", 240 | "url": "https://dev.to/" 241 | }, { 242 | "name": "Zhihu", 243 | "url": "https://www.zhihu.com/" 244 | }, { 245 | "name": "AngelList", 246 | "url": "https://angel.co/" 247 | }, { 248 | "name": "Giphy", 249 | "url": "https://giphy.com/" 250 | }, { 251 | "name": "Launchpad", 252 | "url": "https://launchpad.net/" 253 | }, { 254 | "name": "Foursquare", 255 | "url": "https://foursquare.com/" 256 | }, { 257 | "name": "Rajce.net", 258 | "url": "https://www.rajce.idnes.cz/" 259 | }, { 260 | "name": "Trip", 261 | "url": "https://www.trip.skyscanner.com/" 262 | }, { 263 | "name": "Twitter", 264 | "url": "https://twitter.com/" 265 | }, { 266 | "name": "Flipboard", 267 | "url": "https://flipboard.com/" 268 | }, { 269 | "name": "Ello", 270 | "url": "https://ello.co/" 271 | }, { 272 | "name": "ColourLovers", 273 | "url": "https://www.colourlovers.com/" 274 | }, { 275 | "name": "Facebook", 276 | "url": "https://www.facebook.com/" 277 | }, { 278 | "name": "Bandcamp", 279 | "url": "https://bandcamp.com/" 280 | }, { 281 | "name": "Carbonmade", 282 | "url": "https://carbonmade.com/" 283 | }, { 284 | "name": "Instagram", 285 | "url": "https://www.instagram.com/" 286 | }, { 287 | "name": "Trakt", 288 | "url": "https://www.trakt.tv/" 289 | }, { 290 | "name": "SourceForge", 291 | "url": "https://sourceforge.net/" 292 | }, { 293 | "name": "Coroflot", 294 | "url": "https://coroflot.com/" 295 | }, { 296 | "name": "BuzzFeed", 297 | "url": "https://www.buzzfeed.com/" 298 | }, { 299 | "name": "SoundCloud", 300 | "url": "https://soundcloud.com/" 301 | }, { 302 | "name": "KanoWorld", 303 | "url": "https://world.kano.me/" 304 | }, { 305 | "name": "Newgrounds", 306 | "url": "https://newgrounds.com/" 307 | }, { 308 | "name": "Makerlog", 309 | "url": "https://getmakerlog.com/" 310 | }, { 311 | "name": "NameMC", 312 | "url": "https://namemc.com/" 313 | }, { 314 | "name": "We Heart It", 315 | "url": "https://weheartit.com/" 316 | }, { 317 | "name": "HubPages", 318 | "url": "https://hubpages.com/" 319 | }, { 320 | "name": "Basecamp", 321 | "url": "https://basecamp.com/" 322 | }, { 323 | "name": "Imgur", 324 | "url": "https://imgur.com/" 325 | }, { 326 | "name": "Flickr", 327 | "url": "https://www.flickr.com/" 328 | }, { 329 | "name": "Taringa", 330 | "url": "https://taringa.net/" 331 | }, { 332 | "name": "Jimdo", 333 | "url": "https://jimdosite.com/" 334 | }, { 335 | "name": "Wattpad", 336 | "url": "https://www.wattpad.com/" 337 | }, { 338 | "name": "Medium", 339 | "url": "https://medium.com/" 340 | }, { 341 | "name": "Coderwall", 342 | "url": "https://coderwall.com/" 343 | }, { 344 | "name": "Pexels", 345 | "url": "https://www.pexels.com/" 346 | }, { 347 | "name": "Crevado", 348 | "url": "https://crevado.com/" 349 | }, { 350 | "name": "Signal", 351 | "url": "https://community.signalusers.org/" 352 | }, { 353 | "name": "Tinder", 354 | "url": "https://tinder.com/" 355 | }, { 356 | "name": "Itch.io", 357 | "url": "https://itch.io/" 358 | }, { 359 | "name": "Repl.it", 360 | "url": "https://repl.it/" 361 | }, { 362 | "name": "Letterboxd", 363 | "url": "https://letterboxd.com/" 364 | }, { 365 | "name": "WordPress", 366 | "url": "https://wordpress.com/" 367 | }, { 368 | "name": "IFTTT", 369 | "url": "https://www.ifttt.com/" 370 | }, { 371 | "name": "Scribd", 372 | "url": "https://www.scribd.com/" 373 | }, { 374 | "name": "BLIP.fm", 375 | "url": "https://blip.fm/" 376 | }, { 377 | "name": "DeviantART", 378 | "url": "https://www.deviantart.com/" 379 | }, { 380 | "name": "MixCloud", 381 | "url": "https://www.mixcloud.com/" 382 | }, { 383 | "name": "DailyMotion", 384 | "url": "https://www.dailymotion.com/" 385 | }, { 386 | "name": "YouTube", 387 | "url": "https://www.youtube.com/" 388 | }, { 389 | "name": "Codementor", 390 | "url": "https://www.codementor.io/" 391 | }, { 392 | "name": "Houzz", 393 | "url": "https://houzz.com/" 394 | }, { 395 | "name": "hackerearth", 396 | "url": "https://www.hackerearth.com/" 397 | }, { 398 | "name": "Patreon", 399 | "url": "https://www.patreon.com/" 400 | }, { 401 | "name": "VSCO", 402 | "url": "https://vsco.co/" 403 | }, { 404 | "name": "Smashcast", 405 | "url": "https://www.smashcast.tv/" 406 | }, { 407 | "name": "Wikipedia", 408 | "url": "https://www.wikipedia.org/" 409 | }, { 410 | "name": "Star Citizen", 411 | "url": "https://robertsspaceindustries.com/" 412 | }, { 413 | "name": "Codecademy", 414 | "url": "https://www.codecademy.com/" 415 | }] -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | /** 3 | * Node modules 4 | */ 5 | const async = require('async') 6 | const https = require('https') 7 | const events = require('events') 8 | const util = require('util') 9 | const Ora = require('ora') 10 | const {blue, red, green} = require('chalk') 11 | 12 | /** 13 | * App modules 14 | */ 15 | const json = require('./data/sites.json') 16 | 17 | /** 18 | * SPINNER 19 | * Returns a new instance of Ora to create a spinner 20 | */ 21 | const Spinner = () => new Ora({ 22 | color:'magenta', 23 | spinner: { 24 | frames: [ 25 | "Checking ■···", 26 | "Checking ·□··", 27 | "Checking ··▪·", 28 | "Checking ···▫" 29 | ], 30 | interval: 90 31 | } 32 | }) 33 | 34 | // declare new spinner instance 35 | const Spin = Spinner() 36 | 37 | /** 38 | * USER NAME TO CHECK 39 | */ 40 | 41 | // get process.argv userName 42 | const [,,userNameCMD] = process.argv 43 | 44 | // if userNameCMD is undefined use default 'john_doe' as userName 45 | const userName = userNameCMD || 'john_doe' 46 | 47 | /** 48 | * Declare variables, classes... 49 | */ 50 | 51 | // declare async.parallel() Object first argument 52 | const tasks = {} 53 | 54 | // declare request counter 55 | let requestCounter = 0 56 | 57 | // declare result object 58 | const resultsArray = [] 59 | 60 | // declare a new class that extend the events class 61 | class EventEmitter extends events{} 62 | 63 | // populate the tasks collection Object with data from ./data/site.json using forEach method 64 | json.forEach((obj, idx) => { 65 | 66 | tasks[`GET_API_${idx}`] = callback => { 67 | 68 | // prepare result Object 69 | const result = { 70 | statusCode: undefined, 71 | url: obj.url, 72 | apiName: obj.name, 73 | userName: userName, 74 | userProfil: obj.url + userName, 75 | mainProcessId: undefined 76 | } 77 | 78 | /** 79 | * REQUEST APIs 80 | * make a get request to a given url with a given user name 81 | */ 82 | const req = https.get( result.url + result.userName, (response) => { 83 | 84 | // update spinner text content 85 | Spin.text = `| ${percent(requestCounter, json.length).toFixed()} % | ${obj.name}` 86 | // update resquestCounter 87 | requestCounter++ 88 | // upate result Oject 89 | result.statusCode = response.statusCode 90 | result.mainProcessId = process.pid 91 | 92 | // send result to last callback 93 | callback(null, result) 94 | 95 | }) 96 | req.on("error", (err) => { // an error occurs into the silence! 97 | 98 | if (err) { 99 | 100 | // upate result Oject 101 | result.statusCode = err.code 102 | result.mainProcessId = process.pid 103 | // update resquestCounter 104 | requestCounter++ 105 | callback(null, result) 106 | } 107 | }) 108 | } 109 | }) 110 | 111 | 112 | // declare Run function 113 | function Run(tasks){ 114 | 115 | // lauch timer 116 | console.time(blue('Checking Duration')) 117 | 118 | /** 119 | * CONTROL FLOW 120 | * we use the async.parallel partern @{doc} \> https://caolan.github.io/async/v3/docs.html#parallel 121 | * "Run the tasks collection of functions in parallel, without waiting until the previous function has completed" 122 | */ 123 | async.parallel(tasks, (error, results) => { 124 | 125 | // stop spinner 126 | Spin.stop() 127 | 128 | // error message 129 | if (error) console.log(`err: ${error}`) 130 | 131 | /** 132 | * RESULTS 133 | */ 134 | // instanciate a new Emitter 135 | const resultEvent = new EventEmitter 136 | 137 | // WORKING WITH RESULTS DATA 138 | // add listener to resultEvent 139 | resultEvent.addListener("resultEvent", (data) => { 140 | 141 | resultsArray.push(data) 142 | 143 | workingWithResults(resultsArray) 144 | 145 | }).emit('resultEvent', results)// emit the 'results' event & passing arguments to listerner 146 | }) 147 | } 148 | 149 | // Run inherits from the EventEmitter class 150 | util.inherits(Run, EventEmitter) 151 | 152 | // instanciate new event Emitter 153 | const runEvent = new Run(tasks) 154 | 155 | // add listener to runEvent 156 | runEvent.addListener("runEvent", (user) => { 157 | 158 | // print start message 159 | const startMsg = `Start!\nChecking user name in progress for: ${user}\nPlease wait until checking ends!` 160 | console.log(green(startMsg)) 161 | 162 | // start spinner 163 | Spin.start() 164 | 165 | }).emit("runEvent", userName) // emit runEvent + passing in userName param 166 | 167 | 168 | // formate percentage 169 | const percent = (cur, total) => (cur / total) * 100 170 | 171 | /** 172 | * WORKING WITH RESULTS 173 | */ 174 | const workingWithResults = (data) => { 175 | 176 | console.log('-------------------------') 177 | 178 | // print results 179 | console.log(data) 180 | 181 | console.log('-------------------------\n') 182 | 183 | // print default user name message 184 | if (!userNameCMD) { 185 | 186 | console.log(red(`! Default user name is: ${userName}\n>> please provide a user name\n>> run 'npm run start myUserName'`)); 187 | } 188 | // stop timer 189 | console.timeEnd(blue('Checking Duration')) 190 | 191 | // print analytic 192 | const analytic = `GET request counter: ${requestCounter}\njson length: ${json.length}\nresults length: ${Object.keys(resultsArray[0]).length}` 193 | console.log(analytic) 194 | 195 | // update spinner 196 | Spin.succeed(`Done: ${percent(requestCounter,Object.keys(resultsArray[0]).length).toFixed()} %`) 197 | // return messages 198 | Spin.succeed('Thank you! Hope to see you next time!') 199 | Spin.succeed('Coded by Drozerah https://github.com/Drozerah') 200 | 201 | // Ends node.js process 202 | process.exit() 203 | } -------------------------------------------------------------------------------- /licence: -------------------------------------------------------------------------------- 1 | Internet Systems Consortium License (ISC) 2 | 3 | Copyright (C) <2019> (https://github.com/Drozerah) 4 | 5 | Permission to use, copy, modify, and/or distribute this software for any 6 | purpose with or without fee is hereby granted, provided that the above 7 | copyright notice and this permission notice appear in all copies. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION 14 | OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 15 | CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "check-user-name", 3 | "version": "1.0.1", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "ansi-regex": { 8 | "version": "4.1.0", 9 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 10 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" 11 | }, 12 | "ansi-styles": { 13 | "version": "3.2.1", 14 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 15 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 16 | "requires": { 17 | "color-convert": "^1.9.0" 18 | } 19 | }, 20 | "async": { 21 | "version": "3.0.1", 22 | "resolved": "https://registry.npmjs.org/async/-/async-3.0.1.tgz", 23 | "integrity": "sha512-ZswD8vwPtmBZzbn9xyi8XBQWXH3AvOQ43Za1KWYq7JeycrZuUYzx01KvHcVbXltjqH4y0MWrQ33008uLTqXuDw==" 24 | }, 25 | "chalk": { 26 | "version": "2.4.2", 27 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 28 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 29 | "requires": { 30 | "ansi-styles": "^3.2.1", 31 | "escape-string-regexp": "^1.0.5", 32 | "supports-color": "^5.3.0" 33 | } 34 | }, 35 | "cli-cursor": { 36 | "version": "2.1.0", 37 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", 38 | "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", 39 | "requires": { 40 | "restore-cursor": "^2.0.0" 41 | } 42 | }, 43 | "cli-spinners": { 44 | "version": "2.1.0", 45 | "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.1.0.tgz", 46 | "integrity": "sha512-8B00fJOEh1HPrx4fo5eW16XmE1PcL1tGpGrxy63CXGP9nHdPBN63X75hA1zhvQuhVztJWLqV58Roj2qlNM7cAA==" 47 | }, 48 | "clone": { 49 | "version": "1.0.4", 50 | "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", 51 | "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" 52 | }, 53 | "color-convert": { 54 | "version": "1.9.3", 55 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 56 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 57 | "requires": { 58 | "color-name": "1.1.3" 59 | } 60 | }, 61 | "color-name": { 62 | "version": "1.1.3", 63 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 64 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" 65 | }, 66 | "defaults": { 67 | "version": "1.0.3", 68 | "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", 69 | "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", 70 | "requires": { 71 | "clone": "^1.0.2" 72 | } 73 | }, 74 | "escape-string-regexp": { 75 | "version": "1.0.5", 76 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 77 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" 78 | }, 79 | "has-flag": { 80 | "version": "3.0.0", 81 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 82 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" 83 | }, 84 | "log-symbols": { 85 | "version": "2.2.0", 86 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", 87 | "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", 88 | "requires": { 89 | "chalk": "^2.0.1" 90 | } 91 | }, 92 | "mimic-fn": { 93 | "version": "1.2.0", 94 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", 95 | "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" 96 | }, 97 | "onetime": { 98 | "version": "2.0.1", 99 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", 100 | "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", 101 | "requires": { 102 | "mimic-fn": "^1.0.0" 103 | } 104 | }, 105 | "ora": { 106 | "version": "3.4.0", 107 | "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", 108 | "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", 109 | "requires": { 110 | "chalk": "^2.4.2", 111 | "cli-cursor": "^2.1.0", 112 | "cli-spinners": "^2.0.0", 113 | "log-symbols": "^2.2.0", 114 | "strip-ansi": "^5.2.0", 115 | "wcwidth": "^1.0.1" 116 | } 117 | }, 118 | "restore-cursor": { 119 | "version": "2.0.0", 120 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", 121 | "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", 122 | "requires": { 123 | "onetime": "^2.0.0", 124 | "signal-exit": "^3.0.2" 125 | } 126 | }, 127 | "signal-exit": { 128 | "version": "3.0.2", 129 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 130 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" 131 | }, 132 | "strip-ansi": { 133 | "version": "5.2.0", 134 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 135 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 136 | "requires": { 137 | "ansi-regex": "^4.1.0" 138 | } 139 | }, 140 | "supports-color": { 141 | "version": "5.5.0", 142 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 143 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 144 | "requires": { 145 | "has-flag": "^3.0.0" 146 | } 147 | }, 148 | "wcwidth": { 149 | "version": "1.0.1", 150 | "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", 151 | "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", 152 | "requires": { 153 | "defaults": "^1.0.3" 154 | } 155 | } 156 | } 157 | } 158 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "check-user-name", 3 | "version": "1.0.2", 4 | "description": "Check if a user name exists on multiple APIs", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "node index.js" 8 | }, 9 | "keywords": [], 10 | "author": { 11 | "name": "Thomas G. aka Drozerah", 12 | "email": "drozerah@gmail.com", 13 | "url": "https://github.com/Drozerah" 14 | }, 15 | "repository": { 16 | "type": "git", 17 | "url": "https://github.com/Drozerah/check-user-name.git" 18 | }, 19 | "dependencies": { 20 | "async": "^3.0.1", 21 | "chalk": "^2.4.2", 22 | "ora": "^3.4.0" 23 | }, 24 | "license": "ISC" 25 | } 26 | --------------------------------------------------------------------------------