├── .gitignore ├── .prettierrc ├── .travis.yml ├── LICENSE ├── README.md ├── build ├── index.d.ts ├── index.js └── lib │ ├── check-proxy.d.ts │ ├── check-proxy.js │ ├── enums.d.ts │ ├── enums.js │ ├── interfaces.d.ts │ ├── ping.d.ts │ ├── ping.js │ ├── request.d.ts │ └── request.js ├── example ├── client │ └── client.js └── server │ ├── package.json │ └── server.js ├── index.ts ├── lib ├── check-proxy.ts ├── enums.ts ├── interfaces.d.ts ├── ping.ts └── request.ts ├── package-lock.json ├── package.json ├── test ├── check-proxy.js ├── ping.js └── proxy.js ├── tsconfig.json └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | testcl.js 2 | testcurl.js 3 | # Logs 4 | logs 5 | *.log 6 | npm-debug.log* 7 | 8 | # Runtime data 9 | pids 10 | *.pid 11 | *.seed 12 | 13 | # Directory for instrumented libs generated by jscoverage/JSCover 14 | lib-cov 15 | 16 | # Coverage directory used by tools like istanbul 17 | coverage 18 | 19 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 20 | .grunt 21 | 22 | # node-waf configuration 23 | .lock-wscript 24 | 25 | # Compiled binary addons (http://nodejs.org/api/addons.html) 26 | build/Release 27 | 28 | # Dependency directory 29 | node_modules 30 | 31 | # Optional npm cache directory 32 | .npm 33 | 34 | # Optional REPL history 35 | .node_repl_history -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": true, 3 | "trailingComma": "none", 4 | "singleQuote": true, 5 | "printWidth": 80 6 | } -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "6" 4 | - "8" 5 | - "10" 6 | env: 7 | - CXX=g++-4.8 8 | addons: 9 | apt: 10 | sources: 11 | - ubuntu-toolchain-r-test 12 | packages: 13 | - g++-4.8 -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 256cats 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Build Status](https://travis-ci.org/256cats/check-proxy.svg?branch=master)](https://travis-ci.org/256cats/check-proxy) 2 | # Check-proxy - Advanced Node proxy testing library 3 | 4 | This is an advanced proxy checking library that powers [https://gimmeproxy.com](https://gimmeproxy.com) 5 | 6 | What it does: 7 | 8 | * checks http, socks4 and socks5 proxies 9 | * performs actual requests, not just pings 10 | * checks GET, POST, COOKIES, referer support 11 | * checks https support 12 | * checks country 13 | * checks proxy speed - provides total time and connect time 14 | * checks anonymity (binary checks - anonymous or not, 1 - anonymous, i.e. doesn't leak your IP address in any of the headers, 0 - not anonymous) 15 | * checks if proxy supports particular websites - by custom function, regex or substring search 16 | * allows to set connect timeout and overall timeout 17 | 18 | It will return a promise that is either fulfilled with an array of working proxies and protocols (some proxies support SOCKS4/SOCKS5 on the same port) or rejected if it wasn't able to connect to provided port. 19 | 20 | ## Installation 21 | 22 | ````javascript 23 | npm install check-proxy --save 24 | yarn add check-proxy 25 | ```` 26 | 27 | ## Usage 28 | 29 | Library consists of two parts - client and server. Server runs on a known IP address and client tries to connect to server through proxy you provide. 30 | 31 | This allows to reliably check proxy parameters like GET, POST, COOKIES support. See example directory for server app. 32 | 33 | Additionally it's possible to check if particular websites are working through this proxy. Websites are checked against specified function, regex or string. 34 | 35 | ````javascript 36 | 37 | //client.js 38 | const checkProxy = require('check-proxy').check; 39 | checkProxy({ 40 | testHost: 'ping.rhcloud.com', // put your ping server url here 41 | proxyIP: '107.151.152.218', // proxy ip to test 42 | proxyPort: 80, // proxy port to test 43 | localIP: '185.103.27.23', // local machine IP address to test 44 | connectTimeout: 6, // curl connect timeout, sec 45 | timeout: 10, // curl timeout, sec 46 | websites: [ 47 | { 48 | name: 'example', 49 | url: 'http://www.example.com/', 50 | regex: /example/gim, // expected result - regex 51 | 52 | }, 53 | { 54 | name: 'yandex', 55 | url: 'http://www.yandex.ru/', 56 | regex: /yandex/gim, // expected result - regex 57 | 58 | }, 59 | { 60 | name: 'google', 61 | url: 'http://www.google.com/', 62 | regex: function(html) { // expected result - custom function 63 | return html && html.indexOf('google') != -1; 64 | }, 65 | }, 66 | { 67 | name: 'amazon', 68 | url: 'http://www.amazon.com/', 69 | regex: 'Amazon', // expected result - look for this string in the output 70 | }, 71 | 72 | ] 73 | }).then(function(res) { 74 | console.log('final result', res); 75 | }, function(err) { 76 | console.log('proxy rejected', err); 77 | }); 78 | //result 79 | /* 80 | [{ 81 | get: true, 82 | post: true, 83 | cookies: true, 84 | referer: true, 85 | 'user-agent': true, 86 | anonymityLevel: 1, 87 | supportsHttps: true, 88 | protocol: 'http', 89 | ip: '107.151.152.218', 90 | port: 80, 91 | country: 'MX', 92 | connectTime: 0.23, // Time in seconds it took to establish the connection 93 | totalTime: 1.1, // Total transaction time in seconds for last the transfer 94 | websites: { 95 | example: { 96 | "responseCode": 200, 97 | "connectTime": 0.648131, // seconds 98 | "totalTime": 0.890804, // seconds 99 | "receivedLength": 1270, // bytes 100 | "averageSpeed": 1425 // bytes per second 101 | }, 102 | google: { 103 | "responseCode": 200, 104 | "connectTime": 0.648131, // seconds 105 | "totalTime": 0.890804, // seconds 106 | "receivedLength": 1270, // bytes 107 | "averageSpeed": 1425 // bytes per second 108 | }, 109 | amazon: false, 110 | yandex: false 111 | } 112 | }] 113 | */ 114 | 115 | ```` 116 | 117 | ````javascript 118 | //server.js 119 | const express = require('express'), 120 | app = express(), 121 | url = require('url'), 122 | bodyParser = require('body-parser'), 123 | cookieParser = require('cookie-parser'), 124 | getProxyType = require('check-proxy').ping; 125 | 126 | app.use(bodyParser.urlencoded({ extended: true })); 127 | app.use(bodyParser.json()); 128 | app.use(cookieParser()); 129 | 130 | const ping = function(req, res) { 131 | console.log('ip', req.connection.remoteAddress); 132 | console.log('headers', req.headers); 133 | console.log('cookies', req.cookies); 134 | res.json(getProxyType(req.headers, req.query, req.body, req.cookies)); 135 | } 136 | 137 | app.get('/', ping); 138 | app.post('/', ping); 139 | 140 | const ipaddress = process.env.OPENSHIFT_NODEJS_IP; 141 | const port = process.env.OPENSHIFT_NODEJS_PORT || 8080; 142 | 143 | if (typeof ipaddress === "undefined") { 144 | // Log errors on OpenShift but continue w/ 127.0.0.1 - this 145 | // allows us to run/test the app locally. 146 | console.warn('No OPENSHIFT_NODEJS_IP var, using 127.0.0.1'); 147 | ipaddress = "127.0.0.1"; 148 | }; 149 | 150 | app.listen(port, ipaddress, function() { 151 | console.log('%s: Node server started on %s:%d ...', 152 | Date(Date.now() ), ipaddress, port); 153 | }); 154 | ```` 155 | 156 | ## Tests 157 | 158 | npm run test 159 | 160 | yarn test 161 | 162 | ## Changelog 163 | 164 | August 2017 - full rewrite in Typescript, readability and speed improvements. 165 | 166 | December 2018 - parallel execution of checks, better tests, minimum supported Node version is 8. 167 | 168 | August 2022 - removed http checks. 169 | -------------------------------------------------------------------------------- /build/index.d.ts: -------------------------------------------------------------------------------- 1 | export { default as ping } from './lib/ping'; 2 | export { default as check } from './lib/check-proxy'; 3 | -------------------------------------------------------------------------------- /build/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.check = exports.ping = void 0; 4 | var ping_1 = require("./lib/ping"); 5 | Object.defineProperty(exports, "ping", { enumerable: true, get: function () { return ping_1.default; } }); 6 | var check_proxy_1 = require("./lib/check-proxy"); 7 | Object.defineProperty(exports, "check", { enumerable: true, get: function () { return check_proxy_1.default; } }); 8 | -------------------------------------------------------------------------------- /build/lib/check-proxy.d.ts: -------------------------------------------------------------------------------- 1 | import { ICheckProxyOptions, ITestProtocolResult } from './interfaces.d'; 2 | export default function (options: ICheckProxyOptions): Promise>; 3 | -------------------------------------------------------------------------------- /build/lib/check-proxy.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | var tslib_1 = require("tslib"); 4 | var geoip = require("geoip-ultralight"); 5 | var _ = require("lodash"); 6 | var appendQuery = require("append-query"); 7 | var enums_1 = require("./enums"); 8 | var request_1 = require("./request"); 9 | function default_1(options) { 10 | return tslib_1.__awaiter(this, void 0, void 0, function () { 11 | function pingThroughProxy(url, options) { 12 | return tslib_1.__awaiter(this, void 0, void 0, function () { 13 | var result_1, proxyData, err_1; 14 | return tslib_1.__generator(this, function (_a) { 15 | switch (_a.label) { 16 | case 0: 17 | _a.trys.push([0, 2, , 3]); 18 | return [4, get(url, options)]; 19 | case 1: 20 | result_1 = _a.sent(); 21 | if (!result_1.success) { 22 | throw new Error('Request failed'); 23 | } 24 | proxyData = JSON.parse(result_1.payload || ''); 25 | proxyData.totalTime = result_1.stats.totalTime; 26 | proxyData.connectTime = result_1.stats.connectTime; 27 | return [2, proxyData]; 28 | case 2: 29 | err_1 = _a.sent(); 30 | return [2, Promise.reject(err_1)]; 31 | case 3: return [2]; 32 | } 33 | }); 34 | }); 35 | } 36 | function createPingRequestOptions(options, proxyProtocol, websiteProtocol) { 37 | var url = "".concat(websiteProtocol, "://").concat(options.testHost); 38 | return { 39 | url: appendQuery(url, "test=get&ip=".concat(options.localIP)), 40 | options: { 41 | headers: { 42 | 'User-Agent': 'Mozilla/4.0', 43 | Accept: 'text/html', 44 | Referer: 'http://www.google.com', 45 | Connection: 'close' 46 | }, 47 | cookie: 'test=cookie;', 48 | data: { test: 'post' }, 49 | proxy: "".concat(proxyProtocol, "://").concat(options.proxyIP, ":").concat(options.proxyPort), 50 | timeout: options.timeout || 60, 51 | connectTimeout: options.connectTimeout 52 | } 53 | }; 54 | } 55 | function testWebsite(url, proxy, regex, website) { 56 | return tslib_1.__awaiter(this, void 0, void 0, function () { 57 | var options, result, html; 58 | return tslib_1.__generator(this, function (_a) { 59 | switch (_a.label) { 60 | case 0: 61 | options = { 62 | headers: { 63 | 'User-Agent': 'Mozilla/4.0', 64 | Accept: 'text/html', 65 | Referer: 'http://www.google.com', 66 | Connection: 'close' 67 | }, 68 | proxy: proxy, 69 | ignoreErrors: true 70 | }; 71 | if (website.connectTimeout) { 72 | options.connectTimeout = website.connectTimeout; 73 | } 74 | if (website.timeout) { 75 | options.timeout = website.timeout; 76 | } 77 | return [4, get(url, options)]; 78 | case 1: 79 | result = _a.sent(); 80 | html = result.payload; 81 | if (regex) { 82 | if (_.isFunction(regex)) { 83 | return [2, regex(html, result) 84 | ? result.stats 85 | : Promise.reject(new Error("data doesn't match provided function"))]; 86 | } 87 | else if (_.isRegExp(regex)) { 88 | return [2, regex.test(html) 89 | ? result.stats 90 | : Promise.reject(new Error("data doesn't match provided regex"))]; 91 | } 92 | else { 93 | return [2, html.indexOf(regex) != -1 94 | ? result.stats 95 | : Promise.reject(new Error("data doesn't contain provided string"))]; 96 | } 97 | } 98 | return [2, Promise.reject(new Error('regex is not set'))]; 99 | } 100 | }); 101 | }); 102 | } 103 | function testWebsites(proxy, websites) { 104 | return tslib_1.__awaiter(this, void 0, void 0, function () { 105 | var result, _i, websites_1, website, stats, err_2; 106 | return tslib_1.__generator(this, function (_a) { 107 | switch (_a.label) { 108 | case 0: 109 | result = {}; 110 | if (!websites) { 111 | return [2, result]; 112 | } 113 | _i = 0, websites_1 = websites; 114 | _a.label = 1; 115 | case 1: 116 | if (!(_i < websites_1.length)) return [3, 6]; 117 | website = websites_1[_i]; 118 | _a.label = 2; 119 | case 2: 120 | _a.trys.push([2, 4, , 5]); 121 | return [4, testWebsite(website.url, proxy, website.regex, website)]; 122 | case 3: 123 | stats = _a.sent(); 124 | result[website.name] = stats; 125 | return [3, 5]; 126 | case 4: 127 | err_2 = _a.sent(); 128 | result[website.name] = false; 129 | return [3, 5]; 130 | case 5: 131 | _i++; 132 | return [3, 1]; 133 | case 6: return [2, result]; 134 | } 135 | }); 136 | }); 137 | } 138 | function testProtocol(proxyProtocol, options) { 139 | return tslib_1.__awaiter(this, void 0, void 0, function () { 140 | var result, httpsOptions, httpsResult, _a; 141 | return tslib_1.__generator(this, function (_b) { 142 | switch (_b.label) { 143 | case 0: 144 | httpsOptions = createPingRequestOptions(options, proxyProtocol, enums_1.EWebsiteProtocol.https); 145 | return [4, pingThroughProxy(httpsOptions.url, httpsOptions.options)]; 146 | case 1: 147 | httpsResult = _b.sent(); 148 | result = Object.assign({ 149 | supportsHttps: true, 150 | protocol: proxyProtocol, 151 | ip: options.proxyIP, 152 | port: options.proxyPort 153 | }, httpsResult); 154 | _a = result; 155 | return [4, testWebsites(httpsOptions.options.proxy, options.websites)]; 156 | case 2: 157 | _a.websites = _b.sent(); 158 | return [2, result]; 159 | } 160 | }); 161 | }); 162 | } 163 | function testAllProtocols(options) { 164 | var resolved = false; 165 | function resolveWrapper(resolve, result) { 166 | if (!resolved) { 167 | resolved = true; 168 | resolve(result.slice()); 169 | abortAllRequests(); 170 | } 171 | } 172 | return new Promise(function (resolve) { 173 | var promises = Object.keys(enums_1.EProxyProtocol).map(function (protocol) { 174 | return testProtocol(enums_1.EProxyProtocol[protocol], options) 175 | .then(function (result) { return resolveWrapper(resolve, [result]); }) 176 | .catch(function () { }); 177 | }); 178 | Promise.all(promises) 179 | .then(function () { return resolveWrapper(resolve, []); }) 180 | .catch(function () { return resolveWrapper(resolve, []); }); 181 | }); 182 | } 183 | var _a, abortAllRequests, get, country, result; 184 | return tslib_1.__generator(this, function (_b) { 185 | switch (_b.label) { 186 | case 0: 187 | _a = (0, request_1.default)(), abortAllRequests = _a.abortAllRequests, get = _a.get; 188 | country = geoip.lookupCountry(options.proxyIP); 189 | options.websites = options.websites || []; 190 | return [4, testAllProtocols(options)]; 191 | case 1: 192 | result = _b.sent(); 193 | if (!result || result.length === 0) { 194 | return [2, Promise.reject(new Error('proxy checked, invalid'))]; 195 | } 196 | return [2, result.map(function (item) { return Object.assign(item, { country: country }); })]; 197 | } 198 | }); 199 | }); 200 | } 201 | exports.default = default_1; 202 | -------------------------------------------------------------------------------- /build/lib/enums.d.ts: -------------------------------------------------------------------------------- 1 | export declare enum EProxyProtocol { 2 | http = "http", 3 | socks5 = "socks5", 4 | socks4 = "socks4" 5 | } 6 | export declare enum EWebsiteProtocol { 7 | https = "https" 8 | } 9 | -------------------------------------------------------------------------------- /build/lib/enums.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.EWebsiteProtocol = exports.EProxyProtocol = void 0; 4 | var EProxyProtocol; 5 | (function (EProxyProtocol) { 6 | EProxyProtocol["http"] = "http"; 7 | EProxyProtocol["socks5"] = "socks5"; 8 | EProxyProtocol["socks4"] = "socks4"; 9 | })(EProxyProtocol = exports.EProxyProtocol || (exports.EProxyProtocol = {})); 10 | var EWebsiteProtocol; 11 | (function (EWebsiteProtocol) { 12 | EWebsiteProtocol["https"] = "https"; 13 | })(EWebsiteProtocol = exports.EWebsiteProtocol || (exports.EWebsiteProtocol = {})); 14 | -------------------------------------------------------------------------------- /build/lib/interfaces.d.ts: -------------------------------------------------------------------------------- 1 | import { EProxyProtocol, EWebsiteProtocol } from './enums'; 2 | import { PingResult } from './ping'; 3 | 4 | export interface IGetOptions { 5 | headers?: { [index: string]: string }; 6 | cookie?: string; 7 | proxy?: string; 8 | data?: { [index: string]: string }; 9 | connectTimeout?: number; 10 | timeout?: number; 11 | ignoreErrors?: boolean; 12 | } 13 | 14 | export interface IGetResolveStats { 15 | responseCode: number; // seconds 16 | connectTime: number; // seconds 17 | totalTime: number; // seconds 18 | receivedLength: number; // bytes 19 | averageSpeed: number; // bytes per second 20 | firstByte?: number; 21 | } 22 | 23 | export interface IGetResolve { 24 | success: boolean; 25 | payload: string; 26 | stats: IGetResolveStats; 27 | } 28 | 29 | export interface PingThroughProxyFullResult extends PingResult { 30 | totalTime: number; 31 | connectTime: number; 32 | } 33 | 34 | export interface IPingOptions { 35 | url: string; 36 | options: IGetOptions; 37 | } 38 | 39 | export type ITestWebsitesResult = { 40 | [index: string]: IGetResolveStats | boolean; 41 | }; 42 | 43 | export interface ICheckProxyWebsite { 44 | name: string; 45 | url: string; 46 | regex: any; 47 | connectTimeout?: number; 48 | timeout?: number; 49 | } 50 | 51 | export interface ICheckProxyOptions { 52 | testHost: string; 53 | proxyIP: string; 54 | proxyPort: number; 55 | localIP: string; 56 | connectTimeout?: number; 57 | timeout: number; 58 | websites?: Array; 59 | } 60 | 61 | export interface ITestProtocolResult extends PingThroughProxyFullResult { 62 | supportsHttps: boolean; 63 | protocol: EProxyProtocol; 64 | ip: string; 65 | port: number; 66 | websites?: ITestWebsitesResult; 67 | country?: string; 68 | } 69 | -------------------------------------------------------------------------------- /build/lib/ping.d.ts: -------------------------------------------------------------------------------- 1 | export interface PingResult { 2 | get: boolean; 3 | post: boolean; 4 | cookies: boolean; 5 | referer: boolean; 6 | 'user-agent': boolean; 7 | anonymityLevel: 0 | 1; 8 | } 9 | export default function (headers: any, getParams: any, postParams: any, cookies: any): PingResult; 10 | -------------------------------------------------------------------------------- /build/lib/ping.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | var _ = require("lodash"); 4 | function default_1(headers, getParams, postParams, cookies) { 5 | var res = { 6 | get: (getParams.test && getParams.test == 'get') || false, 7 | post: (postParams.test && postParams.test == 'post') || false, 8 | cookies: (cookies.test && cookies.test == 'cookie') || false, 9 | referer: (headers.referer && 'http://www.google.com' == headers.referer) || false, 10 | 'user-agent': (headers['user-agent'] && 'Mozilla/4.0' == headers['user-agent']) || false, 11 | anonymityLevel: 0 12 | }; 13 | if (getParams.ip) { 14 | var ips = _.isArray(getParams.ip) ? getParams.ip : [getParams.ip]; 15 | var headersStr_1 = _(headers).reduce(function (result, el) { return result + el; }); 16 | var foundIp = _.find(ips, function (ip) { return headersStr_1.indexOf(ip) != -1; }); 17 | res.anonymityLevel = foundIp ? 0 : 1; 18 | } 19 | else { 20 | res.anonymityLevel = 0; 21 | } 22 | return res; 23 | } 24 | exports.default = default_1; 25 | -------------------------------------------------------------------------------- /build/lib/request.d.ts: -------------------------------------------------------------------------------- 1 | import { IGetOptions, IGetResolve } from './interfaces.d'; 2 | export default function (): { 3 | abortAllRequests: () => void; 4 | get: (url: string, options: IGetOptions) => Promise; 5 | }; 6 | -------------------------------------------------------------------------------- /build/lib/request.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | var tslib_1 = require("tslib"); 4 | var request = require("request-promise-native"); 5 | var ProxyAgent = require("proxy-agent"); 6 | var promise_timeout_1 = require("promise-timeout"); 7 | function default_1() { 8 | var activeRequests = []; 9 | function abortAllRequests() { 10 | activeRequests.forEach(function (request) { return request.abort(); }); 11 | activeRequests = []; 12 | } 13 | function get(url, options) { 14 | return tslib_1.__awaiter(this, void 0, void 0, function () { 15 | var jar, timeout, requestOptions, newRequest, response, responseCode, stats, err_1; 16 | return tslib_1.__generator(this, function (_a) { 17 | switch (_a.label) { 18 | case 0: 19 | jar = request.jar(); 20 | options.cookie && jar.setCookie(request.cookie(options.cookie), url); 21 | _a.label = 1; 22 | case 1: 23 | _a.trys.push([1, 3, , 4]); 24 | timeout = options.timeout * 1000 || 10000; 25 | requestOptions = { 26 | url: url, 27 | method: options.data ? 'POST' : 'GET', 28 | headers: options.headers, 29 | form: options.data, 30 | jar: jar, 31 | agent: new ProxyAgent(options.proxy), 32 | time: true, 33 | resolveWithFullResponse: true, 34 | timeout: timeout, 35 | strictSSL: false 36 | }; 37 | newRequest = (0, promise_timeout_1.timeout)(request(requestOptions), timeout); 38 | activeRequests.push(newRequest); 39 | return [4, newRequest]; 40 | case 2: 41 | response = _a.sent(); 42 | responseCode = response.statusCode; 43 | stats = { 44 | responseCode: responseCode, 45 | connectTime: parseInt(response.timings.connect, 10) / 1000, 46 | totalTime: parseInt(response.timingPhases.total, 10) / 1000, 47 | firstByte: parseInt(response.timingPhases.firstByte, 10) / 1000, 48 | receivedLength: Buffer.byteLength(response.body, 'utf8'), 49 | averageSpeed: (Buffer.byteLength(response.body, 'utf8') * 1000) / 50 | parseInt(response.timingPhases.total, 10) 51 | }; 52 | return [2, { 53 | success: true, 54 | payload: response.body, 55 | stats: stats 56 | }]; 57 | case 3: 58 | err_1 = _a.sent(); 59 | if (options.ignoreErrors) { 60 | return [2, { 61 | success: false, 62 | payload: '', 63 | stats: null 64 | }]; 65 | } 66 | else { 67 | throw err_1; 68 | } 69 | return [3, 4]; 70 | case 4: return [2]; 71 | } 72 | }); 73 | }); 74 | } 75 | return { 76 | abortAllRequests: abortAllRequests, 77 | get: get 78 | }; 79 | } 80 | exports.default = default_1; 81 | -------------------------------------------------------------------------------- /example/client/client.js: -------------------------------------------------------------------------------- 1 | const checkProxy = require('check-proxy').check; 2 | checkProxy({ 3 | testHost: 'ping.rhcloud.com', // put your ping app url here 4 | proxyIP: '107.151.152.218', // proxy ip to test 5 | proxyPort: 80, // proxy port to test 6 | localIP: '185.103.27.23', // local machine ip to test 7 | connectTimeout: 6, // curl connect timeout, sec 8 | timeout: 10, // curl timeout, sec 9 | websites: [ 10 | { 11 | name: 'example', 12 | url: 'http://www.example.com/', 13 | regex: /example/gim // expected result 14 | }, 15 | { 16 | name: 'yandex', 17 | url: 'http://www.yandex.ru/', 18 | regex: /yandex/gim // expected result 19 | }, 20 | { 21 | name: 'google', 22 | url: 'http://www.google.com/', 23 | regex: function (html) { 24 | // expected result - custom function 25 | return html && html.indexOf('google') != -1; 26 | } 27 | }, 28 | { 29 | name: 'amazon', 30 | url: 'http://www.amazon.com/', 31 | regex: 'Amazon' // expected result - look for this string in the output 32 | } 33 | ] 34 | }).then( 35 | function (res) { 36 | console.log('final result', res); 37 | }, 38 | function (err) { 39 | console.log('proxy rejected', err); 40 | } 41 | ); 42 | -------------------------------------------------------------------------------- /example/server/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example", 3 | "version": "1.0.0", 4 | "description": "Example", 5 | "engines": { 6 | "node": ">= 8", 7 | "npm": ">= 1.0.0" 8 | }, 9 | 10 | "dependencies": { 11 | "express": "4.16.4", 12 | "body-parser": "1.18.3", 13 | "lodash": "4.17.11", 14 | "cookie-parser": "1.4.3" 15 | }, 16 | "private": true, 17 | "main": "server.js" 18 | } 19 | -------------------------------------------------------------------------------- /example/server/server.js: -------------------------------------------------------------------------------- 1 | #!/bin/env node 2 | // Based on OpenShift sample Node application - https://github.com/openshift/origin-server 3 | const express = require('express'), 4 | app = express(), 5 | url = require('url'), 6 | bodyParser = require('body-parser'), 7 | cookieParser = require('cookie-parser'), 8 | getProxyType = require('check-proxy').ping; 9 | 10 | app.use(bodyParser.urlencoded({ extended: true })); 11 | app.use(bodyParser.json()); 12 | app.use(cookieParser()); 13 | 14 | const ping = function (req, res) { 15 | console.log('ip', req.connection.remoteAddress); 16 | console.log('headers', req.headers); 17 | console.log('cookies', req.cookies); 18 | res.json(getProxyType(req.headers, req.query, req.body, req.cookies)); 19 | }; 20 | 21 | app.get('/', ping); 22 | app.post('/', ping); 23 | 24 | const ipaddress = process.env.OPENSHIFT_NODEJS_IP; 25 | const port = process.env.OPENSHIFT_NODEJS_PORT || 8080; 26 | 27 | if (typeof ipaddress === 'undefined') { 28 | // Log errors on OpenShift but continue w/ 127.0.0.1 - this 29 | // allows us to run/test the app locally. 30 | console.warn('No OPENSHIFT_NODEJS_IP var, using 127.0.0.1'); 31 | ipaddress = '127.0.0.1'; 32 | } 33 | 34 | const terminator = function (sig) { 35 | if (typeof sig === 'string') { 36 | console.log( 37 | '%s: Received %s - terminating sample app ...', 38 | Date(Date.now()), 39 | sig 40 | ); 41 | process.exit(1); 42 | } 43 | console.log('%s: Node server stopped.', Date(Date.now())); 44 | }; 45 | 46 | // Process on exit and signals. 47 | process.on('exit', function () { 48 | terminator(); 49 | }); 50 | 51 | // Removed 'SIGPIPE' from the list - bugz 852598. 52 | [ 53 | 'SIGHUP', 54 | 'SIGINT', 55 | 'SIGQUIT', 56 | 'SIGILL', 57 | 'SIGTRAP', 58 | 'SIGABRT', 59 | 'SIGBUS', 60 | 'SIGFPE', 61 | 'SIGUSR1', 62 | 'SIGSEGV', 63 | 'SIGUSR2', 64 | 'SIGTERM' 65 | ].forEach(function (element, index, array) { 66 | process.on(element, function () { 67 | terminator(element); 68 | }); 69 | }); 70 | //app.enable('trust proxy'); 71 | 72 | app.listen(port, ipaddress, function () { 73 | console.log( 74 | '%s: Node server started on %s:%d ...', 75 | Date(Date.now()), 76 | ipaddress, 77 | port 78 | ); 79 | }); 80 | -------------------------------------------------------------------------------- /index.ts: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | export { default as ping } from './lib/ping' 3 | export { default as check } from './lib/check-proxy' -------------------------------------------------------------------------------- /lib/check-proxy.ts: -------------------------------------------------------------------------------- 1 | import * as geoip from 'geoip-ultralight'; 2 | import * as _ from 'lodash'; 3 | import * as appendQuery from 'append-query'; 4 | import { 5 | IGetOptions, 6 | IGetResolveStats, 7 | ICheckProxyOptions, 8 | IPingOptions, 9 | IGetResolve, 10 | ICheckProxyWebsite, 11 | ITestWebsitesResult, 12 | ITestProtocolResult, 13 | PingThroughProxyFullResult 14 | } from './interfaces.d'; 15 | import { EProxyProtocol, EWebsiteProtocol } from './enums'; 16 | import request from './request'; 17 | import { PingResult } from './ping'; 18 | 19 | export default async function ( 20 | options: ICheckProxyOptions 21 | ): Promise> { 22 | const { abortAllRequests, get } = request(); 23 | 24 | async function pingThroughProxy( 25 | url: string, 26 | options: IGetOptions 27 | ): Promise { 28 | try { 29 | const result = await get(url, options); 30 | 31 | if (!result.success) { 32 | throw new Error('Request failed'); 33 | } 34 | 35 | const proxyData: PingThroughProxyFullResult = JSON.parse(result.payload || ''); 36 | proxyData.totalTime = result.stats.totalTime; 37 | proxyData.connectTime = result.stats.connectTime; 38 | return proxyData; 39 | } catch (err) { 40 | return Promise.reject(err); 41 | } 42 | } 43 | 44 | function createPingRequestOptions( 45 | options: ICheckProxyOptions, 46 | proxyProtocol: EProxyProtocol, 47 | websiteProtocol: EWebsiteProtocol 48 | ): IPingOptions { 49 | const url = `${websiteProtocol}://${options.testHost}`; 50 | return { 51 | url: appendQuery(url, `test=get&ip=${options.localIP}`), 52 | options: { 53 | headers: { 54 | 'User-Agent': 'Mozilla/4.0', 55 | Accept: 'text/html', 56 | Referer: 'http://www.google.com', 57 | Connection: 'close' 58 | }, 59 | cookie: 'test=cookie;', 60 | data: { test: 'post' }, 61 | proxy: `${proxyProtocol}://${options.proxyIP}:${options.proxyPort}`, 62 | timeout: options.timeout || 60, 63 | connectTimeout: options.connectTimeout 64 | } 65 | }; 66 | } 67 | 68 | async function testWebsite( 69 | url: string, 70 | proxy: string, 71 | regex: any, 72 | website: ICheckProxyWebsite 73 | ): Promise { 74 | const options: IGetOptions = { 75 | headers: { 76 | 'User-Agent': 'Mozilla/4.0', 77 | Accept: 'text/html', 78 | Referer: 'http://www.google.com', 79 | Connection: 'close' 80 | }, 81 | proxy, 82 | ignoreErrors: true 83 | }; 84 | 85 | if (website.connectTimeout) { 86 | options.connectTimeout = website.connectTimeout; 87 | } 88 | 89 | if (website.timeout) { 90 | options.timeout = website.timeout; 91 | } 92 | 93 | const result = await get(url, options); 94 | const html = result.payload; 95 | 96 | if (regex) { 97 | if (_.isFunction(regex)) { 98 | return regex(html, result) 99 | ? result.stats 100 | : Promise.reject(new Error("data doesn't match provided function")); 101 | } else if (_.isRegExp(regex)) { 102 | return regex.test(html) 103 | ? result.stats 104 | : Promise.reject(new Error("data doesn't match provided regex")); 105 | } else { 106 | return html.indexOf(regex) != -1 107 | ? result.stats 108 | : Promise.reject(new Error("data doesn't contain provided string")); 109 | } 110 | } 111 | 112 | return Promise.reject(new Error('regex is not set')); 113 | } 114 | 115 | async function testWebsites( 116 | proxy: string, 117 | websites: Array 118 | ): Promise { 119 | const result: ITestWebsitesResult = {}; 120 | if (!websites) { 121 | return result; 122 | } 123 | for (let website of websites) { 124 | try { 125 | const stats = await testWebsite( 126 | website.url, 127 | proxy, 128 | website.regex, 129 | website 130 | ); 131 | result[website.name] = stats; 132 | } catch (err) { 133 | result[website.name] = false; 134 | } 135 | } 136 | return result; 137 | } 138 | 139 | async function testProtocol( 140 | proxyProtocol: EProxyProtocol, 141 | options: ICheckProxyOptions 142 | ): Promise { 143 | let result: ITestProtocolResult; 144 | 145 | const httpsOptions = createPingRequestOptions( 146 | options, 147 | proxyProtocol, 148 | EWebsiteProtocol.https 149 | ); 150 | const httpsResult = await pingThroughProxy( 151 | httpsOptions.url, 152 | httpsOptions.options 153 | ); 154 | result = Object.assign( 155 | { 156 | supportsHttps: true, 157 | protocol: proxyProtocol, 158 | ip: options.proxyIP, 159 | port: options.proxyPort 160 | }, 161 | httpsResult 162 | ); 163 | result.websites = await testWebsites( 164 | httpsOptions.options.proxy, 165 | options.websites 166 | ); 167 | return result; 168 | } 169 | 170 | function testAllProtocols( 171 | options: ICheckProxyOptions 172 | ): Promise> { 173 | let resolved = false; 174 | function resolveWrapper(resolve, result) { 175 | if (!resolved) { 176 | resolved = true; 177 | resolve(result.slice()); 178 | abortAllRequests(); 179 | } 180 | } 181 | 182 | return new Promise>((resolve) => { 183 | const promises = Object.keys(EProxyProtocol).map((protocol) => 184 | testProtocol(EProxyProtocol[protocol], options) 185 | .then((result) => resolveWrapper(resolve, [result])) 186 | .catch(() => {}) 187 | ); 188 | Promise.all(promises) 189 | .then(() => resolveWrapper(resolve, [])) 190 | .catch(() => resolveWrapper(resolve, [])); 191 | }); 192 | } 193 | 194 | const country = geoip.lookupCountry(options.proxyIP); 195 | options.websites = options.websites || []; 196 | 197 | const result = await testAllProtocols(options); 198 | 199 | if (!result || result.length === 0) { 200 | return Promise.reject(new Error('proxy checked, invalid')); 201 | } 202 | 203 | return result.map((item) => Object.assign(item, { country })); 204 | } 205 | -------------------------------------------------------------------------------- /lib/enums.ts: -------------------------------------------------------------------------------- 1 | export enum EProxyProtocol { 2 | http = 'http', 3 | socks5 = 'socks5', 4 | socks4 = 'socks4' 5 | } 6 | 7 | export enum EWebsiteProtocol { 8 | https = 'https' 9 | } 10 | -------------------------------------------------------------------------------- /lib/interfaces.d.ts: -------------------------------------------------------------------------------- 1 | import { EProxyProtocol, EWebsiteProtocol } from './enums'; 2 | import { PingResult } from './ping'; 3 | 4 | export interface IGetOptions { 5 | headers?: { [index: string]: string }; 6 | cookie?: string; 7 | proxy?: string; 8 | data?: { [index: string]: string }; 9 | connectTimeout?: number; 10 | timeout?: number; 11 | ignoreErrors?: boolean; 12 | } 13 | 14 | export interface IGetResolveStats { 15 | responseCode: number; // seconds 16 | connectTime: number; // seconds 17 | totalTime: number; // seconds 18 | receivedLength: number; // bytes 19 | averageSpeed: number; // bytes per second 20 | firstByte?: number; 21 | } 22 | 23 | export interface IGetResolve { 24 | success: boolean; 25 | payload: string; 26 | stats: IGetResolveStats; 27 | } 28 | 29 | export interface PingThroughProxyFullResult extends PingResult { 30 | totalTime: number; 31 | connectTime: number; 32 | } 33 | 34 | export interface IPingOptions { 35 | url: string; 36 | options: IGetOptions; 37 | } 38 | 39 | export type ITestWebsitesResult = { 40 | [index: string]: IGetResolveStats | boolean; 41 | }; 42 | 43 | export interface ICheckProxyWebsite { 44 | name: string; 45 | url: string; 46 | regex: any; 47 | connectTimeout?: number; 48 | timeout?: number; 49 | } 50 | 51 | export interface ICheckProxyOptions { 52 | testHost: string; 53 | proxyIP: string; 54 | proxyPort: number; 55 | localIP: string; 56 | connectTimeout?: number; 57 | timeout: number; 58 | websites?: Array; 59 | } 60 | 61 | export interface ITestProtocolResult extends PingThroughProxyFullResult { 62 | supportsHttps: boolean; 63 | protocol: EProxyProtocol; 64 | ip: string; 65 | port: number; 66 | websites?: ITestWebsitesResult; 67 | country?: string; 68 | } 69 | -------------------------------------------------------------------------------- /lib/ping.ts: -------------------------------------------------------------------------------- 1 | import * as _ from 'lodash'; 2 | 3 | export interface PingResult { 4 | get: boolean; 5 | post: boolean; 6 | cookies: boolean; 7 | referer: boolean; 8 | 'user-agent': boolean; 9 | anonymityLevel: 0 | 1; 10 | } 11 | 12 | export default function (headers, getParams, postParams, cookies) { 13 | const res: PingResult = { 14 | get: (getParams.test && getParams.test == 'get') || false, 15 | post: (postParams.test && postParams.test == 'post') || false, 16 | cookies: (cookies.test && cookies.test == 'cookie') || false, 17 | referer: 18 | (headers.referer && 'http://www.google.com' == headers.referer) || false, 19 | 'user-agent': 20 | (headers['user-agent'] && 'Mozilla/4.0' == headers['user-agent']) || false, 21 | anonymityLevel: 0 22 | }; 23 | 24 | if (getParams.ip) { 25 | const ips = _.isArray(getParams.ip) ? getParams.ip : [getParams.ip]; 26 | const headersStr = _(headers).reduce((result, el) => result + el); 27 | 28 | const foundIp = _.find(ips, (ip) => headersStr.indexOf(ip) != -1); 29 | res.anonymityLevel = foundIp ? 0 : 1; 30 | } else { 31 | res.anonymityLevel = 0; 32 | } 33 | 34 | return res; 35 | } 36 | -------------------------------------------------------------------------------- /lib/request.ts: -------------------------------------------------------------------------------- 1 | import * as request from 'request-promise-native'; 2 | import * as ProxyAgent from 'proxy-agent'; 3 | import { timeout as promiseTimeout, TimeoutError } from 'promise-timeout'; 4 | import { IGetOptions, IGetResolve, IGetResolveStats } from './interfaces.d'; 5 | 6 | export default function () { 7 | let activeRequests = []; 8 | 9 | function abortAllRequests() { 10 | activeRequests.forEach((request) => request.abort()); 11 | activeRequests = []; 12 | } 13 | 14 | async function get(url: string, options: IGetOptions): Promise { 15 | const jar = request.jar(); 16 | options.cookie && jar.setCookie(request.cookie(options.cookie), url); 17 | try { 18 | const timeout = options.timeout * 1000 || 10000; 19 | const requestOptions: any = { 20 | url, 21 | method: options.data ? 'POST' : 'GET', 22 | headers: options.headers, 23 | form: options.data, 24 | jar, 25 | agent: new ProxyAgent(options.proxy), 26 | time: true, 27 | resolveWithFullResponse: true, 28 | timeout, 29 | strictSSL: false 30 | }; 31 | 32 | const newRequest = promiseTimeout(request(requestOptions), timeout); 33 | activeRequests.push(newRequest); 34 | const response = await newRequest; 35 | const responseCode = response.statusCode; 36 | const stats: IGetResolveStats = { 37 | responseCode, 38 | connectTime: parseInt(response.timings.connect, 10) / 1000, 39 | totalTime: parseInt(response.timingPhases.total, 10) / 1000, 40 | firstByte: parseInt(response.timingPhases.firstByte, 10) / 1000, 41 | receivedLength: Buffer.byteLength(response.body, 'utf8'), 42 | averageSpeed: 43 | (Buffer.byteLength(response.body, 'utf8') * 1000) / 44 | parseInt(response.timingPhases.total, 10) 45 | }; 46 | 47 | return { 48 | success: true, 49 | payload: response.body, 50 | stats 51 | }; 52 | } catch (err) { 53 | if (options.ignoreErrors) { 54 | return { 55 | success: false, 56 | payload: '', 57 | stats: null 58 | }; 59 | } else { 60 | throw err; 61 | } 62 | } 63 | } 64 | 65 | return { 66 | abortAllRequests, 67 | get 68 | }; 69 | } 70 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "check-proxy", 3 | "version": "0.3.5", 4 | "description": "Advanced Node proxy checker with socks and https support", 5 | "main": "build/index.js", 6 | "dependencies": { 7 | "append-query": "^2.0.1", 8 | "geoip-ultralight": "0.1.5", 9 | "lodash": "4.17.11", 10 | "promise-timeout": "^1.3.0", 11 | "proxy-agent": "3.0.3", 12 | "request": "2.88.2", 13 | "request-promise-native": "1.0.9", 14 | "tslib": "2.4.0" 15 | }, 16 | "scripts": { 17 | "test": "mocha --timeout 10000 --exit", 18 | "build": "rm -rf ./build && ./node_modules/.bin/tsc && cp ./lib/interfaces.d.ts ./build/lib/interfaces.d.ts", 19 | "format": "prettier --config .prettierrc './{example,lib,test}/**/*.{ts,js}' --write" 20 | }, 21 | "keywords": [ 22 | "check proxy", 23 | "test proxy" 24 | ], 25 | "repository": { 26 | "type": "git", 27 | "url": "git+https://github.com/256cats/check-proxy.git" 28 | }, 29 | "author": "Andrey E. (256cats.com)", 30 | "engines": { 31 | "node": ">=6.0.0" 32 | }, 33 | "licenses": [ 34 | { 35 | "type": "MIT", 36 | "url": "https://github.com/256cats/check-proxy/blob/master/LICENSE" 37 | } 38 | ], 39 | "devDependencies": { 40 | "@types/node": "^16", 41 | "@types/request": "2.48.8", 42 | "@types/request-promise-native": "1.0.18", 43 | "anyproxy": "4.0.12", 44 | "body-parser": "1.18.3", 45 | "chai": "4.2.0", 46 | "chai-as-promised": "7.1.1", 47 | "cookie-parser": "1.4.3", 48 | "express": "^4.16.4", 49 | "http-proxy": "1.17.0", 50 | "httpolyglot": "0.1.2", 51 | "mocha": "5.2.0", 52 | "pem": "1.13.2", 53 | "prettier": "2.7.1", 54 | "socks4": "0.1.1", 55 | "socksv5": "0.0.6", 56 | "typescript": "4.7.4" 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /test/check-proxy.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | const chaiAsPromised = require('chai-as-promised'); 3 | const chai = require('chai'); 4 | chai.use(chaiAsPromised); 5 | const expect = chai.expect; 6 | const { 7 | startHttpProxy, 8 | startHttpOnlyProxy, 9 | startPingServer, 10 | startSlowProxy, 11 | startSocks4Proxy, 12 | startSocks5Proxy 13 | } = require('./proxy'); 14 | const checkProxy = require('../build').check; 15 | const port = { 16 | http: 8000, 17 | httpOnly: 8888, 18 | ping: 8088, 19 | socks4: 9000, 20 | socks5: 10000, 21 | httpSlow: 11000 22 | }; 23 | const localIP = '127.0.0.1'; 24 | const localHost = 'localhost'; 25 | 26 | describe('Check-proxy', function () { 27 | before(function (done) { 28 | startHttpProxy(port.http); 29 | startHttpOnlyProxy(port.httpOnly); 30 | startSlowProxy(port.httpSlow); 31 | startSocks4Proxy(port.socks4); 32 | startSocks5Proxy(port.socks5); 33 | startPingServer(port.ping); 34 | setTimeout(done, 3000); 35 | }); 36 | 37 | it('should identify socks5 proxy', function () { 38 | return checkProxy({ 39 | testHost: localHost + ':' + port.ping, 40 | proxyIP: localIP, 41 | proxyPort: port.socks5, 42 | localIP: localIP, 43 | timeout: 1 44 | }).then(function (result) { 45 | expect(result[0]).to.exist; 46 | const proxy = result[0]; 47 | expect(proxy.supportsHttps).equal(true); 48 | expect(proxy.protocol).equal('socks5'); 49 | expect(proxy.ip).equal('127.0.0.1'); 50 | expect(proxy.port).equal(port.socks5); 51 | expect(proxy.get).equal(true); 52 | expect(proxy.post).equal(true); 53 | expect(proxy.cookies).equal(true); 54 | expect(proxy.referer).equal(true); 55 | expect(proxy['user-agent']).equal(true); 56 | expect(proxy.anonymityLevel).equal(1); 57 | expect(proxy.totalTime).not.null; 58 | expect(proxy.connectTime).not.null; 59 | expect(proxy.websites).deep.equal({}); 60 | expect(proxy.country).to.be.null; 61 | }); 62 | }); 63 | 64 | it('should identify http proxy with websites', function () { 65 | return checkProxy({ 66 | testHost: localHost + ':' + port.ping, 67 | proxyIP: localIP, 68 | proxyPort: port.http, 69 | localIP: localIP, 70 | timeout: 2, 71 | websites: [ 72 | { 73 | name: 'test1', 74 | url: 'https://www.example.com', 75 | regex: /Example Domain/gim 76 | }, 77 | { 78 | name: 'test2', 79 | url: 'https://www.example.com', 80 | regex: /Failure/gim 81 | } 82 | ] 83 | }).then(function (result) { 84 | expect(result[0]).to.exist; 85 | const proxy = result[0]; 86 | expect(proxy.supportsHttps).equal(true); 87 | expect(proxy.protocol).equal('http'); 88 | expect(proxy.ip).equal('127.0.0.1'); 89 | expect(proxy.port).equal(port.http); 90 | expect(proxy.get).equal(true); 91 | expect(proxy.post).equal(true); 92 | expect(proxy.cookies).equal(true); 93 | expect(proxy.referer).equal(true); 94 | expect(proxy['user-agent']).equal(true); 95 | expect(proxy.anonymityLevel).equal(1); 96 | expect(proxy.totalTime).not.null; 97 | expect(proxy.connectTime).not.null; 98 | expect(proxy.websites).to.be.an('object'); 99 | expect(proxy.websites.test1).to.be.an('object'); 100 | expect(proxy.websites.test2).equal(false); 101 | expect(proxy.country).to.be.null; 102 | }); 103 | }); 104 | 105 | it('no https support, no anonymity', function () { 106 | const promise = checkProxy({ 107 | testHost: localHost + ':' + port.ping, 108 | proxyIP: localIP, 109 | proxyPort: port.httpOnly, 110 | localIP: localIP, 111 | timeout: 1 112 | }); 113 | 114 | expect(promise).to.eventually.be.rejectedWith(Error); 115 | }); 116 | 117 | it('should identify socks4 proxy', function () { 118 | return checkProxy({ 119 | testHost: localHost + ':' + port.ping, 120 | proxyIP: localIP, 121 | proxyPort: port.socks4, 122 | localIP: localIP, 123 | timeout: 1 124 | }).then(function (result) { 125 | expect(result[0]).to.exist; 126 | const proxy = result[0]; 127 | expect(proxy.supportsHttps).equal(true); 128 | expect(proxy.protocol).equal('socks4'); 129 | expect(proxy.ip).equal('127.0.0.1'); 130 | expect(proxy.port).equal(port.socks4); 131 | expect(proxy.get).equal(true); 132 | expect(proxy.post).equal(true); 133 | expect(proxy.cookies).equal(true); 134 | expect(proxy.referer).equal(true); 135 | expect(proxy['user-agent']).equal(true); 136 | expect(proxy.anonymityLevel).equal(1); 137 | expect(proxy.totalTime).not.null; 138 | expect(proxy.connectTime).not.null; 139 | expect(proxy.websites).deep.equal({}); 140 | expect(proxy.country).to.be.null; 141 | }); 142 | }); 143 | 144 | it('should timeout on slow proxy', function () { 145 | const promise = checkProxy({ 146 | testHost: localHost + ':' + port.ping, 147 | proxyIP: localIP, 148 | proxyPort: port.httpSlow, 149 | localIP: localIP, 150 | timeout: 1 151 | }).then(function (result) { 152 | expect(result[0]).to.exist; 153 | const proxy = result[0]; 154 | expect(proxy.supportsHttps).equal(true); 155 | expect(proxy.protocol).equal('socks4'); 156 | expect(proxy.ip).equal('127.0.0.1'); 157 | expect(proxy.port).equal(port.socks4); 158 | expect(proxy.get).equal(true); 159 | expect(proxy.post).equal(true); 160 | expect(proxy.cookies).equal(true); 161 | expect(proxy.referer).equal(true); 162 | expect(proxy['user-agent']).equal(true); 163 | expect(proxy.anonymityLevel).equal(1); 164 | expect(proxy.totalTime).not.null; 165 | expect(proxy.connectTime).not.null; 166 | expect(proxy.websites).deep.equal({}); 167 | expect(proxy.country).to.be.null; 168 | }); 169 | 170 | return expect(promise).to.eventually.be.rejectedWith(Error); 171 | }); 172 | }); 173 | -------------------------------------------------------------------------------- /test/ping.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | const assert = require('assert'); 3 | const ping = require('../build/index').ping; 4 | 5 | describe('Ping', function () { 6 | it('should return all false', function () { 7 | const expected = { 8 | get: false, 9 | post: false, 10 | cookies: false, 11 | referer: false, 12 | 'user-agent': false, 13 | anonymityLevel: 0 14 | }; 15 | 16 | const result = ping( 17 | { 18 | proxy: '127.0.0.1', 19 | proxy_via: '127.1.1.1', 20 | referer: '', 21 | 'user-agent': '' 22 | }, 23 | { 24 | test: 'wrong', 25 | ip: ['127.0.0.1', '127.1.1.1', '192.167.1.4'] 26 | }, 27 | { 28 | test: 'wrong' 29 | }, 30 | { 31 | test: 'wrong' 32 | } 33 | ); 34 | 35 | assert.deepEqual(result, expected); 36 | }); 37 | 38 | it('should return all true', function () { 39 | const expected = { 40 | get: true, 41 | post: true, 42 | cookies: true, 43 | referer: true, 44 | 'user-agent': true, 45 | anonymityLevel: 1 46 | }; 47 | const result = ping( 48 | { 49 | proxy: '127.0.0.1', 50 | proxy_via: '127.1.1.1', 51 | referer: 'http://www.google.com', 52 | 'user-agent': 'Mozilla/4.0' 53 | }, 54 | { 55 | test: 'get', 56 | ip: '192.167.1.4' 57 | }, 58 | { 59 | test: 'post' 60 | }, 61 | { 62 | test: 'cookie' 63 | } 64 | ); 65 | assert.deepEqual(result, expected); 66 | }); 67 | 68 | it('accepts single IP string and array of IP addresses', function () { 69 | let expected = { 70 | get: false, 71 | post: true, 72 | cookies: true, 73 | referer: true, 74 | 'user-agent': true, 75 | anonymityLevel: 0 76 | }; 77 | let result = ping( 78 | { 79 | proxy: '127.0.0.1', 80 | proxy_via: '127.1.1.1', 81 | proxy_via2: '192.167.1.4', 82 | referer: 'http://www.google.com', 83 | 'user-agent': 'Mozilla/4.0' 84 | }, 85 | { 86 | ip: '192.167.1.4' 87 | }, 88 | { 89 | test: 'post' 90 | }, 91 | { 92 | test: 'cookie' 93 | } 94 | ); 95 | assert.deepEqual(result, expected); 96 | 97 | expected = { 98 | get: false, 99 | post: true, 100 | cookies: true, 101 | referer: true, 102 | 'user-agent': true, 103 | anonymityLevel: 0 104 | }; 105 | result = ping( 106 | { 107 | proxy: '127.0.0.1', 108 | proxy_via: '127.1.1.1', 109 | proxy_via2: '192.167.1.4', 110 | referer: 'http://www.google.com', 111 | 'user-agent': 'Mozilla/4.0' 112 | }, 113 | { 114 | ip: ['192.167.1.4', '192.168.99.1'] 115 | }, 116 | { 117 | test: 'post' 118 | }, 119 | { 120 | test: 'cookie' 121 | } 122 | ); 123 | assert.deepEqual(result, expected); 124 | }); 125 | }); 126 | -------------------------------------------------------------------------------- /test/proxy.js: -------------------------------------------------------------------------------- 1 | const http = require('http'); 2 | const httpProxy = require('http-proxy'); 3 | const socks4 = require('socks4'); 4 | const socks5 = require('socksv5'); 5 | const express = require('express'); 6 | const https = require('https'); 7 | const pem = require('pem'); 8 | const httpolyglot = require('httpolyglot'); 9 | const bodyParser = require('body-parser'); 10 | const cookieParser = require('cookie-parser'); 11 | const getProxyType = require('../build/index').ping; 12 | const AnyProxy = require('anyproxy'); 13 | 14 | function startSocks4Proxy(port) { 15 | socks4.createServer().listen(port, function () { 16 | console.log('Socks4 proxy server started', port); 17 | }); 18 | } 19 | 20 | function startSocks5Proxy(port) { 21 | const srv = socks5.createServer(function (info, accept, deny) { 22 | accept(); 23 | }); 24 | srv.listen(port, function () { 25 | console.log('Socks5 proxy server started', port); 26 | }); 27 | srv.useAuth(socks5.auth.None()); 28 | } 29 | 30 | function startSlowProxy(port) { 31 | const proxy = httpProxy.createProxyServer(); 32 | http 33 | .createServer(function (req, res) { 34 | setTimeout(function () { 35 | proxy.web(req, res, { target: req.url }); 36 | }, 5000); 37 | }) 38 | .listen(port, function () { 39 | console.log('Slow proxy server started', port); 40 | }); 41 | } 42 | 43 | function startHttpOnlyProxy(port) { 44 | const proxy = httpProxy.createProxyServer(); 45 | 46 | proxy.on('proxyReq', function (proxyReq, req, res, options) { 47 | proxyReq.setHeader('X-Forwarded-For', '127.0.0.1'); 48 | }); 49 | 50 | http 51 | .createServer(function (req, res) { 52 | proxy.web(req, res, { target: req.url }); 53 | }) 54 | .listen(port, function () { 55 | console.log('Http-only proxy server started', port); 56 | }); 57 | } 58 | 59 | function startHttpProxy(port) { 60 | const options = { 61 | port: port, 62 | webInterface: { 63 | enable: false 64 | }, 65 | forceProxyHttps: false, 66 | wsIntercept: false, 67 | silent: true 68 | }; 69 | const proxyServer = new AnyProxy.ProxyServer(options); 70 | proxyServer.on('ready', () => { 71 | console.log('Http proxy server started', port); 72 | }); 73 | proxyServer.start(); 74 | } 75 | 76 | function startPingServer(port) { 77 | const app = express(); 78 | 79 | app.use(bodyParser.urlencoded({ extended: true })); 80 | app.use(bodyParser.json()); 81 | app.use(cookieParser()); 82 | 83 | const ping = function (req, res) { 84 | res.json(getProxyType(req.headers, req.query, req.body, req.cookies)); 85 | }; 86 | 87 | app.get('/', ping); 88 | app.post('/', ping); 89 | 90 | pem.createCertificate({ days: 1, selfSigned: true }, function (err, keys) { 91 | if (err) { 92 | throw err; 93 | } 94 | 95 | httpolyglot 96 | .createServer({ key: keys.serviceKey, cert: keys.certificate }, app) 97 | .listen(port, function () { 98 | console.log('Ping http/https server started', port); 99 | }); 100 | }); 101 | } 102 | 103 | module.exports = { 104 | startHttpProxy, 105 | startHttpOnlyProxy, 106 | startPingServer, 107 | startSlowProxy, 108 | startSocks4Proxy, 109 | startSocks5Proxy 110 | }; 111 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "lib": [ 6 | "es6", 7 | "es7", 8 | "es2015" 9 | ], 10 | "declaration": true, 11 | "noLib": false, 12 | "moduleResolution": "node", 13 | "sourceMap": false, 14 | "removeComments": true, 15 | "outDir": "./build", 16 | "rootDir": ".", 17 | "importHelpers": true, 18 | "noImplicitAny": false 19 | }, 20 | "compileOnSave": false, 21 | "filesGlob": [ 22 | "./**/*.ts" 23 | ], 24 | "exclude": [ 25 | "node_modules", 26 | "./src", 27 | "./bak", 28 | "ts-node-cache" 29 | ], 30 | "atom": { 31 | "rewriteTsconfig": true 32 | } 33 | } -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@types/babel-types@*", "@types/babel-types@^7.0.0": 6 | "integrity" "sha512-pkPtJUUY+Vwv6B1inAz55rQvivClHJxc9aVEPPmaq2cbyeMLCiDpbKpcKyX4LAwpNGi+SHBv0tHv6+0gXv0P2A==" 7 | "resolved" "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.11.tgz" 8 | "version" "7.0.11" 9 | 10 | "@types/babylon@^6.16.2": 11 | "integrity" "sha512-G4yqdVlhr6YhzLXFKy5F7HtRBU8Y23+iWy7UKthMq/OSQnL1hbsoeXESQ2LY8zEDlknipDG3nRGhUC9tkwvy/w==" 12 | "resolved" "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.6.tgz" 13 | "version" "6.16.6" 14 | dependencies: 15 | "@types/babel-types" "*" 16 | 17 | "@types/caseless@*": 18 | "integrity" "sha512-FhlMa34NHp9K5MY1Uz8yb+ZvuX0pnvn3jScRSNAb75KHGB8d3rEU6hqMs3Z2vjuytcMfRg6c5CHMc3wtYyD2/A==" 19 | "resolved" "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.1.tgz" 20 | "version" "0.12.1" 21 | 22 | "@types/node@*", "@types/node@^16": 23 | "integrity" "sha512-Z9r9UWlNeNkYnxybm+1fc0jxUNjZqRekTAr1pG0qdXe9apT9yCiqk1c4VvKQJsFpnchU4+fLl25MabSLA2wxIw==" 24 | "resolved" "https://registry.npmjs.org/@types/node/-/node-16.11.48.tgz" 25 | "version" "16.11.48" 26 | 27 | "@types/request-promise-native@1.0.18": 28 | "integrity" "sha512-tPnODeISFc/c1LjWyLuZUY+Z0uLB3+IMfNoQyDEi395+j6kTFTTRAqjENjoPJUid4vHRGEozoTrcTrfZM+AcbA==" 29 | "resolved" "https://registry.npmjs.org/@types/request-promise-native/-/request-promise-native-1.0.18.tgz" 30 | "version" "1.0.18" 31 | dependencies: 32 | "@types/request" "*" 33 | 34 | "@types/request@*", "@types/request@2.48.8": 35 | "integrity" "sha512-whjk1EDJPcAR2kYHRbFl/lKeeKYTi05A15K9bnLInCVroNDCtXce57xKdI0/rQaA3K+6q0eFyUBPmqfSndUZdQ==" 36 | "resolved" "https://registry.npmjs.org/@types/request/-/request-2.48.8.tgz" 37 | "version" "2.48.8" 38 | dependencies: 39 | "@types/caseless" "*" 40 | "@types/node" "*" 41 | "@types/tough-cookie" "*" 42 | "form-data" "^2.5.0" 43 | 44 | "@types/tough-cookie@*": 45 | "integrity" "sha512-Set5ZdrAaKI/qHdFlVMgm/GsAv/wkXhSTuZFkJ+JI7HK+wIkIlOaUXSXieIvJ0+OvGIqtREFoE+NHJtEq0gtEw==" 46 | "resolved" "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.4.tgz" 47 | "version" "2.3.4" 48 | 49 | "accepts@~1.3.5", "accepts@~1.3.8": 50 | "integrity" "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==" 51 | "resolved" "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" 52 | "version" "1.3.8" 53 | dependencies: 54 | "mime-types" "~2.1.34" 55 | "negotiator" "0.6.3" 56 | 57 | "acorn-globals@^3.0.0": 58 | "integrity" "sha512-uWttZCk96+7itPxK8xCzY86PnxKTMrReKDqrHzv42VQY0K30PUO8WY13WMOuI+cOdX4EIdzdvQ8k6jkuGRFMYw==" 59 | "resolved" "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz" 60 | "version" "3.1.0" 61 | dependencies: 62 | "acorn" "^4.0.4" 63 | 64 | "acorn@^3.1.0": 65 | "integrity" "sha512-OLUyIIZ7mF5oaAUT1w0TFqQS81q3saT46x8t7ukpPjMNk+nbs4ZHhs7ToV8EWnLYLepjETXd4XaCE4uxkMeqUw==" 66 | "resolved" "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz" 67 | "version" "3.3.0" 68 | 69 | "acorn@^4.0.4", "acorn@~4.0.2": 70 | "integrity" "sha512-fu2ygVGuMmlzG8ZeRJ0bvR41nsAkxxhbyk8bZ1SS521Z7vmgJFTQQlfz/Mp/nJexGBz+v8sC9bM6+lNgskt4Ug==" 71 | "resolved" "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz" 72 | "version" "4.0.13" 73 | 74 | "agent-base@^4.2.0", "agent-base@^4.3.0", "agent-base@4": 75 | "integrity" "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==" 76 | "resolved" "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz" 77 | "version" "4.3.0" 78 | dependencies: 79 | "es6-promisify" "^5.0.0" 80 | 81 | "agent-base@~4.2.1": 82 | "integrity" "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==" 83 | "resolved" "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz" 84 | "version" "4.2.1" 85 | dependencies: 86 | "es6-promisify" "^5.0.0" 87 | 88 | "ajv@^6.0.0", "ajv@^6.5.5": 89 | "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" 90 | "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" 91 | "version" "6.12.6" 92 | dependencies: 93 | "fast-deep-equal" "^3.1.1" 94 | "fast-json-stable-stringify" "^2.0.0" 95 | "json-schema-traverse" "^0.4.1" 96 | "uri-js" "^4.2.2" 97 | 98 | "align-text@^0.1.1", "align-text@^0.1.3": 99 | "integrity" "sha512-GrTZLRpmp6wIC2ztrWW9MjjTgSKccffgFagbNDOX95/dcjEcYZibYTeaOntySQLcdw1ztBoFkviiUvTMbb9MYg==" 100 | "resolved" "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz" 101 | "version" "0.1.4" 102 | dependencies: 103 | "kind-of" "^3.0.2" 104 | "longest" "^1.0.1" 105 | "repeat-string" "^1.5.2" 106 | 107 | "ansi-escapes@^3.0.0": 108 | "integrity" "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==" 109 | "resolved" "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz" 110 | "version" "3.1.0" 111 | 112 | "ansi-regex@^3.0.0": 113 | "integrity" "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==" 114 | "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz" 115 | "version" "3.0.1" 116 | 117 | "ansi-styles@^3.2.1": 118 | "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" 119 | "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" 120 | "version" "3.2.1" 121 | dependencies: 122 | "color-convert" "^1.9.0" 123 | 124 | "anyproxy@4.0.12": 125 | "integrity" "sha512-7yGZAUclNato6KyBsfcaOP36MO/L1JsSVBzR+B5P99ysjnCisXmHHImdiNn9zXMQpBAbDj0k9GlTLk2m6A45+w==" 126 | "resolved" "https://registry.npmjs.org/anyproxy/-/anyproxy-4.0.12.tgz" 127 | "version" "4.0.12" 128 | dependencies: 129 | "async" "~0.9.0" 130 | "async-task-mgr" ">=1.1.0" 131 | "body-parser" "^1.13.1" 132 | "brotli" "^1.3.2" 133 | "classnames" "^2.2.5" 134 | "clipboard-js" "^0.3.3" 135 | "co" "^4.6.0" 136 | "colorful" "^2.1.0" 137 | "commander" "~2.11.0" 138 | "component-emitter" "^1.2.1" 139 | "compression" "^1.4.4" 140 | "es6-promise" "^3.3.1" 141 | "express" "^4.8.5" 142 | "fast-json-stringify" "^0.17.0" 143 | "iconv-lite" "^0.4.6" 144 | "inquirer" "^5.2.0" 145 | "ip" "^0.3.2" 146 | "juicer" "^0.6.6-stable" 147 | "mime-types" "2.1.11" 148 | "moment" "^2.15.1" 149 | "nedb" "^1.8.0" 150 | "node-easy-cert" "^1.0.0" 151 | "pug" "^2.0.0-beta6" 152 | "qrcode-npm" "0.0.3" 153 | "request" "^2.74.0" 154 | "stream-throttle" "^0.1.3" 155 | "svg-inline-react" "^1.0.2" 156 | "thunkify" "^2.1.2" 157 | "whatwg-fetch" "^1.0.0" 158 | "ws" "^5.1.0" 159 | 160 | "append-query@^2.0.1": 161 | "integrity" "sha512-adm0E8o1o7ay+HbkWvGIpNNeciLB/rxJ0heThHuzSSVq5zcdQ5/ZubFnUoY0imFmk6gZVghSpwoubLVtwi9EHQ==" 162 | "resolved" "https://registry.npmjs.org/append-query/-/append-query-2.1.1.tgz" 163 | "version" "2.1.1" 164 | dependencies: 165 | "extend" "^3.0.2" 166 | 167 | "array-flatten@1.1.1": 168 | "integrity" "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" 169 | "resolved" "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" 170 | "version" "1.1.1" 171 | 172 | "asap@~2.0.3": 173 | "integrity" "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" 174 | "resolved" "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" 175 | "version" "2.0.6" 176 | 177 | "asn1@~0.2.3": 178 | "integrity" "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==" 179 | "resolved" "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz" 180 | "version" "0.2.4" 181 | dependencies: 182 | "safer-buffer" "~2.1.0" 183 | 184 | "assert-plus@^1.0.0", "assert-plus@1.0.0": 185 | "integrity" "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" 186 | "resolved" "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" 187 | "version" "1.0.0" 188 | 189 | "assertion-error@^1.1.0": 190 | "integrity" "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==" 191 | "resolved" "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz" 192 | "version" "1.1.0" 193 | 194 | "ast-types@0.x.x": 195 | "integrity" "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==" 196 | "resolved" "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz" 197 | "version" "0.14.2" 198 | dependencies: 199 | "tslib" "^2.0.1" 200 | 201 | "async-limiter@~1.0.0": 202 | "integrity" "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" 203 | "resolved" "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz" 204 | "version" "1.0.0" 205 | 206 | "async-task-mgr@^1.1.0", "async-task-mgr@>=1.1.0": 207 | "integrity" "sha512-EJq1CfHr/b9pcdV1jV8jtg6/Hfti8cVZPIDYTjYbjD79M2AY/JnjY/Zf+hmRcr4fU1Bpy5Odr7EiXQt85YnCdA==" 208 | "resolved" "https://registry.npmjs.org/async-task-mgr/-/async-task-mgr-1.1.0.tgz" 209 | "version" "1.1.0" 210 | 211 | "async@~0.1.22": 212 | "integrity" "sha512-2tEzliJmf5fHNafNwQLJXUasGzQCVctvsNkXmnlELHwypU0p08/rHohYvkqKIjyXpx+0rkrYv6QbhJ+UF4QkBg==" 213 | "resolved" "https://registry.npmjs.org/async/-/async-0.1.22.tgz" 214 | "version" "0.1.22" 215 | 216 | "async@~0.9.0": 217 | "integrity" "sha512-l6ToIJIotphWahxxHyzK9bnLR6kM4jJIIgLShZeqLY7iboHoGkdgFl7W2/Ivi4SkMJYGKqW8vSuk0uKUj6qsSw==" 218 | "resolved" "https://registry.npmjs.org/async/-/async-0.9.2.tgz" 219 | "version" "0.9.2" 220 | 221 | "async@0.2.10": 222 | "integrity" "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==" 223 | "resolved" "https://registry.npmjs.org/async/-/async-0.2.10.tgz" 224 | "version" "0.2.10" 225 | 226 | "asynckit@^0.4.0": 227 | "integrity" "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" 228 | "resolved" "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" 229 | "version" "0.4.0" 230 | 231 | "aws-sign2@~0.7.0": 232 | "integrity" "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" 233 | "resolved" "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz" 234 | "version" "0.7.0" 235 | 236 | "aws4@^1.8.0": 237 | "integrity" "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" 238 | "resolved" "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz" 239 | "version" "1.8.0" 240 | 241 | "babel-runtime@^6.26.0": 242 | "integrity" "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==" 243 | "resolved" "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz" 244 | "version" "6.26.0" 245 | dependencies: 246 | "core-js" "^2.4.0" 247 | "regenerator-runtime" "^0.11.0" 248 | 249 | "babel-types@^6.26.0": 250 | "integrity" "sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==" 251 | "resolved" "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz" 252 | "version" "6.26.0" 253 | dependencies: 254 | "babel-runtime" "^6.26.0" 255 | "esutils" "^2.0.2" 256 | "lodash" "^4.17.4" 257 | "to-fast-properties" "^1.0.3" 258 | 259 | "babylon@^6.18.0": 260 | "integrity" "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" 261 | "resolved" "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz" 262 | "version" "6.18.0" 263 | 264 | "balanced-match@^1.0.0": 265 | "integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 266 | "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" 267 | "version" "1.0.2" 268 | 269 | "base64-js@^1.1.2": 270 | "integrity" "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" 271 | "resolved" "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz" 272 | "version" "1.3.0" 273 | 274 | "bcrypt-pbkdf@^1.0.0": 275 | "integrity" "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==" 276 | "resolved" "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz" 277 | "version" "1.0.2" 278 | dependencies: 279 | "tweetnacl" "^0.14.3" 280 | 281 | "binary-search-tree@0.2.5": 282 | "integrity" "sha512-CvNVKS6iXagL1uGwLagSXz1hzSMezxOuGnFi5FHGKqaTO3nPPWrAbyALUzK640j+xOTVm7lzD9YP8W1f/gvUdw==" 283 | "resolved" "https://registry.npmjs.org/binary-search-tree/-/binary-search-tree-0.2.5.tgz" 284 | "version" "0.2.5" 285 | dependencies: 286 | "underscore" "~1.4.4" 287 | 288 | "binary@~0.3.0": 289 | "integrity" "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==" 290 | "resolved" "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz" 291 | "version" "0.3.0" 292 | dependencies: 293 | "buffers" "~0.1.1" 294 | "chainsaw" "~0.1.0" 295 | 296 | "bluebird@^3.5.1": 297 | "integrity" "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==" 298 | "resolved" "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz" 299 | "version" "3.5.3" 300 | 301 | "body-parser@^1.13.1", "body-parser@1.18.3": 302 | "integrity" "sha512-YQyoqQG3sO8iCmf8+hyVpgHHOv0/hCEFiS4zTGUwTA1HjAFX66wRcNQrVCeJq9pgESMRvUAOvSil5MJlmccuKQ==" 303 | "resolved" "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz" 304 | "version" "1.18.3" 305 | dependencies: 306 | "bytes" "3.0.0" 307 | "content-type" "~1.0.4" 308 | "debug" "2.6.9" 309 | "depd" "~1.1.2" 310 | "http-errors" "~1.6.3" 311 | "iconv-lite" "0.4.23" 312 | "on-finished" "~2.3.0" 313 | "qs" "6.5.2" 314 | "raw-body" "2.3.3" 315 | "type-is" "~1.6.16" 316 | 317 | "body-parser@1.20.0": 318 | "integrity" "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==" 319 | "resolved" "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz" 320 | "version" "1.20.0" 321 | dependencies: 322 | "bytes" "3.1.2" 323 | "content-type" "~1.0.4" 324 | "debug" "2.6.9" 325 | "depd" "2.0.0" 326 | "destroy" "1.2.0" 327 | "http-errors" "2.0.0" 328 | "iconv-lite" "0.4.24" 329 | "on-finished" "2.4.1" 330 | "qs" "6.10.3" 331 | "raw-body" "2.5.1" 332 | "type-is" "~1.6.18" 333 | "unpipe" "1.0.0" 334 | 335 | "brace-expansion@^1.1.7": 336 | "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" 337 | "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" 338 | "version" "1.1.11" 339 | dependencies: 340 | "balanced-match" "^1.0.0" 341 | "concat-map" "0.0.1" 342 | 343 | "brotli@^1.3.2": 344 | "integrity" "sha512-K0HNa0RRpUpcF8yS4yNSd6vmkrvA+wRd+symIcwhfqGLAi7YgGlKfO4oDYVgiahiLGNviO9uY7Zlb1MCPeTmSA==" 345 | "resolved" "https://registry.npmjs.org/brotli/-/brotli-1.3.2.tgz" 346 | "version" "1.3.2" 347 | dependencies: 348 | "base64-js" "^1.1.2" 349 | 350 | "browser-stdout@1.3.1": 351 | "integrity" "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" 352 | "resolved" "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz" 353 | "version" "1.3.1" 354 | 355 | "buffers@~0.1.1": 356 | "integrity" "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==" 357 | "resolved" "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz" 358 | "version" "0.1.1" 359 | 360 | "bytes@3.0.0": 361 | "integrity" "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==" 362 | "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" 363 | "version" "3.0.0" 364 | 365 | "bytes@3.1.2": 366 | "integrity" "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" 367 | "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" 368 | "version" "3.1.2" 369 | 370 | "call-bind@^1.0.0", "call-bind@^1.0.2": 371 | "integrity" "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==" 372 | "resolved" "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" 373 | "version" "1.0.2" 374 | dependencies: 375 | "function-bind" "^1.1.1" 376 | "get-intrinsic" "^1.0.2" 377 | 378 | "camelcase@^1.0.2": 379 | "integrity" "sha512-wzLkDa4K/mzI1OSITC+DUyjgIl/ETNHE9QvYgy6J6Jvqyyz4C0Xfd+lQhb19sX2jMpZV4IssUn0VDVmglV+s4g==" 380 | "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" 381 | "version" "1.2.1" 382 | 383 | "caseless@~0.12.0": 384 | "integrity" "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" 385 | "resolved" "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" 386 | "version" "0.12.0" 387 | 388 | "center-align@^0.1.1": 389 | "integrity" "sha512-Baz3aNe2gd2LP2qk5U+sDk/m4oSuwSDcBfayTCTBoWpfIGO5XFxPmjILQII4NGiZjD6DoDI6kf7gKaxkf7s3VQ==" 390 | "resolved" "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz" 391 | "version" "0.1.3" 392 | dependencies: 393 | "align-text" "^0.1.3" 394 | "lazy-cache" "^1.0.3" 395 | 396 | "chai-as-promised@7.1.1": 397 | "integrity" "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==" 398 | "resolved" "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz" 399 | "version" "7.1.1" 400 | dependencies: 401 | "check-error" "^1.0.2" 402 | 403 | "chai@>= 2.1.2 < 5", "chai@4.2.0": 404 | "integrity" "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==" 405 | "resolved" "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz" 406 | "version" "4.2.0" 407 | dependencies: 408 | "assertion-error" "^1.1.0" 409 | "check-error" "^1.0.2" 410 | "deep-eql" "^3.0.1" 411 | "get-func-name" "^2.0.0" 412 | "pathval" "^1.1.0" 413 | "type-detect" "^4.0.5" 414 | 415 | "chainsaw@~0.1.0": 416 | "integrity" "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==" 417 | "resolved" "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz" 418 | "version" "0.1.0" 419 | dependencies: 420 | "traverse" ">=0.3.0 <0.4" 421 | 422 | "chalk@^2.0.0", "chalk@^2.1.0": 423 | "integrity" "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==" 424 | "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz" 425 | "version" "2.4.1" 426 | dependencies: 427 | "ansi-styles" "^3.2.1" 428 | "escape-string-regexp" "^1.0.5" 429 | "supports-color" "^5.3.0" 430 | 431 | "character-parser@^2.1.1": 432 | "integrity" "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==" 433 | "resolved" "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz" 434 | "version" "2.2.0" 435 | dependencies: 436 | "is-regex" "^1.0.3" 437 | 438 | "chardet@^0.4.0": 439 | "integrity" "sha512-j/Toj7f1z98Hh2cYo2BVr85EpIRWqUi7rtRSGxh/cqUjqrnJe9l9UE7IUGd2vQ2p+kSHLkSzObQPZPLUC6TQwg==" 440 | "resolved" "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz" 441 | "version" "0.4.2" 442 | 443 | "charenc@~0.0.1": 444 | "integrity" "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==" 445 | "resolved" "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz" 446 | "version" "0.0.2" 447 | 448 | "check-error@^1.0.2": 449 | "integrity" "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==" 450 | "resolved" "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz" 451 | "version" "1.0.2" 452 | 453 | "classnames@^2.2.5": 454 | "integrity" "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" 455 | "resolved" "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz" 456 | "version" "2.2.6" 457 | 458 | "clean-css@^4.1.11": 459 | "integrity" "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==" 460 | "resolved" "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz" 461 | "version" "4.2.4" 462 | dependencies: 463 | "source-map" "~0.6.0" 464 | 465 | "cli-cursor@^2.1.0": 466 | "integrity" "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==" 467 | "resolved" "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz" 468 | "version" "2.1.0" 469 | dependencies: 470 | "restore-cursor" "^2.0.0" 471 | 472 | "cli-width@^2.0.0": 473 | "integrity" "sha512-EJLbKSuvHTrVRynOXCYFTbQKZOFXWNe3/6DN1yrEH3TuuZT1x4dMQnCHnfCrBUUiGjO63enEIfaB17VaRl2d4A==" 474 | "resolved" "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz" 475 | "version" "2.2.0" 476 | 477 | "clipboard-js@^0.3.3": 478 | "integrity" "sha512-hyrmvbrYCeRBHdiR3KrEz0tmrUTXXEU8HLeGW0Y0icUSwYmAsmc+d6wfE4EDb/TxZmAVJG0eTfMlulCIT+ecfw==" 479 | "resolved" "https://registry.npmjs.org/clipboard-js/-/clipboard-js-0.3.6.tgz" 480 | "version" "0.3.6" 481 | 482 | "cliui@^2.1.0": 483 | "integrity" "sha512-GIOYRizG+TGoc7Wgc1LiOTLare95R3mzKgoln+Q/lE4ceiYH19gUpl0l0Ffq4lJDEf3FxujMe6IBfOCs7pfqNA==" 484 | "resolved" "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz" 485 | "version" "2.1.0" 486 | dependencies: 487 | "center-align" "^0.1.1" 488 | "right-align" "^0.1.1" 489 | "wordwrap" "0.0.2" 490 | 491 | "co@^4.6.0": 492 | "integrity" "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==" 493 | "resolved" "https://registry.npmjs.org/co/-/co-4.6.0.tgz" 494 | "version" "4.6.0" 495 | 496 | "color-convert@^1.9.0": 497 | "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==" 498 | "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" 499 | "version" "1.9.3" 500 | dependencies: 501 | "color-name" "1.1.3" 502 | 503 | "color-name@1.1.3": 504 | "integrity" "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" 505 | "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" 506 | "version" "1.1.3" 507 | 508 | "colorful@^2.1.0": 509 | "integrity" "sha512-DpDLDvi/vPzqoPX7Dw44ZZf004DCdEcCx1pf5hq5aipVHXjwgRSYGCz3m17rA2XCduW91wJUapge8/3qLvjYcg==" 510 | "resolved" "https://registry.npmjs.org/colorful/-/colorful-2.1.0.tgz" 511 | "version" "2.1.0" 512 | 513 | "colors@0.6.0-1": 514 | "integrity" "sha512-ZaQtySU44lmZRP6M+CovFWnu7QnxLTsr/3wURb7BCOV1/gKjUb/3uu3NsLR+fvA2Jfs6sNfwcVq0Tp2mWYbuxg==" 515 | "resolved" "https://registry.npmjs.org/colors/-/colors-0.6.0-1.tgz" 516 | "version" "0.6.0-1" 517 | 518 | "combined-stream@^1.0.6", "combined-stream@~1.0.6": 519 | "integrity" "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==" 520 | "resolved" "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz" 521 | "version" "1.0.7" 522 | dependencies: 523 | "delayed-stream" "~1.0.0" 524 | 525 | "commander@^2.2.0", "commander@^2.9.0", "commander@~2.11.0": 526 | "integrity" "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==" 527 | "resolved" "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz" 528 | "version" "2.11.0" 529 | 530 | "commander@2.15.1": 531 | "integrity" "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==" 532 | "resolved" "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz" 533 | "version" "2.15.1" 534 | 535 | "component-emitter@^1.2.1": 536 | "integrity" "sha512-jPatnhd33viNplKjqXKRkGU345p263OIWzDL2wH3LGIGp5Kojo+uXizHmOADRvhGFFTnJqX3jBAKP6vvmSDKcA==" 537 | "resolved" "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz" 538 | "version" "1.2.1" 539 | 540 | "compressible@~2.0.14": 541 | "integrity" "sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw==" 542 | "resolved" "https://registry.npmjs.org/compressible/-/compressible-2.0.15.tgz" 543 | "version" "2.0.15" 544 | dependencies: 545 | "mime-db" ">= 1.36.0 < 2" 546 | 547 | "compression@^1.4.4": 548 | "integrity" "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==" 549 | "resolved" "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz" 550 | "version" "1.7.3" 551 | dependencies: 552 | "accepts" "~1.3.5" 553 | "bytes" "3.0.0" 554 | "compressible" "~2.0.14" 555 | "debug" "2.6.9" 556 | "on-headers" "~1.0.1" 557 | "safe-buffer" "5.1.2" 558 | "vary" "~1.1.2" 559 | 560 | "concat-map@0.0.1": 561 | "integrity" "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" 562 | "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" 563 | "version" "0.0.1" 564 | 565 | "constantinople@^3.0.1", "constantinople@^3.1.2": 566 | "integrity" "sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw==" 567 | "resolved" "https://registry.npmjs.org/constantinople/-/constantinople-3.1.2.tgz" 568 | "version" "3.1.2" 569 | dependencies: 570 | "@types/babel-types" "^7.0.0" 571 | "@types/babylon" "^6.16.2" 572 | "babel-types" "^6.26.0" 573 | "babylon" "^6.18.0" 574 | 575 | "content-disposition@0.5.4": 576 | "integrity" "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==" 577 | "resolved" "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" 578 | "version" "0.5.4" 579 | dependencies: 580 | "safe-buffer" "5.2.1" 581 | 582 | "content-type@~1.0.4": 583 | "integrity" "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" 584 | "resolved" "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz" 585 | "version" "1.0.4" 586 | 587 | "cookie-parser@1.4.3": 588 | "integrity" "sha512-EZyO2G+zVFsMjU8jDtxs2iLS1DmryYNjC0s4/IHtsS6pWPUJSr0kt0UPOctRZosebPHYekb7bNcIBt4YW0S9bg==" 589 | "resolved" "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.3.tgz" 590 | "version" "1.4.3" 591 | dependencies: 592 | "cookie" "0.3.1" 593 | "cookie-signature" "1.0.6" 594 | 595 | "cookie-signature@1.0.6": 596 | "integrity" "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" 597 | "resolved" "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" 598 | "version" "1.0.6" 599 | 600 | "cookie@0.3.1": 601 | "integrity" "sha512-+IJOX0OqlHCszo2mBUq+SrEbCj6w7Kpffqx60zYbPTFaO4+yYgRjHwcZNpWvaTylDHaV7PPmBHzSecZiMhtPgw==" 602 | "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz" 603 | "version" "0.3.1" 604 | 605 | "cookie@0.5.0": 606 | "integrity" "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" 607 | "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" 608 | "version" "0.5.0" 609 | 610 | "core-js@^1.0.0": 611 | "integrity" "sha512-ZiPp9pZlgxpWRu0M+YWbm6+aQ84XEfH1JRXvfOc/fILWI0VKhLC2LX13X1NYq4fULzLMq7Hfh43CSo2/aIaUPA==" 612 | "resolved" "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz" 613 | "version" "1.2.7" 614 | 615 | "core-js@^2.4.0": 616 | "integrity" "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" 617 | "resolved" "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz" 618 | "version" "2.6.12" 619 | 620 | "core-util-is@~1.0.0", "core-util-is@1.0.2": 621 | "integrity" "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" 622 | "resolved" "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" 623 | "version" "1.0.2" 624 | 625 | "create-react-class@^15.6.0": 626 | "integrity" "sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng==" 627 | "resolved" "https://registry.npmjs.org/create-react-class/-/create-react-class-15.7.0.tgz" 628 | "version" "15.7.0" 629 | dependencies: 630 | "loose-envify" "^1.3.1" 631 | "object-assign" "^4.1.1" 632 | 633 | "crypt@~0.0.1": 634 | "integrity" "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==" 635 | "resolved" "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz" 636 | "version" "0.0.2" 637 | 638 | "dashdash@^1.12.0": 639 | "integrity" "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==" 640 | "resolved" "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" 641 | "version" "1.14.1" 642 | dependencies: 643 | "assert-plus" "^1.0.0" 644 | 645 | "data-uri-to-buffer@1": 646 | "integrity" "sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ==" 647 | "resolved" "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz" 648 | "version" "1.2.0" 649 | 650 | "debug@^3.1.0": 651 | "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" 652 | "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" 653 | "version" "3.2.7" 654 | dependencies: 655 | "ms" "^2.1.1" 656 | 657 | "debug@^4.1.1": 658 | "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" 659 | "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" 660 | "version" "4.3.4" 661 | dependencies: 662 | "ms" "2.1.2" 663 | 664 | "debug@2", "debug@2.6.9": 665 | "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" 666 | "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" 667 | "version" "2.6.9" 668 | dependencies: 669 | "ms" "2.0.0" 670 | 671 | "debug@3.1.0": 672 | "integrity" "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==" 673 | "resolved" "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz" 674 | "version" "3.1.0" 675 | dependencies: 676 | "ms" "2.0.0" 677 | 678 | "decamelize@^1.0.0": 679 | "integrity" "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" 680 | "resolved" "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" 681 | "version" "1.2.0" 682 | 683 | "deep-eql@^3.0.1": 684 | "integrity" "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==" 685 | "resolved" "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz" 686 | "version" "3.0.1" 687 | dependencies: 688 | "type-detect" "^4.0.0" 689 | 690 | "deep-is@~0.1.3": 691 | "integrity" "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" 692 | "resolved" "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" 693 | "version" "0.1.4" 694 | 695 | "degenerator@^1.0.4": 696 | "integrity" "sha512-EMAC+riLSC64jKfOs1jp8J7M4ZXstUUwTdwFBEv6HOzL/Ae+eAzMKEK0nJnpof2fnw9IOjmE6u6qXFejVyk8AA==" 697 | "resolved" "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz" 698 | "version" "1.0.4" 699 | dependencies: 700 | "ast-types" "0.x.x" 701 | "escodegen" "1.x.x" 702 | "esprima" "3.x.x" 703 | 704 | "delayed-stream@~1.0.0": 705 | "integrity" "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" 706 | "resolved" "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" 707 | "version" "1.0.0" 708 | 709 | "depd@~1.1.2": 710 | "integrity" "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" 711 | "resolved" "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" 712 | "version" "1.1.2" 713 | 714 | "depd@2.0.0": 715 | "integrity" "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" 716 | "resolved" "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" 717 | "version" "2.0.0" 718 | 719 | "destroy@1.2.0": 720 | "integrity" "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" 721 | "resolved" "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" 722 | "version" "1.2.0" 723 | 724 | "diff@3.5.0": 725 | "integrity" "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" 726 | "resolved" "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz" 727 | "version" "3.5.0" 728 | 729 | "doctypes@^1.1.0": 730 | "integrity" "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==" 731 | "resolved" "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz" 732 | "version" "1.1.0" 733 | 734 | "ecc-jsbn@~0.1.1": 735 | "integrity" "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==" 736 | "resolved" "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" 737 | "version" "0.1.2" 738 | dependencies: 739 | "jsbn" "~0.1.0" 740 | "safer-buffer" "^2.1.0" 741 | 742 | "ee-first@1.1.1": 743 | "integrity" "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" 744 | "resolved" "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" 745 | "version" "1.1.1" 746 | 747 | "encodeurl@~1.0.2": 748 | "integrity" "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" 749 | "resolved" "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" 750 | "version" "1.0.2" 751 | 752 | "encoding@^0.1.11": 753 | "integrity" "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==" 754 | "resolved" "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" 755 | "version" "0.1.13" 756 | dependencies: 757 | "iconv-lite" "^0.6.2" 758 | 759 | "es6-promise@^3.3.1": 760 | "integrity" "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==" 761 | "resolved" "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz" 762 | "version" "3.3.1" 763 | 764 | "es6-promise@^4.0.3": 765 | "integrity" "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" 766 | "resolved" "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz" 767 | "version" "4.2.8" 768 | 769 | "es6-promisify@^5.0.0": 770 | "integrity" "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==" 771 | "resolved" "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz" 772 | "version" "5.0.0" 773 | dependencies: 774 | "es6-promise" "^4.0.3" 775 | 776 | "es6-promisify@^6.0.0": 777 | "integrity" "sha512-J3ZkwbEnnO+fGAKrjVpeUAnZshAdfZvbhQpqfIH9kSAspReRC4nJnu8ewm55b4y9ElyeuhCTzJD0XiH8Tsbhlw==" 778 | "resolved" "https://registry.npmjs.org/es6-promisify/-/es6-promisify-6.0.1.tgz" 779 | "version" "6.0.1" 780 | 781 | "escape-html@~1.0.3": 782 | "integrity" "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" 783 | "resolved" "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" 784 | "version" "1.0.3" 785 | 786 | "escape-string-regexp@^1.0.5", "escape-string-regexp@1.0.5": 787 | "integrity" "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" 788 | "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" 789 | "version" "1.0.5" 790 | 791 | "escodegen@1.x.x": 792 | "integrity" "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==" 793 | "resolved" "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz" 794 | "version" "1.14.3" 795 | dependencies: 796 | "esprima" "^4.0.1" 797 | "estraverse" "^4.2.0" 798 | "esutils" "^2.0.2" 799 | "optionator" "^0.8.1" 800 | optionalDependencies: 801 | "source-map" "~0.6.1" 802 | 803 | "esprima@^4.0.1": 804 | "integrity" "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" 805 | "resolved" "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" 806 | "version" "4.0.1" 807 | 808 | "esprima@3.x.x": 809 | "integrity" "sha512-AWwVMNxwhN8+NIPQzAQZCm7RkLC4RbM3B1OobMuyp3i+w73X57KCKaVIxaRZb+DYCojq7rspo+fmuQfAboyhFg==" 810 | "resolved" "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz" 811 | "version" "3.1.3" 812 | 813 | "estraverse@^4.2.0": 814 | "integrity" "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" 815 | "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" 816 | "version" "4.3.0" 817 | 818 | "esutils@^2.0.2": 819 | "integrity" "sha512-UUPPULqkyAV+M3Shodis7l8D+IyX6V8SbaBnTb449jf3fMTd8+UOZI1Q70NbZVOQkcR91yYgdHsJiMMMVmYshg==" 820 | "resolved" "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz" 821 | "version" "2.0.2" 822 | 823 | "etag@~1.8.1": 824 | "integrity" "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" 825 | "resolved" "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" 826 | "version" "1.8.1" 827 | 828 | "eventemitter3@^3.0.0": 829 | "integrity" "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" 830 | "resolved" "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz" 831 | "version" "3.1.2" 832 | 833 | "express@^4.16.4", "express@^4.8.5": 834 | "integrity" "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==" 835 | "resolved" "https://registry.npmjs.org/express/-/express-4.18.1.tgz" 836 | "version" "4.18.1" 837 | dependencies: 838 | "accepts" "~1.3.8" 839 | "array-flatten" "1.1.1" 840 | "body-parser" "1.20.0" 841 | "content-disposition" "0.5.4" 842 | "content-type" "~1.0.4" 843 | "cookie" "0.5.0" 844 | "cookie-signature" "1.0.6" 845 | "debug" "2.6.9" 846 | "depd" "2.0.0" 847 | "encodeurl" "~1.0.2" 848 | "escape-html" "~1.0.3" 849 | "etag" "~1.8.1" 850 | "finalhandler" "1.2.0" 851 | "fresh" "0.5.2" 852 | "http-errors" "2.0.0" 853 | "merge-descriptors" "1.0.1" 854 | "methods" "~1.1.2" 855 | "on-finished" "2.4.1" 856 | "parseurl" "~1.3.3" 857 | "path-to-regexp" "0.1.7" 858 | "proxy-addr" "~2.0.7" 859 | "qs" "6.10.3" 860 | "range-parser" "~1.2.1" 861 | "safe-buffer" "5.2.1" 862 | "send" "0.18.0" 863 | "serve-static" "1.15.0" 864 | "setprototypeof" "1.2.0" 865 | "statuses" "2.0.1" 866 | "type-is" "~1.6.18" 867 | "utils-merge" "1.0.1" 868 | "vary" "~1.1.2" 869 | 870 | "extend@^3.0.2", "extend@~3.0.2": 871 | "integrity" "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" 872 | "resolved" "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" 873 | "version" "3.0.2" 874 | 875 | "external-editor@^2.1.0": 876 | "integrity" "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==" 877 | "resolved" "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz" 878 | "version" "2.2.0" 879 | dependencies: 880 | "chardet" "^0.4.0" 881 | "iconv-lite" "^0.4.17" 882 | "tmp" "^0.0.33" 883 | 884 | "extsprintf@^1.2.0", "extsprintf@1.3.0": 885 | "integrity" "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" 886 | "resolved" "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" 887 | "version" "1.3.0" 888 | 889 | "fast-deep-equal@^3.1.1": 890 | "integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" 891 | "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" 892 | "version" "3.1.3" 893 | 894 | "fast-json-stable-stringify@^2.0.0": 895 | "integrity" "sha512-eIgZvM9C3P05kg0qxfqaVU6Tma4QedCPIByQOcemV0vju8ot3cS2DpHi4m2G2JvbSMI152rjfLX0p1pkSdyPlQ==" 896 | "resolved" "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz" 897 | "version" "2.0.0" 898 | 899 | "fast-json-stringify@^0.17.0": 900 | "integrity" "sha512-u6d857jtxcTTm00UIFDO6jCB3R/c0AzH89AxU3rI1twmkVPAHo/riUGH20UaDOMem9YXwcKrnoX6pF2dG3xlHA==" 901 | "resolved" "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-0.17.0.tgz" 902 | "version" "0.17.0" 903 | dependencies: 904 | "ajv" "^6.0.0" 905 | "fast-safe-stringify" "^1.2.1" 906 | 907 | "fast-levenshtein@~2.0.6": 908 | "integrity" "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" 909 | "resolved" "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" 910 | "version" "2.0.6" 911 | 912 | "fast-safe-stringify@^1.2.1": 913 | "integrity" "sha512-QJYT/i0QYoiZBQ71ivxdyTqkwKkQ0oxACXHYxH2zYHJEgzi2LsbjgvtzTbLi1SZcF190Db2YP7I7eTsU2egOlw==" 914 | "resolved" "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-1.2.3.tgz" 915 | "version" "1.2.3" 916 | 917 | "fbjs@^0.8.9": 918 | "integrity" "sha512-EQaWFK+fEPSoibjNy8IxUtaFOMXcWsY0JaVrQoZR9zC8N2Ygf9iDITPWjUTVIax95b6I742JFLqASHfsag/vKA==" 919 | "resolved" "https://registry.npmjs.org/fbjs/-/fbjs-0.8.18.tgz" 920 | "version" "0.8.18" 921 | dependencies: 922 | "core-js" "^1.0.0" 923 | "isomorphic-fetch" "^2.1.1" 924 | "loose-envify" "^1.0.0" 925 | "object-assign" "^4.1.0" 926 | "promise" "^7.1.1" 927 | "setimmediate" "^1.0.5" 928 | "ua-parser-js" "^0.7.30" 929 | 930 | "figures@^2.0.0": 931 | "integrity" "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==" 932 | "resolved" "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz" 933 | "version" "2.0.0" 934 | dependencies: 935 | "escape-string-regexp" "^1.0.5" 936 | 937 | "file-uri-to-path@1": 938 | "integrity" "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" 939 | "resolved" "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz" 940 | "version" "1.0.0" 941 | 942 | "finalhandler@1.2.0": 943 | "integrity" "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==" 944 | "resolved" "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" 945 | "version" "1.2.0" 946 | dependencies: 947 | "debug" "2.6.9" 948 | "encodeurl" "~1.0.2" 949 | "escape-html" "~1.0.3" 950 | "on-finished" "2.4.1" 951 | "parseurl" "~1.3.3" 952 | "statuses" "2.0.1" 953 | "unpipe" "~1.0.0" 954 | 955 | "follow-redirects@^1.0.0": 956 | "integrity" "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==" 957 | "resolved" "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz" 958 | "version" "1.15.1" 959 | 960 | "forever-agent@~0.6.1": 961 | "integrity" "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" 962 | "resolved" "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" 963 | "version" "0.6.1" 964 | 965 | "form-data@^2.5.0": 966 | "integrity" "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==" 967 | "resolved" "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz" 968 | "version" "2.5.1" 969 | dependencies: 970 | "asynckit" "^0.4.0" 971 | "combined-stream" "^1.0.6" 972 | "mime-types" "^2.1.12" 973 | 974 | "form-data@~2.3.2": 975 | "integrity" "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==" 976 | "resolved" "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz" 977 | "version" "2.3.3" 978 | dependencies: 979 | "asynckit" "^0.4.0" 980 | "combined-stream" "^1.0.6" 981 | "mime-types" "^2.1.12" 982 | 983 | "forwarded@0.2.0": 984 | "integrity" "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" 985 | "resolved" "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" 986 | "version" "0.2.0" 987 | 988 | "fresh@0.5.2": 989 | "integrity" "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" 990 | "resolved" "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" 991 | "version" "0.5.2" 992 | 993 | "fs.realpath@^1.0.0": 994 | "integrity" "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" 995 | "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" 996 | "version" "1.0.0" 997 | 998 | "fstream@~0.1.18": 999 | "integrity" "sha512-N1pLGEHoDyCoI8uMmPXJXhn238L4nk41iipXCrqs4Ss0ooYSr5sNj2ucMo5AqJVC4OaOa7IztpBhOaaYTGZVuA==" 1000 | "resolved" "https://registry.npmjs.org/fstream/-/fstream-0.1.31.tgz" 1001 | "version" "0.1.31" 1002 | dependencies: 1003 | "graceful-fs" "~3.0.2" 1004 | "inherits" "~2.0.0" 1005 | "mkdirp" "0.5" 1006 | "rimraf" "2" 1007 | 1008 | "ftp@~0.3.10": 1009 | "integrity" "sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ==" 1010 | "resolved" "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz" 1011 | "version" "0.3.10" 1012 | dependencies: 1013 | "readable-stream" "1.1.x" 1014 | "xregexp" "2.0.0" 1015 | 1016 | "function-bind@^1.1.1": 1017 | "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 1018 | "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" 1019 | "version" "1.1.1" 1020 | 1021 | "geoip-ultralight@0.1.5": 1022 | "integrity" "sha512-tn9XKRgd5y/IEN/ai5rBu9HLxRGzGNIsdre4LqqwfyYsehjrmud0jdx6J0fFLaiCyOspmfQteow5IE2szbOG/A==" 1023 | "resolved" "https://registry.npmjs.org/geoip-ultralight/-/geoip-ultralight-0.1.5.tgz" 1024 | "version" "0.1.5" 1025 | dependencies: 1026 | "async" "~0.1.22" 1027 | "colors" "0.6.0-1" 1028 | "iconv-lite" "~0.2.11" 1029 | "lazy" "~1.0.11" 1030 | "rimraf" "~2.0.2" 1031 | "unzip" "~0.0.4" 1032 | 1033 | "get-func-name@^2.0.0": 1034 | "integrity" "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==" 1035 | "resolved" "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz" 1036 | "version" "2.0.0" 1037 | 1038 | "get-intrinsic@^1.0.2": 1039 | "integrity" "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==" 1040 | "resolved" "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz" 1041 | "version" "1.1.2" 1042 | dependencies: 1043 | "function-bind" "^1.1.1" 1044 | "has" "^1.0.3" 1045 | "has-symbols" "^1.0.3" 1046 | 1047 | "get-uri@^2.0.0": 1048 | "integrity" "sha512-v7LT/s8kVjs+Tx0ykk1I+H/rbpzkHvuIq87LmeXptcf5sNWm9uQiwjNAt94SJPA1zOlCntmnOlJvVWKmzsxG8Q==" 1049 | "resolved" "https://registry.npmjs.org/get-uri/-/get-uri-2.0.4.tgz" 1050 | "version" "2.0.4" 1051 | dependencies: 1052 | "data-uri-to-buffer" "1" 1053 | "debug" "2" 1054 | "extend" "~3.0.2" 1055 | "file-uri-to-path" "1" 1056 | "ftp" "~0.3.10" 1057 | "readable-stream" "2" 1058 | 1059 | "getpass@^0.1.1": 1060 | "integrity" "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==" 1061 | "resolved" "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz" 1062 | "version" "0.1.7" 1063 | dependencies: 1064 | "assert-plus" "^1.0.0" 1065 | 1066 | "glob@7.1.2": 1067 | "integrity" "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==" 1068 | "resolved" "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz" 1069 | "version" "7.1.2" 1070 | dependencies: 1071 | "fs.realpath" "^1.0.0" 1072 | "inflight" "^1.0.4" 1073 | "inherits" "2" 1074 | "minimatch" "^3.0.4" 1075 | "once" "^1.3.0" 1076 | "path-is-absolute" "^1.0.0" 1077 | 1078 | "graceful-fs@~1.1": 1079 | "integrity" "sha512-JUrvoFoQbLZpOZilKTXZX2e1EV0DTnuG5vsRFNFv4mPf/mnYbwNAFw/5x0rxeyaJslIdObGSgTTsMnM/acRaVw==" 1080 | "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.14.tgz" 1081 | "version" "1.1.14" 1082 | 1083 | "graceful-fs@~3.0.2": 1084 | "integrity" "sha512-TUMHqvtdbiU5R8XmiHolgo/9mrFPzGlPSDgw9inIIGpCkOPcG3BmRmPdnVuzbBvWIgmVsJQ8ig2cwIpbtr6+ZA==" 1085 | "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz" 1086 | "version" "3.0.11" 1087 | dependencies: 1088 | "natives" "^1.1.0" 1089 | 1090 | "growl@1.10.5": 1091 | "integrity" "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==" 1092 | "resolved" "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz" 1093 | "version" "1.10.5" 1094 | 1095 | "har-schema@^2.0.0": 1096 | "integrity" "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==" 1097 | "resolved" "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz" 1098 | "version" "2.0.0" 1099 | 1100 | "har-validator@~5.1.3": 1101 | "integrity" "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==" 1102 | "resolved" "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz" 1103 | "version" "5.1.3" 1104 | dependencies: 1105 | "ajv" "^6.5.5" 1106 | "har-schema" "^2.0.0" 1107 | 1108 | "has-flag@^3.0.0": 1109 | "integrity" "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" 1110 | "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" 1111 | "version" "3.0.0" 1112 | 1113 | "has-symbols@^1.0.2", "has-symbols@^1.0.3": 1114 | "integrity" "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" 1115 | "resolved" "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" 1116 | "version" "1.0.3" 1117 | 1118 | "has-tostringtag@^1.0.0": 1119 | "integrity" "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==" 1120 | "resolved" "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" 1121 | "version" "1.0.0" 1122 | dependencies: 1123 | "has-symbols" "^1.0.2" 1124 | 1125 | "has@^1.0.3": 1126 | "integrity" "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==" 1127 | "resolved" "https://registry.npmjs.org/has/-/has-1.0.3.tgz" 1128 | "version" "1.0.3" 1129 | dependencies: 1130 | "function-bind" "^1.1.1" 1131 | 1132 | "he@1.1.1": 1133 | "integrity" "sha512-z/GDPjlRMNOa2XJiB4em8wJpuuBfrFOlYKTZxtpkdr1uPdibHI8rYA3MY0KDObpVyaes0e/aunid/t88ZI2EKA==" 1134 | "resolved" "https://registry.npmjs.org/he/-/he-1.1.1.tgz" 1135 | "version" "1.1.1" 1136 | 1137 | "http-errors@~1.6.3", "http-errors@1.6.3": 1138 | "integrity" "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==" 1139 | "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" 1140 | "version" "1.6.3" 1141 | dependencies: 1142 | "depd" "~1.1.2" 1143 | "inherits" "2.0.3" 1144 | "setprototypeof" "1.1.0" 1145 | "statuses" ">= 1.4.0 < 2" 1146 | 1147 | "http-errors@2.0.0": 1148 | "integrity" "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==" 1149 | "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" 1150 | "version" "2.0.0" 1151 | dependencies: 1152 | "depd" "2.0.0" 1153 | "inherits" "2.0.4" 1154 | "setprototypeof" "1.2.0" 1155 | "statuses" "2.0.1" 1156 | "toidentifier" "1.0.1" 1157 | 1158 | "http-proxy-agent@^2.1.0": 1159 | "integrity" "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==" 1160 | "resolved" "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz" 1161 | "version" "2.1.0" 1162 | dependencies: 1163 | "agent-base" "4" 1164 | "debug" "3.1.0" 1165 | 1166 | "http-proxy@1.17.0": 1167 | "integrity" "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==" 1168 | "resolved" "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz" 1169 | "version" "1.17.0" 1170 | dependencies: 1171 | "eventemitter3" "^3.0.0" 1172 | "follow-redirects" "^1.0.0" 1173 | "requires-port" "^1.0.0" 1174 | 1175 | "http-signature@~1.2.0": 1176 | "integrity" "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==" 1177 | "resolved" "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz" 1178 | "version" "1.2.0" 1179 | dependencies: 1180 | "assert-plus" "^1.0.0" 1181 | "jsprim" "^1.2.2" 1182 | "sshpk" "^1.7.0" 1183 | 1184 | "httpolyglot@0.1.2": 1185 | "integrity" "sha512-ouHI1AaQMLgn4L224527S5+vq6hgvqPteurVfbm7ChViM3He2Wa8KP1Ny7pTYd7QKnDSPKcN8JYfC8r/lmsE3A==" 1186 | "resolved" "https://registry.npmjs.org/httpolyglot/-/httpolyglot-0.1.2.tgz" 1187 | "version" "0.1.2" 1188 | 1189 | "https-proxy-agent@^2.2.1": 1190 | "integrity" "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==" 1191 | "resolved" "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz" 1192 | "version" "2.2.4" 1193 | dependencies: 1194 | "agent-base" "^4.3.0" 1195 | "debug" "^3.1.0" 1196 | 1197 | "https-proxy-agent@^3.0.0": 1198 | "integrity" "sha512-+ML2Rbh6DAuee7d07tYGEKOEi2voWPUGan+ExdPbPW6Z3svq+JCqr0v8WmKPOkz1vOVykPCBSuobe7G8GJUtVg==" 1199 | "resolved" "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz" 1200 | "version" "3.0.1" 1201 | dependencies: 1202 | "agent-base" "^4.3.0" 1203 | "debug" "^3.1.0" 1204 | 1205 | "iconv-lite@^0.4.17", "iconv-lite@^0.4.6", "iconv-lite@0.4.24": 1206 | "integrity" "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==" 1207 | "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" 1208 | "version" "0.4.24" 1209 | dependencies: 1210 | "safer-buffer" ">= 2.1.2 < 3" 1211 | 1212 | "iconv-lite@^0.6.2": 1213 | "integrity" "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==" 1214 | "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" 1215 | "version" "0.6.3" 1216 | dependencies: 1217 | "safer-buffer" ">= 2.1.2 < 3.0.0" 1218 | 1219 | "iconv-lite@~0.2.11": 1220 | "integrity" "sha512-KhmFWgaQZY83Cbhi+ADInoUQ8Etn6BG5fikM9syeOjQltvR45h7cRKJ/9uvQEuD61I3Uju77yYce0/LhKVClQw==" 1221 | "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz" 1222 | "version" "0.2.11" 1223 | 1224 | "iconv-lite@0.4.23": 1225 | "integrity" "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==" 1226 | "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz" 1227 | "version" "0.4.23" 1228 | dependencies: 1229 | "safer-buffer" ">= 2.1.2 < 3" 1230 | 1231 | "immediate@~3.0.5": 1232 | "integrity" "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" 1233 | "resolved" "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz" 1234 | "version" "3.0.6" 1235 | 1236 | "inflight@^1.0.4": 1237 | "integrity" "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==" 1238 | "resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" 1239 | "version" "1.0.6" 1240 | dependencies: 1241 | "once" "^1.3.0" 1242 | "wrappy" "1" 1243 | 1244 | "inherits@~2.0.0", "inherits@~2.0.1", "inherits@~2.0.3", "inherits@2", "inherits@2.0.3": 1245 | "integrity" "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" 1246 | "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" 1247 | "version" "2.0.3" 1248 | 1249 | "inherits@2.0.4": 1250 | "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1251 | "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" 1252 | "version" "2.0.4" 1253 | 1254 | "inquirer@^5.2.0": 1255 | "integrity" "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==" 1256 | "resolved" "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz" 1257 | "version" "5.2.0" 1258 | dependencies: 1259 | "ansi-escapes" "^3.0.0" 1260 | "chalk" "^2.0.0" 1261 | "cli-cursor" "^2.1.0" 1262 | "cli-width" "^2.0.0" 1263 | "external-editor" "^2.1.0" 1264 | "figures" "^2.0.0" 1265 | "lodash" "^4.3.0" 1266 | "mute-stream" "0.0.7" 1267 | "run-async" "^2.2.0" 1268 | "rxjs" "^5.5.2" 1269 | "string-width" "^2.1.0" 1270 | "strip-ansi" "^4.0.0" 1271 | "through" "^2.3.6" 1272 | 1273 | "ip@^0.3.2": 1274 | "integrity" "sha512-VXpBTSFo8wNvJVwCxlncVwd2hYbzX8egxidocX2oKt6H5tJzLjrzG6gTNoHSNsKtIyelb528n/7sa86kqlnNiA==" 1275 | "resolved" "https://registry.npmjs.org/ip/-/ip-0.3.3.tgz" 1276 | "version" "0.3.3" 1277 | 1278 | "ip@^1.1.5": 1279 | "integrity" "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" 1280 | "resolved" "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz" 1281 | "version" "1.1.8" 1282 | 1283 | "ip@1.1.5": 1284 | "integrity" "sha512-rBtCAQAJm8A110nbwn6YdveUnuZH3WrC36IwkRXxDnq53JvXA2NVQvB7IHyKomxK1MJ4VDNw3UtFDdXQ+AvLYA==" 1285 | "resolved" "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz" 1286 | "version" "1.1.5" 1287 | 1288 | "ipaddr.js@1.9.1": 1289 | "integrity" "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" 1290 | "resolved" "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" 1291 | "version" "1.9.1" 1292 | 1293 | "ipv6@*": 1294 | "version" "3.1.1" 1295 | dependencies: 1296 | "cli" "0.4.x" 1297 | "cliff" "0.1.x" 1298 | "sprintf" "0.1.x" 1299 | 1300 | "is-buffer@^1.1.5", "is-buffer@~1.1.1": 1301 | "integrity" "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" 1302 | "resolved" "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" 1303 | "version" "1.1.6" 1304 | 1305 | "is-core-module@^2.9.0": 1306 | "integrity" "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==" 1307 | "resolved" "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz" 1308 | "version" "2.10.0" 1309 | dependencies: 1310 | "has" "^1.0.3" 1311 | 1312 | "is-expression@^3.0.0": 1313 | "integrity" "sha512-vyMeQMq+AiH5uUnoBfMTwf18tO3bM6k1QXBE9D6ueAAquEfCZe3AJPtud9g6qS0+4X8xA7ndpZiDyeb2l2qOBw==" 1314 | "resolved" "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz" 1315 | "version" "3.0.0" 1316 | dependencies: 1317 | "acorn" "~4.0.2" 1318 | "object-assign" "^4.0.1" 1319 | 1320 | "is-fullwidth-code-point@^2.0.0": 1321 | "integrity" "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==" 1322 | "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" 1323 | "version" "2.0.0" 1324 | 1325 | "is-promise@^2.0.0", "is-promise@^2.1.0": 1326 | "integrity" "sha512-NECAi6wp6CgMesHuVUEK8JwjCvm/tvnn5pCbB42JOHp3mgUizN0nagXu4HEqQZBkieGEQ+jVcMKWqoVd6CDbLQ==" 1327 | "resolved" "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz" 1328 | "version" "2.1.0" 1329 | 1330 | "is-regex@^1.0.3": 1331 | "integrity" "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==" 1332 | "resolved" "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" 1333 | "version" "1.1.4" 1334 | dependencies: 1335 | "call-bind" "^1.0.2" 1336 | "has-tostringtag" "^1.0.0" 1337 | 1338 | "is-stream@^1.0.1": 1339 | "integrity" "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==" 1340 | "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" 1341 | "version" "1.1.0" 1342 | 1343 | "is-typedarray@~1.0.0": 1344 | "integrity" "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" 1345 | "resolved" "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" 1346 | "version" "1.0.0" 1347 | 1348 | "isarray@~1.0.0": 1349 | "integrity" "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" 1350 | "resolved" "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" 1351 | "version" "1.0.0" 1352 | 1353 | "isarray@0.0.1": 1354 | "integrity" "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" 1355 | "resolved" "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" 1356 | "version" "0.0.1" 1357 | 1358 | "isexe@^2.0.0": 1359 | "integrity" "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" 1360 | "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" 1361 | "version" "2.0.0" 1362 | 1363 | "isomorphic-fetch@^2.1.1": 1364 | "integrity" "sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA==" 1365 | "resolved" "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz" 1366 | "version" "2.2.1" 1367 | dependencies: 1368 | "node-fetch" "^1.0.1" 1369 | "whatwg-fetch" ">=0.10.0" 1370 | 1371 | "isstream@~0.1.2": 1372 | "integrity" "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" 1373 | "resolved" "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" 1374 | "version" "0.1.2" 1375 | 1376 | "js-stringify@^1.0.1": 1377 | "integrity" "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==" 1378 | "resolved" "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz" 1379 | "version" "1.0.2" 1380 | 1381 | "js-tokens@^3.0.0 || ^4.0.0": 1382 | "integrity" "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 1383 | "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" 1384 | "version" "4.0.0" 1385 | 1386 | "jsbn@~0.1.0": 1387 | "integrity" "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" 1388 | "resolved" "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" 1389 | "version" "0.1.1" 1390 | 1391 | "json-schema-traverse@^0.4.1": 1392 | "integrity" "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" 1393 | "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" 1394 | "version" "0.4.1" 1395 | 1396 | "json-schema@0.4.0": 1397 | "integrity" "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" 1398 | "resolved" "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz" 1399 | "version" "0.4.0" 1400 | 1401 | "json-stringify-safe@~5.0.1": 1402 | "integrity" "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" 1403 | "resolved" "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" 1404 | "version" "5.0.1" 1405 | 1406 | "jsprim@^1.2.2": 1407 | "integrity" "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==" 1408 | "resolved" "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz" 1409 | "version" "1.4.2" 1410 | dependencies: 1411 | "assert-plus" "1.0.0" 1412 | "extsprintf" "1.3.0" 1413 | "json-schema" "0.4.0" 1414 | "verror" "1.10.0" 1415 | 1416 | "jstransformer@1.0.0": 1417 | "integrity" "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==" 1418 | "resolved" "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz" 1419 | "version" "1.0.0" 1420 | dependencies: 1421 | "is-promise" "^2.0.0" 1422 | "promise" "^7.0.1" 1423 | 1424 | "juicer@^0.6.6-stable": 1425 | "integrity" "sha512-E9lXe+Id0RCQE3U0fR8kj/Ryyv5Ypse17dfk/FYmYzk8/mnpUoD8gO5jNGw5o3QHpKbZaBzzXnExzertIRW1Fw==" 1426 | "resolved" "https://registry.npmjs.org/juicer/-/juicer-0.6.15.tgz" 1427 | "version" "0.6.15" 1428 | dependencies: 1429 | "optimist" "~0.3" 1430 | "uglify-js" "~1.2" 1431 | 1432 | "kind-of@^3.0.2": 1433 | "integrity" "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==" 1434 | "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" 1435 | "version" "3.2.2" 1436 | dependencies: 1437 | "is-buffer" "^1.1.5" 1438 | 1439 | "lazy-cache@^1.0.3": 1440 | "integrity" "sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ==" 1441 | "resolved" "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz" 1442 | "version" "1.0.4" 1443 | 1444 | "lazy@~1.0.11": 1445 | "integrity" "sha512-Y+CjUfLmIpoUCCRl0ub4smrYtGGr5AOa2AKOaWelGHOGz33X/Y/KizefGqbkwfz44+cnq/+9habclf8vOmu2LA==" 1446 | "resolved" "https://registry.npmjs.org/lazy/-/lazy-1.0.11.tgz" 1447 | "version" "1.0.11" 1448 | 1449 | "levn@~0.3.0": 1450 | "integrity" "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==" 1451 | "resolved" "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz" 1452 | "version" "0.3.0" 1453 | dependencies: 1454 | "prelude-ls" "~1.1.2" 1455 | "type-check" "~0.3.2" 1456 | 1457 | "lie@3.1.1": 1458 | "integrity" "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==" 1459 | "resolved" "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz" 1460 | "version" "3.1.1" 1461 | dependencies: 1462 | "immediate" "~3.0.5" 1463 | 1464 | "limiter@^1.0.5": 1465 | "integrity" "sha512-zrycnIMsLw/3ZxTbW7HCez56rcFGecWTx5OZNplzcXUUmJLmoYArC6qdJzmAN5BWiNXGcpjhF9RQ1HSv5zebEw==" 1466 | "resolved" "https://registry.npmjs.org/limiter/-/limiter-1.1.3.tgz" 1467 | "version" "1.1.3" 1468 | 1469 | "localforage@^1.3.0": 1470 | "integrity" "sha512-1TulyYfc4udS7ECSBT2vwJksWbkwwTX8BzeUIiq8Y07Riy7bDAAnxDaPU/tWyOVmQAcWJIEIFP9lPfBGqVoPgQ==" 1471 | "resolved" "https://registry.npmjs.org/localforage/-/localforage-1.7.3.tgz" 1472 | "version" "1.7.3" 1473 | dependencies: 1474 | "lie" "3.1.1" 1475 | 1476 | "lodash@^4.17.19": 1477 | "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 1478 | "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" 1479 | "version" "4.17.21" 1480 | 1481 | "lodash@^4.17.4", "lodash@^4.3.0", "lodash@4.17.11": 1482 | "integrity" "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" 1483 | "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz" 1484 | "version" "4.17.11" 1485 | 1486 | "longest@^1.0.1": 1487 | "integrity" "sha512-k+yt5n3l48JU4k8ftnKG6V7u32wyH2NfKzeMto9F/QRE0amxy/LayxwlvjjkZEIzqR+19IrtFO8p5kB9QaYUFg==" 1488 | "resolved" "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz" 1489 | "version" "1.0.1" 1490 | 1491 | "loose-envify@^1.0.0", "loose-envify@^1.1.0", "loose-envify@^1.3.1", "loose-envify@^1.4.0": 1492 | "integrity" "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==" 1493 | "resolved" "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" 1494 | "version" "1.4.0" 1495 | dependencies: 1496 | "js-tokens" "^3.0.0 || ^4.0.0" 1497 | 1498 | "lru-cache@^4.1.2": 1499 | "integrity" "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==" 1500 | "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz" 1501 | "version" "4.1.5" 1502 | dependencies: 1503 | "pseudomap" "^1.0.2" 1504 | "yallist" "^2.1.2" 1505 | 1506 | "md5@^2.2.1": 1507 | "integrity" "sha512-PlGG4z5mBANDGCKsYQe0CaUYHdZYZt8ZPZLmEt+Urf0W4GlpTX4HescwHU+dc9+Z/G/vZKYZYFrwgm9VxK6QOQ==" 1508 | "resolved" "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz" 1509 | "version" "2.2.1" 1510 | dependencies: 1511 | "charenc" "~0.0.1" 1512 | "crypt" "~0.0.1" 1513 | "is-buffer" "~1.1.1" 1514 | 1515 | "media-typer@0.3.0": 1516 | "integrity" "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" 1517 | "resolved" "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" 1518 | "version" "0.3.0" 1519 | 1520 | "merge-descriptors@1.0.1": 1521 | "integrity" "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" 1522 | "resolved" "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" 1523 | "version" "1.0.1" 1524 | 1525 | "methods@~1.1.2": 1526 | "integrity" "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" 1527 | "resolved" "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" 1528 | "version" "1.1.2" 1529 | 1530 | "mime-db@>= 1.36.0 < 2", "mime-db@~1.37.0": 1531 | "integrity" "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==" 1532 | "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz" 1533 | "version" "1.37.0" 1534 | 1535 | "mime-db@~1.23.0": 1536 | "integrity" "sha512-lsX3UhcJITPHDXGOXSglBSPoI2UbcsWMmgX1VTaeXJ11TjjxOSE/DHrCl23zJk75odJc8MVpdZzWxdWt1Csx5Q==" 1537 | "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" 1538 | "version" "1.23.0" 1539 | 1540 | "mime-db@1.52.0": 1541 | "integrity" "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" 1542 | "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" 1543 | "version" "1.52.0" 1544 | 1545 | "mime-types@^2.1.12": 1546 | "integrity" "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==" 1547 | "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" 1548 | "version" "2.1.35" 1549 | dependencies: 1550 | "mime-db" "1.52.0" 1551 | 1552 | "mime-types@~2.1.19": 1553 | "integrity" "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==" 1554 | "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz" 1555 | "version" "2.1.21" 1556 | dependencies: 1557 | "mime-db" "~1.37.0" 1558 | 1559 | "mime-types@~2.1.24": 1560 | "integrity" "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==" 1561 | "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" 1562 | "version" "2.1.35" 1563 | dependencies: 1564 | "mime-db" "1.52.0" 1565 | 1566 | "mime-types@~2.1.34": 1567 | "integrity" "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==" 1568 | "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" 1569 | "version" "2.1.35" 1570 | dependencies: 1571 | "mime-db" "1.52.0" 1572 | 1573 | "mime-types@2.1.11": 1574 | "integrity" "sha512-14dD2ItPaGFLVyhddUE/Rrtg+g7v8RmBLjN5Xsb3fJJLKunoZOw3I3bK6csjoJKjaNjcXo8xob9kHDyOpJfgpg==" 1575 | "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz" 1576 | "version" "2.1.11" 1577 | dependencies: 1578 | "mime-db" "~1.23.0" 1579 | 1580 | "mime@1.6.0": 1581 | "integrity" "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 1582 | "resolved" "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" 1583 | "version" "1.6.0" 1584 | 1585 | "mimic-fn@^1.0.0": 1586 | "integrity" "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" 1587 | "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz" 1588 | "version" "1.2.0" 1589 | 1590 | "minimatch@^3.0.4", "minimatch@3.0.4": 1591 | "integrity" "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==" 1592 | "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" 1593 | "version" "3.0.4" 1594 | dependencies: 1595 | "brace-expansion" "^1.1.7" 1596 | 1597 | "minimist@0.0.8": 1598 | "integrity" "sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q==" 1599 | "resolved" "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" 1600 | "version" "0.0.8" 1601 | 1602 | "mkdirp@~0.5.1", "mkdirp@0.5", "mkdirp@0.5.1": 1603 | "integrity" "sha512-SknJC52obPfGQPnjIkXbmA6+5H15E+fR+E4iR2oQ3zzCLbd7/ONua69R/Gw7AgkTLsRG+r5fzksYwWe1AgTyWA==" 1604 | "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz" 1605 | "version" "0.5.1" 1606 | dependencies: 1607 | "minimist" "0.0.8" 1608 | 1609 | "mocha@5.2.0": 1610 | "integrity" "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==" 1611 | "resolved" "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz" 1612 | "version" "5.2.0" 1613 | dependencies: 1614 | "browser-stdout" "1.3.1" 1615 | "commander" "2.15.1" 1616 | "debug" "3.1.0" 1617 | "diff" "3.5.0" 1618 | "escape-string-regexp" "1.0.5" 1619 | "glob" "7.1.2" 1620 | "growl" "1.10.5" 1621 | "he" "1.1.1" 1622 | "minimatch" "3.0.4" 1623 | "mkdirp" "0.5.1" 1624 | "supports-color" "5.4.0" 1625 | 1626 | "moment@^2.15.1": 1627 | "integrity" "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" 1628 | "resolved" "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz" 1629 | "version" "2.29.4" 1630 | 1631 | "ms@^2.1.1": 1632 | "integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 1633 | "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" 1634 | "version" "2.1.3" 1635 | 1636 | "ms@2.0.0": 1637 | "integrity" "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" 1638 | "resolved" "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" 1639 | "version" "2.0.0" 1640 | 1641 | "ms@2.1.2": 1642 | "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1643 | "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" 1644 | "version" "2.1.2" 1645 | 1646 | "ms@2.1.3": 1647 | "integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 1648 | "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" 1649 | "version" "2.1.3" 1650 | 1651 | "mute-stream@0.0.7": 1652 | "integrity" "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==" 1653 | "resolved" "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz" 1654 | "version" "0.0.7" 1655 | 1656 | "natives@^1.1.0": 1657 | "integrity" "sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA==" 1658 | "resolved" "https://registry.npmjs.org/natives/-/natives-1.1.6.tgz" 1659 | "version" "1.1.6" 1660 | 1661 | "nedb@^1.8.0": 1662 | "integrity" "sha512-ip7BJdyb5m+86ZbSb4y10FCCW9g35+U8bDRrZlAfCI6m4dKwEsQ5M52grcDcVK4Vm/vnPlDLywkyo3GliEkb5A==" 1663 | "resolved" "https://registry.npmjs.org/nedb/-/nedb-1.8.0.tgz" 1664 | "version" "1.8.0" 1665 | dependencies: 1666 | "async" "0.2.10" 1667 | "binary-search-tree" "0.2.5" 1668 | "localforage" "^1.3.0" 1669 | "mkdirp" "~0.5.1" 1670 | "underscore" "~1.4.4" 1671 | 1672 | "negotiator@0.6.3": 1673 | "integrity" "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" 1674 | "resolved" "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" 1675 | "version" "0.6.3" 1676 | 1677 | "netmask@^1.0.6": 1678 | "integrity" "sha512-3DWDqAtIiPSkBXZyYEjwebfK56nrlQfRGt642fu8RPaL+ePu750+HCMHxjJCG3iEHq/0aeMvX6KIzlv7nuhfrA==" 1679 | "resolved" "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz" 1680 | "version" "1.0.6" 1681 | 1682 | "node-easy-cert@^1.0.0": 1683 | "integrity" "sha512-deh43tQa2Ae0bLABFyDn6ISOgm+dEo1NM/FS3K1QHfNJjITnqetEJgO/hlaCxFaB9RRpKR6FmtTO7AqjxwX14g==" 1684 | "resolved" "https://registry.npmjs.org/node-easy-cert/-/node-easy-cert-1.3.3.tgz" 1685 | "version" "1.3.3" 1686 | dependencies: 1687 | "async-task-mgr" "^1.1.0" 1688 | "colorful" "^2.1.0" 1689 | "commander" "^2.9.0" 1690 | "node-forge" "^0.6.42" 1691 | "node-powershell" "^3.3.1" 1692 | 1693 | "node-fetch@^1.0.1": 1694 | "integrity" "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==" 1695 | "resolved" "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz" 1696 | "version" "1.7.3" 1697 | dependencies: 1698 | "encoding" "^0.1.11" 1699 | "is-stream" "^1.0.1" 1700 | 1701 | "node-forge@^0.6.42": 1702 | "integrity" "sha512-8632osJqcHqlbmdWOvngqc0T0YV+MLSPsHFpGiQGXPe1wjhcVY3srKQOLkpypyl8w0Q5rbqzTy9Wc0hs3NSWyg==" 1703 | "resolved" "https://registry.npmjs.org/node-forge/-/node-forge-0.6.49.tgz" 1704 | "version" "0.6.49" 1705 | 1706 | "node-powershell@^3.3.1": 1707 | "integrity" "sha512-HM9MYsI6hkDUXsx+21p52CMzhViiOxe7D9rzPigNxKFGFvyFVrkbQCPKKQwhB/uTX4IvEHMoAdMExp/aYOAOow==" 1708 | "resolved" "https://registry.npmjs.org/node-powershell/-/node-powershell-3.3.1.tgz" 1709 | "version" "3.3.1" 1710 | dependencies: 1711 | "bluebird" "^3.5.1" 1712 | "chalk" "^2.1.0" 1713 | 1714 | "oauth-sign@~0.9.0": 1715 | "integrity" "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" 1716 | "resolved" "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz" 1717 | "version" "0.9.0" 1718 | 1719 | "object-assign@^4.0.1", "object-assign@^4.1.0", "object-assign@^4.1.1": 1720 | "integrity" "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" 1721 | "resolved" "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" 1722 | "version" "4.1.1" 1723 | 1724 | "object-inspect@^1.9.0": 1725 | "integrity" "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" 1726 | "resolved" "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz" 1727 | "version" "1.12.2" 1728 | 1729 | "on-finished@~2.3.0": 1730 | "integrity" "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==" 1731 | "resolved" "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" 1732 | "version" "2.3.0" 1733 | dependencies: 1734 | "ee-first" "1.1.1" 1735 | 1736 | "on-finished@2.4.1": 1737 | "integrity" "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==" 1738 | "resolved" "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" 1739 | "version" "2.4.1" 1740 | dependencies: 1741 | "ee-first" "1.1.1" 1742 | 1743 | "on-headers@~1.0.1": 1744 | "integrity" "sha512-Hmfug855QMIrXA8SCoblfPRTzkGwAOMaSygo5hN2fC5Se2YJLJGPaC0wytTWMAplYipqVY9FZQLKGQjwqoYyqA==" 1745 | "resolved" "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz" 1746 | "version" "1.0.1" 1747 | 1748 | "once@^1.3.0": 1749 | "integrity" "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==" 1750 | "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz" 1751 | "version" "1.4.0" 1752 | dependencies: 1753 | "wrappy" "1" 1754 | 1755 | "onetime@^2.0.0": 1756 | "integrity" "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==" 1757 | "resolved" "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz" 1758 | "version" "2.0.1" 1759 | dependencies: 1760 | "mimic-fn" "^1.0.0" 1761 | 1762 | "optimist@~0.3": 1763 | "integrity" "sha512-TCx0dXQzVtSCg2OgY/bO9hjM9cV4XYx09TVK+s3+FhkjT6LovsLe+pPMzpWf+6yXK/hUizs2gUoTw3jHM0VaTQ==" 1764 | "resolved" "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz" 1765 | "version" "0.3.7" 1766 | dependencies: 1767 | "wordwrap" "~0.0.2" 1768 | 1769 | "optionator@^0.8.1": 1770 | "integrity" "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==" 1771 | "resolved" "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz" 1772 | "version" "0.8.3" 1773 | dependencies: 1774 | "deep-is" "~0.1.3" 1775 | "fast-levenshtein" "~2.0.6" 1776 | "levn" "~0.3.0" 1777 | "prelude-ls" "~1.1.2" 1778 | "type-check" "~0.3.2" 1779 | "word-wrap" "~1.2.3" 1780 | 1781 | "os-tmpdir@^1.0.1", "os-tmpdir@~1.0.2": 1782 | "integrity" "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==" 1783 | "resolved" "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" 1784 | "version" "1.0.2" 1785 | 1786 | "over@~0.0.5": 1787 | "integrity" "sha512-EEc3GCT5ce2VgLYKGeomTSgQT+4wkS13Ya9XzKiskHtemWPx0YhVErn7PtiowTOsYtRlFe6FksgwFeWG1aOJdg==" 1788 | "resolved" "https://registry.npmjs.org/over/-/over-0.0.5.tgz" 1789 | "version" "0.0.5" 1790 | 1791 | "pac-proxy-agent@^3.0.0": 1792 | "integrity" "sha512-44DUg21G/liUZ48dJpUSjZnFfZro/0K5JTyFYLBcmh9+T6Ooi4/i4efwUiEy0+4oQusCBqWdhv16XohIj1GqnQ==" 1793 | "resolved" "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-3.0.1.tgz" 1794 | "version" "3.0.1" 1795 | dependencies: 1796 | "agent-base" "^4.2.0" 1797 | "debug" "^4.1.1" 1798 | "get-uri" "^2.0.0" 1799 | "http-proxy-agent" "^2.1.0" 1800 | "https-proxy-agent" "^3.0.0" 1801 | "pac-resolver" "^3.0.0" 1802 | "raw-body" "^2.2.0" 1803 | "socks-proxy-agent" "^4.0.1" 1804 | 1805 | "pac-resolver@^3.0.0": 1806 | "integrity" "sha512-tcc38bsjuE3XZ5+4vP96OfhOugrX+JcnpUbhfuc4LuXBLQhoTthOstZeoQJBDnQUDYzYmdImKsbz0xSl1/9qeA==" 1807 | "resolved" "https://registry.npmjs.org/pac-resolver/-/pac-resolver-3.0.0.tgz" 1808 | "version" "3.0.0" 1809 | dependencies: 1810 | "co" "^4.6.0" 1811 | "degenerator" "^1.0.4" 1812 | "ip" "^1.1.5" 1813 | "netmask" "^1.0.6" 1814 | "thunkify" "^2.1.2" 1815 | 1816 | "parseurl@~1.3.3": 1817 | "integrity" "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 1818 | "resolved" "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" 1819 | "version" "1.3.3" 1820 | 1821 | "path-is-absolute@^1.0.0": 1822 | "integrity" "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" 1823 | "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" 1824 | "version" "1.0.1" 1825 | 1826 | "path-parse@^1.0.7": 1827 | "integrity" "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" 1828 | "resolved" "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" 1829 | "version" "1.0.7" 1830 | 1831 | "path-to-regexp@0.1.7": 1832 | "integrity" "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" 1833 | "resolved" "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" 1834 | "version" "0.1.7" 1835 | 1836 | "pathval@^1.1.0": 1837 | "integrity" "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==" 1838 | "resolved" "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz" 1839 | "version" "1.1.1" 1840 | 1841 | "pem@1.13.2": 1842 | "integrity" "sha512-MPJWuEb/r6AG+GpZi2JnfNtGAZDeL/8+ERKwXEWRuST5i+4lq/Uy36B352OWIUSPQGH+HR1HEDcIDi+8cKxXNg==" 1843 | "resolved" "https://registry.npmjs.org/pem/-/pem-1.13.2.tgz" 1844 | "version" "1.13.2" 1845 | dependencies: 1846 | "es6-promisify" "^6.0.0" 1847 | "md5" "^2.2.1" 1848 | "os-tmpdir" "^1.0.1" 1849 | "which" "^1.3.1" 1850 | 1851 | "performance-now@^2.1.0": 1852 | "integrity" "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" 1853 | "resolved" "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" 1854 | "version" "2.1.0" 1855 | 1856 | "prelude-ls@~1.1.2": 1857 | "integrity" "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==" 1858 | "resolved" "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" 1859 | "version" "1.1.2" 1860 | 1861 | "prettier@2.7.1": 1862 | "integrity" "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==" 1863 | "resolved" "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz" 1864 | "version" "2.7.1" 1865 | 1866 | "process-nextick-args@~2.0.0": 1867 | "integrity" "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" 1868 | "resolved" "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" 1869 | "version" "2.0.1" 1870 | 1871 | "promise-timeout@^1.3.0": 1872 | "integrity" "sha512-5yANTE0tmi5++POym6OgtFmwfDvOXABD9oj/jLQr5GPEyuNEb7jH4wbbANJceJid49jwhi1RddxnhnEAb/doqg==" 1873 | "resolved" "https://registry.npmjs.org/promise-timeout/-/promise-timeout-1.3.0.tgz" 1874 | "version" "1.3.0" 1875 | 1876 | "promise@^7.0.1", "promise@^7.1.1": 1877 | "integrity" "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==" 1878 | "resolved" "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz" 1879 | "version" "7.3.1" 1880 | dependencies: 1881 | "asap" "~2.0.3" 1882 | 1883 | "prop-types@^15.5.10": 1884 | "integrity" "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==" 1885 | "resolved" "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" 1886 | "version" "15.8.1" 1887 | dependencies: 1888 | "loose-envify" "^1.4.0" 1889 | "object-assign" "^4.1.1" 1890 | "react-is" "^16.13.1" 1891 | 1892 | "proxy-addr@~2.0.7": 1893 | "integrity" "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==" 1894 | "resolved" "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" 1895 | "version" "2.0.7" 1896 | dependencies: 1897 | "forwarded" "0.2.0" 1898 | "ipaddr.js" "1.9.1" 1899 | 1900 | "proxy-agent@3.0.3": 1901 | "integrity" "sha512-PXVVVuH9tiQuxQltFJVSnXWuDtNr+8aNBP6XVDDCDiUuDN8eRCm+ii4/mFWmXWEA0w8jjJSlePa4LXlM4jIzNA==" 1902 | "resolved" "https://registry.npmjs.org/proxy-agent/-/proxy-agent-3.0.3.tgz" 1903 | "version" "3.0.3" 1904 | dependencies: 1905 | "agent-base" "^4.2.0" 1906 | "debug" "^3.1.0" 1907 | "http-proxy-agent" "^2.1.0" 1908 | "https-proxy-agent" "^2.2.1" 1909 | "lru-cache" "^4.1.2" 1910 | "pac-proxy-agent" "^3.0.0" 1911 | "proxy-from-env" "^1.0.0" 1912 | "socks-proxy-agent" "^4.0.1" 1913 | 1914 | "proxy-from-env@^1.0.0": 1915 | "integrity" "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==" 1916 | "resolved" "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz" 1917 | "version" "1.0.0" 1918 | 1919 | "pseudomap@^1.0.2": 1920 | "integrity" "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" 1921 | "resolved" "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz" 1922 | "version" "1.0.2" 1923 | 1924 | "psl@^1.1.28": 1925 | "integrity" "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==" 1926 | "resolved" "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz" 1927 | "version" "1.1.29" 1928 | 1929 | "pug-attrs@^2.0.4": 1930 | "integrity" "sha512-TaZ4Z2TWUPDJcV3wjU3RtUXMrd3kM4Wzjbe3EWnSsZPsJ3LDI0F3yCnf2/W7PPFF+edUFQ0HgDL1IoxSz5K8EQ==" 1931 | "resolved" "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.4.tgz" 1932 | "version" "2.0.4" 1933 | dependencies: 1934 | "constantinople" "^3.0.1" 1935 | "js-stringify" "^1.0.1" 1936 | "pug-runtime" "^2.0.5" 1937 | 1938 | "pug-code-gen@^2.0.2": 1939 | "integrity" "sha512-r9sezXdDuZJfW9J91TN/2LFbiqDhmltTFmGpHTsGdrNGp3p4SxAjjXEfnuK2e4ywYsRIVP0NeLbSAMHUcaX1EA==" 1940 | "resolved" "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.3.tgz" 1941 | "version" "2.0.3" 1942 | dependencies: 1943 | "constantinople" "^3.1.2" 1944 | "doctypes" "^1.1.0" 1945 | "js-stringify" "^1.0.1" 1946 | "pug-attrs" "^2.0.4" 1947 | "pug-error" "^1.3.3" 1948 | "pug-runtime" "^2.0.5" 1949 | "void-elements" "^2.0.1" 1950 | "with" "^5.0.0" 1951 | 1952 | "pug-error@^1.3.3": 1953 | "integrity" "sha512-qE3YhESP2mRAWMFJgKdtT5D7ckThRScXRwkfo+Erqga7dyJdY3ZquspprMCj/9sJ2ijm5hXFWQE/A3l4poMWiQ==" 1954 | "resolved" "https://registry.npmjs.org/pug-error/-/pug-error-1.3.3.tgz" 1955 | "version" "1.3.3" 1956 | 1957 | "pug-filters@^3.1.1": 1958 | "integrity" "sha512-lFfjNyGEyVWC4BwX0WyvkoWLapI5xHSM3xZJFUhx4JM4XyyRdO8Aucc6pCygnqV2uSgJFaJWW3Ft1wCWSoQkQg==" 1959 | "resolved" "https://registry.npmjs.org/pug-filters/-/pug-filters-3.1.1.tgz" 1960 | "version" "3.1.1" 1961 | dependencies: 1962 | "clean-css" "^4.1.11" 1963 | "constantinople" "^3.0.1" 1964 | "jstransformer" "1.0.0" 1965 | "pug-error" "^1.3.3" 1966 | "pug-walk" "^1.1.8" 1967 | "resolve" "^1.1.6" 1968 | "uglify-js" "^2.6.1" 1969 | 1970 | "pug-lexer@^4.1.0": 1971 | "integrity" "sha512-i55yzEBtjm0mlplW4LoANq7k3S8gDdfC6+LThGEvsK4FuobcKfDAwt6V4jKPH9RtiE3a2Akfg5UpafZ1OksaPA==" 1972 | "resolved" "https://registry.npmjs.org/pug-lexer/-/pug-lexer-4.1.0.tgz" 1973 | "version" "4.1.0" 1974 | dependencies: 1975 | "character-parser" "^2.1.1" 1976 | "is-expression" "^3.0.0" 1977 | "pug-error" "^1.3.3" 1978 | 1979 | "pug-linker@^3.0.6": 1980 | "integrity" "sha512-bagfuHttfQOpANGy1Y6NJ+0mNb7dD2MswFG2ZKj22s8g0wVsojpRlqveEQHmgXXcfROB2RT6oqbPYr9EN2ZWzg==" 1981 | "resolved" "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.6.tgz" 1982 | "version" "3.0.6" 1983 | dependencies: 1984 | "pug-error" "^1.3.3" 1985 | "pug-walk" "^1.1.8" 1986 | 1987 | "pug-load@^2.0.12": 1988 | "integrity" "sha512-UqpgGpyyXRYgJs/X60sE6SIf8UBsmcHYKNaOccyVLEuT6OPBIMo6xMPhoJnqtB3Q3BbO4Z3Bjz5qDsUWh4rXsg==" 1989 | "resolved" "https://registry.npmjs.org/pug-load/-/pug-load-2.0.12.tgz" 1990 | "version" "2.0.12" 1991 | dependencies: 1992 | "object-assign" "^4.1.0" 1993 | "pug-walk" "^1.1.8" 1994 | 1995 | "pug-parser@^5.0.1": 1996 | "integrity" "sha512-nGHqK+w07p5/PsPIyzkTQfzlYfuqoiGjaoqHv1LjOv2ZLXmGX1O+4Vcvps+P4LhxZ3drYSljjq4b+Naid126wA==" 1997 | "resolved" "https://registry.npmjs.org/pug-parser/-/pug-parser-5.0.1.tgz" 1998 | "version" "5.0.1" 1999 | dependencies: 2000 | "pug-error" "^1.3.3" 2001 | "token-stream" "0.0.1" 2002 | 2003 | "pug-runtime@^2.0.5": 2004 | "integrity" "sha512-P+rXKn9un4fQY77wtpcuFyvFaBww7/91f3jHa154qU26qFAnOe6SW1CbIDcxiG5lLK9HazYrMCCuDvNgDQNptw==" 2005 | "resolved" "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.5.tgz" 2006 | "version" "2.0.5" 2007 | 2008 | "pug-strip-comments@^1.0.4": 2009 | "integrity" "sha512-i5j/9CS4yFhSxHp5iKPHwigaig/VV9g+FgReLJWWHEHbvKsbqL0oP/K5ubuLco6Wu3Kan5p7u7qk8A4oLLh6vw==" 2010 | "resolved" "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.4.tgz" 2011 | "version" "1.0.4" 2012 | dependencies: 2013 | "pug-error" "^1.3.3" 2014 | 2015 | "pug-walk@^1.1.8": 2016 | "integrity" "sha512-GMu3M5nUL3fju4/egXwZO0XLi6fW/K3T3VTgFQ14GxNi8btlxgT5qZL//JwZFm/2Fa64J/PNS8AZeys3wiMkVA==" 2017 | "resolved" "https://registry.npmjs.org/pug-walk/-/pug-walk-1.1.8.tgz" 2018 | "version" "1.1.8" 2019 | 2020 | "pug@^2.0.0-beta6": 2021 | "integrity" "sha512-XhoaDlvi6NIzL49nu094R2NA6P37ijtgMDuWE+ofekDChvfKnzFal60bhSdiy8y2PBO6fmz3oMEIcfpBVRUdvw==" 2022 | "resolved" "https://registry.npmjs.org/pug/-/pug-2.0.4.tgz" 2023 | "version" "2.0.4" 2024 | dependencies: 2025 | "pug-code-gen" "^2.0.2" 2026 | "pug-filters" "^3.1.1" 2027 | "pug-lexer" "^4.1.0" 2028 | "pug-linker" "^3.0.6" 2029 | "pug-load" "^2.0.12" 2030 | "pug-parser" "^5.0.1" 2031 | "pug-runtime" "^2.0.5" 2032 | "pug-strip-comments" "^1.0.4" 2033 | 2034 | "pullstream@0.0.4": 2035 | "integrity" "sha512-ET1hQQRgJDXX03dJodIZ0EKCMRFiJb1hzTXBQJqt4A9H71UCRz2Pa3ZwJaPh18dqPU6O6oLailVtYjZP9DFoZA==" 2036 | "resolved" "https://registry.npmjs.org/pullstream/-/pullstream-0.0.4.tgz" 2037 | "version" "0.0.4" 2038 | dependencies: 2039 | "over" "~0.0.5" 2040 | "stream-buffers" "~0.2.3" 2041 | 2042 | "punycode@^2.1.0", "punycode@^2.1.1": 2043 | "integrity" "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" 2044 | "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" 2045 | "version" "2.1.1" 2046 | 2047 | "qrcode-npm@0.0.3": 2048 | "integrity" "sha512-5LyJEyLimmjDeIBiI8omZEtWrlXj6TCjzJdNTucmUMUUy+F/mF4ZA1rmGz0xNOh6w+L9dZQRRRhoOsmfTWsFYQ==" 2049 | "resolved" "https://registry.npmjs.org/qrcode-npm/-/qrcode-npm-0.0.3.tgz" 2050 | "version" "0.0.3" 2051 | 2052 | "qs@~6.5.2", "qs@6.5.2": 2053 | "integrity" "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" 2054 | "resolved" "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz" 2055 | "version" "6.5.2" 2056 | 2057 | "qs@6.10.3": 2058 | "integrity" "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==" 2059 | "resolved" "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz" 2060 | "version" "6.10.3" 2061 | dependencies: 2062 | "side-channel" "^1.0.4" 2063 | 2064 | "range-parser@~1.2.1": 2065 | "integrity" "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 2066 | "resolved" "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" 2067 | "version" "1.2.1" 2068 | 2069 | "raw-body@^2.2.0", "raw-body@2.3.3": 2070 | "integrity" "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==" 2071 | "resolved" "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz" 2072 | "version" "2.3.3" 2073 | dependencies: 2074 | "bytes" "3.0.0" 2075 | "http-errors" "1.6.3" 2076 | "iconv-lite" "0.4.23" 2077 | "unpipe" "1.0.0" 2078 | 2079 | "raw-body@2.5.1": 2080 | "integrity" "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==" 2081 | "resolved" "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" 2082 | "version" "2.5.1" 2083 | dependencies: 2084 | "bytes" "3.1.2" 2085 | "http-errors" "2.0.0" 2086 | "iconv-lite" "0.4.24" 2087 | "unpipe" "1.0.0" 2088 | 2089 | "react-is@^16.13.1": 2090 | "integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" 2091 | "resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" 2092 | "version" "16.13.1" 2093 | 2094 | "react@^0.14.0 || ^15.0.0": 2095 | "integrity" "sha512-5/MMRYmpmM0sMTHGLossnJCrmXQIiJilD6y3YN3TzAwGFj6zdnMtFv6xmi65PHKRV+pehIHpT7oy67Sr6s9AHA==" 2096 | "resolved" "https://registry.npmjs.org/react/-/react-15.7.0.tgz" 2097 | "version" "15.7.0" 2098 | dependencies: 2099 | "create-react-class" "^15.6.0" 2100 | "fbjs" "^0.8.9" 2101 | "loose-envify" "^1.1.0" 2102 | "object-assign" "^4.1.0" 2103 | "prop-types" "^15.5.10" 2104 | 2105 | "readable-stream@1.1.x": 2106 | "integrity" "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==" 2107 | "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz" 2108 | "version" "1.1.14" 2109 | dependencies: 2110 | "core-util-is" "~1.0.0" 2111 | "inherits" "~2.0.1" 2112 | "isarray" "0.0.1" 2113 | "string_decoder" "~0.10.x" 2114 | 2115 | "readable-stream@2": 2116 | "integrity" "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==" 2117 | "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" 2118 | "version" "2.3.7" 2119 | dependencies: 2120 | "core-util-is" "~1.0.0" 2121 | "inherits" "~2.0.3" 2122 | "isarray" "~1.0.0" 2123 | "process-nextick-args" "~2.0.0" 2124 | "safe-buffer" "~5.1.1" 2125 | "string_decoder" "~1.1.1" 2126 | "util-deprecate" "~1.0.1" 2127 | 2128 | "regenerator-runtime@^0.11.0": 2129 | "integrity" "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" 2130 | "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz" 2131 | "version" "0.11.1" 2132 | 2133 | "repeat-string@^1.5.2": 2134 | "integrity" "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==" 2135 | "resolved" "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" 2136 | "version" "1.6.1" 2137 | 2138 | "request-promise-core@1.1.4": 2139 | "integrity" "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==" 2140 | "resolved" "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz" 2141 | "version" "1.1.4" 2142 | dependencies: 2143 | "lodash" "^4.17.19" 2144 | 2145 | "request-promise-native@1.0.9": 2146 | "integrity" "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==" 2147 | "resolved" "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz" 2148 | "version" "1.0.9" 2149 | dependencies: 2150 | "request-promise-core" "1.1.4" 2151 | "stealthy-require" "^1.1.1" 2152 | "tough-cookie" "^2.3.3" 2153 | 2154 | "request@^2.34", "request@^2.74.0", "request@2.88.2": 2155 | "integrity" "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==" 2156 | "resolved" "https://registry.npmjs.org/request/-/request-2.88.2.tgz" 2157 | "version" "2.88.2" 2158 | dependencies: 2159 | "aws-sign2" "~0.7.0" 2160 | "aws4" "^1.8.0" 2161 | "caseless" "~0.12.0" 2162 | "combined-stream" "~1.0.6" 2163 | "extend" "~3.0.2" 2164 | "forever-agent" "~0.6.1" 2165 | "form-data" "~2.3.2" 2166 | "har-validator" "~5.1.3" 2167 | "http-signature" "~1.2.0" 2168 | "is-typedarray" "~1.0.0" 2169 | "isstream" "~0.1.2" 2170 | "json-stringify-safe" "~5.0.1" 2171 | "mime-types" "~2.1.19" 2172 | "oauth-sign" "~0.9.0" 2173 | "performance-now" "^2.1.0" 2174 | "qs" "~6.5.2" 2175 | "safe-buffer" "^5.1.2" 2176 | "tough-cookie" "~2.5.0" 2177 | "tunnel-agent" "^0.6.0" 2178 | "uuid" "^3.3.2" 2179 | 2180 | "requires-port@^1.0.0": 2181 | "integrity" "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" 2182 | "resolved" "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" 2183 | "version" "1.0.0" 2184 | 2185 | "resolve@^1.1.6": 2186 | "integrity" "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==" 2187 | "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz" 2188 | "version" "1.22.1" 2189 | dependencies: 2190 | "is-core-module" "^2.9.0" 2191 | "path-parse" "^1.0.7" 2192 | "supports-preserve-symlinks-flag" "^1.0.0" 2193 | 2194 | "restore-cursor@^2.0.0": 2195 | "integrity" "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==" 2196 | "resolved" "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz" 2197 | "version" "2.0.0" 2198 | dependencies: 2199 | "onetime" "^2.0.0" 2200 | "signal-exit" "^3.0.2" 2201 | 2202 | "right-align@^0.1.1": 2203 | "integrity" "sha512-yqINtL/G7vs2v+dFIZmFUDbnVyFUJFKd6gK22Kgo6R4jfJGFtisKyncWDDULgjfqf4ASQuIQyjJ7XZ+3aWpsAg==" 2204 | "resolved" "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz" 2205 | "version" "0.1.3" 2206 | dependencies: 2207 | "align-text" "^0.1.1" 2208 | 2209 | "rimraf@~2.0.2", "rimraf@2": 2210 | "integrity" "sha512-uR09PSoW2+1hW0hquRqxb+Ae2h6R5ls3OAy2oNekQFtqbSJkltkhKRa+OhZKoxWsN9195Gp1vg7sELDRoJ8a3w==" 2211 | "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.0.3.tgz" 2212 | "version" "2.0.3" 2213 | optionalDependencies: 2214 | "graceful-fs" "~1.1" 2215 | 2216 | "run-async@^2.2.0": 2217 | "integrity" "sha512-Fx+QT3fGtS0jk8OvKyKgAB2YHPsrmqBRcMeTC5AZ+lp4vzXKPPrFSY3iLdgvjA3HVBkIvJeM6J80LRjx8bQwhA==" 2218 | "resolved" "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz" 2219 | "version" "2.3.0" 2220 | dependencies: 2221 | "is-promise" "^2.1.0" 2222 | 2223 | "rxjs@^5.5.2": 2224 | "integrity" "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==" 2225 | "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz" 2226 | "version" "5.5.12" 2227 | dependencies: 2228 | "symbol-observable" "1.0.1" 2229 | 2230 | "safe-buffer@^5.0.1", "safe-buffer@^5.1.2", "safe-buffer@~5.1.0", "safe-buffer@~5.1.1", "safe-buffer@5.1.2": 2231 | "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 2232 | "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" 2233 | "version" "5.1.2" 2234 | 2235 | "safe-buffer@5.2.1": 2236 | "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 2237 | "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" 2238 | "version" "5.2.1" 2239 | 2240 | "safer-buffer@^2.0.2", "safer-buffer@^2.1.0", "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", "safer-buffer@~2.1.0": 2241 | "integrity" "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 2242 | "resolved" "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" 2243 | "version" "2.1.2" 2244 | 2245 | "send@0.18.0": 2246 | "integrity" "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==" 2247 | "resolved" "https://registry.npmjs.org/send/-/send-0.18.0.tgz" 2248 | "version" "0.18.0" 2249 | dependencies: 2250 | "debug" "2.6.9" 2251 | "depd" "2.0.0" 2252 | "destroy" "1.2.0" 2253 | "encodeurl" "~1.0.2" 2254 | "escape-html" "~1.0.3" 2255 | "etag" "~1.8.1" 2256 | "fresh" "0.5.2" 2257 | "http-errors" "2.0.0" 2258 | "mime" "1.6.0" 2259 | "ms" "2.1.3" 2260 | "on-finished" "2.4.1" 2261 | "range-parser" "~1.2.1" 2262 | "statuses" "2.0.1" 2263 | 2264 | "serve-static@1.15.0": 2265 | "integrity" "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==" 2266 | "resolved" "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" 2267 | "version" "1.15.0" 2268 | dependencies: 2269 | "encodeurl" "~1.0.2" 2270 | "escape-html" "~1.0.3" 2271 | "parseurl" "~1.3.3" 2272 | "send" "0.18.0" 2273 | 2274 | "setimmediate@^1.0.5": 2275 | "integrity" "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" 2276 | "resolved" "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" 2277 | "version" "1.0.5" 2278 | 2279 | "setprototypeof@1.1.0": 2280 | "integrity" "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" 2281 | "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz" 2282 | "version" "1.1.0" 2283 | 2284 | "setprototypeof@1.2.0": 2285 | "integrity" "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 2286 | "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" 2287 | "version" "1.2.0" 2288 | 2289 | "side-channel@^1.0.4": 2290 | "integrity" "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==" 2291 | "resolved" "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" 2292 | "version" "1.0.4" 2293 | dependencies: 2294 | "call-bind" "^1.0.0" 2295 | "get-intrinsic" "^1.0.2" 2296 | "object-inspect" "^1.9.0" 2297 | 2298 | "signal-exit@^3.0.2": 2299 | "integrity" "sha512-meQNNykwecVxdu1RlYMKpQx4+wefIYpmxi6gexo/KAbwquJrBUrBmKYJrE8KFkVQAAVWEnwNdu21PgrD77J3xA==" 2300 | "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz" 2301 | "version" "3.0.2" 2302 | 2303 | "smart-buffer@^4.1.0": 2304 | "integrity" "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" 2305 | "resolved" "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz" 2306 | "version" "4.2.0" 2307 | 2308 | "socks-proxy-agent@^4.0.1": 2309 | "integrity" "sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==" 2310 | "resolved" "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz" 2311 | "version" "4.0.2" 2312 | dependencies: 2313 | "agent-base" "~4.2.1" 2314 | "socks" "~2.3.2" 2315 | 2316 | "socks@~2.3.2": 2317 | "integrity" "sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==" 2318 | "resolved" "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz" 2319 | "version" "2.3.3" 2320 | dependencies: 2321 | "ip" "1.1.5" 2322 | "smart-buffer" "^4.1.0" 2323 | 2324 | "socks4@0.1.1": 2325 | "integrity" "sha512-1otXKKabF5mXFLEXW8c3jwOPksahuI3unMFnYyGBmKkyeuuEJvTN5CoBzc1zRYOEXdewIKmPqDkkuAzvp8F0cQ==" 2326 | "resolved" "https://registry.npmjs.org/socks4/-/socks4-0.1.1.tgz" 2327 | "version" "0.1.1" 2328 | 2329 | "socksv5@0.0.6": 2330 | "integrity" "sha512-tQpQ0MdNQAsQBDhCXy3OvGGJikh9QOl3PkbwT4POJiQCm/fK4z9AxKQQRG8WLeF6talphnPrSWiZRpTl42rApg==" 2331 | "resolved" "https://registry.npmjs.org/socksv5/-/socksv5-0.0.6.tgz" 2332 | "version" "0.0.6" 2333 | dependencies: 2334 | "ipv6" "*" 2335 | 2336 | "source-map@~0.5.1": 2337 | "integrity" "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" 2338 | "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" 2339 | "version" "0.5.7" 2340 | 2341 | "source-map@~0.6.0", "source-map@~0.6.1": 2342 | "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" 2343 | "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" 2344 | "version" "0.6.1" 2345 | 2346 | "sprintf@0.1.x": 2347 | "version" "0.1.3" 2348 | 2349 | "sshpk@^1.7.0": 2350 | "integrity" "sha512-Ra/OXQtuh0/enyl4ETZAfTaeksa6BXks5ZcjpSUNrjBr0DvrJKX+1fsKDPpT9TBXgHAFsa4510aNVgI8g/+SzA==" 2351 | "resolved" "https://registry.npmjs.org/sshpk/-/sshpk-1.15.2.tgz" 2352 | "version" "1.15.2" 2353 | dependencies: 2354 | "asn1" "~0.2.3" 2355 | "assert-plus" "^1.0.0" 2356 | "bcrypt-pbkdf" "^1.0.0" 2357 | "dashdash" "^1.12.0" 2358 | "ecc-jsbn" "~0.1.1" 2359 | "getpass" "^0.1.1" 2360 | "jsbn" "~0.1.0" 2361 | "safer-buffer" "^2.0.2" 2362 | "tweetnacl" "~0.14.0" 2363 | 2364 | "statuses@>= 1.4.0 < 2": 2365 | "integrity" "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==" 2366 | "resolved" "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" 2367 | "version" "1.5.0" 2368 | 2369 | "statuses@2.0.1": 2370 | "integrity" "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" 2371 | "resolved" "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" 2372 | "version" "2.0.1" 2373 | 2374 | "stealthy-require@^1.1.1": 2375 | "integrity" "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==" 2376 | "resolved" "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz" 2377 | "version" "1.1.1" 2378 | 2379 | "stream-buffers@~0.2.3": 2380 | "integrity" "sha512-ZRpmWyuCdg0TtNKk8bEqvm13oQvXMmzXDsfD4cBgcx5LouborvU5pm3JMkdTP3HcszyUI08AM1dHMXA5r2g6Sg==" 2381 | "resolved" "https://registry.npmjs.org/stream-buffers/-/stream-buffers-0.2.6.tgz" 2382 | "version" "0.2.6" 2383 | 2384 | "stream-throttle@^0.1.3": 2385 | "integrity" "sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==" 2386 | "resolved" "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz" 2387 | "version" "0.1.3" 2388 | dependencies: 2389 | "commander" "^2.2.0" 2390 | "limiter" "^1.0.5" 2391 | 2392 | "string_decoder@~0.10.x": 2393 | "integrity" "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" 2394 | "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" 2395 | "version" "0.10.31" 2396 | 2397 | "string_decoder@~1.1.1": 2398 | "integrity" "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==" 2399 | "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" 2400 | "version" "1.1.1" 2401 | dependencies: 2402 | "safe-buffer" "~5.1.0" 2403 | 2404 | "string-width@^2.1.0": 2405 | "integrity" "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==" 2406 | "resolved" "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz" 2407 | "version" "2.1.1" 2408 | dependencies: 2409 | "is-fullwidth-code-point" "^2.0.0" 2410 | "strip-ansi" "^4.0.0" 2411 | 2412 | "strip-ansi@^4.0.0": 2413 | "integrity" "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==" 2414 | "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz" 2415 | "version" "4.0.0" 2416 | dependencies: 2417 | "ansi-regex" "^3.0.0" 2418 | 2419 | "supports-color@^5.3.0": 2420 | "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" 2421 | "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" 2422 | "version" "5.5.0" 2423 | dependencies: 2424 | "has-flag" "^3.0.0" 2425 | 2426 | "supports-color@5.4.0": 2427 | "integrity" "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==" 2428 | "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz" 2429 | "version" "5.4.0" 2430 | dependencies: 2431 | "has-flag" "^3.0.0" 2432 | 2433 | "supports-preserve-symlinks-flag@^1.0.0": 2434 | "integrity" "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" 2435 | "resolved" "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" 2436 | "version" "1.0.0" 2437 | 2438 | "svg-inline-react@^1.0.2": 2439 | "integrity" "sha512-qGwiEKfKiaqiP5YJ0Fa0e6CN74Gma0XDJZ5LYMYcPdfMM+I6sPVZMbYRJ2sEkAY7B7jJzUphoimEl4LnqzBZ5g==" 2440 | "resolved" "https://registry.npmjs.org/svg-inline-react/-/svg-inline-react-1.0.3.tgz" 2441 | "version" "1.0.3" 2442 | 2443 | "symbol-observable@1.0.1": 2444 | "integrity" "sha512-Kb3PrPYz4HanVF1LVGuAdW6LoVgIwjUYJGzFe7NDrBLCN4lsV/5J0MFurV+ygS4bRVwrCEt2c7MQ1R2a72oJDw==" 2445 | "resolved" "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz" 2446 | "version" "1.0.1" 2447 | 2448 | "through@^2.3.6": 2449 | "integrity" "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" 2450 | "resolved" "https://registry.npmjs.org/through/-/through-2.3.8.tgz" 2451 | "version" "2.3.8" 2452 | 2453 | "thunkify@^2.1.2": 2454 | "integrity" "sha512-w9foI80XcGImrhMQ19pxunaEC5Rp2uzxZZg4XBAFRfiLOplk3F0l7wo+bO16vC2/nlQfR/mXZxcduo0MF2GWLg==" 2455 | "resolved" "https://registry.npmjs.org/thunkify/-/thunkify-2.1.2.tgz" 2456 | "version" "2.1.2" 2457 | 2458 | "tmp@^0.0.33": 2459 | "integrity" "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==" 2460 | "resolved" "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" 2461 | "version" "0.0.33" 2462 | dependencies: 2463 | "os-tmpdir" "~1.0.2" 2464 | 2465 | "to-fast-properties@^1.0.3": 2466 | "integrity" "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==" 2467 | "resolved" "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz" 2468 | "version" "1.0.3" 2469 | 2470 | "toidentifier@1.0.1": 2471 | "integrity" "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" 2472 | "resolved" "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" 2473 | "version" "1.0.1" 2474 | 2475 | "token-stream@0.0.1": 2476 | "integrity" "sha512-nfjOAu/zAWmX9tgwi5NRp7O7zTDUD1miHiB40klUnAh9qnL1iXdgzcz/i5dMaL5jahcBAaSfmNOBBJBLJW8TEg==" 2477 | "resolved" "https://registry.npmjs.org/token-stream/-/token-stream-0.0.1.tgz" 2478 | "version" "0.0.1" 2479 | 2480 | "tough-cookie@^2.3.3", "tough-cookie@~2.5.0": 2481 | "integrity" "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==" 2482 | "resolved" "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz" 2483 | "version" "2.5.0" 2484 | dependencies: 2485 | "psl" "^1.1.28" 2486 | "punycode" "^2.1.1" 2487 | 2488 | "traverse@>=0.3.0 <0.4": 2489 | "integrity" "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==" 2490 | "resolved" "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz" 2491 | "version" "0.3.9" 2492 | 2493 | "tslib@^2.0.1", "tslib@2.4.0": 2494 | "integrity" "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" 2495 | "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz" 2496 | "version" "2.4.0" 2497 | 2498 | "tunnel-agent@^0.6.0": 2499 | "integrity" "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==" 2500 | "resolved" "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" 2501 | "version" "0.6.0" 2502 | dependencies: 2503 | "safe-buffer" "^5.0.1" 2504 | 2505 | "tweetnacl@^0.14.3", "tweetnacl@~0.14.0": 2506 | "integrity" "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" 2507 | "resolved" "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" 2508 | "version" "0.14.5" 2509 | 2510 | "type-check@~0.3.2": 2511 | "integrity" "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==" 2512 | "resolved" "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" 2513 | "version" "0.3.2" 2514 | dependencies: 2515 | "prelude-ls" "~1.1.2" 2516 | 2517 | "type-detect@^4.0.0", "type-detect@^4.0.5": 2518 | "integrity" "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" 2519 | "resolved" "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" 2520 | "version" "4.0.8" 2521 | 2522 | "type-is@~1.6.16", "type-is@~1.6.18": 2523 | "integrity" "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==" 2524 | "resolved" "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" 2525 | "version" "1.6.18" 2526 | dependencies: 2527 | "media-typer" "0.3.0" 2528 | "mime-types" "~2.1.24" 2529 | 2530 | "typescript@4.7.4": 2531 | "integrity" "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==" 2532 | "resolved" "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz" 2533 | "version" "4.7.4" 2534 | 2535 | "ua-parser-js@^0.7.30": 2536 | "integrity" "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==" 2537 | "resolved" "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz" 2538 | "version" "0.7.31" 2539 | 2540 | "uglify-js@^2.6.1": 2541 | "integrity" "sha512-qLq/4y2pjcU3vhlhseXGGJ7VbFO4pBANu0kwl8VCa9KEI0V8VfZIx2Fy3w01iSTA/pGwKZSmu/+I4etLNDdt5w==" 2542 | "resolved" "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz" 2543 | "version" "2.8.29" 2544 | dependencies: 2545 | "source-map" "~0.5.1" 2546 | "yargs" "~3.10.0" 2547 | optionalDependencies: 2548 | "uglify-to-browserify" "~1.0.0" 2549 | 2550 | "uglify-js@~1.2": 2551 | "integrity" "sha512-bMAZaFjLe07fmPbfUPoXzyZaB60kpC5EP63Xcqf9/Kt00fgNtQ3q+wAJt9aJh1iimi9vKkyIYgvXghdHb//IEg==" 2552 | "resolved" "https://registry.npmjs.org/uglify-js/-/uglify-js-1.2.6.tgz" 2553 | "version" "1.2.6" 2554 | 2555 | "uglify-to-browserify@~1.0.0": 2556 | "integrity" "sha512-vb2s1lYx2xBtUgy+ta+b2J/GLVUR+wmpINwHePmPRhOsIVCG2wDzKJ0n14GslH1BifsqVzSOwQhRaCAsZ/nI4Q==" 2557 | "resolved" "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz" 2558 | "version" "1.0.2" 2559 | 2560 | "underscore@~1.4.4": 2561 | "integrity" "sha512-ZqGrAgaqqZM7LGRzNjLnw5elevWb5M8LEoDMadxIW3OWbcv72wMMgKdwOKpd5Fqxe8choLD8HN3iSj3TUh/giQ==" 2562 | "resolved" "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz" 2563 | "version" "1.4.4" 2564 | 2565 | "unpipe@~1.0.0", "unpipe@1.0.0": 2566 | "integrity" "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" 2567 | "resolved" "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" 2568 | "version" "1.0.0" 2569 | 2570 | "unzip@~0.0.4": 2571 | "integrity" "sha512-QW6R+t3cb8G6ROc50IpjSthyELOMlpezbHw0HB8+QzuITsG2oqqW5xJAnOFBfbAo9Ucgrf0ktMEvnC2LMlefUA==" 2572 | "resolved" "https://registry.npmjs.org/unzip/-/unzip-0.0.4.tgz" 2573 | "version" "0.0.4" 2574 | dependencies: 2575 | "binary" "~0.3.0" 2576 | "fstream" "~0.1.18" 2577 | "pullstream" "0.0.4" 2578 | 2579 | "uri-js@^4.2.2": 2580 | "integrity" "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==" 2581 | "resolved" "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz" 2582 | "version" "4.2.2" 2583 | dependencies: 2584 | "punycode" "^2.1.0" 2585 | 2586 | "util-deprecate@~1.0.1": 2587 | "integrity" "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" 2588 | "resolved" "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" 2589 | "version" "1.0.2" 2590 | 2591 | "utils-merge@1.0.1": 2592 | "integrity" "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" 2593 | "resolved" "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" 2594 | "version" "1.0.1" 2595 | 2596 | "uuid@^3.3.2": 2597 | "integrity" "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" 2598 | "resolved" "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz" 2599 | "version" "3.3.2" 2600 | 2601 | "vary@~1.1.2": 2602 | "integrity" "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" 2603 | "resolved" "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" 2604 | "version" "1.1.2" 2605 | 2606 | "verror@1.10.0": 2607 | "integrity" "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==" 2608 | "resolved" "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" 2609 | "version" "1.10.0" 2610 | dependencies: 2611 | "assert-plus" "^1.0.0" 2612 | "core-util-is" "1.0.2" 2613 | "extsprintf" "^1.2.0" 2614 | 2615 | "void-elements@^2.0.1": 2616 | "integrity" "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==" 2617 | "resolved" "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz" 2618 | "version" "2.0.1" 2619 | 2620 | "whatwg-fetch@^1.0.0", "whatwg-fetch@>=0.10.0": 2621 | "integrity" "sha512-MVDSiH8wkh6qdk+zxNlUas0pmuKVp8H5RwQZM2tGQhenUC+/nUBmJerAg/lFd3DPYrF2e6ArdaD2JpbGjM9oww==" 2622 | "resolved" "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-1.1.1.tgz" 2623 | "version" "1.1.1" 2624 | 2625 | "which@^1.3.1": 2626 | "integrity" "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==" 2627 | "resolved" "https://registry.npmjs.org/which/-/which-1.3.1.tgz" 2628 | "version" "1.3.1" 2629 | dependencies: 2630 | "isexe" "^2.0.0" 2631 | 2632 | "window-size@0.1.0": 2633 | "integrity" "sha512-1pTPQDKTdd61ozlKGNCjhNRd+KPmgLSGa3mZTHoOliaGcESD8G1PXhh7c1fgiPjVbNVfgy2Faw4BI8/m0cC8Mg==" 2634 | "resolved" "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz" 2635 | "version" "0.1.0" 2636 | 2637 | "with@^5.0.0": 2638 | "integrity" "sha512-uAnSsFGfSpF6DNhBXStvlZILfHJfJu4eUkfbRGk94kGO1Ta7bg6FwfvoOhhyHAJuFbCw+0xk4uJ3u57jLvlCJg==" 2639 | "resolved" "https://registry.npmjs.org/with/-/with-5.1.1.tgz" 2640 | "version" "5.1.1" 2641 | dependencies: 2642 | "acorn" "^3.1.0" 2643 | "acorn-globals" "^3.0.0" 2644 | 2645 | "word-wrap@~1.2.3": 2646 | "integrity" "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" 2647 | "resolved" "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" 2648 | "version" "1.2.3" 2649 | 2650 | "wordwrap@~0.0.2": 2651 | "integrity" "sha512-1tMA907+V4QmxV7dbRvb4/8MaRALK6q9Abid3ndMYnbyo8piisCmeONVqVSXqQA3KaP4SLt5b7ud6E2sqP8TFw==" 2652 | "resolved" "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" 2653 | "version" "0.0.3" 2654 | 2655 | "wordwrap@0.0.2": 2656 | "integrity" "sha512-xSBsCeh+g+dinoBv3GAOWM4LcVVO68wLXRanibtBSdUvkGWQRGeE9P7IwU9EmDDi4jA6L44lz15CGMwdw9N5+Q==" 2657 | "resolved" "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" 2658 | "version" "0.0.2" 2659 | 2660 | "wrappy@1": 2661 | "integrity" "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" 2662 | "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" 2663 | "version" "1.0.2" 2664 | 2665 | "ws@^5.1.0": 2666 | "integrity" "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==" 2667 | "resolved" "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz" 2668 | "version" "5.2.3" 2669 | dependencies: 2670 | "async-limiter" "~1.0.0" 2671 | 2672 | "xregexp@2.0.0": 2673 | "integrity" "sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA==" 2674 | "resolved" "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz" 2675 | "version" "2.0.0" 2676 | 2677 | "yallist@^2.1.2": 2678 | "integrity" "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" 2679 | "resolved" "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz" 2680 | "version" "2.1.2" 2681 | 2682 | "yargs@~3.10.0": 2683 | "integrity" "sha512-QFzUah88GAGy9lyDKGBqZdkYApt63rCXYBGYnEP4xDJPXNqXXnBDACnbrXnViV6jRSqAePwrATi2i8mfYm4L1A==" 2684 | "resolved" "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz" 2685 | "version" "3.10.0" 2686 | dependencies: 2687 | "camelcase" "^1.0.2" 2688 | "cliui" "^2.1.0" 2689 | "decamelize" "^1.0.0" 2690 | "window-size" "0.1.0" 2691 | --------------------------------------------------------------------------------