├── .gitignore ├── README.md ├── main.js ├── main.ts ├── package-lock.json ├── package.json ├── stream.js ├── stream.ts └── tsconfig.json /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | config.js 3 | config.ts 4 | coins.txt 5 | frequency.txt -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # [Crypto Gems Bot](https://twitter.com/CryptoGemsBot) 2 | 3 | This is a bot that scrapes CoinGecko and CoinMarketCap and makes a tweet whenever there is a new coin added. This is to help people find low-market-cap gems before they blast off 100% - 500%. 4 | 5 | 6 | Feel free to make a pull request if you want to implement a useful feature. You'll have to hook it up to your API keys first though. 7 | 8 | # 10/12/20 9 | - Added #crypto #defi #eth hashtags to reach more people 10 | - Removed axios and I switched to [hooman](https://github.com/sayem314/hooman) 11 | 12 | # 9/21/20: 13 | - Added CoinMarketCap scraping! Now the bot will tweet out new coins from both CoinGecko and CoinMarketCap 14 | - Removed price % change. Most of the new coins that are added have no data on them when the bot finds them, so having data on how much the price has changed in the last hour/day was worthless. 15 | - New name / icon for the bot. Now that it scrapes more than just CoinGecko, a new name was needed 16 | 17 | 18 | # TODO: 19 | - Uniswap scraping 20 | - Updates on coin growth 21 | - More interactivity. (provide price updates if someone likes/retweets?) 22 | 23 | 24 | You can follow it here: 25 | https://twitter.com/CryptoGemsBot 26 | -------------------------------------------------------------------------------- /main.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { 3 | function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 4 | return new (P || (P = Promise))(function (resolve, reject) { 5 | function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 6 | function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 7 | function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 8 | step((generator = generator.apply(thisArg, _arguments || [])).next()); 9 | }); 10 | }; 11 | var __generator = (this && this.__generator) || function (thisArg, body) { 12 | var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; 13 | return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; 14 | function verb(n) { return function (v) { return step([n, v]); }; } 15 | function step(op) { 16 | if (f) throw new TypeError("Generator is already executing."); 17 | while (_) try { 18 | if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; 19 | if (y = 0, t) op = [op[0] & 2, t.value]; 20 | switch (op[0]) { 21 | case 0: case 1: t = op; break; 22 | case 4: _.label++; return { value: op[1], done: false }; 23 | case 5: _.label++; y = op[1]; op = [0]; continue; 24 | case 7: op = _.ops.pop(); _.trys.pop(); continue; 25 | default: 26 | if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } 27 | if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } 28 | if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } 29 | if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } 30 | if (t[2]) _.ops.pop(); 31 | _.trys.pop(); continue; 32 | } 33 | op = body.call(thisArg, _); 34 | } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } 35 | if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; 36 | } 37 | }; 38 | exports.__esModule = true; 39 | var cheerio = require("cheerio"); 40 | var fs = require("fs"); 41 | var Twitter = require("twitter-lite"); 42 | var hooman = require('hooman'); 43 | var CoinCodex = require('coincodex-api'); 44 | var Discord = require('discord.js'); 45 | var axios = require('axios'); 46 | var discord = new Discord.Client(); 47 | // create CoinCodex API client 48 | var codex = new CoinCodex(); 49 | // provide your own config with keys 50 | // comment this section out if you don't have keys and 51 | // and you just want to scrape Coingecko 52 | var Config = require("./config"); 53 | // setup client 54 | // comment this section out if you don't have keys and 55 | // and you just want to scrape Coingecko 56 | var client = new Twitter({ 57 | consumer_key: Config.consumer_key, 58 | consumer_secret: Config.consumer_secret, 59 | access_token_key: Config.access_token_key, 60 | access_token_secret: Config.access_token_secret 61 | }); 62 | // login to discord 63 | discord.login(Config.DISCORD_TOKEN); 64 | // variable to hold coins.txt data 65 | // TODO: convert to JSON / easier to parse format 66 | var coins = ""; 67 | function wait(milliseconds) { 68 | return __awaiter(this, void 0, void 0, function () { 69 | return __generator(this, function (_a) { 70 | switch (_a.label) { 71 | case 0: return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, milliseconds); })]; 72 | case 1: 73 | _a.sent(); 74 | return [2 /*return*/]; 75 | } 76 | }); 77 | }); 78 | } 79 | exports.wait = wait; 80 | // log output and error message in a discord server 81 | function log(message, where, err) { 82 | return __awaiter(this, void 0, void 0, function () { 83 | var channelId, channel; 84 | return __generator(this, function (_a) { 85 | switch (_a.label) { 86 | case 0: 87 | if (where === "gems") 88 | channelId = Config.DISCORD_CHANNEL_GEMS; 89 | else if (where === "social") 90 | channelId = Config.DISCORD_CHANNEL_SOCIAL; 91 | else 92 | return [2 /*return*/]; 93 | if (!(where === "gems")) return [3 /*break*/, 1]; 94 | // mention me if there is an error 95 | if (err) 96 | discord.channels.cache.get(channelId).send("<@" + Config.DISCORD_MENTION + ">\n" + message); 97 | else 98 | discord.channels.cache.get(channelId).send(message); 99 | return [3 /*break*/, 3]; 100 | case 1: 101 | if (!(where === "social")) return [3 /*break*/, 3]; 102 | return [4 /*yield*/, discord.channels.cache.get(channelId)]; 103 | case 2: 104 | channel = _a.sent(); 105 | if (!channel) 106 | return [2 /*return*/]; 107 | // edit message to show new data 108 | channel.messages.fetch(Config.DISCORD_EDIT) 109 | .then(function (m) { 110 | m.edit(message); 111 | }); 112 | _a.label = 3; 113 | case 3: return [2 /*return*/]; 114 | } 115 | }); 116 | }); 117 | } 118 | exports.log = log; 119 | // make a new tweet 120 | function newTweet(coinData) { 121 | return __awaiter(this, void 0, void 0, function () { 122 | var tweet; 123 | return __generator(this, function (_a) { 124 | switch (_a.label) { 125 | case 0: 126 | // don't tweet in dev 127 | if (__dirname.indexOf("/home/nick/Documents") !== -1) 128 | return [2 /*return*/]; 129 | tweet = "New " + coinData.site + " Listing!\n\n" + 130 | coinData.name + " / $" + coinData.ticker + 131 | "\nPrice: " + coinData.price + 132 | "\n24h Volume: " + coinData.volume + 133 | "\n#crypto #gem #eth #defi" + 134 | "\n\n" + coinData.url; 135 | // post the tweet 136 | return [4 /*yield*/, client.post("statuses/update", { 137 | status: tweet 138 | }) 139 | .then(function () { 140 | log("```New " + coinData.site + " Listing!\n\n" + 141 | coinData.name + " / $" + coinData.ticker + 142 | "\nPrice: " + coinData.price + 143 | "\n24h Volume: " + coinData.volume + 144 | "```\n" + coinData.url, "gems"); 145 | })["catch"](function (err) { 146 | log(err, "gems", true); 147 | })]; 148 | case 1: 149 | // post the tweet 150 | _a.sent(); 151 | return [2 /*return*/]; 152 | } 153 | }); 154 | }); 155 | } 156 | // load coins.txt data into coins global var 157 | function loadCoins() { 158 | return __awaiter(this, void 0, void 0, function () { 159 | return __generator(this, function (_a) { 160 | try { 161 | coins = fs.readFileSync("coins.txt", "utf8"); 162 | } 163 | catch (err) { 164 | coins = ""; 165 | log(err, "gems", true); 166 | } 167 | return [2 /*return*/, coins.length > 0]; 168 | }); 169 | }); 170 | } 171 | // save new coin data to coins.txt 172 | function saveCoins(coinData) { 173 | return __awaiter(this, void 0, void 0, function () { 174 | return __generator(this, function (_a) { 175 | switch (_a.label) { 176 | case 0: 177 | if (!(coins.indexOf(coinData.name + "(" + coinData.ticker + "): " + coinData.site) === -1)) return [3 /*break*/, 2]; 178 | // sleep after finding new coins 179 | // this is for if the bot breaks and misses coins 180 | // await sleep(1000); 181 | log("New " + coinData.site + " coin found: " + coinData.name + " / $" + coinData.ticker, "gems"); 182 | // append coin name to text file 183 | return [4 /*yield*/, fs.appendFile("coins.txt", "\n" + coinData.name + "(" + coinData.ticker + "): " + coinData.site, function (err) { 184 | if (err) 185 | log(err.message, "gems", true); 186 | })]; 187 | case 1: 188 | // append coin name to text file 189 | _a.sent(); 190 | newTweet(coinData); 191 | _a.label = 2; 192 | case 2: return [2 /*return*/]; 193 | } 194 | }); 195 | }); 196 | } 197 | // scrape coinmarketcap 198 | function coinmarketcapScrape() { 199 | return __awaiter(this, void 0, void 0, function () { 200 | var data, res, err_1, _i, data_1, token, coinName, coinTicker, price, volume, url, coinData; 201 | return __generator(this, function (_a) { 202 | switch (_a.label) { 203 | case 0: 204 | _a.trys.push([0, 2, , 3]); 205 | return [4 /*yield*/, axios.get('https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest', { 206 | headers: { 207 | 'X-CMC_PRO_API_KEY': Config.CMC_API_KEY 208 | }, 209 | params: { 210 | sort: "date_added", 211 | sort_dir: "asc" 212 | } 213 | })]; 214 | case 1: 215 | res = _a.sent(); 216 | // get response 217 | data = res.data.data; 218 | return [3 /*break*/, 3]; 219 | case 2: 220 | err_1 = _a.sent(); 221 | log(err_1, "gems", true); 222 | return [2 /*return*/]; 223 | case 3: 224 | // load html with cheerio 225 | // const $ = await cheerio.load(html); 226 | // iterate through latest tokens 227 | for (_i = 0, data_1 = data; _i < data_1.length; _i++) { 228 | token = data_1[_i]; 229 | coinName = token.name; 230 | coinTicker = token.symbol; 231 | price = token.quote.USD.price; 232 | volume = token.quote.USD.volume_24h; 233 | url = "https://coinmarketcap.com/currencies/" + token.slug; 234 | coinData = { 235 | name: coinName, 236 | ticker: coinTicker, 237 | price: price, 238 | volume: volume, 239 | url: url, 240 | site: "CoinMarketCap" 241 | }; 242 | saveCoins(coinData); 243 | } 244 | return [2 /*return*/]; 245 | } 246 | }); 247 | }); 248 | } 249 | // scrape the recently added page 250 | function coingeckoScrape() { 251 | return __awaiter(this, void 0, void 0, function () { 252 | var data, res, err_2, coinData, _i, data_2, token, coinName, coinTicker, price, volume, url, extraData; 253 | return __generator(this, function (_a) { 254 | switch (_a.label) { 255 | case 0: 256 | // log("scraping CoinGecko"); 257 | console.log("scraping"); 258 | _a.label = 1; 259 | case 1: 260 | _a.trys.push([1, 3, , 4]); 261 | return [4 /*yield*/, axios.get('https://api.coingecko.com/api/v3/coins/list')]; 262 | case 2: 263 | res = _a.sent(); 264 | // get response 265 | data = res.data; 266 | return [3 /*break*/, 4]; 267 | case 3: 268 | err_2 = _a.sent(); 269 | log(err_2, "gems", true); 270 | return [2 /*return*/]; 271 | case 4: 272 | _i = 0, data_2 = data; 273 | _a.label = 5; 274 | case 5: 275 | if (!(_i < data_2.length)) return [3 /*break*/, 9]; 276 | token = data_2[_i]; 277 | coinName = token.name; 278 | coinTicker = token.symbol; 279 | price = void 0; 280 | volume = void 0; 281 | url = ""; 282 | if (!(coins.indexOf(coinName + "(" + coinTicker + "): CoinGecko") === -1)) return [3 /*break*/, 7]; 283 | return [4 /*yield*/, axios.get('https://api.coingecko.com/api/v3/coins/' + token.id)]; 284 | case 6: 285 | extraData = _a.sent(); 286 | // get data 287 | try { 288 | extraData = extraData.data.tickers[0]; 289 | price = extraData.converted_last.usd; 290 | volume = extraData.converted_volume.usd; 291 | url = "https://www.coingecko.com/en/coins/" + token.id; 292 | } 293 | catch (e) { 294 | return [2 /*return*/]; 295 | } 296 | _a.label = 7; 297 | case 7: 298 | // set data 299 | coinData = { 300 | name: coinName, 301 | ticker: coinTicker, 302 | price: price, 303 | volume: volume, 304 | url: url, 305 | site: "CoinGecko" 306 | }; 307 | saveCoins(coinData); 308 | _a.label = 8; 309 | case 8: 310 | _i++; 311 | return [3 /*break*/, 5]; 312 | case 9: return [2 /*return*/]; 313 | } 314 | }); 315 | }); 316 | } 317 | // scrape CoinCodex 318 | function scrapeCodex() { 319 | return __awaiter(this, void 0, void 0, function () { 320 | var data; 321 | return __generator(this, function (_a) { 322 | switch (_a.label) { 323 | case 0: return [4 /*yield*/, codex.coins.all()]; 324 | case 1: 325 | data = _a.sent(); 326 | console.log(data); 327 | return [2 /*return*/]; 328 | } 329 | }); 330 | }); 331 | } 332 | // scrape Coin360 333 | function scrape360() { 334 | return __awaiter(this, void 0, void 0, function () { 335 | var html, response, err_3, x, key, $; 336 | return __generator(this, function (_a) { 337 | switch (_a.label) { 338 | case 0: 339 | _a.trys.push([0, 2, , 3]); 340 | return [4 /*yield*/, hooman.get('https://api.coin360.com/coin/latest')]; 341 | case 1: 342 | response = _a.sent(); 343 | html = JSON.parse(response.body); 344 | return [3 /*break*/, 3]; 345 | case 2: 346 | err_3 = _a.sent(); 347 | log(err_3, "gems", true); 348 | return [2 /*return*/]; 349 | case 3: 350 | // exit if no html 351 | if (!html) 352 | return [2 /*return*/]; 353 | x = 0; 354 | for (key in html) { 355 | if (html.hasOwnProperty(key)) { 356 | console.log(html[key]); 357 | console.log(key); 358 | } 359 | if (x++ > 10) 360 | break; 361 | } 362 | return [4 /*yield*/, cheerio.load(html)]; 363 | case 4: 364 | $ = _a.sent(); 365 | return [2 /*return*/]; 366 | } 367 | }); 368 | }); 369 | } 370 | // start scraping process 371 | function scrape() { 372 | // scrape sites 373 | coingeckoScrape(); 374 | coinmarketcapScrape(); 375 | } 376 | // wait for discord to be ready 377 | discord.on("ready", function () { return __awaiter(void 0, void 0, void 0, function () { 378 | var reg; 379 | return __generator(this, function (_a) { 380 | reg = /\B(\$[a-zA-Z][a-zA-Z0-9]+\b)(?!;)/gm; 381 | // listen for messages 382 | discord.on("message", function (message) { 383 | /* 384 | 385 | // is this in the social channel? 386 | if (message.channel.id !== Config.DISCORD_CHANNEL_SOCIAL) 387 | return; 388 | 389 | // get the message content 390 | const text = message.content; 391 | 392 | // restart streaming and pass in requested tickers 393 | // if there are at least 3 394 | if (text.match(reg) && text.match(reg).length >= 3) 395 | twitterStream.restart(text.match(reg)); 396 | else 397 | twitterStream.restart(); 398 | 399 | if (message) { 400 | 401 | try { 402 | message.delete({timeout: 500}) 403 | } catch (e) { 404 | return; 405 | } 406 | } 407 | */ 408 | }); 409 | // start streaming tweets 410 | // twitterStream.start(); 411 | // load saved coins 412 | if (!loadCoins()) { 413 | log("coins.txt failed to load", "gems", true); 414 | return [2 /*return*/]; 415 | } 416 | // start first scrape 417 | // log("starting", "gems"); 418 | scrape(); 419 | // scrape every 15 minutes 420 | setInterval(function () { 421 | if (loadCoins()) { 422 | scrape(); 423 | } 424 | }, 900000); 425 | return [2 /*return*/]; 426 | }); 427 | }); }); 428 | -------------------------------------------------------------------------------- /main.ts: -------------------------------------------------------------------------------- 1 | import * as cheerio from 'cheerio'; 2 | import * as fs from 'fs'; 3 | import * as twitterStream from './stream'; 4 | const Twitter = require("twitter-lite"); 5 | const hooman = require('hooman'); 6 | const CoinCodex = require('coincodex-api'); 7 | const Discord = require('discord.js'); 8 | const axios = require('axios'); 9 | const discord = new Discord.Client(); 10 | 11 | // create CoinCodex API client 12 | const codex = new CoinCodex(); 13 | 14 | // provide your own config with keys 15 | // comment this section out if you don't have keys and 16 | // and you just want to scrape Coingecko 17 | const Config = require("./config"); 18 | 19 | // setup client 20 | // comment this section out if you don't have keys and 21 | // and you just want to scrape Coingecko 22 | 23 | const client = new Twitter({ 24 | consumer_key: Config.consumer_key, 25 | consumer_secret: Config.consumer_secret, 26 | access_token_key: Config.access_token_key, 27 | access_token_secret: Config.access_token_secret 28 | }); 29 | 30 | // login to discord 31 | discord.login(Config.DISCORD_TOKEN); 32 | 33 | // variable to hold coins.txt data 34 | // TODO: convert to JSON / easier to parse format 35 | let coins = ""; 36 | 37 | interface CoinData { 38 | name: string, 39 | ticker: string, 40 | price: string, 41 | volume: string, 42 | url: string, 43 | site: string 44 | } 45 | 46 | export async function wait(milliseconds: number) { 47 | await new Promise(resolve => setTimeout(resolve, milliseconds)); 48 | } 49 | 50 | // log output and error message in a discord server 51 | export async function log(message: string, where: string, err?: boolean | null) { 52 | 53 | let channelId:string; 54 | 55 | if(where === "gems") 56 | channelId = Config.DISCORD_CHANNEL_GEMS; 57 | else if (where === "social") 58 | channelId = Config.DISCORD_CHANNEL_SOCIAL; 59 | else 60 | return; 61 | 62 | if (where === "gems") { 63 | 64 | // mention me if there is an error 65 | if (err) 66 | discord.channels.cache.get(channelId).send("<@" + Config.DISCORD_MENTION + ">\n" + message); 67 | else 68 | discord.channels.cache.get(channelId).send(message); 69 | 70 | } else if (where === "social") { 71 | 72 | // get the channel 73 | const channel = await discord.channels.cache.get(channelId); 74 | 75 | if (!channel) 76 | return; 77 | 78 | // edit message to show new data 79 | channel.messages.fetch(Config.DISCORD_EDIT) 80 | .then((m: any) => { 81 | m.edit(message) 82 | }); 83 | 84 | 85 | } 86 | 87 | } 88 | 89 | // make a new tweet 90 | async function newTweet(coinData: CoinData) { 91 | 92 | // don't tweet in dev 93 | if (__dirname.indexOf("/home/nick/Documents") !== -1) 94 | return; 95 | 96 | // build tweet 97 | let tweet = "New " + coinData.site + " Listing!\n\n" + 98 | coinData.name + " / $" + coinData.ticker + 99 | "\nPrice: " + coinData.price + 100 | "\n24h Volume: " + coinData.volume + 101 | "\n#crypto #gem #eth #defi" + 102 | "\n\n" + coinData.url; 103 | 104 | // post the tweet 105 | await client.post("statuses/update", { 106 | status: tweet 107 | }) 108 | .then(() => { 109 | log("```New " + coinData.site + " Listing!\n\n" + 110 | coinData.name + " / $" + coinData.ticker + 111 | "\nPrice: " + coinData.price + 112 | "\n24h Volume: " + coinData.volume + 113 | "```\n" + coinData.url 114 | , "gems"); 115 | }) 116 | .catch((err: any) => { 117 | log(err, "gems", true); 118 | }) 119 | 120 | } 121 | 122 | // load coins.txt data into coins global var 123 | async function loadCoins() { 124 | 125 | try { 126 | coins = fs.readFileSync("coins.txt", "utf8"); 127 | } catch(err) { 128 | coins = ""; 129 | log(err, "gems", true); 130 | } 131 | 132 | return coins.length > 0; 133 | } 134 | 135 | // save new coin data to coins.txt 136 | async function saveCoins(coinData: CoinData) { 137 | 138 | // check if coin has already been added 139 | if (coins.indexOf(coinData.name+ "(" + coinData.ticker + "): " + coinData.site) === -1) { 140 | 141 | // sleep after finding new coins 142 | // this is for if the bot breaks and misses coins 143 | // await sleep(1000); 144 | 145 | log("New " + coinData.site + " coin found: " + coinData.name + " / $" + coinData.ticker, "gems"); 146 | 147 | // append coin name to text file 148 | await fs.appendFile("coins.txt", "\n" + coinData.name+ "(" + coinData.ticker + "): " + coinData.site, (err) => { 149 | if (err) log(err.message, "gems", true); 150 | }); 151 | 152 | newTweet(coinData); 153 | 154 | } 155 | 156 | } 157 | 158 | 159 | // scrape coinmarketcap 160 | async function coinmarketcapScrape() { 161 | 162 | // try and read coins.txt and make get request 163 | let data: any; 164 | 165 | try { 166 | 167 | const res = await axios.get('https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest', { 168 | headers: { 169 | 'X-CMC_PRO_API_KEY': Config.CMC_API_KEY 170 | }, 171 | params: { 172 | sort: "date_added", 173 | sort_dir: "asc" 174 | } 175 | }); 176 | 177 | // get response 178 | data = res.data.data; 179 | 180 | } catch(err) { 181 | log(err, "gems", true); 182 | return; 183 | } 184 | 185 | // load html with cheerio 186 | // const $ = await cheerio.load(html); 187 | 188 | // iterate through latest tokens 189 | for (const token of data) { 190 | 191 | // name and ticker 192 | let coinName = token.name; 193 | let coinTicker = token.symbol; 194 | 195 | // get data 196 | let price = token.quote.USD.price; 197 | let volume = token.quote.USD.volume_24h; 198 | let url = "https://coinmarketcap.com/currencies/" + token.slug; 199 | 200 | const coinData:CoinData = { 201 | name: coinName, 202 | ticker: coinTicker, 203 | price: price, 204 | volume: volume, 205 | url: url, 206 | site: "CoinMarketCap" 207 | }; 208 | 209 | saveCoins(coinData); 210 | 211 | } 212 | 213 | } 214 | 215 | // scrape the recently added page 216 | async function coingeckoScrape() { 217 | 218 | // log("scraping CoinGecko"); 219 | console.log("scraping"); 220 | 221 | let data: any; 222 | 223 | try { 224 | 225 | const res = await axios.get('https://api.coingecko.com/api/v3/coins/list'); 226 | 227 | // get response 228 | data = res.data; 229 | 230 | 231 | } catch(err) { 232 | console.log(err, "gems", true); 233 | return; 234 | } 235 | 236 | let coinData: CoinData; 237 | 238 | // iterate through latest tokens 239 | for (const token of data) { 240 | 241 | 242 | // name and ticker 243 | let coinName = token.name; 244 | let coinTicker = token.symbol; 245 | let price = ''; 246 | let volume = ''; 247 | let url = ''; 248 | 249 | // a second request needs to be made for the price & volume data 250 | if (coins.indexOf(coinName + "(" + coinTicker + "): CoinGecko") === -1) { 251 | 252 | // make coin data request 253 | let extraData = await axios.get('https://api.coingecko.com/api/v3/coins/' + token.id); 254 | 255 | // get data 256 | try { 257 | extraData = extraData.data.tickers[0]; 258 | price = extraData.converted_last.usd; 259 | volume = extraData.converted_volume.usd; 260 | url = "https://www.coingecko.com/en/coins/" + token.id; 261 | } catch (e) { 262 | console.log("error: ", coinName) 263 | continue; 264 | } 265 | 266 | } 267 | 268 | // set data 269 | coinData = { 270 | name: coinName, 271 | ticker: coinTicker, 272 | price: price, 273 | volume: volume, 274 | url: url, 275 | site: "CoinGecko" 276 | }; 277 | 278 | saveCoins(coinData); 279 | 280 | } 281 | 282 | } 283 | 284 | 285 | // scrape CoinCodex 286 | async function scrapeCodex() { 287 | let data = await codex.coins.all(); 288 | console.log(data); 289 | } 290 | 291 | 292 | // scrape Coin360 293 | async function scrape360() { 294 | 295 | let html:any; 296 | 297 | try { 298 | const response = await hooman.get('https://api.coin360.com/coin/latest'); 299 | html = JSON.parse(response.body); 300 | } catch(err) { 301 | log(err, "gems", true); 302 | return; 303 | } 304 | 305 | // exit if no html 306 | if (!html) 307 | return; 308 | 309 | 310 | let x = 0; 311 | for (const key in html) { 312 | if (html.hasOwnProperty(key)) { 313 | console.log(html[key]) 314 | console.log(key); 315 | } 316 | 317 | 318 | if (x++ > 10) 319 | break; 320 | } 321 | 322 | // load html with cheerio 323 | const $ = await cheerio.load(html); 324 | 325 | } 326 | 327 | // start scraping process 328 | function scrape() { 329 | 330 | // scrape sites 331 | coingeckoScrape(); 332 | coinmarketcapScrape(); 333 | 334 | } 335 | 336 | // wait for discord to be ready 337 | discord.on("ready", async () => { 338 | 339 | // reg for detecting tickers 340 | const reg = /\B(\$[a-zA-Z][a-zA-Z0-9]+\b)(?!;)/gm; 341 | 342 | // listen for messages 343 | discord.on("message", (message: any) => { 344 | 345 | /* 346 | 347 | // is this in the social channel? 348 | if (message.channel.id !== Config.DISCORD_CHANNEL_SOCIAL) 349 | return; 350 | 351 | // get the message content 352 | const text = message.content; 353 | 354 | // restart streaming and pass in requested tickers 355 | // if there are at least 3 356 | if (text.match(reg) && text.match(reg).length >= 3) 357 | twitterStream.restart(text.match(reg)); 358 | else 359 | twitterStream.restart(); 360 | 361 | if (message) { 362 | 363 | try { 364 | message.delete({timeout: 500}) 365 | } catch (e) { 366 | return; 367 | } 368 | } 369 | */ 370 | 371 | }) 372 | 373 | // start streaming tweets 374 | // twitterStream.start(); 375 | 376 | 377 | // load saved coins 378 | if (!loadCoins()) { 379 | log("coins.txt failed to load", "gems", true) 380 | return; 381 | } 382 | 383 | // start first scrape 384 | // log("starting", "gems"); 385 | scrape(); 386 | 387 | // scrape every 15 minutes 388 | setInterval(() => { 389 | if (loadCoins()) { 390 | scrape(); 391 | } 392 | }, 900000); 393 | 394 | }) -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "coingecko_scrape", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@discordjs/collection": { 8 | "version": "0.1.6", 9 | "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.1.6.tgz", 10 | "integrity": "sha512-utRNxnd9kSS2qhyivo9lMlt5qgAUasH2gb7BEOn6p0efFh24gjGomHzWKMAPn2hEReOPQZCJaRKoURwRotKucQ==" 11 | }, 12 | "@discordjs/form-data": { 13 | "version": "3.0.1", 14 | "resolved": "https://registry.npmjs.org/@discordjs/form-data/-/form-data-3.0.1.tgz", 15 | "integrity": "sha512-ZfFsbgEXW71Rw/6EtBdrP5VxBJy4dthyC0tpQKGKmYFImlmmrykO14Za+BiIVduwjte0jXEBlhSKf0MWbFp9Eg==", 16 | "requires": { 17 | "asynckit": "^0.4.0", 18 | "combined-stream": "^1.0.8", 19 | "mime-types": "^2.1.12" 20 | } 21 | }, 22 | "@sindresorhus/is": { 23 | "version": "3.1.2", 24 | "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-3.1.2.tgz", 25 | "integrity": "sha512-JiX9vxoKMmu8Y3Zr2RVathBL1Cdu4Nt4MuNWemt1Nc06A0RAin9c5FArkhGsyMBWfCu4zj+9b+GxtjAnE4qqLQ==" 26 | }, 27 | "@szmarczak/http-timer": { 28 | "version": "4.0.5", 29 | "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.5.tgz", 30 | "integrity": "sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ==", 31 | "requires": { 32 | "defer-to-connect": "^2.0.0" 33 | } 34 | }, 35 | "@types/cacheable-request": { 36 | "version": "6.0.1", 37 | "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.1.tgz", 38 | "integrity": "sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ==", 39 | "requires": { 40 | "@types/http-cache-semantics": "*", 41 | "@types/keyv": "*", 42 | "@types/node": "*", 43 | "@types/responselike": "*" 44 | } 45 | }, 46 | "@types/cheerio": { 47 | "version": "0.22.21", 48 | "resolved": "https://registry.npmjs.org/@types/cheerio/-/cheerio-0.22.21.tgz", 49 | "integrity": "sha512-aGI3DfswwqgKPiEOTaiHV2ZPC9KEhprpgEbJnv0fZl3SGX0cGgEva1126dGrMC6AJM6v/aihlUgJn9M5DbDZ/Q==", 50 | "requires": { 51 | "@types/node": "*" 52 | } 53 | }, 54 | "@types/http-cache-semantics": { 55 | "version": "4.0.0", 56 | "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz", 57 | "integrity": "sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A==" 58 | }, 59 | "@types/keyv": { 60 | "version": "3.1.1", 61 | "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.1.tgz", 62 | "integrity": "sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw==", 63 | "requires": { 64 | "@types/node": "*" 65 | } 66 | }, 67 | "@types/node": { 68 | "version": "14.6.0", 69 | "resolved": "https://registry.npmjs.org/@types/node/-/node-14.6.0.tgz", 70 | "integrity": "sha512-mikldZQitV94akrc4sCcSjtJfsTKt4p+e/s0AGscVA6XArQ9kFclP+ZiYUMnq987rc6QlYxXv/EivqlfSLxpKA==" 71 | }, 72 | "@types/node-schedule": { 73 | "version": "1.3.0", 74 | "resolved": "https://registry.npmjs.org/@types/node-schedule/-/node-schedule-1.3.0.tgz", 75 | "integrity": "sha512-gjKmC9wFxn8laKYKwVP2iZvxeiA1DWUb6CXAYXtoYBcDbiyMqxLn2sQq+8aaNc7Xr0p93Hf0O0VizdaEPUO0vA==", 76 | "requires": { 77 | "@types/node": "*" 78 | } 79 | }, 80 | "@types/responselike": { 81 | "version": "1.0.0", 82 | "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", 83 | "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", 84 | "requires": { 85 | "@types/node": "*" 86 | } 87 | }, 88 | "abab": { 89 | "version": "2.0.5", 90 | "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", 91 | "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==" 92 | }, 93 | "abort-controller": { 94 | "version": "3.0.0", 95 | "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", 96 | "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", 97 | "requires": { 98 | "event-target-shim": "^5.0.0" 99 | } 100 | }, 101 | "acorn": { 102 | "version": "7.4.0", 103 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz", 104 | "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==" 105 | }, 106 | "acorn-globals": { 107 | "version": "6.0.0", 108 | "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", 109 | "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", 110 | "requires": { 111 | "acorn": "^7.1.1", 112 | "acorn-walk": "^7.1.1" 113 | } 114 | }, 115 | "acorn-walk": { 116 | "version": "7.2.0", 117 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", 118 | "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" 119 | }, 120 | "ajv": { 121 | "version": "6.12.5", 122 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.5.tgz", 123 | "integrity": "sha512-lRF8RORchjpKG50/WFf8xmg7sgCLFiYNNnqdKflk63whMQcWR5ngGjiSXkL9bjxy6B2npOK2HSMN49jEBMSkag==", 124 | "requires": { 125 | "fast-deep-equal": "^3.1.1", 126 | "fast-json-stable-stringify": "^2.0.0", 127 | "json-schema-traverse": "^0.4.1", 128 | "uri-js": "^4.2.2" 129 | } 130 | }, 131 | "ansi-regex": { 132 | "version": "2.1.1", 133 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 134 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" 135 | }, 136 | "anymatch": { 137 | "version": "2.0.0", 138 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", 139 | "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", 140 | "requires": { 141 | "micromatch": "^3.1.4", 142 | "normalize-path": "^2.1.1" 143 | }, 144 | "dependencies": { 145 | "normalize-path": { 146 | "version": "2.1.1", 147 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", 148 | "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", 149 | "requires": { 150 | "remove-trailing-separator": "^1.0.1" 151 | } 152 | } 153 | } 154 | }, 155 | "aproba": { 156 | "version": "1.2.0", 157 | "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", 158 | "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" 159 | }, 160 | "are-we-there-yet": { 161 | "version": "1.1.5", 162 | "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", 163 | "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", 164 | "requires": { 165 | "delegates": "^1.0.0", 166 | "readable-stream": "^2.0.6" 167 | }, 168 | "dependencies": { 169 | "readable-stream": { 170 | "version": "2.3.7", 171 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 172 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 173 | "requires": { 174 | "core-util-is": "~1.0.0", 175 | "inherits": "~2.0.3", 176 | "isarray": "~1.0.0", 177 | "process-nextick-args": "~2.0.0", 178 | "safe-buffer": "~5.1.1", 179 | "string_decoder": "~1.1.1", 180 | "util-deprecate": "~1.0.1" 181 | } 182 | }, 183 | "safe-buffer": { 184 | "version": "5.1.2", 185 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 186 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 187 | }, 188 | "string_decoder": { 189 | "version": "1.1.1", 190 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 191 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 192 | "requires": { 193 | "safe-buffer": "~5.1.0" 194 | } 195 | } 196 | } 197 | }, 198 | "arr-diff": { 199 | "version": "4.0.0", 200 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", 201 | "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" 202 | }, 203 | "arr-flatten": { 204 | "version": "1.1.0", 205 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", 206 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" 207 | }, 208 | "arr-union": { 209 | "version": "3.1.0", 210 | "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", 211 | "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" 212 | }, 213 | "array-unique": { 214 | "version": "0.3.2", 215 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", 216 | "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" 217 | }, 218 | "asn1": { 219 | "version": "0.2.4", 220 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", 221 | "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", 222 | "requires": { 223 | "safer-buffer": "~2.1.0" 224 | } 225 | }, 226 | "assert-plus": { 227 | "version": "1.0.0", 228 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 229 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" 230 | }, 231 | "assign-symbols": { 232 | "version": "1.0.0", 233 | "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", 234 | "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" 235 | }, 236 | "async": { 237 | "version": "1.5.2", 238 | "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", 239 | "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" 240 | }, 241 | "async-each": { 242 | "version": "1.0.3", 243 | "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", 244 | "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" 245 | }, 246 | "asynckit": { 247 | "version": "0.4.0", 248 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 249 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" 250 | }, 251 | "atob": { 252 | "version": "2.1.2", 253 | "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", 254 | "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" 255 | }, 256 | "aws-sign2": { 257 | "version": "0.7.0", 258 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", 259 | "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" 260 | }, 261 | "aws4": { 262 | "version": "1.10.1", 263 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.1.tgz", 264 | "integrity": "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==" 265 | }, 266 | "axios": { 267 | "version": "0.20.0", 268 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.20.0.tgz", 269 | "integrity": "sha512-ANA4rr2BDcmmAQLOKft2fufrtuvlqR+cXNNinUmvfeSNCOF98PZL+7M/v1zIdGo7OLjEA9J2gXJL+j4zGsl0bA==", 270 | "requires": { 271 | "follow-redirects": "^1.10.0" 272 | } 273 | }, 274 | "backoff": { 275 | "version": "2.5.0", 276 | "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz", 277 | "integrity": "sha1-9hbtqdPktmuMp/ynn2lXIsX44m8=", 278 | "requires": { 279 | "precond": "0.2" 280 | } 281 | }, 282 | "backoff-linear-strategy": { 283 | "version": "1.0.0", 284 | "resolved": "https://registry.npmjs.org/backoff-linear-strategy/-/backoff-linear-strategy-1.0.0.tgz", 285 | "integrity": "sha1-hbVvU8ENR0oltUEjzLB6lKAEVNc=", 286 | "requires": { 287 | "backoff": "2.4.x" 288 | }, 289 | "dependencies": { 290 | "backoff": { 291 | "version": "2.4.1", 292 | "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.4.1.tgz", 293 | "integrity": "sha1-L2jFDg3Xidvv4kIApi77BNJFbWg=", 294 | "requires": { 295 | "precond": "0.2" 296 | } 297 | } 298 | } 299 | }, 300 | "balanced-match": { 301 | "version": "1.0.0", 302 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 303 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" 304 | }, 305 | "base": { 306 | "version": "0.11.2", 307 | "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", 308 | "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", 309 | "requires": { 310 | "cache-base": "^1.0.1", 311 | "class-utils": "^0.3.5", 312 | "component-emitter": "^1.2.1", 313 | "define-property": "^1.0.0", 314 | "isobject": "^3.0.1", 315 | "mixin-deep": "^1.2.0", 316 | "pascalcase": "^0.1.1" 317 | }, 318 | "dependencies": { 319 | "define-property": { 320 | "version": "1.0.0", 321 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 322 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 323 | "requires": { 324 | "is-descriptor": "^1.0.0" 325 | } 326 | }, 327 | "is-accessor-descriptor": { 328 | "version": "1.0.0", 329 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 330 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 331 | "requires": { 332 | "kind-of": "^6.0.0" 333 | } 334 | }, 335 | "is-data-descriptor": { 336 | "version": "1.0.0", 337 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 338 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 339 | "requires": { 340 | "kind-of": "^6.0.0" 341 | } 342 | }, 343 | "is-descriptor": { 344 | "version": "1.0.2", 345 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 346 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 347 | "requires": { 348 | "is-accessor-descriptor": "^1.0.0", 349 | "is-data-descriptor": "^1.0.0", 350 | "kind-of": "^6.0.2" 351 | } 352 | } 353 | } 354 | }, 355 | "base64-js": { 356 | "version": "1.3.1", 357 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", 358 | "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" 359 | }, 360 | "bcrypt-pbkdf": { 361 | "version": "1.0.2", 362 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", 363 | "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", 364 | "requires": { 365 | "tweetnacl": "^0.14.3" 366 | } 367 | }, 368 | "binary-extensions": { 369 | "version": "1.13.1", 370 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", 371 | "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" 372 | }, 373 | "bindings": { 374 | "version": "1.5.0", 375 | "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", 376 | "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", 377 | "optional": true, 378 | "requires": { 379 | "file-uri-to-path": "1.0.0" 380 | } 381 | }, 382 | "bl": { 383 | "version": "4.0.3", 384 | "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz", 385 | "integrity": "sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==", 386 | "requires": { 387 | "buffer": "^5.5.0", 388 | "inherits": "^2.0.4", 389 | "readable-stream": "^3.4.0" 390 | } 391 | }, 392 | "boolbase": { 393 | "version": "1.0.0", 394 | "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", 395 | "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" 396 | }, 397 | "brace-expansion": { 398 | "version": "1.1.11", 399 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 400 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 401 | "requires": { 402 | "balanced-match": "^1.0.0", 403 | "concat-map": "0.0.1" 404 | } 405 | }, 406 | "braces": { 407 | "version": "2.3.2", 408 | "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", 409 | "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", 410 | "requires": { 411 | "arr-flatten": "^1.1.0", 412 | "array-unique": "^0.3.2", 413 | "extend-shallow": "^2.0.1", 414 | "fill-range": "^4.0.0", 415 | "isobject": "^3.0.1", 416 | "repeat-element": "^1.1.2", 417 | "snapdragon": "^0.8.1", 418 | "snapdragon-node": "^2.0.1", 419 | "split-string": "^3.0.2", 420 | "to-regex": "^3.0.1" 421 | }, 422 | "dependencies": { 423 | "extend-shallow": { 424 | "version": "2.0.1", 425 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 426 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 427 | "requires": { 428 | "is-extendable": "^0.1.0" 429 | } 430 | } 431 | } 432 | }, 433 | "broadway": { 434 | "version": "0.3.6", 435 | "resolved": "https://registry.npmjs.org/broadway/-/broadway-0.3.6.tgz", 436 | "integrity": "sha1-fb7waLlUt5B5Jf1USWO1eKkCuno=", 437 | "requires": { 438 | "cliff": "0.1.9", 439 | "eventemitter2": "0.4.14", 440 | "nconf": "0.6.9", 441 | "utile": "0.2.1", 442 | "winston": "0.8.0" 443 | }, 444 | "dependencies": { 445 | "async": { 446 | "version": "0.2.10", 447 | "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", 448 | "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=" 449 | }, 450 | "cliff": { 451 | "version": "0.1.9", 452 | "resolved": "https://registry.npmjs.org/cliff/-/cliff-0.1.9.tgz", 453 | "integrity": "sha1-ohHgnGo947oa8n0EnTASUNGIErw=", 454 | "requires": { 455 | "colors": "0.x.x", 456 | "eyes": "0.1.x", 457 | "winston": "0.8.x" 458 | } 459 | }, 460 | "nconf": { 461 | "version": "0.6.9", 462 | "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.6.9.tgz", 463 | "integrity": "sha1-lXDvFe1vmuays8jV5xtm0xk81mE=", 464 | "requires": { 465 | "async": "0.2.9", 466 | "ini": "1.x.x", 467 | "optimist": "0.6.0" 468 | }, 469 | "dependencies": { 470 | "async": { 471 | "version": "0.2.9", 472 | "resolved": "https://registry.npmjs.org/async/-/async-0.2.9.tgz", 473 | "integrity": "sha1-32MGD789Myhqdqr21Vophtn/hhk=" 474 | } 475 | } 476 | }, 477 | "utile": { 478 | "version": "0.2.1", 479 | "resolved": "https://registry.npmjs.org/utile/-/utile-0.2.1.tgz", 480 | "integrity": "sha1-kwyI6ZCY1iIINMNWy9mncFItkNc=", 481 | "requires": { 482 | "async": "~0.2.9", 483 | "deep-equal": "*", 484 | "i": "0.3.x", 485 | "mkdirp": "0.x.x", 486 | "ncp": "0.4.x", 487 | "rimraf": "2.x.x" 488 | } 489 | }, 490 | "winston": { 491 | "version": "0.8.0", 492 | "resolved": "https://registry.npmjs.org/winston/-/winston-0.8.0.tgz", 493 | "integrity": "sha1-YdCDD6aZcGISIGsKK1ymmpMENmg=", 494 | "requires": { 495 | "async": "0.2.x", 496 | "colors": "0.6.x", 497 | "cycle": "1.0.x", 498 | "eyes": "0.1.x", 499 | "pkginfo": "0.3.x", 500 | "stack-trace": "0.0.x" 501 | } 502 | } 503 | } 504 | }, 505 | "browser-process-hrtime": { 506 | "version": "1.0.0", 507 | "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", 508 | "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" 509 | }, 510 | "buffer": { 511 | "version": "5.6.0", 512 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", 513 | "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", 514 | "requires": { 515 | "base64-js": "^1.0.2", 516 | "ieee754": "^1.1.4" 517 | } 518 | }, 519 | "cache-base": { 520 | "version": "1.0.1", 521 | "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", 522 | "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", 523 | "requires": { 524 | "collection-visit": "^1.0.0", 525 | "component-emitter": "^1.2.1", 526 | "get-value": "^2.0.6", 527 | "has-value": "^1.0.0", 528 | "isobject": "^3.0.1", 529 | "set-value": "^2.0.0", 530 | "to-object-path": "^0.3.0", 531 | "union-value": "^1.0.0", 532 | "unset-value": "^1.0.0" 533 | } 534 | }, 535 | "cacheable-lookup": { 536 | "version": "5.0.3", 537 | "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.3.tgz", 538 | "integrity": "sha512-W+JBqF9SWe18A72XFzN/V/CULFzPm7sBXzzR6ekkE+3tLG72wFZrBiBZhrZuDoYexop4PHJVdFAKb/Nj9+tm9w==" 539 | }, 540 | "cacheable-request": { 541 | "version": "7.0.1", 542 | "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.1.tgz", 543 | "integrity": "sha512-lt0mJ6YAnsrBErpTMWeu5kl/tg9xMAWjavYTN6VQXM1A/teBITuNcccXsCxF0tDQQJf9DfAaX5O4e0zp0KlfZw==", 544 | "requires": { 545 | "clone-response": "^1.0.2", 546 | "get-stream": "^5.1.0", 547 | "http-cache-semantics": "^4.0.0", 548 | "keyv": "^4.0.0", 549 | "lowercase-keys": "^2.0.0", 550 | "normalize-url": "^4.1.0", 551 | "responselike": "^2.0.0" 552 | } 553 | }, 554 | "caller": { 555 | "version": "0.0.1", 556 | "resolved": "https://registry.npmjs.org/caller/-/caller-0.0.1.tgz", 557 | "integrity": "sha1-83odbqEOgp2UchrimpC7T7Uqt2c=", 558 | "requires": { 559 | "tape": "~2.3.2" 560 | } 561 | }, 562 | "camelcase": { 563 | "version": "2.1.1", 564 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", 565 | "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" 566 | }, 567 | "caseless": { 568 | "version": "0.12.0", 569 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", 570 | "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" 571 | }, 572 | "cheerio": { 573 | "version": "1.0.0-rc.3", 574 | "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.3.tgz", 575 | "integrity": "sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA==", 576 | "requires": { 577 | "css-select": "~1.2.0", 578 | "dom-serializer": "~0.1.1", 579 | "entities": "~1.1.1", 580 | "htmlparser2": "^3.9.1", 581 | "lodash": "^4.15.0", 582 | "parse5": "^3.0.1" 583 | } 584 | }, 585 | "chokidar": { 586 | "version": "2.1.8", 587 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", 588 | "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", 589 | "requires": { 590 | "anymatch": "^2.0.0", 591 | "async-each": "^1.0.1", 592 | "braces": "^2.3.2", 593 | "fsevents": "^1.2.7", 594 | "glob-parent": "^3.1.0", 595 | "inherits": "^2.0.3", 596 | "is-binary-path": "^1.0.0", 597 | "is-glob": "^4.0.0", 598 | "normalize-path": "^3.0.0", 599 | "path-is-absolute": "^1.0.0", 600 | "readdirp": "^2.2.1", 601 | "upath": "^1.1.1" 602 | } 603 | }, 604 | "chownr": { 605 | "version": "1.1.4", 606 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", 607 | "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" 608 | }, 609 | "class-utils": { 610 | "version": "0.3.6", 611 | "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", 612 | "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", 613 | "requires": { 614 | "arr-union": "^3.1.0", 615 | "define-property": "^0.2.5", 616 | "isobject": "^3.0.0", 617 | "static-extend": "^0.1.1" 618 | }, 619 | "dependencies": { 620 | "define-property": { 621 | "version": "0.2.5", 622 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 623 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 624 | "requires": { 625 | "is-descriptor": "^0.1.0" 626 | } 627 | } 628 | } 629 | }, 630 | "cliff": { 631 | "version": "0.1.10", 632 | "resolved": "https://registry.npmjs.org/cliff/-/cliff-0.1.10.tgz", 633 | "integrity": "sha1-U74z6p9ZvshWCe4wCsQgdgPlIBM=", 634 | "requires": { 635 | "colors": "~1.0.3", 636 | "eyes": "~0.1.8", 637 | "winston": "0.8.x" 638 | }, 639 | "dependencies": { 640 | "colors": { 641 | "version": "1.0.3", 642 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", 643 | "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=" 644 | } 645 | } 646 | }, 647 | "cliui": { 648 | "version": "3.2.0", 649 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", 650 | "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", 651 | "requires": { 652 | "string-width": "^1.0.1", 653 | "strip-ansi": "^3.0.1", 654 | "wrap-ansi": "^2.0.0" 655 | } 656 | }, 657 | "clone": { 658 | "version": "2.1.2", 659 | "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", 660 | "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" 661 | }, 662 | "clone-response": { 663 | "version": "1.0.2", 664 | "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", 665 | "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", 666 | "requires": { 667 | "mimic-response": "^1.0.0" 668 | }, 669 | "dependencies": { 670 | "mimic-response": { 671 | "version": "1.0.1", 672 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", 673 | "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" 674 | } 675 | } 676 | }, 677 | "code-point-at": { 678 | "version": "1.1.0", 679 | "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", 680 | "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" 681 | }, 682 | "coincodex-api": { 683 | "version": "1.0.0", 684 | "resolved": "https://registry.npmjs.org/coincodex-api/-/coincodex-api-1.0.0.tgz", 685 | "integrity": "sha512-Pf/tYp4r/YhUsQKw9WcFJ/TR0s7Rb6bnuL+/YqCgbScJNCXSVlmcXlWfPyt3ncOQJts63nkxXKBQQmVqWcx9sw==" 686 | }, 687 | "collection-visit": { 688 | "version": "1.0.0", 689 | "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", 690 | "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", 691 | "requires": { 692 | "map-visit": "^1.0.0", 693 | "object-visit": "^1.0.0" 694 | } 695 | }, 696 | "colors": { 697 | "version": "0.6.2", 698 | "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", 699 | "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=" 700 | }, 701 | "combined-stream": { 702 | "version": "1.0.8", 703 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 704 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 705 | "requires": { 706 | "delayed-stream": "~1.0.0" 707 | } 708 | }, 709 | "component-emitter": { 710 | "version": "1.3.0", 711 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", 712 | "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" 713 | }, 714 | "concat-map": { 715 | "version": "0.0.1", 716 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 717 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 718 | }, 719 | "console-control-strings": { 720 | "version": "1.1.0", 721 | "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", 722 | "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" 723 | }, 724 | "copy-descriptor": { 725 | "version": "0.1.1", 726 | "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", 727 | "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" 728 | }, 729 | "core-util-is": { 730 | "version": "1.0.2", 731 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 732 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 733 | }, 734 | "cross-fetch": { 735 | "version": "3.0.6", 736 | "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.0.6.tgz", 737 | "integrity": "sha512-KBPUbqgFjzWlVcURG+Svp9TlhA5uliYtiNx/0r8nv0pdypeQCRJ9IaSIc3q/x3q8t3F75cHuwxVql1HFGHCNJQ==", 738 | "requires": { 739 | "node-fetch": "2.6.1" 740 | } 741 | }, 742 | "css-select": { 743 | "version": "1.2.0", 744 | "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", 745 | "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", 746 | "requires": { 747 | "boolbase": "~1.0.0", 748 | "css-what": "2.1", 749 | "domutils": "1.5.1", 750 | "nth-check": "~1.0.1" 751 | } 752 | }, 753 | "css-what": { 754 | "version": "2.1.3", 755 | "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", 756 | "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==" 757 | }, 758 | "cssom": { 759 | "version": "0.4.4", 760 | "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", 761 | "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" 762 | }, 763 | "cssstyle": { 764 | "version": "2.3.0", 765 | "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", 766 | "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", 767 | "requires": { 768 | "cssom": "~0.3.6" 769 | }, 770 | "dependencies": { 771 | "cssom": { 772 | "version": "0.3.8", 773 | "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", 774 | "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" 775 | } 776 | } 777 | }, 778 | "cycle": { 779 | "version": "1.0.3", 780 | "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", 781 | "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=" 782 | }, 783 | "dashdash": { 784 | "version": "1.14.1", 785 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", 786 | "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", 787 | "requires": { 788 | "assert-plus": "^1.0.0" 789 | } 790 | }, 791 | "data-urls": { 792 | "version": "2.0.0", 793 | "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", 794 | "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", 795 | "requires": { 796 | "abab": "^2.0.3", 797 | "whatwg-mimetype": "^2.3.0", 798 | "whatwg-url": "^8.0.0" 799 | } 800 | }, 801 | "debug": { 802 | "version": "2.6.9", 803 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 804 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 805 | "requires": { 806 | "ms": "2.0.0" 807 | } 808 | }, 809 | "decamelize": { 810 | "version": "1.2.0", 811 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 812 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" 813 | }, 814 | "decimal.js": { 815 | "version": "10.2.0", 816 | "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.0.tgz", 817 | "integrity": "sha512-vDPw+rDgn3bZe1+F/pyEwb1oMG2XTlRVgAa6B4KccTEpYgF8w6eQllVbQcfIJnZyvzFtFpxnpGtx8dd7DJp/Rw==" 818 | }, 819 | "decode-uri-component": { 820 | "version": "0.2.0", 821 | "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", 822 | "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" 823 | }, 824 | "decompress-response": { 825 | "version": "4.2.1", 826 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", 827 | "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", 828 | "requires": { 829 | "mimic-response": "^2.0.0" 830 | } 831 | }, 832 | "deep-equal": { 833 | "version": "1.1.1", 834 | "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", 835 | "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", 836 | "requires": { 837 | "is-arguments": "^1.0.4", 838 | "is-date-object": "^1.0.1", 839 | "is-regex": "^1.0.4", 840 | "object-is": "^1.0.1", 841 | "object-keys": "^1.1.1", 842 | "regexp.prototype.flags": "^1.2.0" 843 | } 844 | }, 845 | "deep-extend": { 846 | "version": "0.6.0", 847 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", 848 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" 849 | }, 850 | "deep-is": { 851 | "version": "0.1.3", 852 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 853 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" 854 | }, 855 | "defer-to-connect": { 856 | "version": "2.0.0", 857 | "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.0.tgz", 858 | "integrity": "sha512-bYL2d05vOSf1JEZNx5vSAtPuBMkX8K9EUutg7zlKvTqKXHt7RhWJFbmd7qakVuf13i+IkGmp6FwSsONOf6VYIg==" 859 | }, 860 | "define-properties": { 861 | "version": "1.1.3", 862 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 863 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 864 | "requires": { 865 | "object-keys": "^1.0.12" 866 | } 867 | }, 868 | "define-property": { 869 | "version": "2.0.2", 870 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", 871 | "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", 872 | "requires": { 873 | "is-descriptor": "^1.0.2", 874 | "isobject": "^3.0.1" 875 | }, 876 | "dependencies": { 877 | "is-accessor-descriptor": { 878 | "version": "1.0.0", 879 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 880 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 881 | "requires": { 882 | "kind-of": "^6.0.0" 883 | } 884 | }, 885 | "is-data-descriptor": { 886 | "version": "1.0.0", 887 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 888 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 889 | "requires": { 890 | "kind-of": "^6.0.0" 891 | } 892 | }, 893 | "is-descriptor": { 894 | "version": "1.0.2", 895 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 896 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 897 | "requires": { 898 | "is-accessor-descriptor": "^1.0.0", 899 | "is-data-descriptor": "^1.0.0", 900 | "kind-of": "^6.0.2" 901 | } 902 | } 903 | } 904 | }, 905 | "defined": { 906 | "version": "0.0.0", 907 | "resolved": "https://registry.npmjs.org/defined/-/defined-0.0.0.tgz", 908 | "integrity": "sha1-817qfXBekzuvE7LwOz+D2SFAOz4=" 909 | }, 910 | "delayed-stream": { 911 | "version": "1.0.0", 912 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 913 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" 914 | }, 915 | "delegates": { 916 | "version": "1.0.0", 917 | "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", 918 | "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" 919 | }, 920 | "detect-indent": { 921 | "version": "6.0.0", 922 | "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz", 923 | "integrity": "sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==" 924 | }, 925 | "detect-libc": { 926 | "version": "1.0.3", 927 | "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", 928 | "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" 929 | }, 930 | "director": { 931 | "version": "1.2.7", 932 | "resolved": "https://registry.npmjs.org/director/-/director-1.2.7.tgz", 933 | "integrity": "sha1-v9N0EHX9f7GlsuE2WMX0vsd3NvM=" 934 | }, 935 | "discord.js": { 936 | "version": "12.2.0", 937 | "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-12.2.0.tgz", 938 | "integrity": "sha512-Ueb/0SOsxXyqwvwFYFe0msMrGqH1OMqpp2Dpbplnlr4MzcRrFWwsBM9gKNZXPVBHWUKiQkwU8AihXBXIvTTSvg==", 939 | "requires": { 940 | "@discordjs/collection": "^0.1.5", 941 | "@discordjs/form-data": "^3.0.1", 942 | "abort-controller": "^3.0.0", 943 | "node-fetch": "^2.6.0", 944 | "prism-media": "^1.2.0", 945 | "setimmediate": "^1.0.5", 946 | "tweetnacl": "^1.0.3", 947 | "ws": "^7.2.1" 948 | }, 949 | "dependencies": { 950 | "tweetnacl": { 951 | "version": "1.0.3", 952 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", 953 | "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" 954 | } 955 | } 956 | }, 957 | "docopt": { 958 | "version": "0.6.2", 959 | "resolved": "https://registry.npmjs.org/docopt/-/docopt-0.6.2.tgz", 960 | "integrity": "sha1-so6eIiDaXsSffqW7JKR3h0Be6xE=" 961 | }, 962 | "dom-serializer": { 963 | "version": "0.1.1", 964 | "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", 965 | "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", 966 | "requires": { 967 | "domelementtype": "^1.3.0", 968 | "entities": "^1.1.1" 969 | } 970 | }, 971 | "domelementtype": { 972 | "version": "1.3.1", 973 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", 974 | "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" 975 | }, 976 | "domexception": { 977 | "version": "2.0.1", 978 | "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", 979 | "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", 980 | "requires": { 981 | "webidl-conversions": "^5.0.0" 982 | }, 983 | "dependencies": { 984 | "webidl-conversions": { 985 | "version": "5.0.0", 986 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", 987 | "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==" 988 | } 989 | } 990 | }, 991 | "domhandler": { 992 | "version": "2.4.2", 993 | "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", 994 | "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", 995 | "requires": { 996 | "domelementtype": "1" 997 | } 998 | }, 999 | "domutils": { 1000 | "version": "1.5.1", 1001 | "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", 1002 | "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", 1003 | "requires": { 1004 | "dom-serializer": "0", 1005 | "domelementtype": "1" 1006 | } 1007 | }, 1008 | "dot-json": { 1009 | "version": "1.2.1", 1010 | "resolved": "https://registry.npmjs.org/dot-json/-/dot-json-1.2.1.tgz", 1011 | "integrity": "sha512-sHtCsDBBzhTUFhS12cAvUbP9JTr59LLNxnpNr6dlgbjZlN+nrWFs+uHXgsJvFmc5HoMFR4e60rdqd+GdSUlM3w==", 1012 | "requires": { 1013 | "detect-indent": "~6.0.0", 1014 | "docopt": "~0.6.2", 1015 | "underscore-keypath": "~0.0.22" 1016 | } 1017 | }, 1018 | "duplexer": { 1019 | "version": "0.1.2", 1020 | "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", 1021 | "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" 1022 | }, 1023 | "ecc-jsbn": { 1024 | "version": "0.1.2", 1025 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", 1026 | "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", 1027 | "requires": { 1028 | "jsbn": "~0.1.0", 1029 | "safer-buffer": "^2.1.0" 1030 | } 1031 | }, 1032 | "emits": { 1033 | "version": "3.0.0", 1034 | "resolved": "https://registry.npmjs.org/emits/-/emits-3.0.0.tgz", 1035 | "integrity": "sha1-MnUrupXhcHshlWI4Srm7ix/WL3A=" 1036 | }, 1037 | "end-of-stream": { 1038 | "version": "1.4.4", 1039 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 1040 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 1041 | "requires": { 1042 | "once": "^1.4.0" 1043 | } 1044 | }, 1045 | "entities": { 1046 | "version": "1.1.2", 1047 | "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", 1048 | "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" 1049 | }, 1050 | "es-abstract": { 1051 | "version": "1.17.6", 1052 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", 1053 | "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", 1054 | "requires": { 1055 | "es-to-primitive": "^1.2.1", 1056 | "function-bind": "^1.1.1", 1057 | "has": "^1.0.3", 1058 | "has-symbols": "^1.0.1", 1059 | "is-callable": "^1.2.0", 1060 | "is-regex": "^1.1.0", 1061 | "object-inspect": "^1.7.0", 1062 | "object-keys": "^1.1.1", 1063 | "object.assign": "^4.1.0", 1064 | "string.prototype.trimend": "^1.0.1", 1065 | "string.prototype.trimstart": "^1.0.1" 1066 | } 1067 | }, 1068 | "es-to-primitive": { 1069 | "version": "1.2.1", 1070 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 1071 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 1072 | "requires": { 1073 | "is-callable": "^1.1.4", 1074 | "is-date-object": "^1.0.1", 1075 | "is-symbol": "^1.0.2" 1076 | } 1077 | }, 1078 | "escodegen": { 1079 | "version": "1.14.3", 1080 | "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", 1081 | "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", 1082 | "requires": { 1083 | "esprima": "^4.0.1", 1084 | "estraverse": "^4.2.0", 1085 | "esutils": "^2.0.2", 1086 | "optionator": "^0.8.1", 1087 | "source-map": "~0.6.1" 1088 | }, 1089 | "dependencies": { 1090 | "source-map": { 1091 | "version": "0.6.1", 1092 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1093 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1094 | "optional": true 1095 | } 1096 | } 1097 | }, 1098 | "esprima": { 1099 | "version": "4.0.1", 1100 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 1101 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" 1102 | }, 1103 | "estraverse": { 1104 | "version": "4.3.0", 1105 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 1106 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" 1107 | }, 1108 | "esutils": { 1109 | "version": "2.0.3", 1110 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 1111 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" 1112 | }, 1113 | "event-stream": { 1114 | "version": "3.3.4", 1115 | "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", 1116 | "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", 1117 | "requires": { 1118 | "duplexer": "~0.1.1", 1119 | "from": "~0", 1120 | "map-stream": "~0.1.0", 1121 | "pause-stream": "0.0.11", 1122 | "split": "0.3", 1123 | "stream-combiner": "~0.0.4", 1124 | "through": "~2.3.1" 1125 | } 1126 | }, 1127 | "event-target-shim": { 1128 | "version": "5.0.1", 1129 | "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", 1130 | "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" 1131 | }, 1132 | "eventemitter2": { 1133 | "version": "0.4.14", 1134 | "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", 1135 | "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=" 1136 | }, 1137 | "expand-brackets": { 1138 | "version": "2.1.4", 1139 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", 1140 | "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", 1141 | "requires": { 1142 | "debug": "^2.3.3", 1143 | "define-property": "^0.2.5", 1144 | "extend-shallow": "^2.0.1", 1145 | "posix-character-classes": "^0.1.0", 1146 | "regex-not": "^1.0.0", 1147 | "snapdragon": "^0.8.1", 1148 | "to-regex": "^3.0.1" 1149 | }, 1150 | "dependencies": { 1151 | "define-property": { 1152 | "version": "0.2.5", 1153 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 1154 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 1155 | "requires": { 1156 | "is-descriptor": "^0.1.0" 1157 | } 1158 | }, 1159 | "extend-shallow": { 1160 | "version": "2.0.1", 1161 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 1162 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 1163 | "requires": { 1164 | "is-extendable": "^0.1.0" 1165 | } 1166 | } 1167 | } 1168 | }, 1169 | "expand-template": { 1170 | "version": "2.0.3", 1171 | "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", 1172 | "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==" 1173 | }, 1174 | "extend": { 1175 | "version": "3.0.2", 1176 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 1177 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" 1178 | }, 1179 | "extend-shallow": { 1180 | "version": "3.0.2", 1181 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", 1182 | "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", 1183 | "requires": { 1184 | "assign-symbols": "^1.0.0", 1185 | "is-extendable": "^1.0.1" 1186 | }, 1187 | "dependencies": { 1188 | "is-extendable": { 1189 | "version": "1.0.1", 1190 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", 1191 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", 1192 | "requires": { 1193 | "is-plain-object": "^2.0.4" 1194 | } 1195 | } 1196 | } 1197 | }, 1198 | "extglob": { 1199 | "version": "2.0.4", 1200 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", 1201 | "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", 1202 | "requires": { 1203 | "array-unique": "^0.3.2", 1204 | "define-property": "^1.0.0", 1205 | "expand-brackets": "^2.1.4", 1206 | "extend-shallow": "^2.0.1", 1207 | "fragment-cache": "^0.2.1", 1208 | "regex-not": "^1.0.0", 1209 | "snapdragon": "^0.8.1", 1210 | "to-regex": "^3.0.1" 1211 | }, 1212 | "dependencies": { 1213 | "define-property": { 1214 | "version": "1.0.0", 1215 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 1216 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 1217 | "requires": { 1218 | "is-descriptor": "^1.0.0" 1219 | } 1220 | }, 1221 | "extend-shallow": { 1222 | "version": "2.0.1", 1223 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 1224 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 1225 | "requires": { 1226 | "is-extendable": "^0.1.0" 1227 | } 1228 | }, 1229 | "is-accessor-descriptor": { 1230 | "version": "1.0.0", 1231 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 1232 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 1233 | "requires": { 1234 | "kind-of": "^6.0.0" 1235 | } 1236 | }, 1237 | "is-data-descriptor": { 1238 | "version": "1.0.0", 1239 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 1240 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 1241 | "requires": { 1242 | "kind-of": "^6.0.0" 1243 | } 1244 | }, 1245 | "is-descriptor": { 1246 | "version": "1.0.2", 1247 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 1248 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 1249 | "requires": { 1250 | "is-accessor-descriptor": "^1.0.0", 1251 | "is-data-descriptor": "^1.0.0", 1252 | "kind-of": "^6.0.2" 1253 | } 1254 | } 1255 | } 1256 | }, 1257 | "extsprintf": { 1258 | "version": "1.3.0", 1259 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", 1260 | "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" 1261 | }, 1262 | "eyes": { 1263 | "version": "0.1.8", 1264 | "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", 1265 | "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=" 1266 | }, 1267 | "fast-deep-equal": { 1268 | "version": "3.1.3", 1269 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1270 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" 1271 | }, 1272 | "fast-json-stable-stringify": { 1273 | "version": "2.1.0", 1274 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1275 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" 1276 | }, 1277 | "fast-levenshtein": { 1278 | "version": "2.0.6", 1279 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1280 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" 1281 | }, 1282 | "file-uri-to-path": { 1283 | "version": "1.0.0", 1284 | "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", 1285 | "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", 1286 | "optional": true 1287 | }, 1288 | "fill-range": { 1289 | "version": "4.0.0", 1290 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", 1291 | "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", 1292 | "requires": { 1293 | "extend-shallow": "^2.0.1", 1294 | "is-number": "^3.0.0", 1295 | "repeat-string": "^1.6.1", 1296 | "to-regex-range": "^2.1.0" 1297 | }, 1298 | "dependencies": { 1299 | "extend-shallow": { 1300 | "version": "2.0.1", 1301 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 1302 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 1303 | "requires": { 1304 | "is-extendable": "^0.1.0" 1305 | } 1306 | } 1307 | } 1308 | }, 1309 | "flatiron": { 1310 | "version": "0.4.3", 1311 | "resolved": "https://registry.npmjs.org/flatiron/-/flatiron-0.4.3.tgz", 1312 | "integrity": "sha1-JIz3mj2n19w3nioRySonGcu1QPY=", 1313 | "requires": { 1314 | "broadway": "~0.3.2", 1315 | "director": "1.2.7", 1316 | "optimist": "0.6.0", 1317 | "prompt": "0.2.14" 1318 | } 1319 | }, 1320 | "follow-redirects": { 1321 | "version": "1.13.0", 1322 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz", 1323 | "integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==" 1324 | }, 1325 | "for-in": { 1326 | "version": "1.0.2", 1327 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", 1328 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" 1329 | }, 1330 | "forever": { 1331 | "version": "3.0.2", 1332 | "resolved": "https://registry.npmjs.org/forever/-/forever-3.0.2.tgz", 1333 | "integrity": "sha512-GKZLVs3RQh52kF3kuCrlR1e5npaOqomQzTQryZOFJZ9GKNqLya75LSn1rdjFQ8XixwX3jT76pIJmtGN4XXv1aw==", 1334 | "requires": { 1335 | "async": "^1.5.2", 1336 | "cliff": "^0.1.10", 1337 | "clone": "^2.1.2", 1338 | "colors": "^0.6.2", 1339 | "deep-equal": "^1.1.1", 1340 | "flatiron": "~0.4.3", 1341 | "forever-monitor": "^3.0.0", 1342 | "mkdirp": "^0.5.5", 1343 | "nconf": "^0.10.0", 1344 | "nssocket": "^0.6.0", 1345 | "object-assign": "^4.1.1", 1346 | "prettyjson": "^1.2.1", 1347 | "shush": "^1.0.0", 1348 | "utile": "~0.3.0", 1349 | "winston": "~0.8.1", 1350 | "yargs": "^3.32.0" 1351 | } 1352 | }, 1353 | "forever-agent": { 1354 | "version": "0.6.1", 1355 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", 1356 | "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" 1357 | }, 1358 | "forever-monitor": { 1359 | "version": "3.0.1", 1360 | "resolved": "https://registry.npmjs.org/forever-monitor/-/forever-monitor-3.0.1.tgz", 1361 | "integrity": "sha512-47VfT5AYpxn1bnsnH6UfpBWKpMVnSz42MZwH+hwz/wACd9THyUu/fRoCRIT758fzCAbRoHIlkVUAL+WmlxSKeg==", 1362 | "requires": { 1363 | "broadway": "~0.3.6", 1364 | "chokidar": "^2.1.8", 1365 | "minimatch": "^3.0.4", 1366 | "ps-tree": "^1.2.0", 1367 | "utile": "^0.3.0" 1368 | } 1369 | }, 1370 | "form-data": { 1371 | "version": "2.3.3", 1372 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", 1373 | "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", 1374 | "requires": { 1375 | "asynckit": "^0.4.0", 1376 | "combined-stream": "^1.0.6", 1377 | "mime-types": "^2.1.12" 1378 | } 1379 | }, 1380 | "fragment-cache": { 1381 | "version": "0.2.1", 1382 | "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", 1383 | "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", 1384 | "requires": { 1385 | "map-cache": "^0.2.2" 1386 | } 1387 | }, 1388 | "from": { 1389 | "version": "0.1.7", 1390 | "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", 1391 | "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=" 1392 | }, 1393 | "fs-constants": { 1394 | "version": "1.0.0", 1395 | "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", 1396 | "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" 1397 | }, 1398 | "fs.realpath": { 1399 | "version": "1.0.0", 1400 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1401 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 1402 | }, 1403 | "fsevents": { 1404 | "version": "1.2.13", 1405 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", 1406 | "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", 1407 | "optional": true, 1408 | "requires": { 1409 | "bindings": "^1.5.0", 1410 | "nan": "^2.12.1" 1411 | } 1412 | }, 1413 | "function-bind": { 1414 | "version": "1.1.1", 1415 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1416 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 1417 | }, 1418 | "gauge": { 1419 | "version": "2.7.4", 1420 | "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", 1421 | "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", 1422 | "requires": { 1423 | "aproba": "^1.0.3", 1424 | "console-control-strings": "^1.0.0", 1425 | "has-unicode": "^2.0.0", 1426 | "object-assign": "^4.1.0", 1427 | "signal-exit": "^3.0.0", 1428 | "string-width": "^1.0.1", 1429 | "strip-ansi": "^3.0.1", 1430 | "wide-align": "^1.1.0" 1431 | } 1432 | }, 1433 | "get-stream": { 1434 | "version": "5.2.0", 1435 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", 1436 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 1437 | "requires": { 1438 | "pump": "^3.0.0" 1439 | } 1440 | }, 1441 | "get-value": { 1442 | "version": "2.0.6", 1443 | "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", 1444 | "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" 1445 | }, 1446 | "getpass": { 1447 | "version": "0.1.7", 1448 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", 1449 | "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", 1450 | "requires": { 1451 | "assert-plus": "^1.0.0" 1452 | } 1453 | }, 1454 | "github-from-package": { 1455 | "version": "0.0.0", 1456 | "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", 1457 | "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=" 1458 | }, 1459 | "glob": { 1460 | "version": "7.1.6", 1461 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 1462 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 1463 | "requires": { 1464 | "fs.realpath": "^1.0.0", 1465 | "inflight": "^1.0.4", 1466 | "inherits": "2", 1467 | "minimatch": "^3.0.4", 1468 | "once": "^1.3.0", 1469 | "path-is-absolute": "^1.0.0" 1470 | } 1471 | }, 1472 | "glob-parent": { 1473 | "version": "3.1.0", 1474 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", 1475 | "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", 1476 | "requires": { 1477 | "is-glob": "^3.1.0", 1478 | "path-dirname": "^1.0.0" 1479 | }, 1480 | "dependencies": { 1481 | "is-glob": { 1482 | "version": "3.1.0", 1483 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", 1484 | "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", 1485 | "requires": { 1486 | "is-extglob": "^2.1.0" 1487 | } 1488 | } 1489 | } 1490 | }, 1491 | "got": { 1492 | "version": "11.6.2", 1493 | "resolved": "https://registry.npmjs.org/got/-/got-11.6.2.tgz", 1494 | "integrity": "sha512-/21qgUePCeus29Jk7MEti8cgQUNXFSWfIevNIk4H7u1wmXNDrGPKPY6YsPY+o9CIT/a2DjCjRz0x1nM9FtS2/A==", 1495 | "requires": { 1496 | "@sindresorhus/is": "^3.1.1", 1497 | "@szmarczak/http-timer": "^4.0.5", 1498 | "@types/cacheable-request": "^6.0.1", 1499 | "@types/responselike": "^1.0.0", 1500 | "cacheable-lookup": "^5.0.3", 1501 | "cacheable-request": "^7.0.1", 1502 | "decompress-response": "^6.0.0", 1503 | "http2-wrapper": "^1.0.0-beta.5.2", 1504 | "lowercase-keys": "^2.0.0", 1505 | "p-cancelable": "^2.0.0", 1506 | "responselike": "^2.0.0" 1507 | }, 1508 | "dependencies": { 1509 | "decompress-response": { 1510 | "version": "6.0.0", 1511 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", 1512 | "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", 1513 | "requires": { 1514 | "mimic-response": "^3.1.0" 1515 | } 1516 | }, 1517 | "mimic-response": { 1518 | "version": "3.1.0", 1519 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", 1520 | "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" 1521 | } 1522 | } 1523 | }, 1524 | "graceful-fs": { 1525 | "version": "4.2.4", 1526 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", 1527 | "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" 1528 | }, 1529 | "har-schema": { 1530 | "version": "2.0.0", 1531 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", 1532 | "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" 1533 | }, 1534 | "har-validator": { 1535 | "version": "5.1.5", 1536 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", 1537 | "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", 1538 | "requires": { 1539 | "ajv": "^6.12.3", 1540 | "har-schema": "^2.0.0" 1541 | } 1542 | }, 1543 | "has": { 1544 | "version": "1.0.3", 1545 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1546 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1547 | "requires": { 1548 | "function-bind": "^1.1.1" 1549 | } 1550 | }, 1551 | "has-symbols": { 1552 | "version": "1.0.1", 1553 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", 1554 | "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" 1555 | }, 1556 | "has-unicode": { 1557 | "version": "2.0.1", 1558 | "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", 1559 | "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" 1560 | }, 1561 | "has-value": { 1562 | "version": "1.0.0", 1563 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", 1564 | "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", 1565 | "requires": { 1566 | "get-value": "^2.0.6", 1567 | "has-values": "^1.0.0", 1568 | "isobject": "^3.0.0" 1569 | } 1570 | }, 1571 | "has-values": { 1572 | "version": "1.0.0", 1573 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", 1574 | "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", 1575 | "requires": { 1576 | "is-number": "^3.0.0", 1577 | "kind-of": "^4.0.0" 1578 | }, 1579 | "dependencies": { 1580 | "kind-of": { 1581 | "version": "4.0.0", 1582 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", 1583 | "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", 1584 | "requires": { 1585 | "is-buffer": "^1.1.5" 1586 | } 1587 | } 1588 | } 1589 | }, 1590 | "hooman": { 1591 | "version": "1.2.6", 1592 | "resolved": "https://registry.npmjs.org/hooman/-/hooman-1.2.6.tgz", 1593 | "integrity": "sha512-cPdUqlgb4Unlvw+sV1SQKSwx6mgKDRSwkeeZVH0n4dcMwXWuD6fsy352TrVK7H/ZaHXvwC98zdCRU32qaNB1Iw==", 1594 | "requires": { 1595 | "jsdom": "^16.3.0", 1596 | "tough-cookie": "^4.0.0", 1597 | "user-agents": "^1.0.559" 1598 | }, 1599 | "dependencies": { 1600 | "tough-cookie": { 1601 | "version": "4.0.0", 1602 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", 1603 | "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", 1604 | "requires": { 1605 | "psl": "^1.1.33", 1606 | "punycode": "^2.1.1", 1607 | "universalify": "^0.1.2" 1608 | } 1609 | } 1610 | } 1611 | }, 1612 | "html-encoding-sniffer": { 1613 | "version": "2.0.1", 1614 | "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", 1615 | "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", 1616 | "requires": { 1617 | "whatwg-encoding": "^1.0.5" 1618 | } 1619 | }, 1620 | "htmlparser2": { 1621 | "version": "3.10.1", 1622 | "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", 1623 | "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", 1624 | "requires": { 1625 | "domelementtype": "^1.3.1", 1626 | "domhandler": "^2.3.0", 1627 | "domutils": "^1.5.1", 1628 | "entities": "^1.1.1", 1629 | "inherits": "^2.0.1", 1630 | "readable-stream": "^3.1.1" 1631 | } 1632 | }, 1633 | "http-cache-semantics": { 1634 | "version": "4.1.0", 1635 | "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", 1636 | "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" 1637 | }, 1638 | "http-signature": { 1639 | "version": "1.2.0", 1640 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", 1641 | "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", 1642 | "requires": { 1643 | "assert-plus": "^1.0.0", 1644 | "jsprim": "^1.2.2", 1645 | "sshpk": "^1.7.0" 1646 | } 1647 | }, 1648 | "http2-wrapper": { 1649 | "version": "1.0.0-beta.5.2", 1650 | "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.0-beta.5.2.tgz", 1651 | "integrity": "sha512-xYz9goEyBnC8XwXDTuC/MZ6t+MrKVQZOk4s7+PaDkwIsQd8IwqvM+0M6bA/2lvG8GHXcPdf+MejTUeO2LCPCeQ==", 1652 | "requires": { 1653 | "quick-lru": "^5.1.1", 1654 | "resolve-alpn": "^1.0.0" 1655 | } 1656 | }, 1657 | "humanoid-js": { 1658 | "version": "1.0.1", 1659 | "resolved": "https://registry.npmjs.org/humanoid-js/-/humanoid-js-1.0.1.tgz", 1660 | "integrity": "sha512-UgwFuJribv8KH7/rJT/gSe22K0dyARNpflJqgYgYIupqFaT7PweTszQaoiscHMuZXWtWQyaarnpgs7Cu/eFDFQ==", 1661 | "requires": { 1662 | "cheerio": "^1.0.0-rc.2", 1663 | "iltorb": "^2.4.0", 1664 | "request": "^2.88.0", 1665 | "request-promise-native": "^1.0.5", 1666 | "safe-eval": "^0.4.1", 1667 | "url-parse": "^1.4.3" 1668 | } 1669 | }, 1670 | "i": { 1671 | "version": "0.3.6", 1672 | "resolved": "https://registry.npmjs.org/i/-/i-0.3.6.tgz", 1673 | "integrity": "sha1-2WyScyB28HJxG2sQ/X1PZa2O4j0=" 1674 | }, 1675 | "iconv-lite": { 1676 | "version": "0.4.24", 1677 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 1678 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 1679 | "requires": { 1680 | "safer-buffer": ">= 2.1.2 < 3" 1681 | } 1682 | }, 1683 | "ieee754": { 1684 | "version": "1.1.13", 1685 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", 1686 | "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" 1687 | }, 1688 | "iltorb": { 1689 | "version": "2.4.5", 1690 | "resolved": "https://registry.npmjs.org/iltorb/-/iltorb-2.4.5.tgz", 1691 | "integrity": "sha512-EMCMl3LnnNSZJS5QrxyZmMTaAC4+TJkM5woD+xbpm9RB+mFYCr7C05GFE3TEGCsVQSVHmjX+3sf5AiwsylNInQ==", 1692 | "requires": { 1693 | "detect-libc": "^1.0.3", 1694 | "nan": "^2.14.0", 1695 | "npmlog": "^4.1.2", 1696 | "prebuild-install": "^5.3.3", 1697 | "which-pm-runs": "^1.0.0" 1698 | } 1699 | }, 1700 | "inflight": { 1701 | "version": "1.0.6", 1702 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1703 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1704 | "requires": { 1705 | "once": "^1.3.0", 1706 | "wrappy": "1" 1707 | } 1708 | }, 1709 | "inherits": { 1710 | "version": "2.0.4", 1711 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1712 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1713 | }, 1714 | "ini": { 1715 | "version": "1.3.5", 1716 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", 1717 | "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" 1718 | }, 1719 | "invert-kv": { 1720 | "version": "1.0.0", 1721 | "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", 1722 | "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" 1723 | }, 1724 | "ip-regex": { 1725 | "version": "2.1.0", 1726 | "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", 1727 | "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" 1728 | }, 1729 | "is-accessor-descriptor": { 1730 | "version": "0.1.6", 1731 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", 1732 | "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", 1733 | "requires": { 1734 | "kind-of": "^3.0.2" 1735 | }, 1736 | "dependencies": { 1737 | "kind-of": { 1738 | "version": "3.2.2", 1739 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1740 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1741 | "requires": { 1742 | "is-buffer": "^1.1.5" 1743 | } 1744 | } 1745 | } 1746 | }, 1747 | "is-arguments": { 1748 | "version": "1.0.4", 1749 | "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", 1750 | "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==" 1751 | }, 1752 | "is-binary-path": { 1753 | "version": "1.0.1", 1754 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", 1755 | "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", 1756 | "requires": { 1757 | "binary-extensions": "^1.0.0" 1758 | } 1759 | }, 1760 | "is-buffer": { 1761 | "version": "1.1.6", 1762 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 1763 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" 1764 | }, 1765 | "is-callable": { 1766 | "version": "1.2.0", 1767 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", 1768 | "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==" 1769 | }, 1770 | "is-data-descriptor": { 1771 | "version": "0.1.4", 1772 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", 1773 | "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", 1774 | "requires": { 1775 | "kind-of": "^3.0.2" 1776 | }, 1777 | "dependencies": { 1778 | "kind-of": { 1779 | "version": "3.2.2", 1780 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1781 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1782 | "requires": { 1783 | "is-buffer": "^1.1.5" 1784 | } 1785 | } 1786 | } 1787 | }, 1788 | "is-date-object": { 1789 | "version": "1.0.2", 1790 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", 1791 | "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" 1792 | }, 1793 | "is-descriptor": { 1794 | "version": "0.1.6", 1795 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", 1796 | "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", 1797 | "requires": { 1798 | "is-accessor-descriptor": "^0.1.6", 1799 | "is-data-descriptor": "^0.1.4", 1800 | "kind-of": "^5.0.0" 1801 | }, 1802 | "dependencies": { 1803 | "kind-of": { 1804 | "version": "5.1.0", 1805 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", 1806 | "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" 1807 | } 1808 | } 1809 | }, 1810 | "is-extendable": { 1811 | "version": "0.1.1", 1812 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", 1813 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" 1814 | }, 1815 | "is-extglob": { 1816 | "version": "2.1.1", 1817 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1818 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" 1819 | }, 1820 | "is-fullwidth-code-point": { 1821 | "version": "1.0.0", 1822 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", 1823 | "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", 1824 | "requires": { 1825 | "number-is-nan": "^1.0.0" 1826 | } 1827 | }, 1828 | "is-glob": { 1829 | "version": "4.0.1", 1830 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 1831 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 1832 | "requires": { 1833 | "is-extglob": "^2.1.1" 1834 | } 1835 | }, 1836 | "is-number": { 1837 | "version": "3.0.0", 1838 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", 1839 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", 1840 | "requires": { 1841 | "kind-of": "^3.0.2" 1842 | }, 1843 | "dependencies": { 1844 | "kind-of": { 1845 | "version": "3.2.2", 1846 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1847 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1848 | "requires": { 1849 | "is-buffer": "^1.1.5" 1850 | } 1851 | } 1852 | } 1853 | }, 1854 | "is-plain-object": { 1855 | "version": "2.0.4", 1856 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", 1857 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", 1858 | "requires": { 1859 | "isobject": "^3.0.1" 1860 | } 1861 | }, 1862 | "is-potential-custom-element-name": { 1863 | "version": "1.0.0", 1864 | "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz", 1865 | "integrity": "sha1-DFLlS8yjkbssSUsh6GJtczbG45c=" 1866 | }, 1867 | "is-regex": { 1868 | "version": "1.1.1", 1869 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", 1870 | "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", 1871 | "requires": { 1872 | "has-symbols": "^1.0.1" 1873 | } 1874 | }, 1875 | "is-symbol": { 1876 | "version": "1.0.3", 1877 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", 1878 | "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", 1879 | "requires": { 1880 | "has-symbols": "^1.0.1" 1881 | } 1882 | }, 1883 | "is-typedarray": { 1884 | "version": "1.0.0", 1885 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 1886 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" 1887 | }, 1888 | "is-windows": { 1889 | "version": "1.0.2", 1890 | "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", 1891 | "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" 1892 | }, 1893 | "isarray": { 1894 | "version": "1.0.0", 1895 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1896 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 1897 | }, 1898 | "isobject": { 1899 | "version": "3.0.1", 1900 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 1901 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" 1902 | }, 1903 | "isstream": { 1904 | "version": "0.1.2", 1905 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 1906 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" 1907 | }, 1908 | "jsbn": { 1909 | "version": "0.1.1", 1910 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", 1911 | "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" 1912 | }, 1913 | "jsdom": { 1914 | "version": "16.4.0", 1915 | "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.4.0.tgz", 1916 | "integrity": "sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w==", 1917 | "requires": { 1918 | "abab": "^2.0.3", 1919 | "acorn": "^7.1.1", 1920 | "acorn-globals": "^6.0.0", 1921 | "cssom": "^0.4.4", 1922 | "cssstyle": "^2.2.0", 1923 | "data-urls": "^2.0.0", 1924 | "decimal.js": "^10.2.0", 1925 | "domexception": "^2.0.1", 1926 | "escodegen": "^1.14.1", 1927 | "html-encoding-sniffer": "^2.0.1", 1928 | "is-potential-custom-element-name": "^1.0.0", 1929 | "nwsapi": "^2.2.0", 1930 | "parse5": "5.1.1", 1931 | "request": "^2.88.2", 1932 | "request-promise-native": "^1.0.8", 1933 | "saxes": "^5.0.0", 1934 | "symbol-tree": "^3.2.4", 1935 | "tough-cookie": "^3.0.1", 1936 | "w3c-hr-time": "^1.0.2", 1937 | "w3c-xmlserializer": "^2.0.0", 1938 | "webidl-conversions": "^6.1.0", 1939 | "whatwg-encoding": "^1.0.5", 1940 | "whatwg-mimetype": "^2.3.0", 1941 | "whatwg-url": "^8.0.0", 1942 | "ws": "^7.2.3", 1943 | "xml-name-validator": "^3.0.0" 1944 | }, 1945 | "dependencies": { 1946 | "parse5": { 1947 | "version": "5.1.1", 1948 | "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", 1949 | "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==" 1950 | }, 1951 | "tough-cookie": { 1952 | "version": "3.0.1", 1953 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", 1954 | "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", 1955 | "requires": { 1956 | "ip-regex": "^2.1.0", 1957 | "psl": "^1.1.28", 1958 | "punycode": "^2.1.1" 1959 | } 1960 | } 1961 | } 1962 | }, 1963 | "json-buffer": { 1964 | "version": "3.0.1", 1965 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", 1966 | "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" 1967 | }, 1968 | "json-schema": { 1969 | "version": "0.2.3", 1970 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", 1971 | "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" 1972 | }, 1973 | "json-schema-traverse": { 1974 | "version": "0.4.1", 1975 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1976 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" 1977 | }, 1978 | "json-stringify-safe": { 1979 | "version": "5.0.1", 1980 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 1981 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" 1982 | }, 1983 | "jsonify": { 1984 | "version": "0.0.0", 1985 | "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", 1986 | "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" 1987 | }, 1988 | "jsprim": { 1989 | "version": "1.4.1", 1990 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", 1991 | "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", 1992 | "requires": { 1993 | "assert-plus": "1.0.0", 1994 | "extsprintf": "1.3.0", 1995 | "json-schema": "0.2.3", 1996 | "verror": "1.10.0" 1997 | } 1998 | }, 1999 | "keyv": { 2000 | "version": "4.0.3", 2001 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.3.tgz", 2002 | "integrity": "sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA==", 2003 | "requires": { 2004 | "json-buffer": "3.0.1" 2005 | } 2006 | }, 2007 | "kind-of": { 2008 | "version": "6.0.3", 2009 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", 2010 | "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" 2011 | }, 2012 | "lazy": { 2013 | "version": "1.0.11", 2014 | "resolved": "https://registry.npmjs.org/lazy/-/lazy-1.0.11.tgz", 2015 | "integrity": "sha1-2qBoIGKCVCwIgojpdcKXwa53tpA=" 2016 | }, 2017 | "lcid": { 2018 | "version": "1.0.0", 2019 | "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", 2020 | "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", 2021 | "requires": { 2022 | "invert-kv": "^1.0.0" 2023 | } 2024 | }, 2025 | "levn": { 2026 | "version": "0.3.0", 2027 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", 2028 | "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", 2029 | "requires": { 2030 | "prelude-ls": "~1.1.2", 2031 | "type-check": "~0.3.2" 2032 | } 2033 | }, 2034 | "lodash": { 2035 | "version": "4.17.20", 2036 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", 2037 | "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" 2038 | }, 2039 | "lodash.clonedeep": { 2040 | "version": "4.5.0", 2041 | "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", 2042 | "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" 2043 | }, 2044 | "lodash.sortby": { 2045 | "version": "4.7.0", 2046 | "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", 2047 | "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" 2048 | }, 2049 | "lowercase-keys": { 2050 | "version": "2.0.0", 2051 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", 2052 | "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" 2053 | }, 2054 | "map-cache": { 2055 | "version": "0.2.2", 2056 | "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", 2057 | "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" 2058 | }, 2059 | "map-stream": { 2060 | "version": "0.1.0", 2061 | "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", 2062 | "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=" 2063 | }, 2064 | "map-visit": { 2065 | "version": "1.0.0", 2066 | "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", 2067 | "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", 2068 | "requires": { 2069 | "object-visit": "^1.0.0" 2070 | } 2071 | }, 2072 | "micromatch": { 2073 | "version": "3.1.10", 2074 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", 2075 | "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", 2076 | "requires": { 2077 | "arr-diff": "^4.0.0", 2078 | "array-unique": "^0.3.2", 2079 | "braces": "^2.3.1", 2080 | "define-property": "^2.0.2", 2081 | "extend-shallow": "^3.0.2", 2082 | "extglob": "^2.0.4", 2083 | "fragment-cache": "^0.2.1", 2084 | "kind-of": "^6.0.2", 2085 | "nanomatch": "^1.2.9", 2086 | "object.pick": "^1.3.0", 2087 | "regex-not": "^1.0.0", 2088 | "snapdragon": "^0.8.1", 2089 | "to-regex": "^3.0.2" 2090 | } 2091 | }, 2092 | "mime-db": { 2093 | "version": "1.44.0", 2094 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", 2095 | "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" 2096 | }, 2097 | "mime-types": { 2098 | "version": "2.1.27", 2099 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", 2100 | "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", 2101 | "requires": { 2102 | "mime-db": "1.44.0" 2103 | } 2104 | }, 2105 | "mimic-response": { 2106 | "version": "2.1.0", 2107 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", 2108 | "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==" 2109 | }, 2110 | "minimatch": { 2111 | "version": "3.0.4", 2112 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 2113 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 2114 | "requires": { 2115 | "brace-expansion": "^1.1.7" 2116 | } 2117 | }, 2118 | "minimist": { 2119 | "version": "0.0.10", 2120 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", 2121 | "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" 2122 | }, 2123 | "mixin-deep": { 2124 | "version": "1.3.2", 2125 | "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", 2126 | "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", 2127 | "requires": { 2128 | "for-in": "^1.0.2", 2129 | "is-extendable": "^1.0.1" 2130 | }, 2131 | "dependencies": { 2132 | "is-extendable": { 2133 | "version": "1.0.1", 2134 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", 2135 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", 2136 | "requires": { 2137 | "is-plain-object": "^2.0.4" 2138 | } 2139 | } 2140 | } 2141 | }, 2142 | "mkdirp": { 2143 | "version": "0.5.5", 2144 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 2145 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 2146 | "requires": { 2147 | "minimist": "^1.2.5" 2148 | }, 2149 | "dependencies": { 2150 | "minimist": { 2151 | "version": "1.2.5", 2152 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 2153 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" 2154 | } 2155 | } 2156 | }, 2157 | "mkdirp-classic": { 2158 | "version": "0.5.3", 2159 | "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", 2160 | "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" 2161 | }, 2162 | "ms": { 2163 | "version": "2.0.0", 2164 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 2165 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 2166 | }, 2167 | "mute-stream": { 2168 | "version": "0.0.8", 2169 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", 2170 | "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" 2171 | }, 2172 | "nan": { 2173 | "version": "2.14.1", 2174 | "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", 2175 | "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==" 2176 | }, 2177 | "nanomatch": { 2178 | "version": "1.2.13", 2179 | "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", 2180 | "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", 2181 | "requires": { 2182 | "arr-diff": "^4.0.0", 2183 | "array-unique": "^0.3.2", 2184 | "define-property": "^2.0.2", 2185 | "extend-shallow": "^3.0.2", 2186 | "fragment-cache": "^0.2.1", 2187 | "is-windows": "^1.0.2", 2188 | "kind-of": "^6.0.2", 2189 | "object.pick": "^1.3.0", 2190 | "regex-not": "^1.0.0", 2191 | "snapdragon": "^0.8.1", 2192 | "to-regex": "^3.0.1" 2193 | } 2194 | }, 2195 | "napi-build-utils": { 2196 | "version": "1.0.2", 2197 | "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", 2198 | "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" 2199 | }, 2200 | "nconf": { 2201 | "version": "0.10.0", 2202 | "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.10.0.tgz", 2203 | "integrity": "sha512-fKiXMQrpP7CYWJQzKkPPx9hPgmq+YLDyxcG9N8RpiE9FoCkCbzD0NyW0YhE3xn3Aupe7nnDeIx4PFzYehpHT9Q==", 2204 | "requires": { 2205 | "async": "^1.4.0", 2206 | "ini": "^1.3.0", 2207 | "secure-keys": "^1.0.0", 2208 | "yargs": "^3.19.0" 2209 | } 2210 | }, 2211 | "ncp": { 2212 | "version": "0.4.2", 2213 | "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz", 2214 | "integrity": "sha1-q8xsvT7C7Spyn/bnwfqPAXhKhXQ=" 2215 | }, 2216 | "node-abi": { 2217 | "version": "2.19.1", 2218 | "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.19.1.tgz", 2219 | "integrity": "sha512-HbtmIuByq44yhAzK7b9j/FelKlHYISKQn0mtvcBrU5QBkhoCMp5bu8Hv5AI34DcKfOAcJBcOEMwLlwO62FFu9A==", 2220 | "requires": { 2221 | "semver": "^5.4.1" 2222 | } 2223 | }, 2224 | "node-fetch": { 2225 | "version": "2.6.1", 2226 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", 2227 | "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" 2228 | }, 2229 | "noop-logger": { 2230 | "version": "0.1.1", 2231 | "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", 2232 | "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=" 2233 | }, 2234 | "normalize-path": { 2235 | "version": "3.0.0", 2236 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 2237 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" 2238 | }, 2239 | "normalize-url": { 2240 | "version": "4.5.0", 2241 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", 2242 | "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" 2243 | }, 2244 | "npmlog": { 2245 | "version": "4.1.2", 2246 | "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", 2247 | "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", 2248 | "requires": { 2249 | "are-we-there-yet": "~1.1.2", 2250 | "console-control-strings": "~1.1.0", 2251 | "gauge": "~2.7.3", 2252 | "set-blocking": "~2.0.0" 2253 | } 2254 | }, 2255 | "nssocket": { 2256 | "version": "0.6.0", 2257 | "resolved": "https://registry.npmjs.org/nssocket/-/nssocket-0.6.0.tgz", 2258 | "integrity": "sha1-Wflvb/MhVm8zxw99vu7N/cBxVPo=", 2259 | "requires": { 2260 | "eventemitter2": "~0.4.14", 2261 | "lazy": "~1.0.11" 2262 | } 2263 | }, 2264 | "nth-check": { 2265 | "version": "1.0.2", 2266 | "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", 2267 | "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", 2268 | "requires": { 2269 | "boolbase": "~1.0.0" 2270 | } 2271 | }, 2272 | "number-is-nan": { 2273 | "version": "1.0.1", 2274 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 2275 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" 2276 | }, 2277 | "nwsapi": { 2278 | "version": "2.2.0", 2279 | "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", 2280 | "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==" 2281 | }, 2282 | "oauth-1.0a": { 2283 | "version": "2.2.6", 2284 | "resolved": "https://registry.npmjs.org/oauth-1.0a/-/oauth-1.0a-2.2.6.tgz", 2285 | "integrity": "sha512-6bkxv3N4Gu5lty4viIcIAnq5GbxECviMBeKR3WX/q87SPQ8E8aursPZUtsXDnxCs787af09WPRBLqYrf/lwoYQ==" 2286 | }, 2287 | "oauth-sign": { 2288 | "version": "0.9.0", 2289 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", 2290 | "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" 2291 | }, 2292 | "object-assign": { 2293 | "version": "4.1.1", 2294 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 2295 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 2296 | }, 2297 | "object-copy": { 2298 | "version": "0.1.0", 2299 | "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", 2300 | "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", 2301 | "requires": { 2302 | "copy-descriptor": "^0.1.0", 2303 | "define-property": "^0.2.5", 2304 | "kind-of": "^3.0.3" 2305 | }, 2306 | "dependencies": { 2307 | "define-property": { 2308 | "version": "0.2.5", 2309 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 2310 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 2311 | "requires": { 2312 | "is-descriptor": "^0.1.0" 2313 | } 2314 | }, 2315 | "kind-of": { 2316 | "version": "3.2.2", 2317 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 2318 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2319 | "requires": { 2320 | "is-buffer": "^1.1.5" 2321 | } 2322 | } 2323 | } 2324 | }, 2325 | "object-inspect": { 2326 | "version": "1.8.0", 2327 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", 2328 | "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==" 2329 | }, 2330 | "object-is": { 2331 | "version": "1.1.2", 2332 | "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", 2333 | "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", 2334 | "requires": { 2335 | "define-properties": "^1.1.3", 2336 | "es-abstract": "^1.17.5" 2337 | } 2338 | }, 2339 | "object-keys": { 2340 | "version": "1.1.1", 2341 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 2342 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" 2343 | }, 2344 | "object-visit": { 2345 | "version": "1.0.1", 2346 | "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", 2347 | "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", 2348 | "requires": { 2349 | "isobject": "^3.0.0" 2350 | } 2351 | }, 2352 | "object.assign": { 2353 | "version": "4.1.0", 2354 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", 2355 | "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", 2356 | "requires": { 2357 | "define-properties": "^1.1.2", 2358 | "function-bind": "^1.1.1", 2359 | "has-symbols": "^1.0.0", 2360 | "object-keys": "^1.0.11" 2361 | } 2362 | }, 2363 | "object.pick": { 2364 | "version": "1.3.0", 2365 | "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", 2366 | "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", 2367 | "requires": { 2368 | "isobject": "^3.0.1" 2369 | } 2370 | }, 2371 | "once": { 2372 | "version": "1.4.0", 2373 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2374 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 2375 | "requires": { 2376 | "wrappy": "1" 2377 | } 2378 | }, 2379 | "optimist": { 2380 | "version": "0.6.0", 2381 | "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.0.tgz", 2382 | "integrity": "sha1-aUJIJvNAX3nxQub8PZrljU27kgA=", 2383 | "requires": { 2384 | "minimist": "~0.0.1", 2385 | "wordwrap": "~0.0.2" 2386 | } 2387 | }, 2388 | "optionator": { 2389 | "version": "0.8.3", 2390 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", 2391 | "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", 2392 | "requires": { 2393 | "deep-is": "~0.1.3", 2394 | "fast-levenshtein": "~2.0.6", 2395 | "levn": "~0.3.0", 2396 | "prelude-ls": "~1.1.2", 2397 | "type-check": "~0.3.2", 2398 | "word-wrap": "~1.2.3" 2399 | } 2400 | }, 2401 | "os-locale": { 2402 | "version": "1.4.0", 2403 | "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", 2404 | "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", 2405 | "requires": { 2406 | "lcid": "^1.0.0" 2407 | } 2408 | }, 2409 | "p-cancelable": { 2410 | "version": "2.0.0", 2411 | "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.0.0.tgz", 2412 | "integrity": "sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg==" 2413 | }, 2414 | "parse5": { 2415 | "version": "3.0.3", 2416 | "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", 2417 | "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", 2418 | "requires": { 2419 | "@types/node": "*" 2420 | } 2421 | }, 2422 | "pascalcase": { 2423 | "version": "0.1.1", 2424 | "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", 2425 | "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" 2426 | }, 2427 | "path-dirname": { 2428 | "version": "1.0.2", 2429 | "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", 2430 | "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" 2431 | }, 2432 | "path-is-absolute": { 2433 | "version": "1.0.1", 2434 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2435 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" 2436 | }, 2437 | "pause-stream": { 2438 | "version": "0.0.11", 2439 | "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", 2440 | "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", 2441 | "requires": { 2442 | "through": "~2.3" 2443 | } 2444 | }, 2445 | "performance-now": { 2446 | "version": "2.1.0", 2447 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", 2448 | "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" 2449 | }, 2450 | "pkginfo": { 2451 | "version": "0.3.1", 2452 | "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", 2453 | "integrity": "sha1-Wyn2qB9wcXFC4J52W76rl7T4HiE=" 2454 | }, 2455 | "posix-character-classes": { 2456 | "version": "0.1.1", 2457 | "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", 2458 | "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" 2459 | }, 2460 | "prebuild-install": { 2461 | "version": "5.3.5", 2462 | "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.5.tgz", 2463 | "integrity": "sha512-YmMO7dph9CYKi5IR/BzjOJlRzpxGGVo1EsLSUZ0mt/Mq0HWZIHOKHHcHdT69yG54C9m6i45GpItwRHpk0Py7Uw==", 2464 | "requires": { 2465 | "detect-libc": "^1.0.3", 2466 | "expand-template": "^2.0.3", 2467 | "github-from-package": "0.0.0", 2468 | "minimist": "^1.2.3", 2469 | "mkdirp": "^0.5.1", 2470 | "napi-build-utils": "^1.0.1", 2471 | "node-abi": "^2.7.0", 2472 | "noop-logger": "^0.1.1", 2473 | "npmlog": "^4.0.1", 2474 | "pump": "^3.0.0", 2475 | "rc": "^1.2.7", 2476 | "simple-get": "^3.0.3", 2477 | "tar-fs": "^2.0.0", 2478 | "tunnel-agent": "^0.6.0", 2479 | "which-pm-runs": "^1.0.0" 2480 | }, 2481 | "dependencies": { 2482 | "minimist": { 2483 | "version": "1.2.5", 2484 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 2485 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" 2486 | } 2487 | } 2488 | }, 2489 | "precond": { 2490 | "version": "0.2.3", 2491 | "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", 2492 | "integrity": "sha1-qpWRvKokkj8eD0hJ0kD0fvwQdaw=" 2493 | }, 2494 | "prelude-ls": { 2495 | "version": "1.1.2", 2496 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 2497 | "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" 2498 | }, 2499 | "prettyjson": { 2500 | "version": "1.2.1", 2501 | "resolved": "https://registry.npmjs.org/prettyjson/-/prettyjson-1.2.1.tgz", 2502 | "integrity": "sha1-/P+rQdGcq0365eV15kJGYZsS0ok=", 2503 | "requires": { 2504 | "colors": "^1.1.2", 2505 | "minimist": "^1.2.0" 2506 | }, 2507 | "dependencies": { 2508 | "colors": { 2509 | "version": "1.4.0", 2510 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", 2511 | "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" 2512 | }, 2513 | "minimist": { 2514 | "version": "1.2.5", 2515 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 2516 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" 2517 | } 2518 | } 2519 | }, 2520 | "prism-media": { 2521 | "version": "1.2.2", 2522 | "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.2.2.tgz", 2523 | "integrity": "sha512-I+nkWY212lJ500jLe4tN9tWO7nRiBAVdMv76P9kffZjYhw20raMlW1HSSvS+MLXC9MmbNZCazMrAr+5jEEgTuw==" 2524 | }, 2525 | "process-nextick-args": { 2526 | "version": "2.0.1", 2527 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 2528 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" 2529 | }, 2530 | "prompt": { 2531 | "version": "0.2.14", 2532 | "resolved": "https://registry.npmjs.org/prompt/-/prompt-0.2.14.tgz", 2533 | "integrity": "sha1-V3VPZPVD/XsIRXB8gY7OYY8F/9w=", 2534 | "requires": { 2535 | "pkginfo": "0.x.x", 2536 | "read": "1.0.x", 2537 | "revalidator": "0.1.x", 2538 | "utile": "0.2.x", 2539 | "winston": "0.8.x" 2540 | }, 2541 | "dependencies": { 2542 | "async": { 2543 | "version": "0.2.10", 2544 | "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", 2545 | "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=" 2546 | }, 2547 | "utile": { 2548 | "version": "0.2.1", 2549 | "resolved": "https://registry.npmjs.org/utile/-/utile-0.2.1.tgz", 2550 | "integrity": "sha1-kwyI6ZCY1iIINMNWy9mncFItkNc=", 2551 | "requires": { 2552 | "async": "~0.2.9", 2553 | "deep-equal": "*", 2554 | "i": "0.3.x", 2555 | "mkdirp": "0.x.x", 2556 | "ncp": "0.4.x", 2557 | "rimraf": "2.x.x" 2558 | } 2559 | } 2560 | } 2561 | }, 2562 | "ps-tree": { 2563 | "version": "1.2.0", 2564 | "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.2.0.tgz", 2565 | "integrity": "sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==", 2566 | "requires": { 2567 | "event-stream": "=3.3.4" 2568 | } 2569 | }, 2570 | "psl": { 2571 | "version": "1.8.0", 2572 | "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", 2573 | "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" 2574 | }, 2575 | "pump": { 2576 | "version": "3.0.0", 2577 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 2578 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 2579 | "requires": { 2580 | "end-of-stream": "^1.1.0", 2581 | "once": "^1.3.1" 2582 | } 2583 | }, 2584 | "punycode": { 2585 | "version": "2.1.1", 2586 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 2587 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" 2588 | }, 2589 | "qs": { 2590 | "version": "6.5.2", 2591 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", 2592 | "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" 2593 | }, 2594 | "querystringify": { 2595 | "version": "2.2.0", 2596 | "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", 2597 | "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" 2598 | }, 2599 | "quick-lru": { 2600 | "version": "5.1.1", 2601 | "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", 2602 | "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" 2603 | }, 2604 | "rc": { 2605 | "version": "1.2.8", 2606 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", 2607 | "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", 2608 | "requires": { 2609 | "deep-extend": "^0.6.0", 2610 | "ini": "~1.3.0", 2611 | "minimist": "^1.2.0", 2612 | "strip-json-comments": "~2.0.1" 2613 | }, 2614 | "dependencies": { 2615 | "minimist": { 2616 | "version": "1.2.5", 2617 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 2618 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" 2619 | }, 2620 | "strip-json-comments": { 2621 | "version": "2.0.1", 2622 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 2623 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" 2624 | } 2625 | } 2626 | }, 2627 | "read": { 2628 | "version": "1.0.7", 2629 | "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", 2630 | "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", 2631 | "requires": { 2632 | "mute-stream": "~0.0.4" 2633 | } 2634 | }, 2635 | "readable-stream": { 2636 | "version": "3.6.0", 2637 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 2638 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 2639 | "requires": { 2640 | "inherits": "^2.0.3", 2641 | "string_decoder": "^1.1.1", 2642 | "util-deprecate": "^1.0.1" 2643 | } 2644 | }, 2645 | "readdirp": { 2646 | "version": "2.2.1", 2647 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", 2648 | "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", 2649 | "requires": { 2650 | "graceful-fs": "^4.1.11", 2651 | "micromatch": "^3.1.10", 2652 | "readable-stream": "^2.0.2" 2653 | }, 2654 | "dependencies": { 2655 | "readable-stream": { 2656 | "version": "2.3.7", 2657 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 2658 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 2659 | "requires": { 2660 | "core-util-is": "~1.0.0", 2661 | "inherits": "~2.0.3", 2662 | "isarray": "~1.0.0", 2663 | "process-nextick-args": "~2.0.0", 2664 | "safe-buffer": "~5.1.1", 2665 | "string_decoder": "~1.1.1", 2666 | "util-deprecate": "~1.0.1" 2667 | } 2668 | }, 2669 | "safe-buffer": { 2670 | "version": "5.1.2", 2671 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2672 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 2673 | }, 2674 | "string_decoder": { 2675 | "version": "1.1.1", 2676 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 2677 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 2678 | "requires": { 2679 | "safe-buffer": "~5.1.0" 2680 | } 2681 | } 2682 | } 2683 | }, 2684 | "regex-not": { 2685 | "version": "1.0.2", 2686 | "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", 2687 | "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", 2688 | "requires": { 2689 | "extend-shallow": "^3.0.2", 2690 | "safe-regex": "^1.1.0" 2691 | } 2692 | }, 2693 | "regexp.prototype.flags": { 2694 | "version": "1.3.0", 2695 | "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", 2696 | "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", 2697 | "requires": { 2698 | "define-properties": "^1.1.3", 2699 | "es-abstract": "^1.17.0-next.1" 2700 | } 2701 | }, 2702 | "remove-trailing-separator": { 2703 | "version": "1.1.0", 2704 | "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", 2705 | "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" 2706 | }, 2707 | "repeat-element": { 2708 | "version": "1.1.3", 2709 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", 2710 | "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" 2711 | }, 2712 | "repeat-string": { 2713 | "version": "1.6.1", 2714 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 2715 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" 2716 | }, 2717 | "request": { 2718 | "version": "2.88.2", 2719 | "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", 2720 | "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", 2721 | "requires": { 2722 | "aws-sign2": "~0.7.0", 2723 | "aws4": "^1.8.0", 2724 | "caseless": "~0.12.0", 2725 | "combined-stream": "~1.0.6", 2726 | "extend": "~3.0.2", 2727 | "forever-agent": "~0.6.1", 2728 | "form-data": "~2.3.2", 2729 | "har-validator": "~5.1.3", 2730 | "http-signature": "~1.2.0", 2731 | "is-typedarray": "~1.0.0", 2732 | "isstream": "~0.1.2", 2733 | "json-stringify-safe": "~5.0.1", 2734 | "mime-types": "~2.1.19", 2735 | "oauth-sign": "~0.9.0", 2736 | "performance-now": "^2.1.0", 2737 | "qs": "~6.5.2", 2738 | "safe-buffer": "^5.1.2", 2739 | "tough-cookie": "~2.5.0", 2740 | "tunnel-agent": "^0.6.0", 2741 | "uuid": "^3.3.2" 2742 | } 2743 | }, 2744 | "request-promise-core": { 2745 | "version": "1.1.4", 2746 | "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", 2747 | "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", 2748 | "requires": { 2749 | "lodash": "^4.17.19" 2750 | } 2751 | }, 2752 | "request-promise-native": { 2753 | "version": "1.0.9", 2754 | "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", 2755 | "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", 2756 | "requires": { 2757 | "request-promise-core": "1.1.4", 2758 | "stealthy-require": "^1.1.1", 2759 | "tough-cookie": "^2.3.3" 2760 | } 2761 | }, 2762 | "requires-port": { 2763 | "version": "1.0.0", 2764 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", 2765 | "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" 2766 | }, 2767 | "resolve-alpn": { 2768 | "version": "1.0.0", 2769 | "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.0.0.tgz", 2770 | "integrity": "sha512-rTuiIEqFmGxne4IovivKSDzld2lWW9QCjqv80SYjPgf+gS35eaCAjaP54CCwGAwBtnCsvNLYtqxe1Nw+i6JEmA==" 2771 | }, 2772 | "resolve-url": { 2773 | "version": "0.2.1", 2774 | "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", 2775 | "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" 2776 | }, 2777 | "responselike": { 2778 | "version": "2.0.0", 2779 | "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", 2780 | "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", 2781 | "requires": { 2782 | "lowercase-keys": "^2.0.0" 2783 | } 2784 | }, 2785 | "resumer": { 2786 | "version": "0.0.0", 2787 | "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", 2788 | "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", 2789 | "requires": { 2790 | "through": "~2.3.4" 2791 | } 2792 | }, 2793 | "ret": { 2794 | "version": "0.1.15", 2795 | "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", 2796 | "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" 2797 | }, 2798 | "revalidator": { 2799 | "version": "0.1.8", 2800 | "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", 2801 | "integrity": "sha1-/s5hv6DBtSoga9axgZgYS91SOjs=" 2802 | }, 2803 | "rimraf": { 2804 | "version": "2.7.1", 2805 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 2806 | "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", 2807 | "requires": { 2808 | "glob": "^7.1.3" 2809 | } 2810 | }, 2811 | "safe-buffer": { 2812 | "version": "5.2.1", 2813 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 2814 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 2815 | }, 2816 | "safe-eval": { 2817 | "version": "0.4.1", 2818 | "resolved": "https://registry.npmjs.org/safe-eval/-/safe-eval-0.4.1.tgz", 2819 | "integrity": "sha512-wmiu4RSYVZ690RP1+cv/LxfPK1dIlEN35aW7iv4SMYdqDrHbkll4+NJcHmKm7PbCuI1df1otOcPwgcc2iFR85g==" 2820 | }, 2821 | "safe-regex": { 2822 | "version": "1.1.0", 2823 | "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", 2824 | "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", 2825 | "requires": { 2826 | "ret": "~0.1.10" 2827 | } 2828 | }, 2829 | "safer-buffer": { 2830 | "version": "2.1.2", 2831 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 2832 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 2833 | }, 2834 | "saxes": { 2835 | "version": "5.0.1", 2836 | "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", 2837 | "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", 2838 | "requires": { 2839 | "xmlchars": "^2.2.0" 2840 | } 2841 | }, 2842 | "secure-keys": { 2843 | "version": "1.0.0", 2844 | "resolved": "https://registry.npmjs.org/secure-keys/-/secure-keys-1.0.0.tgz", 2845 | "integrity": "sha1-8MgtmKOxOah3aogIBQuCRDEIf8o=" 2846 | }, 2847 | "semver": { 2848 | "version": "5.7.1", 2849 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 2850 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" 2851 | }, 2852 | "set-blocking": { 2853 | "version": "2.0.0", 2854 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 2855 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" 2856 | }, 2857 | "set-value": { 2858 | "version": "2.0.1", 2859 | "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", 2860 | "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", 2861 | "requires": { 2862 | "extend-shallow": "^2.0.1", 2863 | "is-extendable": "^0.1.1", 2864 | "is-plain-object": "^2.0.3", 2865 | "split-string": "^3.0.1" 2866 | }, 2867 | "dependencies": { 2868 | "extend-shallow": { 2869 | "version": "2.0.1", 2870 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 2871 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 2872 | "requires": { 2873 | "is-extendable": "^0.1.0" 2874 | } 2875 | } 2876 | } 2877 | }, 2878 | "setimmediate": { 2879 | "version": "1.0.5", 2880 | "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", 2881 | "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" 2882 | }, 2883 | "shush": { 2884 | "version": "1.0.0", 2885 | "resolved": "https://registry.npmjs.org/shush/-/shush-1.0.0.tgz", 2886 | "integrity": "sha1-wnQVqeRY8v7TmyfPjrN8ADeCtDE=", 2887 | "requires": { 2888 | "caller": "~0.0.1", 2889 | "strip-json-comments": "~0.1.1" 2890 | } 2891 | }, 2892 | "signal-exit": { 2893 | "version": "3.0.3", 2894 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", 2895 | "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" 2896 | }, 2897 | "simple-concat": { 2898 | "version": "1.0.1", 2899 | "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", 2900 | "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" 2901 | }, 2902 | "simple-get": { 2903 | "version": "3.1.0", 2904 | "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz", 2905 | "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==", 2906 | "requires": { 2907 | "decompress-response": "^4.2.0", 2908 | "once": "^1.3.1", 2909 | "simple-concat": "^1.0.0" 2910 | } 2911 | }, 2912 | "snapdragon": { 2913 | "version": "0.8.2", 2914 | "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", 2915 | "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", 2916 | "requires": { 2917 | "base": "^0.11.1", 2918 | "debug": "^2.2.0", 2919 | "define-property": "^0.2.5", 2920 | "extend-shallow": "^2.0.1", 2921 | "map-cache": "^0.2.2", 2922 | "source-map": "^0.5.6", 2923 | "source-map-resolve": "^0.5.0", 2924 | "use": "^3.1.0" 2925 | }, 2926 | "dependencies": { 2927 | "define-property": { 2928 | "version": "0.2.5", 2929 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 2930 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 2931 | "requires": { 2932 | "is-descriptor": "^0.1.0" 2933 | } 2934 | }, 2935 | "extend-shallow": { 2936 | "version": "2.0.1", 2937 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 2938 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 2939 | "requires": { 2940 | "is-extendable": "^0.1.0" 2941 | } 2942 | } 2943 | } 2944 | }, 2945 | "snapdragon-node": { 2946 | "version": "2.1.1", 2947 | "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", 2948 | "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", 2949 | "requires": { 2950 | "define-property": "^1.0.0", 2951 | "isobject": "^3.0.0", 2952 | "snapdragon-util": "^3.0.1" 2953 | }, 2954 | "dependencies": { 2955 | "define-property": { 2956 | "version": "1.0.0", 2957 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 2958 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 2959 | "requires": { 2960 | "is-descriptor": "^1.0.0" 2961 | } 2962 | }, 2963 | "is-accessor-descriptor": { 2964 | "version": "1.0.0", 2965 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 2966 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 2967 | "requires": { 2968 | "kind-of": "^6.0.0" 2969 | } 2970 | }, 2971 | "is-data-descriptor": { 2972 | "version": "1.0.0", 2973 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 2974 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 2975 | "requires": { 2976 | "kind-of": "^6.0.0" 2977 | } 2978 | }, 2979 | "is-descriptor": { 2980 | "version": "1.0.2", 2981 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 2982 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 2983 | "requires": { 2984 | "is-accessor-descriptor": "^1.0.0", 2985 | "is-data-descriptor": "^1.0.0", 2986 | "kind-of": "^6.0.2" 2987 | } 2988 | } 2989 | } 2990 | }, 2991 | "snapdragon-util": { 2992 | "version": "3.0.1", 2993 | "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", 2994 | "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", 2995 | "requires": { 2996 | "kind-of": "^3.2.0" 2997 | }, 2998 | "dependencies": { 2999 | "kind-of": { 3000 | "version": "3.2.2", 3001 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 3002 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 3003 | "requires": { 3004 | "is-buffer": "^1.1.5" 3005 | } 3006 | } 3007 | } 3008 | }, 3009 | "source-map": { 3010 | "version": "0.5.7", 3011 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 3012 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" 3013 | }, 3014 | "source-map-resolve": { 3015 | "version": "0.5.3", 3016 | "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", 3017 | "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", 3018 | "requires": { 3019 | "atob": "^2.1.2", 3020 | "decode-uri-component": "^0.2.0", 3021 | "resolve-url": "^0.2.1", 3022 | "source-map-url": "^0.4.0", 3023 | "urix": "^0.1.0" 3024 | } 3025 | }, 3026 | "source-map-url": { 3027 | "version": "0.4.0", 3028 | "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", 3029 | "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" 3030 | }, 3031 | "split": { 3032 | "version": "0.3.3", 3033 | "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", 3034 | "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", 3035 | "requires": { 3036 | "through": "2" 3037 | } 3038 | }, 3039 | "split-string": { 3040 | "version": "3.1.0", 3041 | "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", 3042 | "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", 3043 | "requires": { 3044 | "extend-shallow": "^3.0.0" 3045 | } 3046 | }, 3047 | "sshpk": { 3048 | "version": "1.16.1", 3049 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", 3050 | "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", 3051 | "requires": { 3052 | "asn1": "~0.2.3", 3053 | "assert-plus": "^1.0.0", 3054 | "bcrypt-pbkdf": "^1.0.0", 3055 | "dashdash": "^1.12.0", 3056 | "ecc-jsbn": "~0.1.1", 3057 | "getpass": "^0.1.1", 3058 | "jsbn": "~0.1.0", 3059 | "safer-buffer": "^2.0.2", 3060 | "tweetnacl": "~0.14.0" 3061 | } 3062 | }, 3063 | "stack-trace": { 3064 | "version": "0.0.10", 3065 | "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", 3066 | "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" 3067 | }, 3068 | "static-extend": { 3069 | "version": "0.1.2", 3070 | "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", 3071 | "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", 3072 | "requires": { 3073 | "define-property": "^0.2.5", 3074 | "object-copy": "^0.1.0" 3075 | }, 3076 | "dependencies": { 3077 | "define-property": { 3078 | "version": "0.2.5", 3079 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 3080 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 3081 | "requires": { 3082 | "is-descriptor": "^0.1.0" 3083 | } 3084 | } 3085 | } 3086 | }, 3087 | "stealthy-require": { 3088 | "version": "1.1.1", 3089 | "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", 3090 | "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" 3091 | }, 3092 | "stream-combiner": { 3093 | "version": "0.0.4", 3094 | "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", 3095 | "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", 3096 | "requires": { 3097 | "duplexer": "~0.1.1" 3098 | } 3099 | }, 3100 | "string-width": { 3101 | "version": "1.0.2", 3102 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", 3103 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", 3104 | "requires": { 3105 | "code-point-at": "^1.0.0", 3106 | "is-fullwidth-code-point": "^1.0.0", 3107 | "strip-ansi": "^3.0.0" 3108 | } 3109 | }, 3110 | "string.prototype.trimend": { 3111 | "version": "1.0.1", 3112 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", 3113 | "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", 3114 | "requires": { 3115 | "define-properties": "^1.1.3", 3116 | "es-abstract": "^1.17.5" 3117 | } 3118 | }, 3119 | "string.prototype.trimstart": { 3120 | "version": "1.0.1", 3121 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", 3122 | "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", 3123 | "requires": { 3124 | "define-properties": "^1.1.3", 3125 | "es-abstract": "^1.17.5" 3126 | } 3127 | }, 3128 | "string_decoder": { 3129 | "version": "1.3.0", 3130 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 3131 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 3132 | "requires": { 3133 | "safe-buffer": "~5.2.0" 3134 | } 3135 | }, 3136 | "strip-ansi": { 3137 | "version": "3.0.1", 3138 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 3139 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 3140 | "requires": { 3141 | "ansi-regex": "^2.0.0" 3142 | } 3143 | }, 3144 | "strip-json-comments": { 3145 | "version": "0.1.3", 3146 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-0.1.3.tgz", 3147 | "integrity": "sha1-Fkxk43Coo8wAyeAbU55WmCPw7lQ=" 3148 | }, 3149 | "symbol-tree": { 3150 | "version": "3.2.4", 3151 | "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", 3152 | "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" 3153 | }, 3154 | "tape": { 3155 | "version": "2.3.3", 3156 | "resolved": "https://registry.npmjs.org/tape/-/tape-2.3.3.tgz", 3157 | "integrity": "sha1-Lnzgox3wn41oUWZKcYQuDKUFevc=", 3158 | "requires": { 3159 | "deep-equal": "~0.1.0", 3160 | "defined": "~0.0.0", 3161 | "inherits": "~2.0.1", 3162 | "jsonify": "~0.0.0", 3163 | "resumer": "~0.0.0", 3164 | "through": "~2.3.4" 3165 | }, 3166 | "dependencies": { 3167 | "deep-equal": { 3168 | "version": "0.1.2", 3169 | "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.1.2.tgz", 3170 | "integrity": "sha1-skbCuApXCkfBG+HZvRBw7IeLh84=" 3171 | } 3172 | } 3173 | }, 3174 | "tar-fs": { 3175 | "version": "2.1.0", 3176 | "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.0.tgz", 3177 | "integrity": "sha512-9uW5iDvrIMCVpvasdFHW0wJPez0K4JnMZtsuIeDI7HyMGJNxmDZDOCQROr7lXyS+iL/QMpj07qcjGYTSdRFXUg==", 3178 | "requires": { 3179 | "chownr": "^1.1.1", 3180 | "mkdirp-classic": "^0.5.2", 3181 | "pump": "^3.0.0", 3182 | "tar-stream": "^2.0.0" 3183 | } 3184 | }, 3185 | "tar-stream": { 3186 | "version": "2.1.4", 3187 | "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.4.tgz", 3188 | "integrity": "sha512-o3pS2zlG4gxr67GmFYBLlq+dM8gyRGUOvsrHclSkvtVtQbjV0s/+ZE8OpICbaj8clrX3tjeHngYGP7rweaBnuw==", 3189 | "requires": { 3190 | "bl": "^4.0.3", 3191 | "end-of-stream": "^1.4.1", 3192 | "fs-constants": "^1.0.0", 3193 | "inherits": "^2.0.3", 3194 | "readable-stream": "^3.1.1" 3195 | } 3196 | }, 3197 | "through": { 3198 | "version": "2.3.8", 3199 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 3200 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" 3201 | }, 3202 | "to-object-path": { 3203 | "version": "0.3.0", 3204 | "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", 3205 | "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", 3206 | "requires": { 3207 | "kind-of": "^3.0.2" 3208 | }, 3209 | "dependencies": { 3210 | "kind-of": { 3211 | "version": "3.2.2", 3212 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 3213 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 3214 | "requires": { 3215 | "is-buffer": "^1.1.5" 3216 | } 3217 | } 3218 | } 3219 | }, 3220 | "to-regex": { 3221 | "version": "3.0.2", 3222 | "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", 3223 | "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", 3224 | "requires": { 3225 | "define-property": "^2.0.2", 3226 | "extend-shallow": "^3.0.2", 3227 | "regex-not": "^1.0.2", 3228 | "safe-regex": "^1.1.0" 3229 | } 3230 | }, 3231 | "to-regex-range": { 3232 | "version": "2.1.1", 3233 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", 3234 | "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", 3235 | "requires": { 3236 | "is-number": "^3.0.0", 3237 | "repeat-string": "^1.6.1" 3238 | } 3239 | }, 3240 | "tough-cookie": { 3241 | "version": "2.5.0", 3242 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", 3243 | "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", 3244 | "requires": { 3245 | "psl": "^1.1.28", 3246 | "punycode": "^2.1.1" 3247 | } 3248 | }, 3249 | "tr46": { 3250 | "version": "2.0.2", 3251 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz", 3252 | "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==", 3253 | "requires": { 3254 | "punycode": "^2.1.1" 3255 | } 3256 | }, 3257 | "tunnel-agent": { 3258 | "version": "0.6.0", 3259 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 3260 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", 3261 | "requires": { 3262 | "safe-buffer": "^5.0.1" 3263 | } 3264 | }, 3265 | "tweetnacl": { 3266 | "version": "0.14.5", 3267 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", 3268 | "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" 3269 | }, 3270 | "twitter-lite": { 3271 | "version": "0.14.0", 3272 | "resolved": "https://registry.npmjs.org/twitter-lite/-/twitter-lite-0.14.0.tgz", 3273 | "integrity": "sha512-AP7jnuEBIMA18fi3IDWT7fTOJVpZrl1ZwJKunGf2iknKv5BH4mpwBvJmu3RP59XHZFL3ckUcGGRw/INVRikBBg==", 3274 | "requires": { 3275 | "cross-fetch": "^3.0.0", 3276 | "oauth-1.0a": "^2.2.4" 3277 | } 3278 | }, 3279 | "twitter-stream-api": { 3280 | "version": "0.5.2", 3281 | "resolved": "https://registry.npmjs.org/twitter-stream-api/-/twitter-stream-api-0.5.2.tgz", 3282 | "integrity": "sha512-F8Ozo6S19iv8PIcz8JFv2Z6xgh1s9o5aYKie5/rIMP9LqaeMSxIkDZ/H/MhvNOYtejcNWTfQ3o230hormJl0bg==", 3283 | "requires": { 3284 | "backoff": "^2.5.0", 3285 | "backoff-linear-strategy": "^1.0.0", 3286 | "core-util-is": "^1.0.2", 3287 | "emits": "^3.0.0", 3288 | "readable-stream": "^2.3.3", 3289 | "request": "^2.83.0" 3290 | }, 3291 | "dependencies": { 3292 | "readable-stream": { 3293 | "version": "2.3.7", 3294 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 3295 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 3296 | "requires": { 3297 | "core-util-is": "~1.0.0", 3298 | "inherits": "~2.0.3", 3299 | "isarray": "~1.0.0", 3300 | "process-nextick-args": "~2.0.0", 3301 | "safe-buffer": "~5.1.1", 3302 | "string_decoder": "~1.1.1", 3303 | "util-deprecate": "~1.0.1" 3304 | } 3305 | }, 3306 | "safe-buffer": { 3307 | "version": "5.1.2", 3308 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 3309 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 3310 | }, 3311 | "string_decoder": { 3312 | "version": "1.1.1", 3313 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 3314 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 3315 | "requires": { 3316 | "safe-buffer": "~5.1.0" 3317 | } 3318 | } 3319 | } 3320 | }, 3321 | "type-check": { 3322 | "version": "0.3.2", 3323 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", 3324 | "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", 3325 | "requires": { 3326 | "prelude-ls": "~1.1.2" 3327 | } 3328 | }, 3329 | "underscore": { 3330 | "version": "1.11.0", 3331 | "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.11.0.tgz", 3332 | "integrity": "sha512-xY96SsN3NA461qIRKZ/+qox37YXPtSBswMGfiNptr+wrt6ds4HaMw23TP612fEyGekRE6LNRiLYr/aqbHXNedw==" 3333 | }, 3334 | "underscore-keypath": { 3335 | "version": "0.0.22", 3336 | "resolved": "https://registry.npmjs.org/underscore-keypath/-/underscore-keypath-0.0.22.tgz", 3337 | "integrity": "sha1-SKUoOSu278QkvhyqVtpLX6zPJk0=", 3338 | "requires": { 3339 | "underscore": "*" 3340 | } 3341 | }, 3342 | "union-value": { 3343 | "version": "1.0.1", 3344 | "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", 3345 | "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", 3346 | "requires": { 3347 | "arr-union": "^3.1.0", 3348 | "get-value": "^2.0.6", 3349 | "is-extendable": "^0.1.1", 3350 | "set-value": "^2.0.1" 3351 | } 3352 | }, 3353 | "universalify": { 3354 | "version": "0.1.2", 3355 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", 3356 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" 3357 | }, 3358 | "unset-value": { 3359 | "version": "1.0.0", 3360 | "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", 3361 | "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", 3362 | "requires": { 3363 | "has-value": "^0.3.1", 3364 | "isobject": "^3.0.0" 3365 | }, 3366 | "dependencies": { 3367 | "has-value": { 3368 | "version": "0.3.1", 3369 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", 3370 | "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", 3371 | "requires": { 3372 | "get-value": "^2.0.3", 3373 | "has-values": "^0.1.4", 3374 | "isobject": "^2.0.0" 3375 | }, 3376 | "dependencies": { 3377 | "isobject": { 3378 | "version": "2.1.0", 3379 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", 3380 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", 3381 | "requires": { 3382 | "isarray": "1.0.0" 3383 | } 3384 | } 3385 | } 3386 | }, 3387 | "has-values": { 3388 | "version": "0.1.4", 3389 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", 3390 | "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" 3391 | } 3392 | } 3393 | }, 3394 | "upath": { 3395 | "version": "1.2.0", 3396 | "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", 3397 | "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" 3398 | }, 3399 | "uri-js": { 3400 | "version": "4.4.0", 3401 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", 3402 | "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", 3403 | "requires": { 3404 | "punycode": "^2.1.0" 3405 | } 3406 | }, 3407 | "urix": { 3408 | "version": "0.1.0", 3409 | "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", 3410 | "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" 3411 | }, 3412 | "url-parse": { 3413 | "version": "1.4.7", 3414 | "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", 3415 | "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", 3416 | "requires": { 3417 | "querystringify": "^2.1.1", 3418 | "requires-port": "^1.0.0" 3419 | } 3420 | }, 3421 | "use": { 3422 | "version": "3.1.1", 3423 | "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", 3424 | "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" 3425 | }, 3426 | "user-agents": { 3427 | "version": "1.0.559", 3428 | "resolved": "https://registry.npmjs.org/user-agents/-/user-agents-1.0.559.tgz", 3429 | "integrity": "sha512-HdAlNS3vDxOGMRwmv8or05xL96MV3CEwQhUSFTCRoOvTOEnWhTEBPAHRry/xZpVTTOtx77UHMal8YKcx6fs7Lg==", 3430 | "requires": { 3431 | "dot-json": "^1.2.0", 3432 | "lodash.clonedeep": "^4.5.0" 3433 | } 3434 | }, 3435 | "util-deprecate": { 3436 | "version": "1.0.2", 3437 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 3438 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 3439 | }, 3440 | "utile": { 3441 | "version": "0.3.0", 3442 | "resolved": "https://registry.npmjs.org/utile/-/utile-0.3.0.tgz", 3443 | "integrity": "sha1-E1LDQOuCDk2N26A5pPv6oy7U7zo=", 3444 | "requires": { 3445 | "async": "~0.9.0", 3446 | "deep-equal": "~0.2.1", 3447 | "i": "0.3.x", 3448 | "mkdirp": "0.x.x", 3449 | "ncp": "1.0.x", 3450 | "rimraf": "2.x.x" 3451 | }, 3452 | "dependencies": { 3453 | "async": { 3454 | "version": "0.9.2", 3455 | "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", 3456 | "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" 3457 | }, 3458 | "deep-equal": { 3459 | "version": "0.2.2", 3460 | "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.2.2.tgz", 3461 | "integrity": "sha1-hLdFiW80xoTpjyzg5Cq69Du6AX0=" 3462 | }, 3463 | "ncp": { 3464 | "version": "1.0.1", 3465 | "resolved": "https://registry.npmjs.org/ncp/-/ncp-1.0.1.tgz", 3466 | "integrity": "sha1-0VNn5cuHQyuhF9K/gP30Wuz7QkY=" 3467 | } 3468 | } 3469 | }, 3470 | "uuid": { 3471 | "version": "3.4.0", 3472 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", 3473 | "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" 3474 | }, 3475 | "verror": { 3476 | "version": "1.10.0", 3477 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", 3478 | "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", 3479 | "requires": { 3480 | "assert-plus": "^1.0.0", 3481 | "core-util-is": "1.0.2", 3482 | "extsprintf": "^1.2.0" 3483 | } 3484 | }, 3485 | "w3c-hr-time": { 3486 | "version": "1.0.2", 3487 | "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", 3488 | "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", 3489 | "requires": { 3490 | "browser-process-hrtime": "^1.0.0" 3491 | } 3492 | }, 3493 | "w3c-xmlserializer": { 3494 | "version": "2.0.0", 3495 | "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", 3496 | "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", 3497 | "requires": { 3498 | "xml-name-validator": "^3.0.0" 3499 | } 3500 | }, 3501 | "webidl-conversions": { 3502 | "version": "6.1.0", 3503 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", 3504 | "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==" 3505 | }, 3506 | "whatwg-encoding": { 3507 | "version": "1.0.5", 3508 | "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", 3509 | "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", 3510 | "requires": { 3511 | "iconv-lite": "0.4.24" 3512 | } 3513 | }, 3514 | "whatwg-mimetype": { 3515 | "version": "2.3.0", 3516 | "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", 3517 | "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" 3518 | }, 3519 | "whatwg-url": { 3520 | "version": "8.2.2", 3521 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.2.2.tgz", 3522 | "integrity": "sha512-PcVnO6NiewhkmzV0qn7A+UZ9Xx4maNTI+O+TShmfE4pqjoCMwUMjkvoNhNHPTvgR7QH9Xt3R13iHuWy2sToFxQ==", 3523 | "requires": { 3524 | "lodash.sortby": "^4.7.0", 3525 | "tr46": "^2.0.2", 3526 | "webidl-conversions": "^6.1.0" 3527 | } 3528 | }, 3529 | "which-pm-runs": { 3530 | "version": "1.0.0", 3531 | "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", 3532 | "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=" 3533 | }, 3534 | "wide-align": { 3535 | "version": "1.1.3", 3536 | "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", 3537 | "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", 3538 | "requires": { 3539 | "string-width": "^1.0.2 || 2" 3540 | } 3541 | }, 3542 | "window-size": { 3543 | "version": "0.1.4", 3544 | "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", 3545 | "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=" 3546 | }, 3547 | "winston": { 3548 | "version": "0.8.3", 3549 | "resolved": "https://registry.npmjs.org/winston/-/winston-0.8.3.tgz", 3550 | "integrity": "sha1-ZLar9M0Brcrv1QCTk7HY6L7BnbA=", 3551 | "requires": { 3552 | "async": "0.2.x", 3553 | "colors": "0.6.x", 3554 | "cycle": "1.0.x", 3555 | "eyes": "0.1.x", 3556 | "isstream": "0.1.x", 3557 | "pkginfo": "0.3.x", 3558 | "stack-trace": "0.0.x" 3559 | }, 3560 | "dependencies": { 3561 | "async": { 3562 | "version": "0.2.10", 3563 | "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", 3564 | "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=" 3565 | } 3566 | } 3567 | }, 3568 | "word-wrap": { 3569 | "version": "1.2.3", 3570 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 3571 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" 3572 | }, 3573 | "wordwrap": { 3574 | "version": "0.0.3", 3575 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", 3576 | "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" 3577 | }, 3578 | "wrap-ansi": { 3579 | "version": "2.1.0", 3580 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", 3581 | "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", 3582 | "requires": { 3583 | "string-width": "^1.0.1", 3584 | "strip-ansi": "^3.0.1" 3585 | } 3586 | }, 3587 | "wrappy": { 3588 | "version": "1.0.2", 3589 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3590 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 3591 | }, 3592 | "ws": { 3593 | "version": "7.3.1", 3594 | "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz", 3595 | "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==" 3596 | }, 3597 | "xml-name-validator": { 3598 | "version": "3.0.0", 3599 | "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", 3600 | "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" 3601 | }, 3602 | "xmlchars": { 3603 | "version": "2.2.0", 3604 | "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", 3605 | "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" 3606 | }, 3607 | "y18n": { 3608 | "version": "3.2.1", 3609 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", 3610 | "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" 3611 | }, 3612 | "yargs": { 3613 | "version": "3.32.0", 3614 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", 3615 | "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", 3616 | "requires": { 3617 | "camelcase": "^2.0.1", 3618 | "cliui": "^3.0.3", 3619 | "decamelize": "^1.1.1", 3620 | "os-locale": "^1.4.0", 3621 | "string-width": "^1.0.1", 3622 | "window-size": "^0.1.4", 3623 | "y18n": "^3.2.0" 3624 | } 3625 | } 3626 | } 3627 | } 3628 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "coingecko_scrape", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "main.js", 6 | "scripts": { 7 | "start": "ts-node-dev main.ts", 8 | "build": "tsc main.ts" 9 | }, 10 | "keywords": [], 11 | "author": "", 12 | "license": "ISC", 13 | "dependencies": { 14 | "@types/cheerio": "^0.22.21", 15 | "@types/node-schedule": "^1.3.0", 16 | "axios": "^0.20.0", 17 | "cheerio": "^1.0.0-rc.3", 18 | "coincodex-api": "^1.0.0", 19 | "discord.js": "^12.2.0", 20 | "forever": "^3.0.2", 21 | "got": "^11.6.2", 22 | "hooman": "^1.2.6", 23 | "humanoid-js": "^1.0.1", 24 | "twitter-lite": "^0.14.0", 25 | "twitter-stream-api": "^0.5.2" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /stream.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __assign = (this && this.__assign) || function () { 3 | __assign = Object.assign || function(t) { 4 | for (var s, i = 1, n = arguments.length; i < n; i++) { 5 | s = arguments[i]; 6 | for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) 7 | t[p] = s[p]; 8 | } 9 | return t; 10 | }; 11 | return __assign.apply(this, arguments); 12 | }; 13 | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { 14 | function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 15 | return new (P || (P = Promise))(function (resolve, reject) { 16 | function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 17 | function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 18 | function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 19 | step((generator = generator.apply(thisArg, _arguments || [])).next()); 20 | }); 21 | }; 22 | var __generator = (this && this.__generator) || function (thisArg, body) { 23 | var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; 24 | return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; 25 | function verb(n) { return function (v) { return step([n, v]); }; } 26 | function step(op) { 27 | if (f) throw new TypeError("Generator is already executing."); 28 | while (_) try { 29 | if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; 30 | if (y = 0, t) op = [op[0] & 2, t.value]; 31 | switch (op[0]) { 32 | case 0: case 1: t = op; break; 33 | case 4: _.label++; return { value: op[1], done: false }; 34 | case 5: _.label++; y = op[1]; op = [0]; continue; 35 | case 7: op = _.ops.pop(); _.trys.pop(); continue; 36 | default: 37 | if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } 38 | if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } 39 | if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } 40 | if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } 41 | if (t[2]) _.ops.pop(); 42 | _.trys.pop(); continue; 43 | } 44 | op = body.call(thisArg, _); 45 | } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } 46 | if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; 47 | } 48 | }; 49 | exports.__esModule = true; 50 | var Config = require("./config"); 51 | var TwitterStream = require('twitter-stream-api'); 52 | var main = require("./main"); 53 | var fs = require("fs"); 54 | // twitter api vars, 55 | var conf = { 56 | consumer_key: Config.consumer_key, 57 | consumer_secret: Config.consumer_secret, 58 | token: Config.access_token_key, 59 | token_secret: Config.access_token_secret 60 | }; 61 | // filter list to be updated 62 | var filterList; 63 | // old list of 64 | // let oldList:string[] = []; 65 | // list of tokens recently found during scanning 66 | var recentlyScanned = []; 67 | // holds frequency of price tickers that are found 68 | // also holds add, sorted, and toString methods 69 | var frequencyList = { 70 | // add to list 71 | add: (function (t) { 72 | // convert ticker to upper case 73 | var ticker = t.toLowerCase(); 74 | // these will almost always end up being the top ones 75 | if (ticker === "$btc" || ticker === "$eth") 76 | return; 77 | // set old list for change calculation 78 | // oldList = frequencyList.toString().split("\n"); 79 | // update count if needed, or create new entry 80 | if (frequencyList[ticker]) { 81 | frequencyList[ticker].count += 1; 82 | } 83 | else { 84 | frequencyList[ticker] = { 85 | name: t, 86 | count: 1, 87 | change: '+' 88 | }; 89 | } 90 | // add the ticker to the beginning of recent list 91 | // and keep size at 5 92 | recentlyScanned.unshift(ticker); 93 | recentlyScanned = recentlyScanned.slice(0, 10); 94 | /* 95 | // construct new sorted list 96 | const newList:string[] = frequencyList.toString().split("\n"); 97 | 98 | // get the change in position (if any) 99 | // const change:number = oldList[ticker].count - newList[ticker].count 100 | const change:number = oldList.indexOf(ticker) - newList.indexOf(ticker); 101 | 102 | if (change === 0) { 103 | oldList[ticker].count 104 | frequencyList[ticker].change = '-'; 105 | } 106 | if (change > 0) { 107 | frequencyList[ticker].change = '^'; 108 | } 109 | if (change < 0) { 110 | frequencyList[ticker].change = '∨'; 111 | } 112 | */ 113 | console.log(ticker + "(" + frequencyList[ticker].count + ")"); 114 | // replace with new list 115 | if (frequencyList.sorted().length > 8) 116 | filterList = frequencyList.sorted().slice(0, 8); 117 | }), 118 | // return sorted frequencyList 119 | sorted: (function () { 120 | // javascript meme magic 121 | var sorted = Object.entries(frequencyList).slice(4) 122 | .sort(function (a, b) { 123 | return (b[1].count - a[1].count); 124 | }) 125 | // ??? 126 | .reduce(function (r, _a) { 127 | var _b; 128 | var k = _a[0], v = _a[1]; 129 | return (__assign(__assign({}, r), (_b = {}, _b[k] = v, _b))); 130 | }, {}); 131 | return (sorted); 132 | }), 133 | clear: (function () { 134 | // remove everything but methods 135 | var sorted = Object.entries(frequencyList).slice(0, 4) 136 | .sort(function (a, b) { 137 | return (b[1].count - a[1].count); 138 | }) 139 | // ??? 140 | .reduce(function (r, _a) { 141 | var _b; 142 | var k = _a[0], v = _a[1]; 143 | return (__assign(__assign({}, r), (_b = {}, _b[k] = v, _b))); 144 | }, {}); 145 | // update list 146 | frequencyList = sorted; 147 | }), 148 | toString: (function () { 149 | // sort items and only keep top 25 150 | var sorted = Object.entries(frequencyList).slice(4) 151 | .sort(function (a, b) { 152 | return (b[1].count - a[1].count); 153 | }); 154 | var str = ""; 155 | var item; 156 | for (var _i = 0, sorted_1 = sorted; _i < sorted_1.length; _i++) { 157 | item = sorted_1[_i]; 158 | str += item[0] + "\n"; 159 | } 160 | return str; 161 | }) 162 | }; 163 | // wait function 164 | function wait(milliseconds) { 165 | return __awaiter(this, void 0, void 0, function () { 166 | return __generator(this, function (_a) { 167 | switch (_a.label) { 168 | case 0: return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, milliseconds); })]; 169 | case 1: 170 | _a.sent(); 171 | return [2 /*return*/]; 172 | } 173 | }); 174 | }); 175 | } 176 | var stream; 177 | // create a new twitter stream 178 | function newStream(trackingList) { 179 | return __awaiter(this, void 0, void 0, function () { 180 | var ready; 181 | return __generator(this, function (_a) { 182 | switch (_a.label) { 183 | case 0: 184 | // close old stream if it exists 185 | if (stream) 186 | stream.close(); 187 | // setup stream stream 188 | stream = new TwitterStream(conf, false); 189 | ready = false; 190 | // setup stream events 191 | stream.stream("statuses/filter", { track: trackingList }); 192 | stream.on("connection success", function () { 193 | console.log("connection success"); 194 | // allow this method to return fully initialized stream 195 | ready = true; 196 | // block parse method from returning 197 | // streaming = true; 198 | }); 199 | stream.on("connection aborted", function () { 200 | console.log("connection closed"); 201 | stream = null; 202 | }); 203 | _a.label = 1; 204 | case 1: 205 | if (!!ready) return [3 /*break*/, 3]; 206 | return [4 /*yield*/, wait(100)]; 207 | case 2: 208 | _a.sent(); 209 | return [3 /*break*/, 1]; 210 | case 3: return [2 /*return*/, stream]; 211 | } 212 | }); 213 | }); 214 | } 215 | // parse the twitter stream 216 | function parseStream(stream) { 217 | return __awaiter(this, void 0, void 0, function () { 218 | var reg, streaming; 219 | return __generator(this, function (_a) { 220 | switch (_a.label) { 221 | case 0: 222 | console.log("parsing stream"); 223 | reg = /\B(\$[a-zA-Z][a-zA-Z0-9]+\b)(?!;)/gm; 224 | streaming = true; 225 | // listen to stream 226 | stream 227 | .on("data", function (data) { 228 | // convert data (as buffer) to JSON tweet data 229 | var tweet = JSON.parse(Buffer.from(data).toString("utf-8")); 230 | // store tweet text 231 | var text; 232 | // attempt to get the full tweet content 233 | try { 234 | if (tweet.extended_tweet) 235 | text = tweet.extended_tweet.full_text; 236 | else if (tweet.retweeted_status) 237 | text = tweet.retweeted_status.extended_tweet.full_text; 238 | } 239 | catch (error) { 240 | // TODO: figure out all types of tweet data 241 | return; 242 | } 243 | // exit if text doesn't match filter 244 | if (!text || !text.match(reg)) 245 | return; 246 | // too many fake-looking tweets from whaleagent telegram 247 | if (text.indexOf("whaleagent") > -1) { 248 | console.log(tweet); 249 | console.log(text.indexOf("whaleagent")); 250 | return; 251 | } 252 | var tickerList = text.match(reg); 253 | for (var _i = 0, tickerList_1 = tickerList; _i < tickerList_1.length; _i++) { 254 | var ticker = tickerList_1[_i]; 255 | frequencyList.add(ticker); 256 | } 257 | }) 258 | .on("connection aborted", function () { 259 | streaming = false; 260 | }); 261 | _a.label = 1; 262 | case 1: 263 | if (!(streaming && !restarting)) return [3 /*break*/, 3]; 264 | return [4 /*yield*/, wait(500)]; 265 | case 2: 266 | _a.sent(); 267 | return [3 /*break*/, 1]; 268 | case 3: 269 | console.log("done streaming"); 270 | return [2 /*return*/]; 271 | } 272 | }); 273 | }); 274 | } 275 | // operation(?) variables (kinda debounce variables) 276 | var running = false; 277 | var restarting = false; 278 | // restart streaming immediately 279 | function restart(tickers) { 280 | return __awaiter(this, void 0, void 0, function () { 281 | var err_1; 282 | return __generator(this, function (_a) { 283 | switch (_a.label) { 284 | case 0: 285 | console.log("restarting"); 286 | // set restarting flag 287 | restarting = true; 288 | _a.label = 1; 289 | case 1: 290 | _a.trys.push([1, 5, , 6]); 291 | // close old stream if it exists 292 | if (stream) 293 | stream.close(); 294 | // alert the masses 295 | main.log("```...waiting for old stream to close...```", "social"); 296 | _a.label = 2; 297 | case 2: 298 | if (!running) return [3 /*break*/, 4]; 299 | return [4 /*yield*/, wait(500)]; 300 | case 3: 301 | _a.sent(); 302 | return [3 /*break*/, 2]; 303 | case 4: 304 | console.log("okay done waiting"); 305 | restarting = false; 306 | // reset frequency list 307 | frequencyList.clear(); 308 | // start over 309 | start(tickers); 310 | return [3 /*break*/, 6]; 311 | case 5: 312 | err_1 = _a.sent(); 313 | console.log(err_1); 314 | return [3 /*break*/, 6]; 315 | case 6: return [2 /*return*/]; 316 | } 317 | }); 318 | }); 319 | } 320 | exports.restart = restart; 321 | function start(tickers) { 322 | return __awaiter(this, void 0, void 0, function () { 323 | var previousRun, lastMessage, startingList, startTime, timestamp, stream_1; 324 | return __generator(this, function (_a) { 325 | switch (_a.label) { 326 | case 0: 327 | // this is being called multiple times for some reason 328 | if (running) 329 | return [2 /*return*/]; 330 | // set running flag 331 | running = true; 332 | // console.log("starting"); 333 | // has someone requested specific tickers to start with 334 | if (tickers) { 335 | filterList = tickers; 336 | } 337 | else { 338 | previousRun = fs.readFileSync("./frequency.txt", "utf-8"); 339 | filterList = previousRun.trim().split("\n"); 340 | } 341 | // set generic list if there is no filter list 342 | if (filterList.length < 3) 343 | filterList = ["$yfi", "$xrp", "$vet", "$icx", "$core", "$uni", "$lido"]; 344 | // client = twitterClient; 345 | main.log("```...waiting for price tickers...```", "social"); 346 | lastMessage = frequencyList.toString().slice(0, 25); 347 | startingList = filterList.slice(); 348 | startTime = new Date().toLocaleString(); 349 | _a.label = 1; 350 | case 1: 351 | if (!!restarting) return [3 /*break*/, 4]; 352 | fs.writeFileSync("./frequency.txt", frequencyList.toString().slice(0, 25), function (err) { 353 | console.log(err); 354 | }); 355 | timestamp = "[" + startTime + " - " + new Date().toLocaleString() + "]" + 356 | "\n[Starting Filter List: " + startingList + "]" + 357 | "\n\n25 Trending Coins On Twitter (" + frequencyList.toString().split("\n").length + " tickers scanned): \n\n"; 358 | // don't post duplicates 359 | if (frequencyList.toString() !== lastMessage) 360 | main.log("```" + 361 | timestamp + 362 | frequencyList.toString().split("\n").slice(0, 25).join("\n") + 363 | "\n\nRecently Scanned: \n\n" + 364 | recentlyScanned.join(' ') + 365 | "\n```" + 366 | "\nsay 'rs' or 'reset' to refresh (takes 1-2 minutes)", "social"); 367 | // update last message 368 | lastMessage = frequencyList.toString().slice(0, 25); 369 | return [4 /*yield*/, newStream(filterList)]; 370 | case 2: 371 | stream_1 = _a.sent(); 372 | // begin parsing 373 | parseStream(stream_1); 374 | return [4 /*yield*/, wait(60000)]; 375 | case 3: 376 | _a.sent(); 377 | return [3 /*break*/, 1]; 378 | case 4: 379 | // unset running flag 380 | running = false; 381 | return [2 /*return*/]; 382 | } 383 | }); 384 | }); 385 | } 386 | exports.start = start; 387 | -------------------------------------------------------------------------------- /stream.ts: -------------------------------------------------------------------------------- 1 | const Config = require("./config"); 2 | const TwitterStream = require('twitter-stream-api'); 3 | import * as main from './main'; 4 | const fs = require("fs"); 5 | 6 | // twitter api vars, 7 | const conf = { 8 | consumer_key: Config.consumer_key, 9 | consumer_secret: Config.consumer_secret, 10 | token: Config.access_token_key, 11 | token_secret: Config.access_token_secret 12 | } 13 | 14 | // filter list to be updated 15 | let filterList:string[]; 16 | 17 | // list from top dextools list 18 | // let filterListDext:string[] = ["$CORE", "$yfi", "$NBT", "$YRISE", "$PRIA" 19 | // , "$UNI", "$TORE", "$encore", "$ARIA", "$pCore"] 20 | 21 | interface ListItem { 22 | name: string, 23 | count: number, 24 | change: string 25 | } 26 | 27 | // TODO actually use these interfaces 28 | interface FrequencyList { 29 | sorted(): void; 30 | add(ticker: any): void; 31 | clear(): void; 32 | toString(): string; 33 | } 34 | 35 | // old list of 36 | // let oldList:string[] = []; 37 | 38 | // list of tokens recently found during scanning 39 | let recentlyScanned:string[] = []; 40 | 41 | 42 | // holds frequency of price tickers that are found 43 | // also holds add, sorted, and toString methods 44 | let frequencyList:any= { 45 | 46 | // add to list 47 | add: ((t: string) => { 48 | 49 | // convert ticker to upper case 50 | const ticker:string = t.toLowerCase(); 51 | 52 | // these will almost always end up being the top ones 53 | if (ticker === "$btc" || ticker === "$eth") 54 | return; 55 | 56 | // set old list for change calculation 57 | // oldList = frequencyList.toString().split("\n"); 58 | 59 | // update count if needed, or create new entry 60 | if (frequencyList[ticker]) { 61 | frequencyList[ticker].count += 1; 62 | } else { 63 | frequencyList[ticker] = { 64 | name: t, 65 | count: 1, 66 | change: '+' 67 | }; 68 | } 69 | 70 | // add the ticker to the beginning of recent list 71 | // and keep size at 5 72 | recentlyScanned.unshift(ticker); 73 | recentlyScanned = recentlyScanned.slice(0,10); 74 | 75 | /* 76 | // construct new sorted list 77 | const newList:string[] = frequencyList.toString().split("\n"); 78 | 79 | // get the change in position (if any) 80 | // const change:number = oldList[ticker].count - newList[ticker].count 81 | const change:number = oldList.indexOf(ticker) - newList.indexOf(ticker); 82 | 83 | if (change === 0) { 84 | oldList[ticker].count 85 | frequencyList[ticker].change = '-'; 86 | } 87 | if (change > 0) { 88 | frequencyList[ticker].change = '^'; 89 | } 90 | if (change < 0) { 91 | frequencyList[ticker].change = '∨'; 92 | } 93 | */ 94 | 95 | console.log(ticker + "(" + frequencyList[ticker].count + ")"); 96 | 97 | // replace with new list 98 | if (frequencyList.sorted().length > 8) 99 | filterList = frequencyList.sorted().slice(0,8); 100 | 101 | }), 102 | 103 | 104 | // return sorted frequencyList 105 | sorted: (() => { 106 | 107 | // javascript meme magic 108 | const sorted = Object.entries(frequencyList).slice(4) 109 | .sort((a: any, b: any) => { 110 | return(b[1].count - a[1].count); 111 | }) 112 | // ??? 113 | .reduce((r, [k, v]) => ({ 114 | ...r, [k]: v 115 | }), {}); 116 | 117 | return(sorted); 118 | 119 | }), 120 | 121 | clear: (() => { 122 | 123 | // remove everything but methods 124 | const sorted = Object.entries(frequencyList).slice(0,4) 125 | .sort((a: any, b: any) => { 126 | return(b[1].count - a[1].count); 127 | }) 128 | // ??? 129 | .reduce((r, [k, v]) => ({ 130 | ...r, [k]: v 131 | }), {}); 132 | 133 | // update list 134 | frequencyList = sorted; 135 | 136 | }), 137 | 138 | toString: (() => { 139 | 140 | // sort items and only keep top 25 141 | const sorted = Object.entries(frequencyList).slice(4) 142 | .sort((a: any, b: any) => { 143 | return(b[1].count - a[1].count); 144 | }); 145 | 146 | let str = ""; 147 | let item:any; 148 | 149 | for (item of sorted) 150 | str += item[0] + "\n"; 151 | 152 | return str; 153 | }) 154 | 155 | 156 | 157 | } 158 | 159 | // wait function 160 | async function wait(milliseconds: number) { 161 | await new Promise(resolve => setTimeout(resolve, milliseconds)); 162 | } 163 | 164 | let stream:any; 165 | 166 | // create a new twitter stream 167 | async function newStream(trackingList: string[]) { 168 | 169 | // close old stream if it exists 170 | if (stream) 171 | stream.close(); 172 | 173 | // setup stream stream 174 | stream = new TwitterStream(conf, false); 175 | 176 | // 177 | let ready = false; 178 | 179 | // setup stream events 180 | stream.stream("statuses/filter", {track: trackingList}); 181 | stream.on("connection success", () => { 182 | console.log("connection success"); 183 | 184 | // allow this method to return fully initialized stream 185 | ready = true; 186 | 187 | // block parse method from returning 188 | // streaming = true; 189 | 190 | }); 191 | stream.on("connection aborted", () => { 192 | console.log("connection closed"); 193 | stream = null; 194 | }); 195 | 196 | // wait until stream is setup before returning 197 | while(!ready) await wait(100); 198 | 199 | return stream; 200 | 201 | } 202 | 203 | // parse the twitter stream 204 | async function parseStream(stream: any) { 205 | 206 | console.log("parsing stream"); 207 | 208 | // regex for detecing tickers ex: $yeld $core $CEL etc. 209 | const reg = /\B(\$[a-zA-Z][a-zA-Z0-9]+\b)(?!;)/gm; 210 | 211 | let streaming = true; 212 | 213 | // listen to stream 214 | stream 215 | .on("data", (data: any) => { 216 | 217 | // convert data (as buffer) to JSON tweet data 218 | const tweet = JSON.parse(Buffer.from(data).toString("utf-8")) 219 | 220 | // store tweet text 221 | let text; 222 | 223 | // attempt to get the full tweet content 224 | try{ 225 | 226 | if (tweet.extended_tweet) 227 | text = tweet.extended_tweet.full_text; 228 | else if(tweet.retweeted_status) 229 | text = tweet.retweeted_status.extended_tweet.full_text; 230 | 231 | } catch (error) { 232 | // TODO: figure out all types of tweet data 233 | return; 234 | } 235 | 236 | // exit if text doesn't match filter 237 | if (!text || !text.match(reg)) 238 | return; 239 | 240 | // too many fake-looking tweets from whaleagent telegram 241 | if (text.indexOf("whaleagent") > -1) { 242 | console.log(tweet); 243 | console.log(text.indexOf("whaleagent")); 244 | return; 245 | } 246 | 247 | let tickerList = text.match(reg); 248 | 249 | for (const ticker of tickerList) { 250 | frequencyList.add(ticker); 251 | } 252 | 253 | 254 | }) 255 | .on("connection aborted", () => { 256 | streaming = false; 257 | }) 258 | 259 | // erase stream when streaming is over 260 | while(streaming && !restarting) await wait(500); 261 | console.log("done streaming"); 262 | 263 | } 264 | 265 | // operation(?) variables (kinda debounce variables) 266 | let running: boolean = false; 267 | let restarting: boolean = false; 268 | 269 | // restart streaming immediately 270 | export async function restart(tickers?: string[]) { 271 | 272 | console.log("restarting"); 273 | 274 | // set restarting flag 275 | restarting = true; 276 | 277 | try{ 278 | 279 | // close old stream if it exists 280 | if (stream) 281 | stream.close(); 282 | 283 | 284 | // alert the masses 285 | main.log("```...waiting for old stream to close...```", "social"); 286 | 287 | // wait until everything is done 288 | while(running) await wait(500); 289 | 290 | console.log("okay done waiting") 291 | 292 | restarting = false; 293 | 294 | // reset frequency list 295 | frequencyList.clear(); 296 | 297 | // start over 298 | start(tickers); 299 | 300 | }catch(err){ 301 | console.log(err) 302 | } 303 | 304 | 305 | } 306 | 307 | export async function start(tickers?: string[]) { 308 | 309 | // this is being called multiple times for some reason 310 | if (running) 311 | return; 312 | 313 | // set running flag 314 | running = true; 315 | 316 | // console.log("starting"); 317 | 318 | // has someone requested specific tickers to start with 319 | if (tickers) { 320 | filterList = tickers; 321 | } else { 322 | let previousRun = fs.readFileSync("./frequency.txt", "utf-8"); 323 | filterList = previousRun.trim().split("\n"); 324 | } 325 | 326 | // set generic list if there is no filter list 327 | if (filterList.length < 3) 328 | filterList = ["$yfi", "$xrp", "$vet", "$icx", "$core", "$uni", "$lido"]; 329 | 330 | // client = twitterClient; 331 | main.log("```...waiting for price tickers...```", "social"); 332 | 333 | // keep track of the previous message sent 334 | let lastMessage = frequencyList.toString().slice(0, 25); 335 | 336 | // get a copy of the starting list 337 | let startingList = filterList.slice(); 338 | 339 | // get starting time 340 | let startTime = new Date().toLocaleString(); 341 | 342 | 343 | while(!restarting) { 344 | 345 | fs.writeFileSync("./frequency.txt", frequencyList.toString().slice(0, 25), (err: any) => { 346 | console.log(err); 347 | }); 348 | 349 | let timestamp = "[" + startTime + " - " + new Date().toLocaleString() + "]" + 350 | "\n[Starting Filter List: " + startingList + "]" + 351 | "\n\n25 Trending Coins On Twitter (" + frequencyList.toString().split("\n").length + " tickers scanned): \n\n"; 352 | 353 | // don't post duplicates 354 | if (frequencyList.toString() !== lastMessage) 355 | main.log( 356 | "```" + 357 | timestamp + 358 | frequencyList.toString().split("\n").slice(0, 25).join("\n") + 359 | "\n\nRecently Scanned: \n\n" + 360 | recentlyScanned.join(' ') + 361 | "\n```" + 362 | "\nsay 'rs' or 'reset' to refresh (takes 1-2 minutes)", "social"); 363 | 364 | // update last message 365 | lastMessage = frequencyList.toString().slice(0, 25); 366 | 367 | // get a new stream 368 | let stream = await newStream(filterList); 369 | 370 | // begin parsing 371 | parseStream(stream); 372 | 373 | await wait(60000); 374 | 375 | } 376 | 377 | // unset running flag 378 | running = false; 379 | 380 | } 381 | 382 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Basic Options */ 4 | // "incremental": true, /* Enable incremental compilation */ 5 | "target": "es6", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */ 6 | "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */ 7 | // "lib": [], /* Specify library files to be included in the compilation. */ 8 | // "allowJs": true, /* Allow javascript files to be compiled. */ 9 | // "checkJs": true, /* Report errors in .js files. */ 10 | // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ 11 | // "declaration": true, /* Generates corresponding '.d.ts' file. */ 12 | // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ 13 | // "sourceMap": true, /* Generates corresponding '.map' file. */ 14 | // "outFile": "./", /* Concatenate and emit output to single file. */ 15 | // "outDir": "./", /* Redirect output structure to the directory. */ 16 | // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ 17 | // "composite": true, /* Enable project compilation */ 18 | // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ 19 | // "removeComments": true, /* Do not emit comments to output. */ 20 | // "noEmit": true, /* Do not emit outputs. */ 21 | // "importHelpers": true, /* Import emit helpers from 'tslib'. */ 22 | // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ 23 | // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ 24 | 25 | /* Strict Type-Checking Options */ 26 | "strict": true, /* Enable all strict type-checking options. */ 27 | // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ 28 | // "strictNullChecks": true, /* Enable strict null checks. */ 29 | // "strictFunctionTypes": true, /* Enable strict checking of function types. */ 30 | // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ 31 | // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ 32 | // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ 33 | // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ 34 | 35 | /* Additional Checks */ 36 | // "noUnusedLocals": true, /* Report errors on unused locals. */ 37 | // "noUnusedParameters": true, /* Report errors on unused parameters. */ 38 | // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ 39 | // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ 40 | 41 | /* Module Resolution Options */ 42 | // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ 43 | // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ 44 | // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ 45 | // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ 46 | // "typeRoots": [], /* List of folders to include type definitions from. */ 47 | // "types": [], /* Type declaration files to be included in compilation. */ 48 | // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ 49 | "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ 50 | // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ 51 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ 52 | 53 | /* Source Map Options */ 54 | // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ 55 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ 56 | // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ 57 | // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ 58 | 59 | /* Experimental Options */ 60 | // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ 61 | // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ 62 | 63 | /* Advanced Options */ 64 | "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ 65 | } 66 | } 67 | --------------------------------------------------------------------------------