├── .babelrc ├── .gitignore ├── LICENSE ├── README.md ├── dist └── index.js ├── package-lock.json ├── package.json └── src └── index.js /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "@babel/preset-env", 5 | { 6 | "useBuiltIns": "usage" 7 | } 8 | ] 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | .env 4 | test.js -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 SerpWow 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. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Google Search Results in Node.JS 2 | 3 | This Node.JS module allows you to scrape and parse Google Search Results using [SerpWow](https://serpwow.com). In addition to [Search](https://serpwow.com/docs/search-api/overview) you can also use this module to access the SerpWow [Locations API](https://serpwow.com/docs/locations-api/overview), [Batches API](https://serpwow.com/docs/batches-api/overview) and [Account API](https://serpwow.com/docs/account-api). 4 | 5 | All methods support promises and node-style callbacks. 6 | 7 | ## Installation 8 | You can install google-search-results-serpwow with: 9 | 10 | ```shell 11 | $ npm install google-search-results-serpwow 12 | ``` 13 | 14 | and update with: 15 | 16 | ```shell 17 | $ npm update google-search-results-serpwow 18 | ``` 19 | 20 | View package on [npmjs.com](https://www.npmjs.com/package/google-search-results-serpwow) 21 | 22 | ## Documentation 23 | We have included examples here but full SerpWow API documentation is available at the [API Docs](https://serpwow.com/docs): 24 | - [Search API Docs](https://serpwow.com/docs/search-api/overview) 25 | - [Locations API Docs](https://serpwow.com/docs/locations-api/overview) 26 | - [Account API Docs](https://serpwow.com/docs/account-api) 27 | - [Batches API Docs](https://serpwow.com/docs/batches-api) 28 | 29 | You can also use the [API Playground](https://app.serpwow.com/playground) to visually build Google search requests using SerpWow. 30 | 31 | ## Examples 32 | - [Simple Example](#simple-example) 33 | - [Example Response](#example-response) 34 | - [Getting an API Key](#getting-an-api-key) 35 | - [Searching with a Location](#searching-with-a-location) 36 | - [Searching Google Places, Google Videos, Google Images, Google Shopping and Google News](#searching-google-places-google-videos-google-images-google-shopping-and-google-news) 37 | - [Returning results as JSON, HTML and CSV](#returning-results-as-json-html-and-csv) 38 | - [Requesting mobile and tablet results](#requesting-mobile-and-tablet-results) 39 | - [Parsing Results](#parsing-results) 40 | - [Paginating results, returning up to 100 results per page](#paginating-results-returning-up-to-100-results-per-page) 41 | - [Search example with all parameters](#search-example-with-all-parameters) 42 | - [Locations API Example](#locations-api-example) 43 | - [Account API Example](#account-api-example) 44 | - [Batches API](#batches-api) 45 | 46 | ## Requirement 47 | - ES6 basic understanding 48 | - Node.JS coding experience 49 | - Node 7+ and npm installed 50 | 51 | ## Simple Example 52 | Simplest example for a standard query "pizza", returning the Google SERP (Search Engine Results Page) data as JSON. 53 | ```javascript 54 | var SerpWow = require('google-search-results-serpwow') 55 | 56 | // create the serpwow object, passing in our API key 57 | let serpwow = new SerpWow('API_KEY') 58 | 59 | // #1. example using promises & async/await 60 | async function getResult() { 61 | 62 | let result = await serpwow.json({ 63 | q: 'pizza' 64 | }); 65 | 66 | // pretty-print the result 67 | console.log(JSON.stringify(result, 0, 2)); 68 | 69 | } 70 | getResult(); 71 | 72 | 73 | // #2. example using callbacks 74 | serpwow.json( 75 | { 76 | q: 'pizza' 77 | }) 78 | .then(result => { 79 | // pretty-print the result 80 | console.log(JSON.stringify(result, 0, 2)); 81 | }) 82 | .catch(error => { 83 | // print the error 84 | console.log(error); 85 | }); 86 | ``` 87 | 88 | ## Example Response 89 | A snapshot (shortened for brevity) of the JSON response returned is shown below. For details of all of the fields from the Google search results page that are parsed please see the [docs](https://serpwow.com/docs/search-api/results/google/overview). 90 | ```json 91 | { 92 | "request_info": { 93 | "success": true 94 | }, 95 | "search_metadata": { 96 | "id": "20c8e44e9cacedabbdff2d9b7e854436056d4f33", 97 | "engine_url": "https://www.google.com/search?q=pizza&oq=pizza&sourceid=chrome&ie=UTF-8", 98 | "total_time_taken": 0.14 99 | }, 100 | "search_parameters": { 101 | "q": "pizza" 102 | }, 103 | "search_information": { 104 | "total_results": 1480000000, 105 | "time_taken_displayed": 0.45, 106 | "query_displayed": "pizza", 107 | "detected_location": "Ireland" 108 | }, 109 | "local_map": { 110 | "link": "https://www.google.com/search?q=pizza&npsic=0&rflfq=1&rldoc=1&rlha=0&rllag=53350059,-6249133,1754&tbm=lcl&sa=X&ved=2ahUKEwiC3cLZ0JLgAhXHUxUIHQrsBC4QtgN6BAgBEAQ", 111 | "gps_coordinates": { 112 | "latitude": 53.350059, 113 | "longitude": -6.249133, 114 | "altitude": 1754 115 | }, 116 | "local_results": [{ 117 | "position": 1, 118 | "title": "Apache Pizza Temple Bar", 119 | "extensions": [ 120 | "American-style pizza-delivery chain" 121 | ], 122 | "rating": 3.6, 123 | "reviews": 382, 124 | "type": "Pizza", 125 | "block_position": 1 126 | } 127 | ] 128 | }, 129 | "knowledge_graph": { 130 | "title": "Pizza", 131 | "type": "Dish", 132 | "description": "Pizza is a savory dish of Italian origin, consisting of a usually round, flattened base of leavened wheat-based dough topped with tomatoes, cheese, and various other ingredients baked at a high temperature, traditionally in a wood-fired oven.", 133 | "source": { 134 | "name": "Wikipedia", 135 | "link": "https://en.wikipedia.org/wiki/Pizza" 136 | }, 137 | "nutrition_facts": { 138 | "total_fat": [ 139 | "10 g", 140 | "15%" 141 | ], 142 | "sugar": [ 143 | "3.6 g" 144 | ] 145 | } 146 | }, 147 | "related_searches": [{ 148 | "query": "apache pizza", 149 | "link": "https://www.google.com/search?q=apache+pizza&sa=X&ved=2ahUKEwiC3cLZ0JLgAhXHUxUIHQrsBC4Q1QIoAHoECAUQAQ" 150 | } 151 | ], 152 | "organic_results": [{ 153 | "position": 1, 154 | "title": "10 Best Pizzas in Dublin - A slice of the city for every price point ...", 155 | "link": "https://www.independent.ie/life/travel/ireland/10-best-pizzas-in-dublin-a-slice-of-the-city-for-every-price-point-37248689.html", 156 | "domain": "www.independent.ie", 157 | "displayed_link": "https://www.independent.ie/.../10-best-pizzas-in-dublin-a-slice-of-the-city-for-every-p...", 158 | "snippet": "Oct 20, 2018 - Looking for the best pizza in Dublin? Pól Ó Conghaile scours the city for top-notch pie... whatever your budget.", 159 | "cached_page_link": "https://webcache.googleusercontent.com/search?q=cache:wezzRov42dkJ:https://www.independent.ie/life/travel/ireland/10-best-pizzas-in-dublin-a-slice-of-the-city-for-every-price-point-37248689.html+&cd=4&hl=en&ct=clnk&gl=ie", 160 | "block_position": 2 161 | } 162 | ], 163 | "related_places": [{ 164 | "theme": "Best dinners with kids", 165 | "places": "Pinocchio Italian Restaurant - Temple Bar, Cafe Topolisand more", 166 | "images": [ 167 | "https://lh5.googleusercontent.com/p/AF1QipNhGt40OpSS408waVJUHeItGrrGqImmEKzuVbBv=w152-h152-n-k-no" 168 | ] 169 | }], 170 | "pagination": { 171 | "current": "1", 172 | "next": "https://www.google.com/search?q=pizza&ei=fRZQXMKqL8en1fAPitiT8AI&start=10&sa=N&ved=0ahUKEwiC3cLZ0JLgAhXHUxUIHQrsBC4Q8NMDCOkB" 173 | } 174 | } 175 | ``` 176 | 177 | ## Getting an API Key 178 | To get a free API Key head over to [app.serpwow.com/signup](https://app.serpwow.com/signup). 179 | 180 | ## Searching with a location 181 | Example of a Google query geo-locating the query as if the user were located in New York. 182 | ```javascript 183 | var SerpWow = require('google-search-results-serpwow') 184 | 185 | // create the serpwow object, passing in our API key 186 | let serpwow = new SerpWow('API_KEY') 187 | 188 | // retrieve the search results as JSON 189 | serpwow.json( 190 | { 191 | q: 'pizza', 192 | location: 'New York,New York,United States' 193 | }) 194 | .then(result => { 195 | // pretty-print the result 196 | console.log(JSON.stringify(result, 0, 2)); 197 | }) 198 | .catch(error => { 199 | // print the error 200 | console.log(error); 201 | }); 202 | ``` 203 | 204 | ## Searching Google Places, Google Videos, Google Images, Google Shopping and Google News 205 | Use the ``search_type`` param to search Google Places, Videos, Images and News. See the [Search API Parameters Docs](https://serpwow.com/docs/search-api/searches) for full details of the additional params available for each search type. 206 | ```javascript 207 | // perform a search on Google News, just looking at blogs, filtering out duplicates, ordered by date, in the last tear 208 | serpwow.json( 209 | { 210 | q: 'football news', 211 | search_type: 'news', 212 | news_type: 'blogs', 213 | show_duplicates: 'false', 214 | sort_by: 'date', 215 | time_period: 'last_year' 216 | }) 217 | .then(result => { 218 | // pretty-print the result 219 | console.log(JSON.stringify(result, 0, 2)); 220 | }) 221 | .catch(error => { 222 | // print the error 223 | console.log(error); 224 | }); 225 | 226 | 227 | // perform a search on Google Places for 'plumber' in London 228 | serpwow.json( 229 | { 230 | search_type: 'places', 231 | q: 'plumber', 232 | location: 'London,England,United Kingdom' 233 | }) 234 | .then(result => { 235 | // pretty-print the result 236 | console.log(JSON.stringify(result, 0, 2)); 237 | }) 238 | .catch(error => { 239 | // print the error 240 | console.log(error); 241 | }); 242 | 243 | 244 | // perform an image search on Google Images for "red flowers" 245 | serpwow.json( 246 | { 247 | q: 'red flowers', 248 | search_type: 'images' 249 | }) 250 | .then(result => { 251 | // pretty-print the result 252 | console.log(JSON.stringify(result, 0, 2)); 253 | }) 254 | .catch(error => { 255 | // print the error 256 | console.log(error); 257 | }); 258 | ``` 259 | 260 | ## Returning results as JSON, HTML and CSV 261 | SerpWow can return data in JSON, HTML and CSV formats using the ``json``, ``html`` and ``csv`` methods. For CSV results use the ``csv_fields`` param ([docs](https://serpwow.com/docs/search-api/reference/csv-fields)) to request specific result fields. 262 | ```javascript 263 | var SerpWow = require('google-search-results-serpwow') 264 | 265 | // create the serpwow object, passing in our API key 266 | let serpwow = new SerpWow('API_KEY') 267 | 268 | /* 269 | Set up parameters the query (q) and location parameters 270 | note that the "location" parameter should be a value 271 | returned from the Locations API. 272 | We'll re-use the same params for all 3 examples. 273 | */ 274 | var params = { 275 | q: 'pizza', 276 | location: 'New York,New York,United States' 277 | } 278 | 279 | // retrieve the Google search results as JSON 280 | serpwow.json(params) 281 | .then(result => { 282 | // pretty-print the result 283 | console.log(JSON.stringify(result, 0, 2)); 284 | }) 285 | .catch(error => { 286 | console.log(error); 287 | }); 288 | 289 | // retrieve the Google search results as HTML 290 | serpwow.html(params) 291 | .then(result => { 292 | // print the result HTML 293 | console.log(result); 294 | }) 295 | .catch(error => { 296 | console.log(error); 297 | }); 298 | 299 | // retrieve the Google search results as CSV 300 | serpwow.csv(params) 301 | .then(result => { 302 | // print the result CSV string 303 | console.log(result); 304 | }) 305 | .catch(error => { 306 | console.log(error); 307 | }); 308 | ``` 309 | 310 | ## Requesting mobile and tablet results 311 | To request that SerpWow renders the Google search results via a mobile or tablet browser use the ``device`` param: 312 | ```javascript 313 | var SerpWow = require('google-search-results-serpwow') 314 | 315 | // create the serpwow object, passing in our API key 316 | let serpwow = new SerpWow('API_KEY') 317 | 318 | // set up the mobile params 319 | var paramsMobile = { 320 | q : 'pizza', 321 | device : 'mobile' 322 | } 323 | 324 | // set up the tablet params 325 | var paramsTablet = { 326 | q : 'pizza', 327 | device: 'tablet' 328 | } 329 | 330 | // set up the desktop params (note we omit the 'device' param) 331 | var paramsDesktop = { 332 | q: 'pizza' 333 | } 334 | 335 | // retrieve the mobile search results 336 | serpwow.json(paramsMobile) 337 | .then(result => { 338 | // pretty-print the result 339 | console.log(JSON.stringify(result, 0, 2)); 340 | }) 341 | .catch(error => { 342 | console.log(error); 343 | }); 344 | 345 | // retrieve the tablet search results 346 | serpwow.json(paramsTablet) 347 | .then(result => { 348 | // pretty-print the result 349 | console.log(JSON.stringify(result, 0, 2)); 350 | }) 351 | .catch(error => { 352 | console.log(error); 353 | }); 354 | 355 | // retrieve the desktop search results 356 | serpwow.json(paramsDesktop) 357 | .then(result => { 358 | // pretty-print the result 359 | console.log(JSON.stringify(result, 0, 2)); 360 | }) 361 | .catch(error => { 362 | console.log(error); 363 | }); 364 | ``` 365 | 366 | ## Parsing results 367 | When making a request via the ``json`` method an object is returned. You can inspect this dict to iterate, parse and store the results in your app. 368 | ```javascript 369 | var SerpWow = require('google-search-results-serpwow') 370 | 371 | // create the serpwow object, passing in our API key 372 | let serpwow = new SerpWow('API_KEY') 373 | 374 | // make a simple query, returning JSON 375 | serpwow.json({ 376 | q: 'pizza' 377 | }) 378 | .then(result => { 379 | 380 | // determine if the request was successful 381 | var success = result.request_info.success; 382 | 383 | if (success === true) { 384 | 385 | // extract the time taken and number of organic results 386 | timeTaken = result.search_metadata.total_time_taken; 387 | organicResultCount = result.organic_results.length; 388 | 389 | // print 390 | console.log(organicResultCount + ' organic results returned in ' + timeTaken + 's'); 391 | } 392 | 393 | }) 394 | .catch(error => { 395 | console.log(error); 396 | }); 397 | ``` 398 | 399 | ## Paginating results, returning up to 100 results per page 400 | Use the ``page`` and ``num`` parameters to paginate through Google search results. The maximum number of results returned per page (controlled by the ``num`` param) is 100 (a Google-imposed limitation) for all ``search_type``'s apart from Google Places, where the maximum is 20. Here's an example. 401 | ```javascript 402 | var SerpWow = require('google-search-results-serpwow') 403 | 404 | // create the serpwow object, passing in our API key 405 | let serpwow = new SerpWow('API_KEY') 406 | 407 | // set number of results 408 | let numberOfResults = 100; 409 | 410 | // request the first 100 results 411 | serpwow.json({ 412 | q: 'pizza', 413 | page: 1, 414 | num: numberOfResults 415 | }) 416 | .then(result => { 417 | 418 | // print out the number of organic results returned 419 | console.log(result.organic_results.length + ' results returned'); 420 | 421 | }) 422 | .catch(error => { 423 | console.log(error); 424 | }); 425 | 426 | ``` 427 | 428 | ## Search example with all parameters 429 | ```javascript 430 | var SerpWow = require('google-search-results-serpwow') 431 | 432 | // create the serpwow object, passing in our API key 433 | let serpwow = new SerpWow('API_KEY') 434 | 435 | // set up a multiple search parameters, retrieving results as CSV (note the csv_fields param) 436 | serpwow.csv({ 437 | q: 'pizza', 438 | gl: 'us', 439 | hl: 'en', 440 | location: 'New York,New York,United States', 441 | google_domain: 'google.com', 442 | time_period: 'custom', 443 | sort_by: 'date', 444 | time_period_min: '02/01/2018', 445 | time_period_max: '02/08/2019', 446 | device: 'mobile', 447 | csv_fields: 'search.q,organic_results.position,organic_results.domain', 448 | page: '1', 449 | num: '100' 450 | }) 451 | .then(result => { 452 | 453 | // print out the CSV results 454 | console.log(result); 455 | 456 | }) 457 | .catch(error => { 458 | console.log(error); 459 | }); 460 | ``` 461 | 462 | 463 | ## Locations API Example 464 | The [Locations API](https://serpwow.com/docs/locations-api/overview) allows you to search for SerpWow supported Google search locations. You can supply the ``full_name`` returned by the Locations API as the ``location`` parameter in a Search API query (see [Searching with a location](https://github.com/serpwow/google-search-results-python#searching-with-a-location) example above) to retrieve search results geo-located to that location. 465 | ```javascript 466 | var SerpWow = require('google-search-results-serpwow') 467 | 468 | // create the serpwow object, passing in our API key 469 | let serpwow = new SerpWow('API_KEY') 470 | 471 | // retrieve locations matching the query parameters as JSON 472 | serpwow.locations({ 473 | q: 'mumbai' 474 | }) 475 | .then(result => { 476 | 477 | // pretty-print the result 478 | console.log(JSON.stringify(result, 0, 2)); 479 | 480 | }) 481 | .catch(error => { 482 | console.log(error); 483 | }); 484 | ``` 485 | 486 | ## Account API Example 487 | The [Account API](https://serpwow.com/docs/account-api) allows you to check your current SerpWow usage and billing information. 488 | ```javascript 489 | var SerpWow = require('google-search-results-serpwow') 490 | 491 | // create the serpwow object, passing in our API key 492 | let serpwow = new SerpWow('API_KEY') 493 | 494 | // get our account info 495 | serpwow.account() 496 | .then(result => { 497 | 498 | // pretty-print the account info 499 | console.log(JSON.stringify(result, 0, 2)); 500 | 501 | }) 502 | .catch(error => { 503 | console.log(error); 504 | }); 505 | ``` 506 | 507 | ## Batches API 508 | The [Batches API](https://serpwow.com/docs/batches-api) allows you to create, update and delete Batches on your SerpWow account (Batches allow you to save up to 15,000 Searches and have SerpWow run them on a schedule). 509 | 510 | For more information and extensive code samples please see the [Batches API Docs](https://serpwow.com/docs/batches-api). -------------------------------------------------------------------------------- /dist/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | /** 3 | * This module provides access to Google Search Results via the SerpWow API 4 | * https://serpwow.com/ 5 | */ 6 | 7 | require("core-js/modules/es6.array.is-array"); 8 | 9 | require("core-js/modules/es6.promise"); 10 | 11 | require("core-js/modules/es6.object.keys"); 12 | 13 | require("core-js/modules/es7.symbol.async-iterator"); 14 | 15 | require("core-js/modules/es6.symbol"); 16 | 17 | require("core-js/modules/es6.object.create"); 18 | 19 | require("core-js/modules/web.dom.iterable"); 20 | 21 | require("core-js/modules/es6.array.iterator"); 22 | 23 | require("core-js/modules/es6.string.iterator"); 24 | 25 | require("core-js/modules/es6.map"); 26 | 27 | require("core-js/modules/es6.function.bind"); 28 | 29 | require("core-js/modules/es6.reflect.construct"); 30 | 31 | require("core-js/modules/es6.regexp.to-string"); 32 | 33 | require("core-js/modules/es6.date.to-string"); 34 | 35 | require("core-js/modules/es6.array.index-of"); 36 | 37 | require("core-js/modules/es6.object.set-prototype-of"); 38 | 39 | require("core-js/modules/es6.object.define-property"); 40 | 41 | function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } 42 | 43 | function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } 44 | 45 | function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } 46 | 47 | function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } 48 | 49 | function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 50 | 51 | function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } 52 | 53 | function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } 54 | 55 | function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } 56 | 57 | function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); } 58 | 59 | function isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } 60 | 61 | function _construct(Parent, args, Class) { if (isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); } 62 | 63 | function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; } 64 | 65 | function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } 66 | 67 | function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } 68 | 69 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 70 | 71 | function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } 72 | 73 | function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } 74 | 75 | var fetch = require('node-fetch'), 76 | qs = require('querystring'), 77 | host = 'https://api.serpwow.com'; 78 | 79 | var API_KEY; // To be set by clients 80 | 81 | var SerpWow = 82 | /*#__PURE__*/ 83 | function () { 84 | function SerpWow(apiKey) { 85 | _classCallCheck(this, SerpWow); 86 | 87 | if (!apiKey) throw new Error('No SerpWow API key specified'); 88 | API_KEY = apiKey; 89 | } 90 | 91 | _createClass(SerpWow, [{ 92 | key: "json", 93 | value: function json() { 94 | for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { 95 | args[_key] = arguments[_key]; 96 | } 97 | 98 | args.output = 'json'; 99 | 100 | var _splitArgsIntoOptions = splitArgsIntoOptionsAndCallback(args), 101 | params = _splitArgsIntoOptions.params, 102 | options = _splitArgsIntoOptions.options, 103 | cb = _splitArgsIntoOptions.cb; 104 | 105 | var url = createUrlFromEndpointAndOptions('/live/search', params, API_KEY); 106 | return httpGet(url, options, cb, 'json'); 107 | } 108 | }, { 109 | key: "html", 110 | value: function html() { 111 | for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { 112 | args[_key2] = arguments[_key2]; 113 | } 114 | 115 | args.output = 'html'; 116 | 117 | var _splitArgsIntoOptions2 = splitArgsIntoOptionsAndCallback(args), 118 | params = _splitArgsIntoOptions2.params, 119 | options = _splitArgsIntoOptions2.options, 120 | cb = _splitArgsIntoOptions2.cb; 121 | 122 | var url = createUrlFromEndpointAndOptions('/live/search', params, API_KEY, 'html'); 123 | return httpGet(url, options, cb, 'html'); 124 | } 125 | }, { 126 | key: "csv", 127 | value: function csv() { 128 | for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { 129 | args[_key3] = arguments[_key3]; 130 | } 131 | 132 | args.output = 'csv'; 133 | 134 | var _splitArgsIntoOptions3 = splitArgsIntoOptionsAndCallback(args), 135 | params = _splitArgsIntoOptions3.params, 136 | options = _splitArgsIntoOptions3.options, 137 | cb = _splitArgsIntoOptions3.cb; 138 | 139 | var url = createUrlFromEndpointAndOptions('/live/search', params, API_KEY, 'csv'); 140 | return httpGet(url, options, cb, 'csv'); 141 | } 142 | }, { 143 | key: "locations", 144 | value: function locations() { 145 | for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { 146 | args[_key4] = arguments[_key4]; 147 | } 148 | 149 | var _splitArgsIntoOptions4 = splitArgsIntoOptionsAndCallback(args), 150 | params = _splitArgsIntoOptions4.params, 151 | options = _splitArgsIntoOptions4.options, 152 | cb = _splitArgsIntoOptions4.cb; 153 | 154 | var url = createUrlFromEndpointAndOptions('/live/locations', params, API_KEY); 155 | return httpGet(url, options, cb, 'json'); 156 | } 157 | }, { 158 | key: "account", 159 | value: function account() { 160 | for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { 161 | args[_key5] = arguments[_key5]; 162 | } 163 | 164 | var _splitArgsIntoOptions5 = splitArgsIntoOptionsAndCallback(args), 165 | params = _splitArgsIntoOptions5.params, 166 | options = _splitArgsIntoOptions5.options, 167 | cb = _splitArgsIntoOptions5.cb; 168 | 169 | var url = createUrlFromEndpointAndOptions('/live/account', {}, API_KEY); 170 | return httpGet(url, options, cb, 'json'); 171 | } 172 | }, { 173 | key: "createBatch", 174 | value: function createBatch() { 175 | for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) { 176 | args[_key6] = arguments[_key6]; 177 | } 178 | 179 | var _splitArgsIntoOptions6 = splitArgsIntoOptionsAndCallback(args), 180 | params = _splitArgsIntoOptions6.params, 181 | options = _splitArgsIntoOptions6.options, 182 | cb = _splitArgsIntoOptions6.cb; 183 | 184 | var url = createUrlFromEndpointAndOptions('/live/batches', {}, API_KEY); 185 | return httpPost(url, params, cb, 'json'); 186 | } 187 | }, { 188 | key: "updateBatch", 189 | value: function updateBatch() { 190 | for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) { 191 | args[_key7] = arguments[_key7]; 192 | } 193 | 194 | var _splitArgsIntoOptions7 = splitArgsIntoOptionsAndCallback(args), 195 | params = _splitArgsIntoOptions7.params, 196 | options = _splitArgsIntoOptions7.options, 197 | cb = _splitArgsIntoOptions7.cb; 198 | 199 | var url = createUrlFromEndpointAndOptions('/live/batches/' + args[0], {}, API_KEY); 200 | return httpPut(url, args[1], cb, 'json'); 201 | } 202 | }, { 203 | key: "startBatch", 204 | value: function startBatch() { 205 | for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) { 206 | args[_key8] = arguments[_key8]; 207 | } 208 | 209 | var _splitArgsIntoOptions8 = splitArgsIntoOptionsAndCallback(args), 210 | params = _splitArgsIntoOptions8.params, 211 | options = _splitArgsIntoOptions8.options, 212 | cb = _splitArgsIntoOptions8.cb; 213 | 214 | var url = createUrlFromEndpointAndOptions('/live/batches/' + args[0] + '/start', {}, API_KEY); 215 | return httpGet(url, options, cb, 'json'); 216 | } 217 | }, { 218 | key: "stopBatch", 219 | value: function stopBatch() { 220 | for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) { 221 | args[_key9] = arguments[_key9]; 222 | } 223 | 224 | var _splitArgsIntoOptions9 = splitArgsIntoOptionsAndCallback(args), 225 | params = _splitArgsIntoOptions9.params, 226 | options = _splitArgsIntoOptions9.options, 227 | cb = _splitArgsIntoOptions9.cb; 228 | 229 | var url = createUrlFromEndpointAndOptions('/live/batches/' + args[0] + '/stop', {}, API_KEY); 230 | return httpGet(url, options, cb, 'json'); 231 | } 232 | }, { 233 | key: "deleteBatch", 234 | value: function deleteBatch() { 235 | for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) { 236 | args[_key10] = arguments[_key10]; 237 | } 238 | 239 | var _splitArgsIntoOptions10 = splitArgsIntoOptionsAndCallback(args), 240 | params = _splitArgsIntoOptions10.params, 241 | options = _splitArgsIntoOptions10.options, 242 | cb = _splitArgsIntoOptions10.cb; 243 | 244 | var url = createUrlFromEndpointAndOptions('/live/batches/' + args[0], {}, API_KEY); 245 | return httpDelete(url, options, cb, 'json'); 246 | } 247 | }, { 248 | key: "getBatch", 249 | value: function getBatch() { 250 | for (var _len11 = arguments.length, args = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) { 251 | args[_key11] = arguments[_key11]; 252 | } 253 | 254 | var _splitArgsIntoOptions11 = splitArgsIntoOptionsAndCallback(args), 255 | params = _splitArgsIntoOptions11.params, 256 | options = _splitArgsIntoOptions11.options, 257 | cb = _splitArgsIntoOptions11.cb; 258 | 259 | var url = createUrlFromEndpointAndOptions('/live/batches/' + args[0], {}, API_KEY); 260 | return httpGet(url, options, cb, 'json'); 261 | } 262 | }, { 263 | key: "listBatches", 264 | value: function listBatches() { 265 | for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) { 266 | args[_key12] = arguments[_key12]; 267 | } 268 | 269 | var _splitArgsIntoOptions12 = splitArgsIntoOptionsAndCallback(args), 270 | params = _splitArgsIntoOptions12.params, 271 | options = _splitArgsIntoOptions12.options, 272 | cb = _splitArgsIntoOptions12.cb; 273 | 274 | var url = createUrlFromEndpointAndOptions('/live/batches', params, API_KEY); 275 | return httpGet(url, options, cb, 'json'); 276 | } 277 | }, { 278 | key: "updateBatchSearch", 279 | value: function updateBatchSearch() { 280 | for (var _len13 = arguments.length, args = new Array(_len13), _key13 = 0; _key13 < _len13; _key13++) { 281 | args[_key13] = arguments[_key13]; 282 | } 283 | 284 | var _splitArgsIntoOptions13 = splitArgsIntoOptionsAndCallback(args), 285 | params = _splitArgsIntoOptions13.params, 286 | options = _splitArgsIntoOptions13.options, 287 | cb = _splitArgsIntoOptions13.cb; 288 | 289 | var url = createUrlFromEndpointAndOptions('/live/batches/' + args[0] + '/' + args[1], {}, API_KEY); 290 | return httpPut(url, args[2], cb, 'json'); 291 | } 292 | }, { 293 | key: "deleteBatchSearch", 294 | value: function deleteBatchSearch() { 295 | for (var _len14 = arguments.length, args = new Array(_len14), _key14 = 0; _key14 < _len14; _key14++) { 296 | args[_key14] = arguments[_key14]; 297 | } 298 | 299 | var _splitArgsIntoOptions14 = splitArgsIntoOptionsAndCallback(args), 300 | params = _splitArgsIntoOptions14.params, 301 | options = _splitArgsIntoOptions14.options, 302 | cb = _splitArgsIntoOptions14.cb; 303 | 304 | var url = createUrlFromEndpointAndOptions('/live/batches/' + args[0] + '/' + args[1], {}, API_KEY); 305 | return httpDelete(url, options, cb, 'json'); 306 | } 307 | }, { 308 | key: "listBatchSearches", 309 | value: function listBatchSearches() { 310 | for (var _len15 = arguments.length, args = new Array(_len15), _key15 = 0; _key15 < _len15; _key15++) { 311 | args[_key15] = arguments[_key15]; 312 | } 313 | 314 | var _splitArgsIntoOptions15 = splitArgsIntoOptionsAndCallback(args), 315 | params = _splitArgsIntoOptions15.params, 316 | options = _splitArgsIntoOptions15.options, 317 | cb = _splitArgsIntoOptions15.cb; 318 | 319 | var url = createUrlFromEndpointAndOptions('/live/batches/' + args[0] + '/searches/' + args[1], {}, API_KEY); 320 | return httpGet(url, options, cb, 'json'); 321 | } 322 | }, { 323 | key: "findBatchSearches", 324 | value: function findBatchSearches() { 325 | for (var _len16 = arguments.length, args = new Array(_len16), _key16 = 0; _key16 < _len16; _key16++) { 326 | args[_key16] = arguments[_key16]; 327 | } 328 | 329 | var _splitArgsIntoOptions16 = splitArgsIntoOptionsAndCallback(args), 330 | params = _splitArgsIntoOptions16.params, 331 | options = _splitArgsIntoOptions16.options, 332 | cb = _splitArgsIntoOptions16.cb; 333 | 334 | var url = createUrlFromEndpointAndOptions('/live/batches/' + args[0] + '/searches/' + args[1], {}, API_KEY, null, { 335 | q: args[2] 336 | }); 337 | return httpGet(url, options, cb, 'json'); 338 | } 339 | }, { 340 | key: "listAllBatchSearchesAsJSON", 341 | value: function listAllBatchSearchesAsJSON() { 342 | for (var _len17 = arguments.length, args = new Array(_len17), _key17 = 0; _key17 < _len17; _key17++) { 343 | args[_key17] = arguments[_key17]; 344 | } 345 | 346 | var _splitArgsIntoOptions17 = splitArgsIntoOptionsAndCallback(args), 347 | params = _splitArgsIntoOptions17.params, 348 | options = _splitArgsIntoOptions17.options, 349 | cb = _splitArgsIntoOptions17.cb; 350 | 351 | var url = createUrlFromEndpointAndOptions('/live/batches/' + args[0] + '/searches/json', {}, API_KEY); 352 | return httpGet(url, options, cb, 'json'); 353 | } 354 | }, { 355 | key: "listAllBatchSearchesAsCSV", 356 | value: function listAllBatchSearchesAsCSV() { 357 | for (var _len18 = arguments.length, args = new Array(_len18), _key18 = 0; _key18 < _len18; _key18++) { 358 | args[_key18] = arguments[_key18]; 359 | } 360 | 361 | var _splitArgsIntoOptions18 = splitArgsIntoOptionsAndCallback(args), 362 | params = _splitArgsIntoOptions18.params, 363 | options = _splitArgsIntoOptions18.options, 364 | cb = _splitArgsIntoOptions18.cb; 365 | 366 | var url = createUrlFromEndpointAndOptions('/live/batches/' + args[0] + '/searches/csv', {}, API_KEY); 367 | return httpGet(url, options, cb, 'json'); 368 | } 369 | }, { 370 | key: "listBatchResultSets", 371 | value: function listBatchResultSets() { 372 | for (var _len19 = arguments.length, args = new Array(_len19), _key19 = 0; _key19 < _len19; _key19++) { 373 | args[_key19] = arguments[_key19]; 374 | } 375 | 376 | var _splitArgsIntoOptions19 = splitArgsIntoOptionsAndCallback(args), 377 | params = _splitArgsIntoOptions19.params, 378 | options = _splitArgsIntoOptions19.options, 379 | cb = _splitArgsIntoOptions19.cb; 380 | 381 | var url = createUrlFromEndpointAndOptions('/live/batches/' + args[0] + '/results', {}, API_KEY); 382 | return httpGet(url, options, cb, 'json'); 383 | } 384 | }, { 385 | key: "getBatchResultSet", 386 | value: function getBatchResultSet() { 387 | for (var _len20 = arguments.length, args = new Array(_len20), _key20 = 0; _key20 < _len20; _key20++) { 388 | args[_key20] = arguments[_key20]; 389 | } 390 | 391 | var _splitArgsIntoOptions20 = splitArgsIntoOptionsAndCallback(args), 392 | params = _splitArgsIntoOptions20.params, 393 | options = _splitArgsIntoOptions20.options, 394 | cb = _splitArgsIntoOptions20.cb; 395 | 396 | var url = createUrlFromEndpointAndOptions('/live/batches/' + args[0] + '/results/' + args[1], {}, API_KEY); 397 | return httpGet(url, options, cb, 'json'); 398 | } 399 | }, { 400 | key: "getBatchResultSetAsCSV", 401 | value: function getBatchResultSetAsCSV() { 402 | for (var _len21 = arguments.length, args = new Array(_len21), _key21 = 0; _key21 < _len21; _key21++) { 403 | args[_key21] = arguments[_key21]; 404 | } 405 | 406 | var _splitArgsIntoOptions21 = splitArgsIntoOptionsAndCallback(args), 407 | params = _splitArgsIntoOptions21.params, 408 | options = _splitArgsIntoOptions21.options, 409 | cb = _splitArgsIntoOptions21.cb; 410 | 411 | var url = createUrlFromEndpointAndOptions('/live/batches/' + args[0] + '/results/' + args[1] + '/csv', {}, API_KEY); 412 | return httpGet(url, options, cb, 'json'); 413 | } 414 | }]); 415 | 416 | return SerpWow; 417 | }(); 418 | 419 | var SerpWowError = 420 | /*#__PURE__*/ 421 | function (_Error) { 422 | _inherits(SerpWowError, _Error); 423 | 424 | function SerpWowError(err) { 425 | var _this; 426 | 427 | _classCallCheck(this, SerpWowError); 428 | 429 | _this = _possibleConstructorReturn(this, _getPrototypeOf(SerpWowError).call(this)); 430 | var n = "SerpWowError: ".concat(err.code, " - ").concat(err.status); 431 | _this.name = n; 432 | _this.code = err.code; 433 | _this.status = err.status; 434 | _this.message = err.message; 435 | return _this; 436 | } 437 | 438 | return SerpWowError; 439 | }(_wrapNativeSuper(Error)); 440 | 441 | function splitArgsIntoOptionsAndCallback(args) { 442 | var params; 443 | var options; 444 | var cb; 445 | 446 | if (args.length > 1) { 447 | var possibleCb = args[args.length - 1]; 448 | 449 | if ('function' === typeof possibleCb) { 450 | cb = possibleCb; 451 | options = args.length === 3 ? args[1] : undefined; 452 | } else { 453 | options = args[1]; 454 | } 455 | 456 | params = args[0]; 457 | } else if ('object' === _typeof(args[0])) { 458 | params = args[0]; 459 | } else if ('function' === typeof args[0]) { 460 | cb = args[0]; 461 | } 462 | 463 | return { 464 | params: params, 465 | options: options, 466 | cb: cb 467 | }; 468 | } 469 | 470 | function createUrlFromEndpointAndOptions(endpoint, options, apiKey, output, qsArgs) { 471 | var o = {}; 472 | 473 | if (options != null) { 474 | o = JSON.parse(JSON.stringify(options)); 475 | } 476 | 477 | o.api_key = apiKey; 478 | o.source = 'nodejs'; 479 | 480 | if (output != null) { 481 | o.output = output; 482 | } 483 | 484 | if (qsArgs != null) { 485 | var _arr = Object.keys(qsArgs); 486 | 487 | for (var _i = 0; _i < _arr.length; _i++) { 488 | var argName = _arr[_i]; 489 | o[argName] = qsArgs[argName]; 490 | } 491 | } 492 | 493 | var query = qs.stringify(o); 494 | var baseURL = "".concat(host).concat(endpoint); 495 | var r = query ? "".concat(baseURL, "?").concat(query) : baseURL; 496 | return r; 497 | } 498 | 499 | function httpGet(url, options, cb, type) { 500 | var useCallback = 'function' === typeof cb; 501 | var reqOptions = { 502 | headers: {} 503 | }; 504 | return fetch(url, reqOptions).then(function (res) { 505 | return Promise.all([res, res.text()]); 506 | }).then(function (_ref) { 507 | var _ref2 = _slicedToArray(_ref, 2), 508 | res = _ref2[0], 509 | body = _ref2[1]; 510 | 511 | if (res.ok) { 512 | if (type === 'json') { 513 | body = JSON.parse(body); 514 | } 515 | 516 | if (useCallback) return cb(null, body); 517 | return body; 518 | } else { 519 | var e = { 520 | code: res.status, 521 | status: res.statusText 522 | }; 523 | 524 | try { 525 | e.message = JSON.parse(body).request_info.message; 526 | } catch (inner) {} 527 | 528 | throw new SerpWowError(e); 529 | } 530 | }).catch(function (err) { 531 | if (useCallback) return cb(err); 532 | throw err; 533 | }); 534 | } 535 | 536 | function httpPost(url, body, cb, type) { 537 | var useCallback = 'function' === typeof cb; 538 | var reqOptions = { 539 | method: 'post', 540 | body: JSON.stringify(body), 541 | headers: { 542 | 'Content-Type': 'application/json' 543 | } 544 | }; 545 | return fetch(url, reqOptions).then(function (res) { 546 | return Promise.all([res, res.text()]); 547 | }).then(function (_ref3) { 548 | var _ref4 = _slicedToArray(_ref3, 2), 549 | res = _ref4[0], 550 | body = _ref4[1]; 551 | 552 | if (res.ok) { 553 | if (type === 'json') { 554 | body = JSON.parse(body); 555 | } 556 | 557 | if (useCallback) return cb(null, body); 558 | return body; 559 | } else { 560 | var e = { 561 | code: res.status, 562 | status: res.statusText 563 | }; 564 | 565 | try { 566 | e.message = JSON.parse(body).request_info.message; 567 | } catch (inner) {} 568 | 569 | throw new SerpWowError(e); 570 | } 571 | }).catch(function (err) { 572 | if (useCallback) return cb(err); 573 | throw err; 574 | }); 575 | } 576 | 577 | function httpPut(url, body, cb, type) { 578 | var useCallback = 'function' === typeof cb; 579 | var reqOptions = { 580 | method: 'put', 581 | body: JSON.stringify(body), 582 | headers: { 583 | 'Content-Type': 'application/json' 584 | } 585 | }; 586 | return fetch(url, reqOptions).then(function (res) { 587 | return Promise.all([res, res.text()]); 588 | }).then(function (_ref5) { 589 | var _ref6 = _slicedToArray(_ref5, 2), 590 | res = _ref6[0], 591 | body = _ref6[1]; 592 | 593 | if (res.ok) { 594 | if (type === 'json') { 595 | body = JSON.parse(body); 596 | } 597 | 598 | if (useCallback) return cb(null, body); 599 | return body; 600 | } else { 601 | var e = { 602 | code: res.status, 603 | status: res.statusText 604 | }; 605 | 606 | try { 607 | e.message = JSON.parse(body).request_info.message; 608 | } catch (inner) {} 609 | 610 | throw new SerpWowError(e); 611 | } 612 | }).catch(function (err) { 613 | if (useCallback) return cb(err); 614 | throw err; 615 | }); 616 | } 617 | 618 | function httpDelete(url, cb, type) { 619 | var useCallback = 'function' === typeof cb; 620 | var reqOptions = { 621 | method: 'delete', 622 | headers: {} 623 | }; 624 | return fetch(url, reqOptions).then(function (res) { 625 | return Promise.all([res, res.text()]); 626 | }).then(function (_ref7) { 627 | var _ref8 = _slicedToArray(_ref7, 2), 628 | res = _ref8[0], 629 | body = _ref8[1]; 630 | 631 | if (res.ok) { 632 | if (type === 'json') { 633 | body = JSON.parse(body); 634 | } 635 | 636 | if (useCallback) return cb(null, body); 637 | return body; 638 | } else { 639 | var e = { 640 | code: res.status, 641 | status: res.statusText 642 | }; 643 | 644 | try { 645 | e.message = JSON.parse(body).request_info.message; 646 | } catch (inner) {} 647 | 648 | throw new SerpWowError(e); 649 | } 650 | }).catch(function (err) { 651 | if (useCallback) return cb(err); 652 | throw err; 653 | }); 654 | } 655 | 656 | module.exports = SerpWow; -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "google-search-results-nodejs", 3 | "version": "0.0.12", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/cli": { 8 | "version": "7.2.3", 9 | "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.2.3.tgz", 10 | "integrity": "sha512-bfna97nmJV6nDJhXNPeEfxyMjWnt6+IjUAaDPiYRTBlm8L41n8nvw6UAqUCbvpFfU246gHPxW7sfWwqtF4FcYA==", 11 | "dev": true, 12 | "requires": { 13 | "chokidar": "^2.0.3", 14 | "commander": "^2.8.1", 15 | "convert-source-map": "^1.1.0", 16 | "fs-readdir-recursive": "^1.1.0", 17 | "glob": "^7.0.0", 18 | "lodash": "^4.17.10", 19 | "mkdirp": "^0.5.1", 20 | "output-file-sync": "^2.0.0", 21 | "slash": "^2.0.0", 22 | "source-map": "^0.5.0" 23 | } 24 | }, 25 | "@babel/code-frame": { 26 | "version": "7.0.0", 27 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", 28 | "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", 29 | "requires": { 30 | "@babel/highlight": "^7.0.0" 31 | } 32 | }, 33 | "@babel/core": { 34 | "version": "7.2.2", 35 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.2.2.tgz", 36 | "integrity": "sha512-59vB0RWt09cAct5EIe58+NzGP4TFSD3Bz//2/ELy3ZeTeKF6VTD1AXlH8BGGbCX0PuobZBsIzO7IAI9PH67eKw==", 37 | "requires": { 38 | "@babel/code-frame": "^7.0.0", 39 | "@babel/generator": "^7.2.2", 40 | "@babel/helpers": "^7.2.0", 41 | "@babel/parser": "^7.2.2", 42 | "@babel/template": "^7.2.2", 43 | "@babel/traverse": "^7.2.2", 44 | "@babel/types": "^7.2.2", 45 | "convert-source-map": "^1.1.0", 46 | "debug": "^4.1.0", 47 | "json5": "^2.1.0", 48 | "lodash": "^4.17.10", 49 | "resolve": "^1.3.2", 50 | "semver": "^5.4.1", 51 | "source-map": "^0.5.0" 52 | } 53 | }, 54 | "@babel/generator": { 55 | "version": "7.3.2", 56 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.3.2.tgz", 57 | "integrity": "sha512-f3QCuPppXxtZOEm5GWPra/uYUjmNQlu9pbAD8D/9jze4pTY83rTtB1igTBSwvkeNlC5gR24zFFkz+2WHLFQhqQ==", 58 | "requires": { 59 | "@babel/types": "^7.3.2", 60 | "jsesc": "^2.5.1", 61 | "lodash": "^4.17.10", 62 | "source-map": "^0.5.0", 63 | "trim-right": "^1.0.1" 64 | } 65 | }, 66 | "@babel/helper-annotate-as-pure": { 67 | "version": "7.0.0", 68 | "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", 69 | "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", 70 | "requires": { 71 | "@babel/types": "^7.0.0" 72 | } 73 | }, 74 | "@babel/helper-builder-binary-assignment-operator-visitor": { 75 | "version": "7.1.0", 76 | "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz", 77 | "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==", 78 | "requires": { 79 | "@babel/helper-explode-assignable-expression": "^7.1.0", 80 | "@babel/types": "^7.0.0" 81 | } 82 | }, 83 | "@babel/helper-call-delegate": { 84 | "version": "7.1.0", 85 | "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.1.0.tgz", 86 | "integrity": "sha512-YEtYZrw3GUK6emQHKthltKNZwszBcHK58Ygcis+gVUrF4/FmTVr5CCqQNSfmvg2y+YDEANyYoaLz/SHsnusCwQ==", 87 | "requires": { 88 | "@babel/helper-hoist-variables": "^7.0.0", 89 | "@babel/traverse": "^7.1.0", 90 | "@babel/types": "^7.0.0" 91 | } 92 | }, 93 | "@babel/helper-define-map": { 94 | "version": "7.1.0", 95 | "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz", 96 | "integrity": "sha512-yPPcW8dc3gZLN+U1mhYV91QU3n5uTbx7DUdf8NnPbjS0RMwBuHi9Xt2MUgppmNz7CJxTBWsGczTiEp1CSOTPRg==", 97 | "requires": { 98 | "@babel/helper-function-name": "^7.1.0", 99 | "@babel/types": "^7.0.0", 100 | "lodash": "^4.17.10" 101 | } 102 | }, 103 | "@babel/helper-explode-assignable-expression": { 104 | "version": "7.1.0", 105 | "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz", 106 | "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==", 107 | "requires": { 108 | "@babel/traverse": "^7.1.0", 109 | "@babel/types": "^7.0.0" 110 | } 111 | }, 112 | "@babel/helper-function-name": { 113 | "version": "7.1.0", 114 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", 115 | "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", 116 | "requires": { 117 | "@babel/helper-get-function-arity": "^7.0.0", 118 | "@babel/template": "^7.1.0", 119 | "@babel/types": "^7.0.0" 120 | } 121 | }, 122 | "@babel/helper-get-function-arity": { 123 | "version": "7.0.0", 124 | "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", 125 | "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", 126 | "requires": { 127 | "@babel/types": "^7.0.0" 128 | } 129 | }, 130 | "@babel/helper-hoist-variables": { 131 | "version": "7.0.0", 132 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz", 133 | "integrity": "sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w==", 134 | "requires": { 135 | "@babel/types": "^7.0.0" 136 | } 137 | }, 138 | "@babel/helper-member-expression-to-functions": { 139 | "version": "7.0.0", 140 | "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz", 141 | "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==", 142 | "requires": { 143 | "@babel/types": "^7.0.0" 144 | } 145 | }, 146 | "@babel/helper-module-imports": { 147 | "version": "7.0.0", 148 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", 149 | "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", 150 | "requires": { 151 | "@babel/types": "^7.0.0" 152 | } 153 | }, 154 | "@babel/helper-module-transforms": { 155 | "version": "7.2.2", 156 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.2.2.tgz", 157 | "integrity": "sha512-YRD7I6Wsv+IHuTPkAmAS4HhY0dkPobgLftHp0cRGZSdrRvmZY8rFvae/GVu3bD00qscuvK3WPHB3YdNpBXUqrA==", 158 | "requires": { 159 | "@babel/helper-module-imports": "^7.0.0", 160 | "@babel/helper-simple-access": "^7.1.0", 161 | "@babel/helper-split-export-declaration": "^7.0.0", 162 | "@babel/template": "^7.2.2", 163 | "@babel/types": "^7.2.2", 164 | "lodash": "^4.17.10" 165 | } 166 | }, 167 | "@babel/helper-optimise-call-expression": { 168 | "version": "7.0.0", 169 | "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", 170 | "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", 171 | "requires": { 172 | "@babel/types": "^7.0.0" 173 | } 174 | }, 175 | "@babel/helper-plugin-utils": { 176 | "version": "7.0.0", 177 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", 178 | "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==" 179 | }, 180 | "@babel/helper-regex": { 181 | "version": "7.0.0", 182 | "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0.tgz", 183 | "integrity": "sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg==", 184 | "requires": { 185 | "lodash": "^4.17.10" 186 | } 187 | }, 188 | "@babel/helper-remap-async-to-generator": { 189 | "version": "7.1.0", 190 | "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz", 191 | "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==", 192 | "requires": { 193 | "@babel/helper-annotate-as-pure": "^7.0.0", 194 | "@babel/helper-wrap-function": "^7.1.0", 195 | "@babel/template": "^7.1.0", 196 | "@babel/traverse": "^7.1.0", 197 | "@babel/types": "^7.0.0" 198 | } 199 | }, 200 | "@babel/helper-replace-supers": { 201 | "version": "7.2.3", 202 | "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.2.3.tgz", 203 | "integrity": "sha512-GyieIznGUfPXPWu0yLS6U55Mz67AZD9cUk0BfirOWlPrXlBcan9Gz+vHGz+cPfuoweZSnPzPIm67VtQM0OWZbA==", 204 | "requires": { 205 | "@babel/helper-member-expression-to-functions": "^7.0.0", 206 | "@babel/helper-optimise-call-expression": "^7.0.0", 207 | "@babel/traverse": "^7.2.3", 208 | "@babel/types": "^7.0.0" 209 | } 210 | }, 211 | "@babel/helper-simple-access": { 212 | "version": "7.1.0", 213 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz", 214 | "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", 215 | "requires": { 216 | "@babel/template": "^7.1.0", 217 | "@babel/types": "^7.0.0" 218 | } 219 | }, 220 | "@babel/helper-split-export-declaration": { 221 | "version": "7.0.0", 222 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz", 223 | "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==", 224 | "requires": { 225 | "@babel/types": "^7.0.0" 226 | } 227 | }, 228 | "@babel/helper-wrap-function": { 229 | "version": "7.2.0", 230 | "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz", 231 | "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==", 232 | "requires": { 233 | "@babel/helper-function-name": "^7.1.0", 234 | "@babel/template": "^7.1.0", 235 | "@babel/traverse": "^7.1.0", 236 | "@babel/types": "^7.2.0" 237 | } 238 | }, 239 | "@babel/helpers": { 240 | "version": "7.3.1", 241 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.3.1.tgz", 242 | "integrity": "sha512-Q82R3jKsVpUV99mgX50gOPCWwco9Ec5Iln/8Vyu4osNIOQgSrd9RFrQeUvmvddFNoLwMyOUWU+5ckioEKpDoGA==", 243 | "requires": { 244 | "@babel/template": "^7.1.2", 245 | "@babel/traverse": "^7.1.5", 246 | "@babel/types": "^7.3.0" 247 | } 248 | }, 249 | "@babel/highlight": { 250 | "version": "7.0.0", 251 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", 252 | "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", 253 | "requires": { 254 | "chalk": "^2.0.0", 255 | "esutils": "^2.0.2", 256 | "js-tokens": "^4.0.0" 257 | } 258 | }, 259 | "@babel/parser": { 260 | "version": "7.3.2", 261 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.3.2.tgz", 262 | "integrity": "sha512-QzNUC2RO1gadg+fs21fi0Uu0OuGNzRKEmgCxoLNzbCdoprLwjfmZwzUrpUNfJPaVRwBpDY47A17yYEGWyRelnQ==" 263 | }, 264 | "@babel/plugin-proposal-async-generator-functions": { 265 | "version": "7.2.0", 266 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz", 267 | "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", 268 | "requires": { 269 | "@babel/helper-plugin-utils": "^7.0.0", 270 | "@babel/helper-remap-async-to-generator": "^7.1.0", 271 | "@babel/plugin-syntax-async-generators": "^7.2.0" 272 | } 273 | }, 274 | "@babel/plugin-proposal-json-strings": { 275 | "version": "7.2.0", 276 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", 277 | "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", 278 | "requires": { 279 | "@babel/helper-plugin-utils": "^7.0.0", 280 | "@babel/plugin-syntax-json-strings": "^7.2.0" 281 | } 282 | }, 283 | "@babel/plugin-proposal-object-rest-spread": { 284 | "version": "7.3.2", 285 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.3.2.tgz", 286 | "integrity": "sha512-DjeMS+J2+lpANkYLLO+m6GjoTMygYglKmRe6cDTbFv3L9i6mmiE8fe6B8MtCSLZpVXscD5kn7s6SgtHrDoBWoA==", 287 | "requires": { 288 | "@babel/helper-plugin-utils": "^7.0.0", 289 | "@babel/plugin-syntax-object-rest-spread": "^7.2.0" 290 | } 291 | }, 292 | "@babel/plugin-proposal-optional-catch-binding": { 293 | "version": "7.2.0", 294 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz", 295 | "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==", 296 | "requires": { 297 | "@babel/helper-plugin-utils": "^7.0.0", 298 | "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" 299 | } 300 | }, 301 | "@babel/plugin-proposal-unicode-property-regex": { 302 | "version": "7.2.0", 303 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.2.0.tgz", 304 | "integrity": "sha512-LvRVYb7kikuOtIoUeWTkOxQEV1kYvL5B6U3iWEGCzPNRus1MzJweFqORTj+0jkxozkTSYNJozPOddxmqdqsRpw==", 305 | "requires": { 306 | "@babel/helper-plugin-utils": "^7.0.0", 307 | "@babel/helper-regex": "^7.0.0", 308 | "regexpu-core": "^4.2.0" 309 | } 310 | }, 311 | "@babel/plugin-syntax-async-generators": { 312 | "version": "7.2.0", 313 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", 314 | "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", 315 | "requires": { 316 | "@babel/helper-plugin-utils": "^7.0.0" 317 | } 318 | }, 319 | "@babel/plugin-syntax-json-strings": { 320 | "version": "7.2.0", 321 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", 322 | "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", 323 | "requires": { 324 | "@babel/helper-plugin-utils": "^7.0.0" 325 | } 326 | }, 327 | "@babel/plugin-syntax-object-rest-spread": { 328 | "version": "7.2.0", 329 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", 330 | "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", 331 | "requires": { 332 | "@babel/helper-plugin-utils": "^7.0.0" 333 | } 334 | }, 335 | "@babel/plugin-syntax-optional-catch-binding": { 336 | "version": "7.2.0", 337 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", 338 | "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", 339 | "requires": { 340 | "@babel/helper-plugin-utils": "^7.0.0" 341 | } 342 | }, 343 | "@babel/plugin-transform-arrow-functions": { 344 | "version": "7.2.0", 345 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", 346 | "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", 347 | "requires": { 348 | "@babel/helper-plugin-utils": "^7.0.0" 349 | } 350 | }, 351 | "@babel/plugin-transform-async-to-generator": { 352 | "version": "7.2.0", 353 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.2.0.tgz", 354 | "integrity": "sha512-CEHzg4g5UraReozI9D4fblBYABs7IM6UerAVG7EJVrTLC5keh00aEuLUT+O40+mJCEzaXkYfTCUKIyeDfMOFFQ==", 355 | "requires": { 356 | "@babel/helper-module-imports": "^7.0.0", 357 | "@babel/helper-plugin-utils": "^7.0.0", 358 | "@babel/helper-remap-async-to-generator": "^7.1.0" 359 | } 360 | }, 361 | "@babel/plugin-transform-block-scoped-functions": { 362 | "version": "7.2.0", 363 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", 364 | "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", 365 | "requires": { 366 | "@babel/helper-plugin-utils": "^7.0.0" 367 | } 368 | }, 369 | "@babel/plugin-transform-block-scoping": { 370 | "version": "7.2.0", 371 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.2.0.tgz", 372 | "integrity": "sha512-vDTgf19ZEV6mx35yiPJe4fS02mPQUUcBNwWQSZFXSzTSbsJFQvHt7DqyS3LK8oOWALFOsJ+8bbqBgkirZteD5Q==", 373 | "requires": { 374 | "@babel/helper-plugin-utils": "^7.0.0", 375 | "lodash": "^4.17.10" 376 | } 377 | }, 378 | "@babel/plugin-transform-classes": { 379 | "version": "7.2.2", 380 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.2.2.tgz", 381 | "integrity": "sha512-gEZvgTy1VtcDOaQty1l10T3jQmJKlNVxLDCs+3rCVPr6nMkODLELxViq5X9l+rfxbie3XrfrMCYYY6eX3aOcOQ==", 382 | "requires": { 383 | "@babel/helper-annotate-as-pure": "^7.0.0", 384 | "@babel/helper-define-map": "^7.1.0", 385 | "@babel/helper-function-name": "^7.1.0", 386 | "@babel/helper-optimise-call-expression": "^7.0.0", 387 | "@babel/helper-plugin-utils": "^7.0.0", 388 | "@babel/helper-replace-supers": "^7.1.0", 389 | "@babel/helper-split-export-declaration": "^7.0.0", 390 | "globals": "^11.1.0" 391 | } 392 | }, 393 | "@babel/plugin-transform-computed-properties": { 394 | "version": "7.2.0", 395 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz", 396 | "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", 397 | "requires": { 398 | "@babel/helper-plugin-utils": "^7.0.0" 399 | } 400 | }, 401 | "@babel/plugin-transform-destructuring": { 402 | "version": "7.3.2", 403 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.3.2.tgz", 404 | "integrity": "sha512-Lrj/u53Ufqxl/sGxyjsJ2XNtNuEjDyjpqdhMNh5aZ+XFOdThL46KBj27Uem4ggoezSYBxKWAil6Hu8HtwqesYw==", 405 | "requires": { 406 | "@babel/helper-plugin-utils": "^7.0.0" 407 | } 408 | }, 409 | "@babel/plugin-transform-dotall-regex": { 410 | "version": "7.2.0", 411 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.2.0.tgz", 412 | "integrity": "sha512-sKxnyHfizweTgKZf7XsXu/CNupKhzijptfTM+bozonIuyVrLWVUvYjE2bhuSBML8VQeMxq4Mm63Q9qvcvUcciQ==", 413 | "requires": { 414 | "@babel/helper-plugin-utils": "^7.0.0", 415 | "@babel/helper-regex": "^7.0.0", 416 | "regexpu-core": "^4.1.3" 417 | } 418 | }, 419 | "@babel/plugin-transform-duplicate-keys": { 420 | "version": "7.2.0", 421 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz", 422 | "integrity": "sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw==", 423 | "requires": { 424 | "@babel/helper-plugin-utils": "^7.0.0" 425 | } 426 | }, 427 | "@babel/plugin-transform-exponentiation-operator": { 428 | "version": "7.2.0", 429 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz", 430 | "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==", 431 | "requires": { 432 | "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", 433 | "@babel/helper-plugin-utils": "^7.0.0" 434 | } 435 | }, 436 | "@babel/plugin-transform-for-of": { 437 | "version": "7.2.0", 438 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.2.0.tgz", 439 | "integrity": "sha512-Kz7Mt0SsV2tQk6jG5bBv5phVbkd0gd27SgYD4hH1aLMJRchM0dzHaXvrWhVZ+WxAlDoAKZ7Uy3jVTW2mKXQ1WQ==", 440 | "requires": { 441 | "@babel/helper-plugin-utils": "^7.0.0" 442 | } 443 | }, 444 | "@babel/plugin-transform-function-name": { 445 | "version": "7.2.0", 446 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.2.0.tgz", 447 | "integrity": "sha512-kWgksow9lHdvBC2Z4mxTsvc7YdY7w/V6B2vy9cTIPtLEE9NhwoWivaxdNM/S37elu5bqlLP/qOY906LukO9lkQ==", 448 | "requires": { 449 | "@babel/helper-function-name": "^7.1.0", 450 | "@babel/helper-plugin-utils": "^7.0.0" 451 | } 452 | }, 453 | "@babel/plugin-transform-literals": { 454 | "version": "7.2.0", 455 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz", 456 | "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", 457 | "requires": { 458 | "@babel/helper-plugin-utils": "^7.0.0" 459 | } 460 | }, 461 | "@babel/plugin-transform-modules-amd": { 462 | "version": "7.2.0", 463 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz", 464 | "integrity": "sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw==", 465 | "requires": { 466 | "@babel/helper-module-transforms": "^7.1.0", 467 | "@babel/helper-plugin-utils": "^7.0.0" 468 | } 469 | }, 470 | "@babel/plugin-transform-modules-commonjs": { 471 | "version": "7.2.0", 472 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.2.0.tgz", 473 | "integrity": "sha512-V6y0uaUQrQPXUrmj+hgnks8va2L0zcZymeU7TtWEgdRLNkceafKXEduv7QzgQAE4lT+suwooG9dC7LFhdRAbVQ==", 474 | "requires": { 475 | "@babel/helper-module-transforms": "^7.1.0", 476 | "@babel/helper-plugin-utils": "^7.0.0", 477 | "@babel/helper-simple-access": "^7.1.0" 478 | } 479 | }, 480 | "@babel/plugin-transform-modules-systemjs": { 481 | "version": "7.2.0", 482 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.2.0.tgz", 483 | "integrity": "sha512-aYJwpAhoK9a+1+O625WIjvMY11wkB/ok0WClVwmeo3mCjcNRjt+/8gHWrB5i+00mUju0gWsBkQnPpdvQ7PImmQ==", 484 | "requires": { 485 | "@babel/helper-hoist-variables": "^7.0.0", 486 | "@babel/helper-plugin-utils": "^7.0.0" 487 | } 488 | }, 489 | "@babel/plugin-transform-modules-umd": { 490 | "version": "7.2.0", 491 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz", 492 | "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==", 493 | "requires": { 494 | "@babel/helper-module-transforms": "^7.1.0", 495 | "@babel/helper-plugin-utils": "^7.0.0" 496 | } 497 | }, 498 | "@babel/plugin-transform-named-capturing-groups-regex": { 499 | "version": "7.3.0", 500 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.3.0.tgz", 501 | "integrity": "sha512-NxIoNVhk9ZxS+9lSoAQ/LM0V2UEvARLttEHUrRDGKFaAxOYQcrkN/nLRE+BbbicCAvZPl7wMP0X60HsHE5DtQw==", 502 | "requires": { 503 | "regexp-tree": "^0.1.0" 504 | } 505 | }, 506 | "@babel/plugin-transform-new-target": { 507 | "version": "7.0.0", 508 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz", 509 | "integrity": "sha512-yin069FYjah+LbqfGeTfzIBODex/e++Yfa0rH0fpfam9uTbuEeEOx5GLGr210ggOV77mVRNoeqSYqeuaqSzVSw==", 510 | "requires": { 511 | "@babel/helper-plugin-utils": "^7.0.0" 512 | } 513 | }, 514 | "@babel/plugin-transform-object-super": { 515 | "version": "7.2.0", 516 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz", 517 | "integrity": "sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg==", 518 | "requires": { 519 | "@babel/helper-plugin-utils": "^7.0.0", 520 | "@babel/helper-replace-supers": "^7.1.0" 521 | } 522 | }, 523 | "@babel/plugin-transform-parameters": { 524 | "version": "7.2.0", 525 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.2.0.tgz", 526 | "integrity": "sha512-kB9+hhUidIgUoBQ0MsxMewhzr8i60nMa2KgeJKQWYrqQpqcBYtnpR+JgkadZVZoaEZ/eKu9mclFaVwhRpLNSzA==", 527 | "requires": { 528 | "@babel/helper-call-delegate": "^7.1.0", 529 | "@babel/helper-get-function-arity": "^7.0.0", 530 | "@babel/helper-plugin-utils": "^7.0.0" 531 | } 532 | }, 533 | "@babel/plugin-transform-regenerator": { 534 | "version": "7.0.0", 535 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz", 536 | "integrity": "sha512-sj2qzsEx8KDVv1QuJc/dEfilkg3RRPvPYx/VnKLtItVQRWt1Wqf5eVCOLZm29CiGFfYYsA3VPjfizTCV0S0Dlw==", 537 | "requires": { 538 | "regenerator-transform": "^0.13.3" 539 | } 540 | }, 541 | "@babel/plugin-transform-shorthand-properties": { 542 | "version": "7.2.0", 543 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz", 544 | "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", 545 | "requires": { 546 | "@babel/helper-plugin-utils": "^7.0.0" 547 | } 548 | }, 549 | "@babel/plugin-transform-spread": { 550 | "version": "7.2.2", 551 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz", 552 | "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==", 553 | "requires": { 554 | "@babel/helper-plugin-utils": "^7.0.0" 555 | } 556 | }, 557 | "@babel/plugin-transform-sticky-regex": { 558 | "version": "7.2.0", 559 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz", 560 | "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==", 561 | "requires": { 562 | "@babel/helper-plugin-utils": "^7.0.0", 563 | "@babel/helper-regex": "^7.0.0" 564 | } 565 | }, 566 | "@babel/plugin-transform-template-literals": { 567 | "version": "7.2.0", 568 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.2.0.tgz", 569 | "integrity": "sha512-FkPix00J9A/XWXv4VoKJBMeSkyY9x/TqIh76wzcdfl57RJJcf8CehQ08uwfhCDNtRQYtHQKBTwKZDEyjE13Lwg==", 570 | "requires": { 571 | "@babel/helper-annotate-as-pure": "^7.0.0", 572 | "@babel/helper-plugin-utils": "^7.0.0" 573 | } 574 | }, 575 | "@babel/plugin-transform-typeof-symbol": { 576 | "version": "7.2.0", 577 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz", 578 | "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==", 579 | "requires": { 580 | "@babel/helper-plugin-utils": "^7.0.0" 581 | } 582 | }, 583 | "@babel/plugin-transform-unicode-regex": { 584 | "version": "7.2.0", 585 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.2.0.tgz", 586 | "integrity": "sha512-m48Y0lMhrbXEJnVUaYly29jRXbQ3ksxPrS1Tg8t+MHqzXhtBYAvI51euOBaoAlZLPHsieY9XPVMf80a5x0cPcA==", 587 | "requires": { 588 | "@babel/helper-plugin-utils": "^7.0.0", 589 | "@babel/helper-regex": "^7.0.0", 590 | "regexpu-core": "^4.1.3" 591 | } 592 | }, 593 | "@babel/polyfill": { 594 | "version": "7.2.5", 595 | "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.2.5.tgz", 596 | "integrity": "sha512-8Y/t3MWThtMLYr0YNC/Q76tqN1w30+b0uQMeFUYauG2UGTR19zyUtFrAzT23zNtBxPp+LbE5E/nwV/q/r3y6ug==", 597 | "requires": { 598 | "core-js": "^2.5.7", 599 | "regenerator-runtime": "^0.12.0" 600 | } 601 | }, 602 | "@babel/preset-env": { 603 | "version": "7.3.1", 604 | "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.3.1.tgz", 605 | "integrity": "sha512-FHKrD6Dxf30e8xgHQO0zJZpUPfVZg+Xwgz5/RdSWCbza9QLNk4Qbp40ctRoqDxml3O8RMzB1DU55SXeDG6PqHQ==", 606 | "requires": { 607 | "@babel/helper-module-imports": "^7.0.0", 608 | "@babel/helper-plugin-utils": "^7.0.0", 609 | "@babel/plugin-proposal-async-generator-functions": "^7.2.0", 610 | "@babel/plugin-proposal-json-strings": "^7.2.0", 611 | "@babel/plugin-proposal-object-rest-spread": "^7.3.1", 612 | "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", 613 | "@babel/plugin-proposal-unicode-property-regex": "^7.2.0", 614 | "@babel/plugin-syntax-async-generators": "^7.2.0", 615 | "@babel/plugin-syntax-json-strings": "^7.2.0", 616 | "@babel/plugin-syntax-object-rest-spread": "^7.2.0", 617 | "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", 618 | "@babel/plugin-transform-arrow-functions": "^7.2.0", 619 | "@babel/plugin-transform-async-to-generator": "^7.2.0", 620 | "@babel/plugin-transform-block-scoped-functions": "^7.2.0", 621 | "@babel/plugin-transform-block-scoping": "^7.2.0", 622 | "@babel/plugin-transform-classes": "^7.2.0", 623 | "@babel/plugin-transform-computed-properties": "^7.2.0", 624 | "@babel/plugin-transform-destructuring": "^7.2.0", 625 | "@babel/plugin-transform-dotall-regex": "^7.2.0", 626 | "@babel/plugin-transform-duplicate-keys": "^7.2.0", 627 | "@babel/plugin-transform-exponentiation-operator": "^7.2.0", 628 | "@babel/plugin-transform-for-of": "^7.2.0", 629 | "@babel/plugin-transform-function-name": "^7.2.0", 630 | "@babel/plugin-transform-literals": "^7.2.0", 631 | "@babel/plugin-transform-modules-amd": "^7.2.0", 632 | "@babel/plugin-transform-modules-commonjs": "^7.2.0", 633 | "@babel/plugin-transform-modules-systemjs": "^7.2.0", 634 | "@babel/plugin-transform-modules-umd": "^7.2.0", 635 | "@babel/plugin-transform-named-capturing-groups-regex": "^7.3.0", 636 | "@babel/plugin-transform-new-target": "^7.0.0", 637 | "@babel/plugin-transform-object-super": "^7.2.0", 638 | "@babel/plugin-transform-parameters": "^7.2.0", 639 | "@babel/plugin-transform-regenerator": "^7.0.0", 640 | "@babel/plugin-transform-shorthand-properties": "^7.2.0", 641 | "@babel/plugin-transform-spread": "^7.2.0", 642 | "@babel/plugin-transform-sticky-regex": "^7.2.0", 643 | "@babel/plugin-transform-template-literals": "^7.2.0", 644 | "@babel/plugin-transform-typeof-symbol": "^7.2.0", 645 | "@babel/plugin-transform-unicode-regex": "^7.2.0", 646 | "browserslist": "^4.3.4", 647 | "invariant": "^2.2.2", 648 | "js-levenshtein": "^1.1.3", 649 | "semver": "^5.3.0" 650 | } 651 | }, 652 | "@babel/template": { 653 | "version": "7.2.2", 654 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.2.2.tgz", 655 | "integrity": "sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==", 656 | "requires": { 657 | "@babel/code-frame": "^7.0.0", 658 | "@babel/parser": "^7.2.2", 659 | "@babel/types": "^7.2.2" 660 | } 661 | }, 662 | "@babel/traverse": { 663 | "version": "7.2.3", 664 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.2.3.tgz", 665 | "integrity": "sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw==", 666 | "requires": { 667 | "@babel/code-frame": "^7.0.0", 668 | "@babel/generator": "^7.2.2", 669 | "@babel/helper-function-name": "^7.1.0", 670 | "@babel/helper-split-export-declaration": "^7.0.0", 671 | "@babel/parser": "^7.2.3", 672 | "@babel/types": "^7.2.2", 673 | "debug": "^4.1.0", 674 | "globals": "^11.1.0", 675 | "lodash": "^4.17.10" 676 | } 677 | }, 678 | "@babel/types": { 679 | "version": "7.3.2", 680 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.3.2.tgz", 681 | "integrity": "sha512-3Y6H8xlUlpbGR+XvawiH0UXehqydTmNmEpozWcXymqwcrwYAl5KMvKtQ+TF6f6E08V6Jur7v/ykdDSF+WDEIXQ==", 682 | "requires": { 683 | "esutils": "^2.0.2", 684 | "lodash": "^4.17.10", 685 | "to-fast-properties": "^2.0.0" 686 | } 687 | }, 688 | "ansi-regex": { 689 | "version": "3.0.0", 690 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 691 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" 692 | }, 693 | "ansi-styles": { 694 | "version": "3.2.1", 695 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 696 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 697 | "requires": { 698 | "color-convert": "^1.9.0" 699 | } 700 | }, 701 | "anymatch": { 702 | "version": "2.0.0", 703 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", 704 | "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", 705 | "dev": true, 706 | "optional": true, 707 | "requires": { 708 | "micromatch": "^3.1.4", 709 | "normalize-path": "^2.1.1" 710 | }, 711 | "dependencies": { 712 | "normalize-path": { 713 | "version": "2.1.1", 714 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", 715 | "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", 716 | "dev": true, 717 | "optional": true, 718 | "requires": { 719 | "remove-trailing-separator": "^1.0.1" 720 | } 721 | } 722 | } 723 | }, 724 | "arr-diff": { 725 | "version": "4.0.0", 726 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", 727 | "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", 728 | "dev": true 729 | }, 730 | "arr-flatten": { 731 | "version": "1.1.0", 732 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", 733 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", 734 | "dev": true 735 | }, 736 | "arr-union": { 737 | "version": "3.1.0", 738 | "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", 739 | "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", 740 | "dev": true 741 | }, 742 | "array-unique": { 743 | "version": "0.3.2", 744 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", 745 | "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", 746 | "dev": true 747 | }, 748 | "assign-symbols": { 749 | "version": "1.0.0", 750 | "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", 751 | "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", 752 | "dev": true 753 | }, 754 | "async-each": { 755 | "version": "1.0.1", 756 | "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", 757 | "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", 758 | "dev": true, 759 | "optional": true 760 | }, 761 | "atob": { 762 | "version": "2.1.2", 763 | "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", 764 | "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", 765 | "dev": true 766 | }, 767 | "babel-loader": { 768 | "version": "7.1.5", 769 | "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.5.tgz", 770 | "integrity": "sha512-iCHfbieL5d1LfOQeeVJEUyD9rTwBcP/fcEbRCfempxTDuqrKpu0AZjLAQHEQa3Yqyj9ORKe2iHfoj4rHLf7xpw==", 771 | "dev": true, 772 | "requires": { 773 | "find-cache-dir": "^1.0.0", 774 | "loader-utils": "^1.0.2", 775 | "mkdirp": "^0.5.1" 776 | } 777 | }, 778 | "balanced-match": { 779 | "version": "1.0.0", 780 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 781 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 782 | "dev": true 783 | }, 784 | "base": { 785 | "version": "0.11.2", 786 | "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", 787 | "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", 788 | "dev": true, 789 | "requires": { 790 | "cache-base": "^1.0.1", 791 | "class-utils": "^0.3.5", 792 | "component-emitter": "^1.2.1", 793 | "define-property": "^1.0.0", 794 | "isobject": "^3.0.1", 795 | "mixin-deep": "^1.2.0", 796 | "pascalcase": "^0.1.1" 797 | }, 798 | "dependencies": { 799 | "define-property": { 800 | "version": "1.0.0", 801 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 802 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 803 | "dev": true, 804 | "requires": { 805 | "is-descriptor": "^1.0.0" 806 | } 807 | }, 808 | "is-accessor-descriptor": { 809 | "version": "1.0.0", 810 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 811 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 812 | "dev": true, 813 | "requires": { 814 | "kind-of": "^6.0.0" 815 | } 816 | }, 817 | "is-data-descriptor": { 818 | "version": "1.0.0", 819 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 820 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 821 | "dev": true, 822 | "requires": { 823 | "kind-of": "^6.0.0" 824 | } 825 | }, 826 | "is-descriptor": { 827 | "version": "1.0.2", 828 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 829 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 830 | "dev": true, 831 | "requires": { 832 | "is-accessor-descriptor": "^1.0.0", 833 | "is-data-descriptor": "^1.0.0", 834 | "kind-of": "^6.0.2" 835 | } 836 | } 837 | } 838 | }, 839 | "big.js": { 840 | "version": "5.2.2", 841 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", 842 | "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", 843 | "dev": true 844 | }, 845 | "binary-extensions": { 846 | "version": "1.13.0", 847 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.0.tgz", 848 | "integrity": "sha512-EgmjVLMn22z7eGGv3kcnHwSnJXmFHjISTY9E/S5lIcTD3Oxw05QTcBLNkJFzcb3cNueUdF/IN4U+d78V0zO8Hw==", 849 | "dev": true, 850 | "optional": true 851 | }, 852 | "brace-expansion": { 853 | "version": "1.1.11", 854 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 855 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 856 | "dev": true, 857 | "requires": { 858 | "balanced-match": "^1.0.0", 859 | "concat-map": "0.0.1" 860 | } 861 | }, 862 | "braces": { 863 | "version": "2.3.2", 864 | "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", 865 | "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", 866 | "dev": true, 867 | "requires": { 868 | "arr-flatten": "^1.1.0", 869 | "array-unique": "^0.3.2", 870 | "extend-shallow": "^2.0.1", 871 | "fill-range": "^4.0.0", 872 | "isobject": "^3.0.1", 873 | "repeat-element": "^1.1.2", 874 | "snapdragon": "^0.8.1", 875 | "snapdragon-node": "^2.0.1", 876 | "split-string": "^3.0.2", 877 | "to-regex": "^3.0.1" 878 | }, 879 | "dependencies": { 880 | "extend-shallow": { 881 | "version": "2.0.1", 882 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 883 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 884 | "dev": true, 885 | "requires": { 886 | "is-extendable": "^0.1.0" 887 | } 888 | } 889 | } 890 | }, 891 | "browser-stdout": { 892 | "version": "1.3.1", 893 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", 894 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", 895 | "dev": true 896 | }, 897 | "browserslist": { 898 | "version": "4.4.1", 899 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.4.1.tgz", 900 | "integrity": "sha512-pEBxEXg7JwaakBXjATYw/D1YZh4QUSCX/Mnd/wnqSRPPSi1U39iDhDoKGoBUcraKdxDlrYqJxSI5nNvD+dWP2A==", 901 | "requires": { 902 | "caniuse-lite": "^1.0.30000929", 903 | "electron-to-chromium": "^1.3.103", 904 | "node-releases": "^1.1.3" 905 | } 906 | }, 907 | "cache-base": { 908 | "version": "1.0.1", 909 | "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", 910 | "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", 911 | "dev": true, 912 | "requires": { 913 | "collection-visit": "^1.0.0", 914 | "component-emitter": "^1.2.1", 915 | "get-value": "^2.0.6", 916 | "has-value": "^1.0.0", 917 | "isobject": "^3.0.1", 918 | "set-value": "^2.0.0", 919 | "to-object-path": "^0.3.0", 920 | "union-value": "^1.0.0", 921 | "unset-value": "^1.0.0" 922 | } 923 | }, 924 | "camelcase": { 925 | "version": "5.0.0", 926 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", 927 | "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==" 928 | }, 929 | "caniuse-lite": { 930 | "version": "1.0.30000935", 931 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000935.tgz", 932 | "integrity": "sha512-1Y2uJ5y56qDt3jsDTdBHL1OqiImzjoQcBG6Yl3Qizq8mcc2SgCFpi+ZwLLqkztYnk9l87IYqRlNBnPSOTbFkXQ==" 933 | }, 934 | "chalk": { 935 | "version": "2.4.2", 936 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 937 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 938 | "requires": { 939 | "ansi-styles": "^3.2.1", 940 | "escape-string-regexp": "^1.0.5", 941 | "supports-color": "^5.3.0" 942 | } 943 | }, 944 | "chokidar": { 945 | "version": "2.1.0", 946 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.0.tgz", 947 | "integrity": "sha512-5t6G2SH8eO6lCvYOoUpaRnF5Qfd//gd7qJAkwRUw9qlGVkiQ13uwQngqbWWaurOsaAm9+kUGbITADxt6H0XFNQ==", 948 | "dev": true, 949 | "optional": true, 950 | "requires": { 951 | "anymatch": "^2.0.0", 952 | "async-each": "^1.0.1", 953 | "braces": "^2.3.2", 954 | "fsevents": "^1.2.7", 955 | "glob-parent": "^3.1.0", 956 | "inherits": "^2.0.3", 957 | "is-binary-path": "^1.0.0", 958 | "is-glob": "^4.0.0", 959 | "normalize-path": "^3.0.0", 960 | "path-is-absolute": "^1.0.0", 961 | "readdirp": "^2.2.1", 962 | "upath": "^1.1.0" 963 | } 964 | }, 965 | "class-utils": { 966 | "version": "0.3.6", 967 | "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", 968 | "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", 969 | "dev": true, 970 | "requires": { 971 | "arr-union": "^3.1.0", 972 | "define-property": "^0.2.5", 973 | "isobject": "^3.0.0", 974 | "static-extend": "^0.1.1" 975 | }, 976 | "dependencies": { 977 | "define-property": { 978 | "version": "0.2.5", 979 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 980 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 981 | "dev": true, 982 | "requires": { 983 | "is-descriptor": "^0.1.0" 984 | } 985 | } 986 | } 987 | }, 988 | "cli-table3": { 989 | "version": "0.5.1", 990 | "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", 991 | "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", 992 | "requires": { 993 | "colors": "^1.1.2", 994 | "object-assign": "^4.1.0", 995 | "string-width": "^2.1.1" 996 | } 997 | }, 998 | "cliui": { 999 | "version": "4.1.0", 1000 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", 1001 | "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", 1002 | "requires": { 1003 | "string-width": "^2.1.1", 1004 | "strip-ansi": "^4.0.0", 1005 | "wrap-ansi": "^2.0.0" 1006 | } 1007 | }, 1008 | "code-point-at": { 1009 | "version": "1.1.0", 1010 | "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", 1011 | "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" 1012 | }, 1013 | "collection-visit": { 1014 | "version": "1.0.0", 1015 | "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", 1016 | "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", 1017 | "dev": true, 1018 | "requires": { 1019 | "map-visit": "^1.0.0", 1020 | "object-visit": "^1.0.0" 1021 | } 1022 | }, 1023 | "color-convert": { 1024 | "version": "1.9.3", 1025 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 1026 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 1027 | "requires": { 1028 | "color-name": "1.1.3" 1029 | } 1030 | }, 1031 | "color-name": { 1032 | "version": "1.1.3", 1033 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1034 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" 1035 | }, 1036 | "colors": { 1037 | "version": "1.3.3", 1038 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", 1039 | "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==" 1040 | }, 1041 | "commander": { 1042 | "version": "2.19.0", 1043 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", 1044 | "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", 1045 | "dev": true 1046 | }, 1047 | "commondir": { 1048 | "version": "1.0.1", 1049 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", 1050 | "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", 1051 | "dev": true 1052 | }, 1053 | "component-emitter": { 1054 | "version": "1.2.1", 1055 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", 1056 | "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", 1057 | "dev": true 1058 | }, 1059 | "concat-map": { 1060 | "version": "0.0.1", 1061 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1062 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 1063 | "dev": true 1064 | }, 1065 | "convert-source-map": { 1066 | "version": "1.6.0", 1067 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", 1068 | "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", 1069 | "requires": { 1070 | "safe-buffer": "~5.1.1" 1071 | } 1072 | }, 1073 | "copy-descriptor": { 1074 | "version": "0.1.1", 1075 | "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", 1076 | "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", 1077 | "dev": true 1078 | }, 1079 | "core-js": { 1080 | "version": "2.6.3", 1081 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.3.tgz", 1082 | "integrity": "sha512-l00tmFFZOBHtYhN4Cz7k32VM7vTn3rE2ANjQDxdEN6zmXZ/xq1jQuutnmHvMG1ZJ7xd72+TA5YpUK8wz3rWsfQ==" 1083 | }, 1084 | "core-util-is": { 1085 | "version": "1.0.2", 1086 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 1087 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 1088 | "dev": true, 1089 | "optional": true 1090 | }, 1091 | "cross-spawn": { 1092 | "version": "6.0.5", 1093 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", 1094 | "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", 1095 | "requires": { 1096 | "nice-try": "^1.0.4", 1097 | "path-key": "^2.0.1", 1098 | "semver": "^5.5.0", 1099 | "shebang-command": "^1.2.0", 1100 | "which": "^1.2.9" 1101 | } 1102 | }, 1103 | "debug": { 1104 | "version": "4.1.1", 1105 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 1106 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 1107 | "requires": { 1108 | "ms": "^2.1.1" 1109 | } 1110 | }, 1111 | "decamelize": { 1112 | "version": "1.2.0", 1113 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 1114 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" 1115 | }, 1116 | "decode-uri-component": { 1117 | "version": "0.2.0", 1118 | "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", 1119 | "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", 1120 | "dev": true 1121 | }, 1122 | "define-property": { 1123 | "version": "2.0.2", 1124 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", 1125 | "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", 1126 | "dev": true, 1127 | "requires": { 1128 | "is-descriptor": "^1.0.2", 1129 | "isobject": "^3.0.1" 1130 | }, 1131 | "dependencies": { 1132 | "is-accessor-descriptor": { 1133 | "version": "1.0.0", 1134 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 1135 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 1136 | "dev": true, 1137 | "requires": { 1138 | "kind-of": "^6.0.0" 1139 | } 1140 | }, 1141 | "is-data-descriptor": { 1142 | "version": "1.0.0", 1143 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 1144 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 1145 | "dev": true, 1146 | "requires": { 1147 | "kind-of": "^6.0.0" 1148 | } 1149 | }, 1150 | "is-descriptor": { 1151 | "version": "1.0.2", 1152 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 1153 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 1154 | "dev": true, 1155 | "requires": { 1156 | "is-accessor-descriptor": "^1.0.0", 1157 | "is-data-descriptor": "^1.0.0", 1158 | "kind-of": "^6.0.2" 1159 | } 1160 | } 1161 | } 1162 | }, 1163 | "diff": { 1164 | "version": "3.5.0", 1165 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", 1166 | "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", 1167 | "dev": true 1168 | }, 1169 | "dotenv": { 1170 | "version": "5.0.1", 1171 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", 1172 | "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==", 1173 | "dev": true 1174 | }, 1175 | "electron-to-chromium": { 1176 | "version": "1.3.113", 1177 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.113.tgz", 1178 | "integrity": "sha512-De+lPAxEcpxvqPTyZAXELNpRZXABRxf+uL/rSykstQhzj/B0l1150G/ExIIxKc16lI89Hgz81J0BHAcbTqK49g==" 1179 | }, 1180 | "emojis-list": { 1181 | "version": "2.1.0", 1182 | "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", 1183 | "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", 1184 | "dev": true 1185 | }, 1186 | "end-of-stream": { 1187 | "version": "1.4.1", 1188 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", 1189 | "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", 1190 | "requires": { 1191 | "once": "^1.4.0" 1192 | } 1193 | }, 1194 | "escape-string-regexp": { 1195 | "version": "1.0.5", 1196 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1197 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" 1198 | }, 1199 | "esutils": { 1200 | "version": "2.0.2", 1201 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 1202 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" 1203 | }, 1204 | "execa": { 1205 | "version": "1.0.0", 1206 | "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", 1207 | "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", 1208 | "requires": { 1209 | "cross-spawn": "^6.0.0", 1210 | "get-stream": "^4.0.0", 1211 | "is-stream": "^1.1.0", 1212 | "npm-run-path": "^2.0.0", 1213 | "p-finally": "^1.0.0", 1214 | "signal-exit": "^3.0.0", 1215 | "strip-eof": "^1.0.0" 1216 | } 1217 | }, 1218 | "expand-brackets": { 1219 | "version": "2.1.4", 1220 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", 1221 | "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", 1222 | "dev": true, 1223 | "requires": { 1224 | "debug": "^2.3.3", 1225 | "define-property": "^0.2.5", 1226 | "extend-shallow": "^2.0.1", 1227 | "posix-character-classes": "^0.1.0", 1228 | "regex-not": "^1.0.0", 1229 | "snapdragon": "^0.8.1", 1230 | "to-regex": "^3.0.1" 1231 | }, 1232 | "dependencies": { 1233 | "debug": { 1234 | "version": "2.6.9", 1235 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1236 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1237 | "dev": true, 1238 | "requires": { 1239 | "ms": "2.0.0" 1240 | } 1241 | }, 1242 | "define-property": { 1243 | "version": "0.2.5", 1244 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 1245 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 1246 | "dev": true, 1247 | "requires": { 1248 | "is-descriptor": "^0.1.0" 1249 | } 1250 | }, 1251 | "extend-shallow": { 1252 | "version": "2.0.1", 1253 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 1254 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 1255 | "dev": true, 1256 | "requires": { 1257 | "is-extendable": "^0.1.0" 1258 | } 1259 | }, 1260 | "ms": { 1261 | "version": "2.0.0", 1262 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1263 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1264 | "dev": true 1265 | } 1266 | } 1267 | }, 1268 | "extend-shallow": { 1269 | "version": "3.0.2", 1270 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", 1271 | "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", 1272 | "dev": true, 1273 | "requires": { 1274 | "assign-symbols": "^1.0.0", 1275 | "is-extendable": "^1.0.1" 1276 | }, 1277 | "dependencies": { 1278 | "is-extendable": { 1279 | "version": "1.0.1", 1280 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", 1281 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", 1282 | "dev": true, 1283 | "requires": { 1284 | "is-plain-object": "^2.0.4" 1285 | } 1286 | } 1287 | } 1288 | }, 1289 | "extglob": { 1290 | "version": "2.0.4", 1291 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", 1292 | "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", 1293 | "dev": true, 1294 | "requires": { 1295 | "array-unique": "^0.3.2", 1296 | "define-property": "^1.0.0", 1297 | "expand-brackets": "^2.1.4", 1298 | "extend-shallow": "^2.0.1", 1299 | "fragment-cache": "^0.2.1", 1300 | "regex-not": "^1.0.0", 1301 | "snapdragon": "^0.8.1", 1302 | "to-regex": "^3.0.1" 1303 | }, 1304 | "dependencies": { 1305 | "define-property": { 1306 | "version": "1.0.0", 1307 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 1308 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 1309 | "dev": true, 1310 | "requires": { 1311 | "is-descriptor": "^1.0.0" 1312 | } 1313 | }, 1314 | "extend-shallow": { 1315 | "version": "2.0.1", 1316 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 1317 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 1318 | "dev": true, 1319 | "requires": { 1320 | "is-extendable": "^0.1.0" 1321 | } 1322 | }, 1323 | "is-accessor-descriptor": { 1324 | "version": "1.0.0", 1325 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 1326 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 1327 | "dev": true, 1328 | "requires": { 1329 | "kind-of": "^6.0.0" 1330 | } 1331 | }, 1332 | "is-data-descriptor": { 1333 | "version": "1.0.0", 1334 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 1335 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 1336 | "dev": true, 1337 | "requires": { 1338 | "kind-of": "^6.0.0" 1339 | } 1340 | }, 1341 | "is-descriptor": { 1342 | "version": "1.0.2", 1343 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 1344 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 1345 | "dev": true, 1346 | "requires": { 1347 | "is-accessor-descriptor": "^1.0.0", 1348 | "is-data-descriptor": "^1.0.0", 1349 | "kind-of": "^6.0.2" 1350 | } 1351 | } 1352 | } 1353 | }, 1354 | "fill-range": { 1355 | "version": "4.0.0", 1356 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", 1357 | "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", 1358 | "dev": true, 1359 | "requires": { 1360 | "extend-shallow": "^2.0.1", 1361 | "is-number": "^3.0.0", 1362 | "repeat-string": "^1.6.1", 1363 | "to-regex-range": "^2.1.0" 1364 | }, 1365 | "dependencies": { 1366 | "extend-shallow": { 1367 | "version": "2.0.1", 1368 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 1369 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 1370 | "dev": true, 1371 | "requires": { 1372 | "is-extendable": "^0.1.0" 1373 | } 1374 | } 1375 | } 1376 | }, 1377 | "find-cache-dir": { 1378 | "version": "1.0.0", 1379 | "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", 1380 | "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", 1381 | "dev": true, 1382 | "requires": { 1383 | "commondir": "^1.0.1", 1384 | "make-dir": "^1.0.0", 1385 | "pkg-dir": "^2.0.0" 1386 | } 1387 | }, 1388 | "find-up": { 1389 | "version": "3.0.0", 1390 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", 1391 | "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", 1392 | "requires": { 1393 | "locate-path": "^3.0.0" 1394 | } 1395 | }, 1396 | "for-in": { 1397 | "version": "1.0.2", 1398 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", 1399 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", 1400 | "dev": true 1401 | }, 1402 | "fragment-cache": { 1403 | "version": "0.2.1", 1404 | "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", 1405 | "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", 1406 | "dev": true, 1407 | "requires": { 1408 | "map-cache": "^0.2.2" 1409 | } 1410 | }, 1411 | "fs-readdir-recursive": { 1412 | "version": "1.1.0", 1413 | "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", 1414 | "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", 1415 | "dev": true 1416 | }, 1417 | "fs.realpath": { 1418 | "version": "1.0.0", 1419 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1420 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 1421 | "dev": true 1422 | }, 1423 | "fsevents": { 1424 | "version": "1.2.7", 1425 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz", 1426 | "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", 1427 | "dev": true, 1428 | "optional": true, 1429 | "requires": { 1430 | "nan": "^2.9.2", 1431 | "node-pre-gyp": "^0.10.0" 1432 | }, 1433 | "dependencies": { 1434 | "abbrev": { 1435 | "version": "1.1.1", 1436 | "bundled": true, 1437 | "dev": true, 1438 | "optional": true 1439 | }, 1440 | "ansi-regex": { 1441 | "version": "2.1.1", 1442 | "bundled": true, 1443 | "dev": true 1444 | }, 1445 | "aproba": { 1446 | "version": "1.2.0", 1447 | "bundled": true, 1448 | "dev": true, 1449 | "optional": true 1450 | }, 1451 | "are-we-there-yet": { 1452 | "version": "1.1.5", 1453 | "bundled": true, 1454 | "dev": true, 1455 | "optional": true, 1456 | "requires": { 1457 | "delegates": "^1.0.0", 1458 | "readable-stream": "^2.0.6" 1459 | } 1460 | }, 1461 | "balanced-match": { 1462 | "version": "1.0.0", 1463 | "bundled": true, 1464 | "dev": true 1465 | }, 1466 | "brace-expansion": { 1467 | "version": "1.1.11", 1468 | "bundled": true, 1469 | "dev": true, 1470 | "requires": { 1471 | "balanced-match": "^1.0.0", 1472 | "concat-map": "0.0.1" 1473 | } 1474 | }, 1475 | "chownr": { 1476 | "version": "1.1.1", 1477 | "bundled": true, 1478 | "dev": true, 1479 | "optional": true 1480 | }, 1481 | "code-point-at": { 1482 | "version": "1.1.0", 1483 | "bundled": true, 1484 | "dev": true 1485 | }, 1486 | "concat-map": { 1487 | "version": "0.0.1", 1488 | "bundled": true, 1489 | "dev": true 1490 | }, 1491 | "console-control-strings": { 1492 | "version": "1.1.0", 1493 | "bundled": true, 1494 | "dev": true 1495 | }, 1496 | "core-util-is": { 1497 | "version": "1.0.2", 1498 | "bundled": true, 1499 | "dev": true, 1500 | "optional": true 1501 | }, 1502 | "debug": { 1503 | "version": "2.6.9", 1504 | "bundled": true, 1505 | "dev": true, 1506 | "optional": true, 1507 | "requires": { 1508 | "ms": "2.0.0" 1509 | } 1510 | }, 1511 | "deep-extend": { 1512 | "version": "0.6.0", 1513 | "bundled": true, 1514 | "dev": true, 1515 | "optional": true 1516 | }, 1517 | "delegates": { 1518 | "version": "1.0.0", 1519 | "bundled": true, 1520 | "dev": true, 1521 | "optional": true 1522 | }, 1523 | "detect-libc": { 1524 | "version": "1.0.3", 1525 | "bundled": true, 1526 | "dev": true, 1527 | "optional": true 1528 | }, 1529 | "fs-minipass": { 1530 | "version": "1.2.5", 1531 | "bundled": true, 1532 | "dev": true, 1533 | "optional": true, 1534 | "requires": { 1535 | "minipass": "^2.2.1" 1536 | } 1537 | }, 1538 | "fs.realpath": { 1539 | "version": "1.0.0", 1540 | "bundled": true, 1541 | "dev": true, 1542 | "optional": true 1543 | }, 1544 | "gauge": { 1545 | "version": "2.7.4", 1546 | "bundled": true, 1547 | "dev": true, 1548 | "optional": true, 1549 | "requires": { 1550 | "aproba": "^1.0.3", 1551 | "console-control-strings": "^1.0.0", 1552 | "has-unicode": "^2.0.0", 1553 | "object-assign": "^4.1.0", 1554 | "signal-exit": "^3.0.0", 1555 | "string-width": "^1.0.1", 1556 | "strip-ansi": "^3.0.1", 1557 | "wide-align": "^1.1.0" 1558 | } 1559 | }, 1560 | "glob": { 1561 | "version": "7.1.3", 1562 | "bundled": true, 1563 | "dev": true, 1564 | "optional": true, 1565 | "requires": { 1566 | "fs.realpath": "^1.0.0", 1567 | "inflight": "^1.0.4", 1568 | "inherits": "2", 1569 | "minimatch": "^3.0.4", 1570 | "once": "^1.3.0", 1571 | "path-is-absolute": "^1.0.0" 1572 | } 1573 | }, 1574 | "has-unicode": { 1575 | "version": "2.0.1", 1576 | "bundled": true, 1577 | "dev": true, 1578 | "optional": true 1579 | }, 1580 | "iconv-lite": { 1581 | "version": "0.4.24", 1582 | "bundled": true, 1583 | "dev": true, 1584 | "optional": true, 1585 | "requires": { 1586 | "safer-buffer": ">= 2.1.2 < 3" 1587 | } 1588 | }, 1589 | "ignore-walk": { 1590 | "version": "3.0.1", 1591 | "bundled": true, 1592 | "dev": true, 1593 | "optional": true, 1594 | "requires": { 1595 | "minimatch": "^3.0.4" 1596 | } 1597 | }, 1598 | "inflight": { 1599 | "version": "1.0.6", 1600 | "bundled": true, 1601 | "dev": true, 1602 | "optional": true, 1603 | "requires": { 1604 | "once": "^1.3.0", 1605 | "wrappy": "1" 1606 | } 1607 | }, 1608 | "inherits": { 1609 | "version": "2.0.3", 1610 | "bundled": true, 1611 | "dev": true 1612 | }, 1613 | "ini": { 1614 | "version": "1.3.5", 1615 | "bundled": true, 1616 | "dev": true, 1617 | "optional": true 1618 | }, 1619 | "is-fullwidth-code-point": { 1620 | "version": "1.0.0", 1621 | "bundled": true, 1622 | "dev": true, 1623 | "requires": { 1624 | "number-is-nan": "^1.0.0" 1625 | } 1626 | }, 1627 | "isarray": { 1628 | "version": "1.0.0", 1629 | "bundled": true, 1630 | "dev": true, 1631 | "optional": true 1632 | }, 1633 | "minimatch": { 1634 | "version": "3.0.4", 1635 | "bundled": true, 1636 | "dev": true, 1637 | "requires": { 1638 | "brace-expansion": "^1.1.7" 1639 | } 1640 | }, 1641 | "minimist": { 1642 | "version": "0.0.8", 1643 | "bundled": true, 1644 | "dev": true 1645 | }, 1646 | "minipass": { 1647 | "version": "2.3.5", 1648 | "bundled": true, 1649 | "dev": true, 1650 | "requires": { 1651 | "safe-buffer": "^5.1.2", 1652 | "yallist": "^3.0.0" 1653 | } 1654 | }, 1655 | "minizlib": { 1656 | "version": "1.2.1", 1657 | "bundled": true, 1658 | "dev": true, 1659 | "optional": true, 1660 | "requires": { 1661 | "minipass": "^2.2.1" 1662 | } 1663 | }, 1664 | "mkdirp": { 1665 | "version": "0.5.1", 1666 | "bundled": true, 1667 | "dev": true, 1668 | "requires": { 1669 | "minimist": "0.0.8" 1670 | } 1671 | }, 1672 | "ms": { 1673 | "version": "2.0.0", 1674 | "bundled": true, 1675 | "dev": true, 1676 | "optional": true 1677 | }, 1678 | "needle": { 1679 | "version": "2.2.4", 1680 | "bundled": true, 1681 | "dev": true, 1682 | "optional": true, 1683 | "requires": { 1684 | "debug": "^2.1.2", 1685 | "iconv-lite": "^0.4.4", 1686 | "sax": "^1.2.4" 1687 | } 1688 | }, 1689 | "node-pre-gyp": { 1690 | "version": "0.10.3", 1691 | "bundled": true, 1692 | "dev": true, 1693 | "optional": true, 1694 | "requires": { 1695 | "detect-libc": "^1.0.2", 1696 | "mkdirp": "^0.5.1", 1697 | "needle": "^2.2.1", 1698 | "nopt": "^4.0.1", 1699 | "npm-packlist": "^1.1.6", 1700 | "npmlog": "^4.0.2", 1701 | "rc": "^1.2.7", 1702 | "rimraf": "^2.6.1", 1703 | "semver": "^5.3.0", 1704 | "tar": "^4" 1705 | } 1706 | }, 1707 | "nopt": { 1708 | "version": "4.0.1", 1709 | "bundled": true, 1710 | "dev": true, 1711 | "optional": true, 1712 | "requires": { 1713 | "abbrev": "1", 1714 | "osenv": "^0.1.4" 1715 | } 1716 | }, 1717 | "npm-bundled": { 1718 | "version": "1.0.5", 1719 | "bundled": true, 1720 | "dev": true, 1721 | "optional": true 1722 | }, 1723 | "npm-packlist": { 1724 | "version": "1.2.0", 1725 | "bundled": true, 1726 | "dev": true, 1727 | "optional": true, 1728 | "requires": { 1729 | "ignore-walk": "^3.0.1", 1730 | "npm-bundled": "^1.0.1" 1731 | } 1732 | }, 1733 | "npmlog": { 1734 | "version": "4.1.2", 1735 | "bundled": true, 1736 | "dev": true, 1737 | "optional": true, 1738 | "requires": { 1739 | "are-we-there-yet": "~1.1.2", 1740 | "console-control-strings": "~1.1.0", 1741 | "gauge": "~2.7.3", 1742 | "set-blocking": "~2.0.0" 1743 | } 1744 | }, 1745 | "number-is-nan": { 1746 | "version": "1.0.1", 1747 | "bundled": true, 1748 | "dev": true 1749 | }, 1750 | "object-assign": { 1751 | "version": "4.1.1", 1752 | "bundled": true, 1753 | "dev": true, 1754 | "optional": true 1755 | }, 1756 | "once": { 1757 | "version": "1.4.0", 1758 | "bundled": true, 1759 | "dev": true, 1760 | "requires": { 1761 | "wrappy": "1" 1762 | } 1763 | }, 1764 | "os-homedir": { 1765 | "version": "1.0.2", 1766 | "bundled": true, 1767 | "dev": true, 1768 | "optional": true 1769 | }, 1770 | "os-tmpdir": { 1771 | "version": "1.0.2", 1772 | "bundled": true, 1773 | "dev": true, 1774 | "optional": true 1775 | }, 1776 | "osenv": { 1777 | "version": "0.1.5", 1778 | "bundled": true, 1779 | "dev": true, 1780 | "optional": true, 1781 | "requires": { 1782 | "os-homedir": "^1.0.0", 1783 | "os-tmpdir": "^1.0.0" 1784 | } 1785 | }, 1786 | "path-is-absolute": { 1787 | "version": "1.0.1", 1788 | "bundled": true, 1789 | "dev": true, 1790 | "optional": true 1791 | }, 1792 | "process-nextick-args": { 1793 | "version": "2.0.0", 1794 | "bundled": true, 1795 | "dev": true, 1796 | "optional": true 1797 | }, 1798 | "rc": { 1799 | "version": "1.2.8", 1800 | "bundled": true, 1801 | "dev": true, 1802 | "optional": true, 1803 | "requires": { 1804 | "deep-extend": "^0.6.0", 1805 | "ini": "~1.3.0", 1806 | "minimist": "^1.2.0", 1807 | "strip-json-comments": "~2.0.1" 1808 | }, 1809 | "dependencies": { 1810 | "minimist": { 1811 | "version": "1.2.0", 1812 | "bundled": true, 1813 | "dev": true, 1814 | "optional": true 1815 | } 1816 | } 1817 | }, 1818 | "readable-stream": { 1819 | "version": "2.3.6", 1820 | "bundled": true, 1821 | "dev": true, 1822 | "optional": true, 1823 | "requires": { 1824 | "core-util-is": "~1.0.0", 1825 | "inherits": "~2.0.3", 1826 | "isarray": "~1.0.0", 1827 | "process-nextick-args": "~2.0.0", 1828 | "safe-buffer": "~5.1.1", 1829 | "string_decoder": "~1.1.1", 1830 | "util-deprecate": "~1.0.1" 1831 | } 1832 | }, 1833 | "rimraf": { 1834 | "version": "2.6.3", 1835 | "bundled": true, 1836 | "dev": true, 1837 | "optional": true, 1838 | "requires": { 1839 | "glob": "^7.1.3" 1840 | } 1841 | }, 1842 | "safe-buffer": { 1843 | "version": "5.1.2", 1844 | "bundled": true, 1845 | "dev": true 1846 | }, 1847 | "safer-buffer": { 1848 | "version": "2.1.2", 1849 | "bundled": true, 1850 | "dev": true, 1851 | "optional": true 1852 | }, 1853 | "sax": { 1854 | "version": "1.2.4", 1855 | "bundled": true, 1856 | "dev": true, 1857 | "optional": true 1858 | }, 1859 | "semver": { 1860 | "version": "5.6.0", 1861 | "bundled": true, 1862 | "dev": true, 1863 | "optional": true 1864 | }, 1865 | "set-blocking": { 1866 | "version": "2.0.0", 1867 | "bundled": true, 1868 | "dev": true, 1869 | "optional": true 1870 | }, 1871 | "signal-exit": { 1872 | "version": "3.0.2", 1873 | "bundled": true, 1874 | "dev": true, 1875 | "optional": true 1876 | }, 1877 | "string-width": { 1878 | "version": "1.0.2", 1879 | "bundled": true, 1880 | "dev": true, 1881 | "requires": { 1882 | "code-point-at": "^1.0.0", 1883 | "is-fullwidth-code-point": "^1.0.0", 1884 | "strip-ansi": "^3.0.0" 1885 | } 1886 | }, 1887 | "string_decoder": { 1888 | "version": "1.1.1", 1889 | "bundled": true, 1890 | "dev": true, 1891 | "optional": true, 1892 | "requires": { 1893 | "safe-buffer": "~5.1.0" 1894 | } 1895 | }, 1896 | "strip-ansi": { 1897 | "version": "3.0.1", 1898 | "bundled": true, 1899 | "dev": true, 1900 | "requires": { 1901 | "ansi-regex": "^2.0.0" 1902 | } 1903 | }, 1904 | "strip-json-comments": { 1905 | "version": "2.0.1", 1906 | "bundled": true, 1907 | "dev": true, 1908 | "optional": true 1909 | }, 1910 | "tar": { 1911 | "version": "4.4.8", 1912 | "bundled": true, 1913 | "dev": true, 1914 | "optional": true, 1915 | "requires": { 1916 | "chownr": "^1.1.1", 1917 | "fs-minipass": "^1.2.5", 1918 | "minipass": "^2.3.4", 1919 | "minizlib": "^1.1.1", 1920 | "mkdirp": "^0.5.0", 1921 | "safe-buffer": "^5.1.2", 1922 | "yallist": "^3.0.2" 1923 | } 1924 | }, 1925 | "util-deprecate": { 1926 | "version": "1.0.2", 1927 | "bundled": true, 1928 | "dev": true, 1929 | "optional": true 1930 | }, 1931 | "wide-align": { 1932 | "version": "1.1.3", 1933 | "bundled": true, 1934 | "dev": true, 1935 | "optional": true, 1936 | "requires": { 1937 | "string-width": "^1.0.2 || 2" 1938 | } 1939 | }, 1940 | "wrappy": { 1941 | "version": "1.0.2", 1942 | "bundled": true, 1943 | "dev": true 1944 | }, 1945 | "yallist": { 1946 | "version": "3.0.3", 1947 | "bundled": true, 1948 | "dev": true 1949 | } 1950 | } 1951 | }, 1952 | "get-caller-file": { 1953 | "version": "1.0.3", 1954 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", 1955 | "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" 1956 | }, 1957 | "get-stream": { 1958 | "version": "4.1.0", 1959 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", 1960 | "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", 1961 | "requires": { 1962 | "pump": "^3.0.0" 1963 | } 1964 | }, 1965 | "get-value": { 1966 | "version": "2.0.6", 1967 | "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", 1968 | "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", 1969 | "dev": true 1970 | }, 1971 | "glob": { 1972 | "version": "7.1.3", 1973 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", 1974 | "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", 1975 | "dev": true, 1976 | "requires": { 1977 | "fs.realpath": "^1.0.0", 1978 | "inflight": "^1.0.4", 1979 | "inherits": "2", 1980 | "minimatch": "^3.0.4", 1981 | "once": "^1.3.0", 1982 | "path-is-absolute": "^1.0.0" 1983 | } 1984 | }, 1985 | "glob-parent": { 1986 | "version": "3.1.0", 1987 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", 1988 | "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", 1989 | "dev": true, 1990 | "optional": true, 1991 | "requires": { 1992 | "is-glob": "^3.1.0", 1993 | "path-dirname": "^1.0.0" 1994 | }, 1995 | "dependencies": { 1996 | "is-glob": { 1997 | "version": "3.1.0", 1998 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", 1999 | "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", 2000 | "dev": true, 2001 | "optional": true, 2002 | "requires": { 2003 | "is-extglob": "^2.1.0" 2004 | } 2005 | } 2006 | } 2007 | }, 2008 | "globals": { 2009 | "version": "11.10.0", 2010 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.10.0.tgz", 2011 | "integrity": "sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ==" 2012 | }, 2013 | "graceful-fs": { 2014 | "version": "4.1.15", 2015 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", 2016 | "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", 2017 | "dev": true 2018 | }, 2019 | "growl": { 2020 | "version": "1.10.5", 2021 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", 2022 | "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", 2023 | "dev": true 2024 | }, 2025 | "has-flag": { 2026 | "version": "3.0.0", 2027 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 2028 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" 2029 | }, 2030 | "has-value": { 2031 | "version": "1.0.0", 2032 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", 2033 | "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", 2034 | "dev": true, 2035 | "requires": { 2036 | "get-value": "^2.0.6", 2037 | "has-values": "^1.0.0", 2038 | "isobject": "^3.0.0" 2039 | } 2040 | }, 2041 | "has-values": { 2042 | "version": "1.0.0", 2043 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", 2044 | "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", 2045 | "dev": true, 2046 | "requires": { 2047 | "is-number": "^3.0.0", 2048 | "kind-of": "^4.0.0" 2049 | }, 2050 | "dependencies": { 2051 | "kind-of": { 2052 | "version": "4.0.0", 2053 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", 2054 | "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", 2055 | "dev": true, 2056 | "requires": { 2057 | "is-buffer": "^1.1.5" 2058 | } 2059 | } 2060 | } 2061 | }, 2062 | "he": { 2063 | "version": "1.1.1", 2064 | "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", 2065 | "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", 2066 | "dev": true 2067 | }, 2068 | "inflight": { 2069 | "version": "1.0.6", 2070 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 2071 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 2072 | "dev": true, 2073 | "requires": { 2074 | "once": "^1.3.0", 2075 | "wrappy": "1" 2076 | } 2077 | }, 2078 | "inherits": { 2079 | "version": "2.0.3", 2080 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 2081 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 2082 | "dev": true 2083 | }, 2084 | "invariant": { 2085 | "version": "2.2.4", 2086 | "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", 2087 | "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", 2088 | "requires": { 2089 | "loose-envify": "^1.0.0" 2090 | } 2091 | }, 2092 | "invert-kv": { 2093 | "version": "2.0.0", 2094 | "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", 2095 | "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" 2096 | }, 2097 | "is-accessor-descriptor": { 2098 | "version": "0.1.6", 2099 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", 2100 | "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", 2101 | "dev": true, 2102 | "requires": { 2103 | "kind-of": "^3.0.2" 2104 | }, 2105 | "dependencies": { 2106 | "kind-of": { 2107 | "version": "3.2.2", 2108 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 2109 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2110 | "dev": true, 2111 | "requires": { 2112 | "is-buffer": "^1.1.5" 2113 | } 2114 | } 2115 | } 2116 | }, 2117 | "is-binary-path": { 2118 | "version": "1.0.1", 2119 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", 2120 | "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", 2121 | "dev": true, 2122 | "optional": true, 2123 | "requires": { 2124 | "binary-extensions": "^1.0.0" 2125 | } 2126 | }, 2127 | "is-buffer": { 2128 | "version": "1.1.6", 2129 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 2130 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", 2131 | "dev": true 2132 | }, 2133 | "is-data-descriptor": { 2134 | "version": "0.1.4", 2135 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", 2136 | "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", 2137 | "dev": true, 2138 | "requires": { 2139 | "kind-of": "^3.0.2" 2140 | }, 2141 | "dependencies": { 2142 | "kind-of": { 2143 | "version": "3.2.2", 2144 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 2145 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2146 | "dev": true, 2147 | "requires": { 2148 | "is-buffer": "^1.1.5" 2149 | } 2150 | } 2151 | } 2152 | }, 2153 | "is-descriptor": { 2154 | "version": "0.1.6", 2155 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", 2156 | "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", 2157 | "dev": true, 2158 | "requires": { 2159 | "is-accessor-descriptor": "^0.1.6", 2160 | "is-data-descriptor": "^0.1.4", 2161 | "kind-of": "^5.0.0" 2162 | }, 2163 | "dependencies": { 2164 | "kind-of": { 2165 | "version": "5.1.0", 2166 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", 2167 | "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", 2168 | "dev": true 2169 | } 2170 | } 2171 | }, 2172 | "is-extendable": { 2173 | "version": "0.1.1", 2174 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", 2175 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", 2176 | "dev": true 2177 | }, 2178 | "is-extglob": { 2179 | "version": "2.1.1", 2180 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 2181 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 2182 | "dev": true 2183 | }, 2184 | "is-fullwidth-code-point": { 2185 | "version": "2.0.0", 2186 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 2187 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" 2188 | }, 2189 | "is-glob": { 2190 | "version": "4.0.0", 2191 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", 2192 | "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", 2193 | "dev": true, 2194 | "optional": true, 2195 | "requires": { 2196 | "is-extglob": "^2.1.1" 2197 | } 2198 | }, 2199 | "is-number": { 2200 | "version": "3.0.0", 2201 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", 2202 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", 2203 | "dev": true, 2204 | "requires": { 2205 | "kind-of": "^3.0.2" 2206 | }, 2207 | "dependencies": { 2208 | "kind-of": { 2209 | "version": "3.2.2", 2210 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 2211 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2212 | "dev": true, 2213 | "requires": { 2214 | "is-buffer": "^1.1.5" 2215 | } 2216 | } 2217 | } 2218 | }, 2219 | "is-plain-obj": { 2220 | "version": "1.1.0", 2221 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", 2222 | "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", 2223 | "dev": true 2224 | }, 2225 | "is-plain-object": { 2226 | "version": "2.0.4", 2227 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", 2228 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", 2229 | "dev": true, 2230 | "requires": { 2231 | "isobject": "^3.0.1" 2232 | } 2233 | }, 2234 | "is-stream": { 2235 | "version": "1.1.0", 2236 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 2237 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" 2238 | }, 2239 | "is-windows": { 2240 | "version": "1.0.2", 2241 | "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", 2242 | "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", 2243 | "dev": true 2244 | }, 2245 | "isarray": { 2246 | "version": "1.0.0", 2247 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 2248 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 2249 | "dev": true 2250 | }, 2251 | "isexe": { 2252 | "version": "2.0.0", 2253 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 2254 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" 2255 | }, 2256 | "isobject": { 2257 | "version": "3.0.1", 2258 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 2259 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", 2260 | "dev": true 2261 | }, 2262 | "js-levenshtein": { 2263 | "version": "1.1.6", 2264 | "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", 2265 | "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==" 2266 | }, 2267 | "js-tokens": { 2268 | "version": "4.0.0", 2269 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 2270 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 2271 | }, 2272 | "jsesc": { 2273 | "version": "2.5.2", 2274 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 2275 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" 2276 | }, 2277 | "json5": { 2278 | "version": "2.1.0", 2279 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", 2280 | "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", 2281 | "requires": { 2282 | "minimist": "^1.2.0" 2283 | } 2284 | }, 2285 | "kind-of": { 2286 | "version": "6.0.2", 2287 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", 2288 | "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", 2289 | "dev": true 2290 | }, 2291 | "lcid": { 2292 | "version": "2.0.0", 2293 | "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", 2294 | "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", 2295 | "requires": { 2296 | "invert-kv": "^2.0.0" 2297 | } 2298 | }, 2299 | "loader-utils": { 2300 | "version": "1.2.3", 2301 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", 2302 | "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", 2303 | "dev": true, 2304 | "requires": { 2305 | "big.js": "^5.2.2", 2306 | "emojis-list": "^2.0.0", 2307 | "json5": "^1.0.1" 2308 | }, 2309 | "dependencies": { 2310 | "json5": { 2311 | "version": "1.0.1", 2312 | "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", 2313 | "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", 2314 | "dev": true, 2315 | "requires": { 2316 | "minimist": "^1.2.0" 2317 | } 2318 | } 2319 | } 2320 | }, 2321 | "locate-path": { 2322 | "version": "3.0.0", 2323 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", 2324 | "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", 2325 | "requires": { 2326 | "p-locate": "^3.0.0", 2327 | "path-exists": "^3.0.0" 2328 | } 2329 | }, 2330 | "lodash": { 2331 | "version": "4.17.11", 2332 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", 2333 | "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" 2334 | }, 2335 | "loose-envify": { 2336 | "version": "1.4.0", 2337 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 2338 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 2339 | "requires": { 2340 | "js-tokens": "^3.0.0 || ^4.0.0" 2341 | } 2342 | }, 2343 | "make-dir": { 2344 | "version": "1.3.0", 2345 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", 2346 | "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", 2347 | "dev": true, 2348 | "requires": { 2349 | "pify": "^3.0.0" 2350 | } 2351 | }, 2352 | "map-age-cleaner": { 2353 | "version": "0.1.3", 2354 | "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", 2355 | "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", 2356 | "requires": { 2357 | "p-defer": "^1.0.0" 2358 | } 2359 | }, 2360 | "map-cache": { 2361 | "version": "0.2.2", 2362 | "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", 2363 | "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", 2364 | "dev": true 2365 | }, 2366 | "map-visit": { 2367 | "version": "1.0.0", 2368 | "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", 2369 | "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", 2370 | "dev": true, 2371 | "requires": { 2372 | "object-visit": "^1.0.0" 2373 | } 2374 | }, 2375 | "mem": { 2376 | "version": "4.1.0", 2377 | "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", 2378 | "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", 2379 | "requires": { 2380 | "map-age-cleaner": "^0.1.1", 2381 | "mimic-fn": "^1.0.0", 2382 | "p-is-promise": "^2.0.0" 2383 | } 2384 | }, 2385 | "micromatch": { 2386 | "version": "3.1.10", 2387 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", 2388 | "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", 2389 | "dev": true, 2390 | "requires": { 2391 | "arr-diff": "^4.0.0", 2392 | "array-unique": "^0.3.2", 2393 | "braces": "^2.3.1", 2394 | "define-property": "^2.0.2", 2395 | "extend-shallow": "^3.0.2", 2396 | "extglob": "^2.0.4", 2397 | "fragment-cache": "^0.2.1", 2398 | "kind-of": "^6.0.2", 2399 | "nanomatch": "^1.2.9", 2400 | "object.pick": "^1.3.0", 2401 | "regex-not": "^1.0.0", 2402 | "snapdragon": "^0.8.1", 2403 | "to-regex": "^3.0.2" 2404 | } 2405 | }, 2406 | "mimic-fn": { 2407 | "version": "1.2.0", 2408 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", 2409 | "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" 2410 | }, 2411 | "minimatch": { 2412 | "version": "3.0.4", 2413 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 2414 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 2415 | "dev": true, 2416 | "requires": { 2417 | "brace-expansion": "^1.1.7" 2418 | } 2419 | }, 2420 | "minimist": { 2421 | "version": "1.2.0", 2422 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 2423 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" 2424 | }, 2425 | "mixin-deep": { 2426 | "version": "1.3.1", 2427 | "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", 2428 | "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", 2429 | "dev": true, 2430 | "requires": { 2431 | "for-in": "^1.0.2", 2432 | "is-extendable": "^1.0.1" 2433 | }, 2434 | "dependencies": { 2435 | "is-extendable": { 2436 | "version": "1.0.1", 2437 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", 2438 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", 2439 | "dev": true, 2440 | "requires": { 2441 | "is-plain-object": "^2.0.4" 2442 | } 2443 | } 2444 | } 2445 | }, 2446 | "mkdirp": { 2447 | "version": "0.5.1", 2448 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 2449 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 2450 | "dev": true, 2451 | "requires": { 2452 | "minimist": "0.0.8" 2453 | }, 2454 | "dependencies": { 2455 | "minimist": { 2456 | "version": "0.0.8", 2457 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 2458 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 2459 | "dev": true 2460 | } 2461 | } 2462 | }, 2463 | "mocha": { 2464 | "version": "5.2.0", 2465 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", 2466 | "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", 2467 | "dev": true, 2468 | "requires": { 2469 | "browser-stdout": "1.3.1", 2470 | "commander": "2.15.1", 2471 | "debug": "3.1.0", 2472 | "diff": "3.5.0", 2473 | "escape-string-regexp": "1.0.5", 2474 | "glob": "7.1.2", 2475 | "growl": "1.10.5", 2476 | "he": "1.1.1", 2477 | "minimatch": "3.0.4", 2478 | "mkdirp": "0.5.1", 2479 | "supports-color": "5.4.0" 2480 | }, 2481 | "dependencies": { 2482 | "commander": { 2483 | "version": "2.15.1", 2484 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", 2485 | "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", 2486 | "dev": true 2487 | }, 2488 | "debug": { 2489 | "version": "3.1.0", 2490 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 2491 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 2492 | "dev": true, 2493 | "requires": { 2494 | "ms": "2.0.0" 2495 | } 2496 | }, 2497 | "glob": { 2498 | "version": "7.1.2", 2499 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 2500 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", 2501 | "dev": true, 2502 | "requires": { 2503 | "fs.realpath": "^1.0.0", 2504 | "inflight": "^1.0.4", 2505 | "inherits": "2", 2506 | "minimatch": "^3.0.4", 2507 | "once": "^1.3.0", 2508 | "path-is-absolute": "^1.0.0" 2509 | } 2510 | }, 2511 | "ms": { 2512 | "version": "2.0.0", 2513 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 2514 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 2515 | "dev": true 2516 | }, 2517 | "supports-color": { 2518 | "version": "5.4.0", 2519 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", 2520 | "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", 2521 | "dev": true, 2522 | "requires": { 2523 | "has-flag": "^3.0.0" 2524 | } 2525 | } 2526 | } 2527 | }, 2528 | "ms": { 2529 | "version": "2.1.1", 2530 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 2531 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" 2532 | }, 2533 | "nan": { 2534 | "version": "2.12.1", 2535 | "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", 2536 | "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==", 2537 | "dev": true, 2538 | "optional": true 2539 | }, 2540 | "nanomatch": { 2541 | "version": "1.2.13", 2542 | "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", 2543 | "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", 2544 | "dev": true, 2545 | "requires": { 2546 | "arr-diff": "^4.0.0", 2547 | "array-unique": "^0.3.2", 2548 | "define-property": "^2.0.2", 2549 | "extend-shallow": "^3.0.2", 2550 | "fragment-cache": "^0.2.1", 2551 | "is-windows": "^1.0.2", 2552 | "kind-of": "^6.0.2", 2553 | "object.pick": "^1.3.0", 2554 | "regex-not": "^1.0.0", 2555 | "snapdragon": "^0.8.1", 2556 | "to-regex": "^3.0.1" 2557 | } 2558 | }, 2559 | "nice-try": { 2560 | "version": "1.0.5", 2561 | "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", 2562 | "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" 2563 | }, 2564 | "node-fetch": { 2565 | "version": "2.3.0", 2566 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz", 2567 | "integrity": "sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA==" 2568 | }, 2569 | "node-releases": { 2570 | "version": "1.1.7", 2571 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.7.tgz", 2572 | "integrity": "sha512-bKdrwaqJUPHqlCzDD7so/R+Nk0jGv9a11ZhLrD9f6i947qGLrGAhU3OxRENa19QQmwzGy/g6zCDEuLGDO8HPvA==", 2573 | "requires": { 2574 | "semver": "^5.3.0" 2575 | } 2576 | }, 2577 | "normalize-path": { 2578 | "version": "3.0.0", 2579 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 2580 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 2581 | "dev": true, 2582 | "optional": true 2583 | }, 2584 | "npm-run-path": { 2585 | "version": "2.0.2", 2586 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", 2587 | "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", 2588 | "requires": { 2589 | "path-key": "^2.0.0" 2590 | } 2591 | }, 2592 | "number-is-nan": { 2593 | "version": "1.0.1", 2594 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 2595 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" 2596 | }, 2597 | "object-assign": { 2598 | "version": "4.1.1", 2599 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 2600 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 2601 | }, 2602 | "object-copy": { 2603 | "version": "0.1.0", 2604 | "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", 2605 | "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", 2606 | "dev": true, 2607 | "requires": { 2608 | "copy-descriptor": "^0.1.0", 2609 | "define-property": "^0.2.5", 2610 | "kind-of": "^3.0.3" 2611 | }, 2612 | "dependencies": { 2613 | "define-property": { 2614 | "version": "0.2.5", 2615 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 2616 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 2617 | "dev": true, 2618 | "requires": { 2619 | "is-descriptor": "^0.1.0" 2620 | } 2621 | }, 2622 | "kind-of": { 2623 | "version": "3.2.2", 2624 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 2625 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2626 | "dev": true, 2627 | "requires": { 2628 | "is-buffer": "^1.1.5" 2629 | } 2630 | } 2631 | } 2632 | }, 2633 | "object-visit": { 2634 | "version": "1.0.1", 2635 | "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", 2636 | "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", 2637 | "dev": true, 2638 | "requires": { 2639 | "isobject": "^3.0.0" 2640 | } 2641 | }, 2642 | "object.pick": { 2643 | "version": "1.3.0", 2644 | "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", 2645 | "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", 2646 | "dev": true, 2647 | "requires": { 2648 | "isobject": "^3.0.1" 2649 | } 2650 | }, 2651 | "once": { 2652 | "version": "1.4.0", 2653 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2654 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 2655 | "requires": { 2656 | "wrappy": "1" 2657 | } 2658 | }, 2659 | "os-locale": { 2660 | "version": "3.1.0", 2661 | "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", 2662 | "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", 2663 | "requires": { 2664 | "execa": "^1.0.0", 2665 | "lcid": "^2.0.0", 2666 | "mem": "^4.0.0" 2667 | } 2668 | }, 2669 | "output-file-sync": { 2670 | "version": "2.0.1", 2671 | "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-2.0.1.tgz", 2672 | "integrity": "sha512-mDho4qm7WgIXIGf4eYU1RHN2UU5tPfVYVSRwDJw0uTmj35DQUt/eNp19N7v6T3SrR0ESTEf2up2CGO73qI35zQ==", 2673 | "dev": true, 2674 | "requires": { 2675 | "graceful-fs": "^4.1.11", 2676 | "is-plain-obj": "^1.1.0", 2677 | "mkdirp": "^0.5.1" 2678 | } 2679 | }, 2680 | "p-defer": { 2681 | "version": "1.0.0", 2682 | "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", 2683 | "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" 2684 | }, 2685 | "p-finally": { 2686 | "version": "1.0.0", 2687 | "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", 2688 | "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" 2689 | }, 2690 | "p-is-promise": { 2691 | "version": "2.0.0", 2692 | "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", 2693 | "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==" 2694 | }, 2695 | "p-limit": { 2696 | "version": "2.1.0", 2697 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", 2698 | "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", 2699 | "requires": { 2700 | "p-try": "^2.0.0" 2701 | } 2702 | }, 2703 | "p-locate": { 2704 | "version": "3.0.0", 2705 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", 2706 | "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", 2707 | "requires": { 2708 | "p-limit": "^2.0.0" 2709 | } 2710 | }, 2711 | "p-try": { 2712 | "version": "2.0.0", 2713 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", 2714 | "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==" 2715 | }, 2716 | "pascalcase": { 2717 | "version": "0.1.1", 2718 | "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", 2719 | "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", 2720 | "dev": true 2721 | }, 2722 | "path-dirname": { 2723 | "version": "1.0.2", 2724 | "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", 2725 | "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", 2726 | "dev": true, 2727 | "optional": true 2728 | }, 2729 | "path-exists": { 2730 | "version": "3.0.0", 2731 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 2732 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" 2733 | }, 2734 | "path-is-absolute": { 2735 | "version": "1.0.1", 2736 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2737 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 2738 | "dev": true 2739 | }, 2740 | "path-key": { 2741 | "version": "2.0.1", 2742 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 2743 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" 2744 | }, 2745 | "path-parse": { 2746 | "version": "1.0.6", 2747 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", 2748 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" 2749 | }, 2750 | "pify": { 2751 | "version": "3.0.0", 2752 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 2753 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", 2754 | "dev": true 2755 | }, 2756 | "pkg-dir": { 2757 | "version": "2.0.0", 2758 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", 2759 | "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", 2760 | "dev": true, 2761 | "requires": { 2762 | "find-up": "^2.1.0" 2763 | }, 2764 | "dependencies": { 2765 | "find-up": { 2766 | "version": "2.1.0", 2767 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 2768 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 2769 | "dev": true, 2770 | "requires": { 2771 | "locate-path": "^2.0.0" 2772 | } 2773 | }, 2774 | "locate-path": { 2775 | "version": "2.0.0", 2776 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 2777 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 2778 | "dev": true, 2779 | "requires": { 2780 | "p-locate": "^2.0.0", 2781 | "path-exists": "^3.0.0" 2782 | } 2783 | }, 2784 | "p-limit": { 2785 | "version": "1.3.0", 2786 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", 2787 | "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", 2788 | "dev": true, 2789 | "requires": { 2790 | "p-try": "^1.0.0" 2791 | } 2792 | }, 2793 | "p-locate": { 2794 | "version": "2.0.0", 2795 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 2796 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 2797 | "dev": true, 2798 | "requires": { 2799 | "p-limit": "^1.1.0" 2800 | } 2801 | }, 2802 | "p-try": { 2803 | "version": "1.0.0", 2804 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", 2805 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", 2806 | "dev": true 2807 | } 2808 | } 2809 | }, 2810 | "posix-character-classes": { 2811 | "version": "0.1.1", 2812 | "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", 2813 | "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", 2814 | "dev": true 2815 | }, 2816 | "private": { 2817 | "version": "0.1.8", 2818 | "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", 2819 | "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" 2820 | }, 2821 | "process-nextick-args": { 2822 | "version": "2.0.0", 2823 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", 2824 | "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", 2825 | "dev": true, 2826 | "optional": true 2827 | }, 2828 | "pump": { 2829 | "version": "3.0.0", 2830 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 2831 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 2832 | "requires": { 2833 | "end-of-stream": "^1.1.0", 2834 | "once": "^1.3.1" 2835 | } 2836 | }, 2837 | "readable-stream": { 2838 | "version": "2.3.6", 2839 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", 2840 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", 2841 | "dev": true, 2842 | "optional": true, 2843 | "requires": { 2844 | "core-util-is": "~1.0.0", 2845 | "inherits": "~2.0.3", 2846 | "isarray": "~1.0.0", 2847 | "process-nextick-args": "~2.0.0", 2848 | "safe-buffer": "~5.1.1", 2849 | "string_decoder": "~1.1.1", 2850 | "util-deprecate": "~1.0.1" 2851 | } 2852 | }, 2853 | "readdirp": { 2854 | "version": "2.2.1", 2855 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", 2856 | "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", 2857 | "dev": true, 2858 | "optional": true, 2859 | "requires": { 2860 | "graceful-fs": "^4.1.11", 2861 | "micromatch": "^3.1.10", 2862 | "readable-stream": "^2.0.2" 2863 | } 2864 | }, 2865 | "regenerate": { 2866 | "version": "1.4.0", 2867 | "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", 2868 | "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==" 2869 | }, 2870 | "regenerate-unicode-properties": { 2871 | "version": "7.0.0", 2872 | "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz", 2873 | "integrity": "sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw==", 2874 | "requires": { 2875 | "regenerate": "^1.4.0" 2876 | } 2877 | }, 2878 | "regenerator-runtime": { 2879 | "version": "0.12.1", 2880 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", 2881 | "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==" 2882 | }, 2883 | "regenerator-transform": { 2884 | "version": "0.13.3", 2885 | "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.13.3.tgz", 2886 | "integrity": "sha512-5ipTrZFSq5vU2YoGoww4uaRVAK4wyYC4TSICibbfEPOruUu8FFP7ErV0BjmbIOEpn3O/k9na9UEdYR/3m7N6uA==", 2887 | "requires": { 2888 | "private": "^0.1.6" 2889 | } 2890 | }, 2891 | "regex-not": { 2892 | "version": "1.0.2", 2893 | "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", 2894 | "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", 2895 | "dev": true, 2896 | "requires": { 2897 | "extend-shallow": "^3.0.2", 2898 | "safe-regex": "^1.1.0" 2899 | } 2900 | }, 2901 | "regexp-tree": { 2902 | "version": "0.1.1", 2903 | "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.1.tgz", 2904 | "integrity": "sha512-HwRjOquc9QOwKTgbxvZTcddS5mlNlwePMQ3NFL8broajMLD5CXDAqas8Y5yxJH5QtZp5iRor3YCILd5pz71Cgw==", 2905 | "requires": { 2906 | "cli-table3": "^0.5.0", 2907 | "colors": "^1.1.2", 2908 | "yargs": "^12.0.5" 2909 | } 2910 | }, 2911 | "regexpu-core": { 2912 | "version": "4.4.0", 2913 | "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.4.0.tgz", 2914 | "integrity": "sha512-eDDWElbwwI3K0Lo6CqbQbA6FwgtCz4kYTarrri1okfkRLZAqstU+B3voZBCjg8Fl6iq0gXrJG6MvRgLthfvgOA==", 2915 | "requires": { 2916 | "regenerate": "^1.4.0", 2917 | "regenerate-unicode-properties": "^7.0.0", 2918 | "regjsgen": "^0.5.0", 2919 | "regjsparser": "^0.6.0", 2920 | "unicode-match-property-ecmascript": "^1.0.4", 2921 | "unicode-match-property-value-ecmascript": "^1.0.2" 2922 | } 2923 | }, 2924 | "regjsgen": { 2925 | "version": "0.5.0", 2926 | "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", 2927 | "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==" 2928 | }, 2929 | "regjsparser": { 2930 | "version": "0.6.0", 2931 | "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", 2932 | "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", 2933 | "requires": { 2934 | "jsesc": "~0.5.0" 2935 | }, 2936 | "dependencies": { 2937 | "jsesc": { 2938 | "version": "0.5.0", 2939 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", 2940 | "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" 2941 | } 2942 | } 2943 | }, 2944 | "remove-trailing-separator": { 2945 | "version": "1.1.0", 2946 | "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", 2947 | "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", 2948 | "dev": true, 2949 | "optional": true 2950 | }, 2951 | "repeat-element": { 2952 | "version": "1.1.3", 2953 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", 2954 | "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", 2955 | "dev": true 2956 | }, 2957 | "repeat-string": { 2958 | "version": "1.6.1", 2959 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 2960 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", 2961 | "dev": true 2962 | }, 2963 | "require-directory": { 2964 | "version": "2.1.1", 2965 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 2966 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" 2967 | }, 2968 | "require-main-filename": { 2969 | "version": "1.0.1", 2970 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", 2971 | "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" 2972 | }, 2973 | "resolve": { 2974 | "version": "1.10.0", 2975 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", 2976 | "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", 2977 | "requires": { 2978 | "path-parse": "^1.0.6" 2979 | } 2980 | }, 2981 | "resolve-url": { 2982 | "version": "0.2.1", 2983 | "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", 2984 | "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", 2985 | "dev": true 2986 | }, 2987 | "ret": { 2988 | "version": "0.1.15", 2989 | "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", 2990 | "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", 2991 | "dev": true 2992 | }, 2993 | "safe-buffer": { 2994 | "version": "5.1.2", 2995 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2996 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 2997 | }, 2998 | "safe-regex": { 2999 | "version": "1.1.0", 3000 | "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", 3001 | "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", 3002 | "dev": true, 3003 | "requires": { 3004 | "ret": "~0.1.10" 3005 | } 3006 | }, 3007 | "semver": { 3008 | "version": "5.6.0", 3009 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", 3010 | "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" 3011 | }, 3012 | "set-blocking": { 3013 | "version": "2.0.0", 3014 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 3015 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" 3016 | }, 3017 | "set-value": { 3018 | "version": "2.0.0", 3019 | "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", 3020 | "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", 3021 | "dev": true, 3022 | "requires": { 3023 | "extend-shallow": "^2.0.1", 3024 | "is-extendable": "^0.1.1", 3025 | "is-plain-object": "^2.0.3", 3026 | "split-string": "^3.0.1" 3027 | }, 3028 | "dependencies": { 3029 | "extend-shallow": { 3030 | "version": "2.0.1", 3031 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 3032 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 3033 | "dev": true, 3034 | "requires": { 3035 | "is-extendable": "^0.1.0" 3036 | } 3037 | } 3038 | } 3039 | }, 3040 | "shebang-command": { 3041 | "version": "1.2.0", 3042 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 3043 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 3044 | "requires": { 3045 | "shebang-regex": "^1.0.0" 3046 | } 3047 | }, 3048 | "shebang-regex": { 3049 | "version": "1.0.0", 3050 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 3051 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" 3052 | }, 3053 | "should": { 3054 | "version": "11.2.1", 3055 | "resolved": "https://registry.npmjs.org/should/-/should-11.2.1.tgz", 3056 | "integrity": "sha1-kPVRRVUtAc/CAGZuToGKHJZw7aI=", 3057 | "dev": true, 3058 | "requires": { 3059 | "should-equal": "^1.0.0", 3060 | "should-format": "^3.0.2", 3061 | "should-type": "^1.4.0", 3062 | "should-type-adaptors": "^1.0.1", 3063 | "should-util": "^1.0.0" 3064 | } 3065 | }, 3066 | "should-equal": { 3067 | "version": "1.0.1", 3068 | "resolved": "https://registry.npmjs.org/should-equal/-/should-equal-1.0.1.tgz", 3069 | "integrity": "sha1-C26VFvJgGp+wuy3MNpr6HH4gCvc=", 3070 | "dev": true, 3071 | "requires": { 3072 | "should-type": "^1.0.0" 3073 | } 3074 | }, 3075 | "should-format": { 3076 | "version": "3.0.3", 3077 | "resolved": "https://registry.npmjs.org/should-format/-/should-format-3.0.3.tgz", 3078 | "integrity": "sha1-m/yPdPo5IFxT04w01xcwPidxJPE=", 3079 | "dev": true, 3080 | "requires": { 3081 | "should-type": "^1.3.0", 3082 | "should-type-adaptors": "^1.0.1" 3083 | } 3084 | }, 3085 | "should-type": { 3086 | "version": "1.4.0", 3087 | "resolved": "https://registry.npmjs.org/should-type/-/should-type-1.4.0.tgz", 3088 | "integrity": "sha1-B1bYzoRt/QmEOmlHcZ36DUz/XPM=", 3089 | "dev": true 3090 | }, 3091 | "should-type-adaptors": { 3092 | "version": "1.1.0", 3093 | "resolved": "https://registry.npmjs.org/should-type-adaptors/-/should-type-adaptors-1.1.0.tgz", 3094 | "integrity": "sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA==", 3095 | "dev": true, 3096 | "requires": { 3097 | "should-type": "^1.3.0", 3098 | "should-util": "^1.0.0" 3099 | } 3100 | }, 3101 | "should-util": { 3102 | "version": "1.0.0", 3103 | "resolved": "https://registry.npmjs.org/should-util/-/should-util-1.0.0.tgz", 3104 | "integrity": "sha1-yYzaN0qmsZDfi6h8mInCtNtiAGM=", 3105 | "dev": true 3106 | }, 3107 | "signal-exit": { 3108 | "version": "3.0.2", 3109 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 3110 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" 3111 | }, 3112 | "slash": { 3113 | "version": "2.0.0", 3114 | "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", 3115 | "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", 3116 | "dev": true 3117 | }, 3118 | "snapdragon": { 3119 | "version": "0.8.2", 3120 | "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", 3121 | "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", 3122 | "dev": true, 3123 | "requires": { 3124 | "base": "^0.11.1", 3125 | "debug": "^2.2.0", 3126 | "define-property": "^0.2.5", 3127 | "extend-shallow": "^2.0.1", 3128 | "map-cache": "^0.2.2", 3129 | "source-map": "^0.5.6", 3130 | "source-map-resolve": "^0.5.0", 3131 | "use": "^3.1.0" 3132 | }, 3133 | "dependencies": { 3134 | "debug": { 3135 | "version": "2.6.9", 3136 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 3137 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 3138 | "dev": true, 3139 | "requires": { 3140 | "ms": "2.0.0" 3141 | } 3142 | }, 3143 | "define-property": { 3144 | "version": "0.2.5", 3145 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 3146 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 3147 | "dev": true, 3148 | "requires": { 3149 | "is-descriptor": "^0.1.0" 3150 | } 3151 | }, 3152 | "extend-shallow": { 3153 | "version": "2.0.1", 3154 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 3155 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 3156 | "dev": true, 3157 | "requires": { 3158 | "is-extendable": "^0.1.0" 3159 | } 3160 | }, 3161 | "ms": { 3162 | "version": "2.0.0", 3163 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 3164 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 3165 | "dev": true 3166 | } 3167 | } 3168 | }, 3169 | "snapdragon-node": { 3170 | "version": "2.1.1", 3171 | "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", 3172 | "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", 3173 | "dev": true, 3174 | "requires": { 3175 | "define-property": "^1.0.0", 3176 | "isobject": "^3.0.0", 3177 | "snapdragon-util": "^3.0.1" 3178 | }, 3179 | "dependencies": { 3180 | "define-property": { 3181 | "version": "1.0.0", 3182 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 3183 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 3184 | "dev": true, 3185 | "requires": { 3186 | "is-descriptor": "^1.0.0" 3187 | } 3188 | }, 3189 | "is-accessor-descriptor": { 3190 | "version": "1.0.0", 3191 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 3192 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 3193 | "dev": true, 3194 | "requires": { 3195 | "kind-of": "^6.0.0" 3196 | } 3197 | }, 3198 | "is-data-descriptor": { 3199 | "version": "1.0.0", 3200 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 3201 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 3202 | "dev": true, 3203 | "requires": { 3204 | "kind-of": "^6.0.0" 3205 | } 3206 | }, 3207 | "is-descriptor": { 3208 | "version": "1.0.2", 3209 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 3210 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 3211 | "dev": true, 3212 | "requires": { 3213 | "is-accessor-descriptor": "^1.0.0", 3214 | "is-data-descriptor": "^1.0.0", 3215 | "kind-of": "^6.0.2" 3216 | } 3217 | } 3218 | } 3219 | }, 3220 | "snapdragon-util": { 3221 | "version": "3.0.1", 3222 | "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", 3223 | "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", 3224 | "dev": true, 3225 | "requires": { 3226 | "kind-of": "^3.2.0" 3227 | }, 3228 | "dependencies": { 3229 | "kind-of": { 3230 | "version": "3.2.2", 3231 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 3232 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 3233 | "dev": true, 3234 | "requires": { 3235 | "is-buffer": "^1.1.5" 3236 | } 3237 | } 3238 | } 3239 | }, 3240 | "source-map": { 3241 | "version": "0.5.7", 3242 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 3243 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" 3244 | }, 3245 | "source-map-resolve": { 3246 | "version": "0.5.2", 3247 | "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", 3248 | "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", 3249 | "dev": true, 3250 | "requires": { 3251 | "atob": "^2.1.1", 3252 | "decode-uri-component": "^0.2.0", 3253 | "resolve-url": "^0.2.1", 3254 | "source-map-url": "^0.4.0", 3255 | "urix": "^0.1.0" 3256 | } 3257 | }, 3258 | "source-map-url": { 3259 | "version": "0.4.0", 3260 | "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", 3261 | "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", 3262 | "dev": true 3263 | }, 3264 | "split-string": { 3265 | "version": "3.1.0", 3266 | "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", 3267 | "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", 3268 | "dev": true, 3269 | "requires": { 3270 | "extend-shallow": "^3.0.0" 3271 | } 3272 | }, 3273 | "static-extend": { 3274 | "version": "0.1.2", 3275 | "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", 3276 | "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", 3277 | "dev": true, 3278 | "requires": { 3279 | "define-property": "^0.2.5", 3280 | "object-copy": "^0.1.0" 3281 | }, 3282 | "dependencies": { 3283 | "define-property": { 3284 | "version": "0.2.5", 3285 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 3286 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 3287 | "dev": true, 3288 | "requires": { 3289 | "is-descriptor": "^0.1.0" 3290 | } 3291 | } 3292 | } 3293 | }, 3294 | "string-width": { 3295 | "version": "2.1.1", 3296 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 3297 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 3298 | "requires": { 3299 | "is-fullwidth-code-point": "^2.0.0", 3300 | "strip-ansi": "^4.0.0" 3301 | } 3302 | }, 3303 | "string_decoder": { 3304 | "version": "1.1.1", 3305 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 3306 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 3307 | "dev": true, 3308 | "optional": true, 3309 | "requires": { 3310 | "safe-buffer": "~5.1.0" 3311 | } 3312 | }, 3313 | "strip-ansi": { 3314 | "version": "4.0.0", 3315 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 3316 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 3317 | "requires": { 3318 | "ansi-regex": "^3.0.0" 3319 | } 3320 | }, 3321 | "strip-eof": { 3322 | "version": "1.0.0", 3323 | "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", 3324 | "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" 3325 | }, 3326 | "supports-color": { 3327 | "version": "5.5.0", 3328 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 3329 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 3330 | "requires": { 3331 | "has-flag": "^3.0.0" 3332 | } 3333 | }, 3334 | "to-fast-properties": { 3335 | "version": "2.0.0", 3336 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 3337 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" 3338 | }, 3339 | "to-object-path": { 3340 | "version": "0.3.0", 3341 | "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", 3342 | "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", 3343 | "dev": true, 3344 | "requires": { 3345 | "kind-of": "^3.0.2" 3346 | }, 3347 | "dependencies": { 3348 | "kind-of": { 3349 | "version": "3.2.2", 3350 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 3351 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 3352 | "dev": true, 3353 | "requires": { 3354 | "is-buffer": "^1.1.5" 3355 | } 3356 | } 3357 | } 3358 | }, 3359 | "to-regex": { 3360 | "version": "3.0.2", 3361 | "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", 3362 | "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", 3363 | "dev": true, 3364 | "requires": { 3365 | "define-property": "^2.0.2", 3366 | "extend-shallow": "^3.0.2", 3367 | "regex-not": "^1.0.2", 3368 | "safe-regex": "^1.1.0" 3369 | } 3370 | }, 3371 | "to-regex-range": { 3372 | "version": "2.1.1", 3373 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", 3374 | "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", 3375 | "dev": true, 3376 | "requires": { 3377 | "is-number": "^3.0.0", 3378 | "repeat-string": "^1.6.1" 3379 | } 3380 | }, 3381 | "trim-right": { 3382 | "version": "1.0.1", 3383 | "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", 3384 | "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" 3385 | }, 3386 | "unicode-canonical-property-names-ecmascript": { 3387 | "version": "1.0.4", 3388 | "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", 3389 | "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==" 3390 | }, 3391 | "unicode-match-property-ecmascript": { 3392 | "version": "1.0.4", 3393 | "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", 3394 | "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", 3395 | "requires": { 3396 | "unicode-canonical-property-names-ecmascript": "^1.0.4", 3397 | "unicode-property-aliases-ecmascript": "^1.0.4" 3398 | } 3399 | }, 3400 | "unicode-match-property-value-ecmascript": { 3401 | "version": "1.0.2", 3402 | "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz", 3403 | "integrity": "sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ==" 3404 | }, 3405 | "unicode-property-aliases-ecmascript": { 3406 | "version": "1.0.4", 3407 | "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz", 3408 | "integrity": "sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg==" 3409 | }, 3410 | "union-value": { 3411 | "version": "1.0.0", 3412 | "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", 3413 | "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", 3414 | "dev": true, 3415 | "requires": { 3416 | "arr-union": "^3.1.0", 3417 | "get-value": "^2.0.6", 3418 | "is-extendable": "^0.1.1", 3419 | "set-value": "^0.4.3" 3420 | }, 3421 | "dependencies": { 3422 | "extend-shallow": { 3423 | "version": "2.0.1", 3424 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 3425 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 3426 | "dev": true, 3427 | "requires": { 3428 | "is-extendable": "^0.1.0" 3429 | } 3430 | }, 3431 | "set-value": { 3432 | "version": "0.4.3", 3433 | "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", 3434 | "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", 3435 | "dev": true, 3436 | "requires": { 3437 | "extend-shallow": "^2.0.1", 3438 | "is-extendable": "^0.1.1", 3439 | "is-plain-object": "^2.0.1", 3440 | "to-object-path": "^0.3.0" 3441 | } 3442 | } 3443 | } 3444 | }, 3445 | "unset-value": { 3446 | "version": "1.0.0", 3447 | "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", 3448 | "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", 3449 | "dev": true, 3450 | "requires": { 3451 | "has-value": "^0.3.1", 3452 | "isobject": "^3.0.0" 3453 | }, 3454 | "dependencies": { 3455 | "has-value": { 3456 | "version": "0.3.1", 3457 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", 3458 | "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", 3459 | "dev": true, 3460 | "requires": { 3461 | "get-value": "^2.0.3", 3462 | "has-values": "^0.1.4", 3463 | "isobject": "^2.0.0" 3464 | }, 3465 | "dependencies": { 3466 | "isobject": { 3467 | "version": "2.1.0", 3468 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", 3469 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", 3470 | "dev": true, 3471 | "requires": { 3472 | "isarray": "1.0.0" 3473 | } 3474 | } 3475 | } 3476 | }, 3477 | "has-values": { 3478 | "version": "0.1.4", 3479 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", 3480 | "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", 3481 | "dev": true 3482 | } 3483 | } 3484 | }, 3485 | "upath": { 3486 | "version": "1.1.0", 3487 | "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", 3488 | "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", 3489 | "dev": true, 3490 | "optional": true 3491 | }, 3492 | "urix": { 3493 | "version": "0.1.0", 3494 | "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", 3495 | "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", 3496 | "dev": true 3497 | }, 3498 | "use": { 3499 | "version": "3.1.1", 3500 | "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", 3501 | "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", 3502 | "dev": true 3503 | }, 3504 | "util-deprecate": { 3505 | "version": "1.0.2", 3506 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 3507 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 3508 | "dev": true, 3509 | "optional": true 3510 | }, 3511 | "which": { 3512 | "version": "1.3.1", 3513 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 3514 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 3515 | "requires": { 3516 | "isexe": "^2.0.0" 3517 | } 3518 | }, 3519 | "which-module": { 3520 | "version": "2.0.0", 3521 | "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", 3522 | "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" 3523 | }, 3524 | "wrap-ansi": { 3525 | "version": "2.1.0", 3526 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", 3527 | "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", 3528 | "requires": { 3529 | "string-width": "^1.0.1", 3530 | "strip-ansi": "^3.0.1" 3531 | }, 3532 | "dependencies": { 3533 | "ansi-regex": { 3534 | "version": "2.1.1", 3535 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 3536 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" 3537 | }, 3538 | "is-fullwidth-code-point": { 3539 | "version": "1.0.0", 3540 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", 3541 | "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", 3542 | "requires": { 3543 | "number-is-nan": "^1.0.0" 3544 | } 3545 | }, 3546 | "string-width": { 3547 | "version": "1.0.2", 3548 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", 3549 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", 3550 | "requires": { 3551 | "code-point-at": "^1.0.0", 3552 | "is-fullwidth-code-point": "^1.0.0", 3553 | "strip-ansi": "^3.0.0" 3554 | } 3555 | }, 3556 | "strip-ansi": { 3557 | "version": "3.0.1", 3558 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 3559 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 3560 | "requires": { 3561 | "ansi-regex": "^2.0.0" 3562 | } 3563 | } 3564 | } 3565 | }, 3566 | "wrappy": { 3567 | "version": "1.0.2", 3568 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3569 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 3570 | }, 3571 | "y18n": { 3572 | "version": "4.0.0", 3573 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", 3574 | "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" 3575 | }, 3576 | "yargs": { 3577 | "version": "12.0.5", 3578 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", 3579 | "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", 3580 | "requires": { 3581 | "cliui": "^4.0.0", 3582 | "decamelize": "^1.2.0", 3583 | "find-up": "^3.0.0", 3584 | "get-caller-file": "^1.0.1", 3585 | "os-locale": "^3.0.0", 3586 | "require-directory": "^2.1.1", 3587 | "require-main-filename": "^1.0.1", 3588 | "set-blocking": "^2.0.0", 3589 | "string-width": "^2.0.0", 3590 | "which-module": "^2.0.0", 3591 | "y18n": "^3.2.1 || ^4.0.0", 3592 | "yargs-parser": "^11.1.1" 3593 | } 3594 | }, 3595 | "yargs-parser": { 3596 | "version": "11.1.1", 3597 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", 3598 | "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", 3599 | "requires": { 3600 | "camelcase": "^5.0.0", 3601 | "decamelize": "^1.2.0" 3602 | } 3603 | } 3604 | } 3605 | } 3606 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "google-search-results-serpwow", 3 | "version": "0.0.14", 4 | "description": "Google Search Results Node JS API via SerpWow.com", 5 | "main": "dist/index.js", 6 | "scripts": { 7 | "test": "mocha", 8 | "build": "babel src --out-dir dist", 9 | "deploy": "npm publish --access public" 10 | }, 11 | "repository": { 12 | "type": "git", 13 | "url": "git+https://github.com/serpwow/google-search-results-nodejs.git" 14 | }, 15 | "keywords": [ 16 | "google", 17 | "search", 18 | "scrape", 19 | "api", 20 | "query", 21 | "json", 22 | "html", 23 | "image", 24 | "automated", 25 | "localization", 26 | "serp", 27 | "serpapi", 28 | "serpwow", 29 | "proxy", 30 | "proxies", 31 | "image", 32 | "news", 33 | "shopping", 34 | "videos", 35 | "seo" 36 | ], 37 | "author": "SerpWow hello@serpwow.com", 38 | "license": "ISC", 39 | "bugs": { 40 | "url": "https://github.com/serpwow/google-search-results-nodejs/issues" 41 | }, 42 | "homepage": "https://github.com/serpwow/google-search-results-nodejs#readme", 43 | "dependencies": { 44 | "@babel/polyfill": "^7.0.0", 45 | "node-fetch": "^2.2.0" 46 | }, 47 | "devDependencies": { 48 | "@babel/cli": "^7.0.0", 49 | "@babel/core": "^7.0.0", 50 | "@babel/preset-env": "^7.3.1", 51 | "babel-loader": "^7.1.5", 52 | "dotenv": "^5.0.0", 53 | "mocha": "^5.2.0", 54 | "should": "^11.1.1" 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | /** 3 | * This module provides access to Google Search Results via the SerpWow API 4 | * https://serpwow.com/ 5 | */ 6 | 7 | const fetch = require('node-fetch'), 8 | qs = require('querystring'), 9 | host = 'https://api.serpwow.com'; 10 | 11 | let API_KEY; // To be set by clients 12 | 13 | class SerpWow { 14 | constructor (apiKey) { 15 | if (!apiKey) throw new Error('No SerpWow API key specified'); 16 | API_KEY = apiKey; 17 | } 18 | 19 | json (...args) { 20 | args.output = 'json'; 21 | const { params, options, cb } = splitArgsIntoOptionsAndCallback(args); 22 | const url = createUrlFromEndpointAndOptions('/live/search', params, API_KEY); 23 | return httpGet(url, options, cb, 'json'); 24 | } 25 | 26 | html (...args) { 27 | args.output = 'html'; 28 | const { params, options, cb } = splitArgsIntoOptionsAndCallback(args); 29 | const url = createUrlFromEndpointAndOptions('/live/search', params, API_KEY, 'html'); 30 | return httpGet(url, options, cb, 'html'); 31 | } 32 | 33 | csv (...args) { 34 | args.output = 'csv'; 35 | const { params, options, cb } = splitArgsIntoOptionsAndCallback(args); 36 | const url = createUrlFromEndpointAndOptions('/live/search', params, API_KEY, 'csv'); 37 | return httpGet(url, options, cb, 'csv'); 38 | } 39 | 40 | locations (...args) { 41 | const { params, options, cb } = splitArgsIntoOptionsAndCallback(args); 42 | const url = createUrlFromEndpointAndOptions('/live/locations', params, API_KEY); 43 | return httpGet(url, options, cb, 'json'); 44 | } 45 | 46 | account (...args) { 47 | const { params, options, cb } = splitArgsIntoOptionsAndCallback(args); 48 | const url = createUrlFromEndpointAndOptions('/live/account', {}, API_KEY); 49 | return httpGet(url, options, cb, 'json'); 50 | } 51 | 52 | createBatch (...args) { 53 | const { params, options, cb } = splitArgsIntoOptionsAndCallback(args); 54 | const url = createUrlFromEndpointAndOptions('/live/batches', {}, API_KEY); 55 | return httpPost(url, params, cb, 'json'); 56 | } 57 | 58 | updateBatch (...args) { 59 | const { params, options, cb } = splitArgsIntoOptionsAndCallback(args); 60 | const url = createUrlFromEndpointAndOptions('/live/batches/' + args[0], {}, API_KEY); 61 | return httpPut(url, args[1], cb, 'json'); 62 | } 63 | 64 | startBatch (...args) { 65 | const { params, options, cb } = splitArgsIntoOptionsAndCallback(args); 66 | const url = createUrlFromEndpointAndOptions('/live/batches/' + args[0] + '/start', {}, API_KEY); 67 | return httpGet(url, options, cb, 'json'); 68 | } 69 | 70 | stopBatch (...args) { 71 | const { params, options, cb } = splitArgsIntoOptionsAndCallback(args); 72 | const url = createUrlFromEndpointAndOptions('/live/batches/' + args[0] + '/stop', {}, API_KEY); 73 | return httpGet(url, options, cb, 'json'); 74 | } 75 | 76 | deleteBatch (...args) { 77 | const { params, options, cb } = splitArgsIntoOptionsAndCallback(args); 78 | const url = createUrlFromEndpointAndOptions('/live/batches/' + args[0], {}, API_KEY); 79 | return httpDelete(url, options, cb, 'json'); 80 | } 81 | 82 | getBatch (...args) { 83 | const { params, options, cb } = splitArgsIntoOptionsAndCallback(args); 84 | const url = createUrlFromEndpointAndOptions('/live/batches/' + args[0], {}, API_KEY); 85 | return httpGet(url, options, cb, 'json'); 86 | } 87 | 88 | listBatches (...args) { 89 | const { params, options, cb } = splitArgsIntoOptionsAndCallback(args); 90 | const url = createUrlFromEndpointAndOptions('/live/batches', params, API_KEY); 91 | return httpGet(url, options, cb, 'json'); 92 | } 93 | 94 | updateBatchSearch (...args) { 95 | const { params, options, cb } = splitArgsIntoOptionsAndCallback(args); 96 | const url = createUrlFromEndpointAndOptions('/live/batches/' + args[0] + '/' + args[1], {}, API_KEY); 97 | return httpPut(url, args[2], cb, 'json'); 98 | } 99 | 100 | deleteBatchSearch (...args) { 101 | const { params, options, cb } = splitArgsIntoOptionsAndCallback(args); 102 | const url = createUrlFromEndpointAndOptions('/live/batches/' + args[0] + '/' + args[1], {}, API_KEY); 103 | return httpDelete(url, options, cb, 'json'); 104 | } 105 | 106 | listBatchSearches (...args) { 107 | const { params, options, cb } = splitArgsIntoOptionsAndCallback(args); 108 | const url = createUrlFromEndpointAndOptions('/live/batches/' + args[0] + '/searches/' + args[1], {}, API_KEY); 109 | return httpGet(url, options, cb, 'json'); 110 | } 111 | 112 | findBatchSearches (...args) { 113 | const { params, options, cb } = splitArgsIntoOptionsAndCallback(args); 114 | const url = createUrlFromEndpointAndOptions('/live/batches/' + args[0] + '/searches/' + args[1], {}, API_KEY, null, { q: args[2] }); 115 | return httpGet(url, options, cb, 'json'); 116 | } 117 | 118 | listAllBatchSearchesAsJSON (...args) { 119 | const { params, options, cb } = splitArgsIntoOptionsAndCallback(args); 120 | const url = createUrlFromEndpointAndOptions('/live/batches/' + args[0] + '/searches/json', {}, API_KEY); 121 | return httpGet(url, options, cb, 'json'); 122 | } 123 | 124 | listAllBatchSearchesAsCSV (...args) { 125 | const { params, options, cb } = splitArgsIntoOptionsAndCallback(args); 126 | const url = createUrlFromEndpointAndOptions('/live/batches/' + args[0] + '/searches/csv', {}, API_KEY); 127 | return httpGet(url, options, cb, 'json'); 128 | } 129 | 130 | listBatchResultSets (...args) { 131 | const { params, options, cb } = splitArgsIntoOptionsAndCallback(args); 132 | const url = createUrlFromEndpointAndOptions('/live/batches/' + args[0] + '/results', {}, API_KEY); 133 | return httpGet(url, options, cb, 'json'); 134 | } 135 | 136 | getBatchResultSet (...args) { 137 | const { params, options, cb } = splitArgsIntoOptionsAndCallback(args); 138 | const url = createUrlFromEndpointAndOptions('/live/batches/' + args[0] + '/results/' + args[1], {}, API_KEY); 139 | return httpGet(url, options, cb, 'json'); 140 | } 141 | 142 | getBatchResultSetAsCSV (...args) { 143 | const { params, options, cb } = splitArgsIntoOptionsAndCallback(args); 144 | const url = createUrlFromEndpointAndOptions('/live/batches/' + args[0] + '/results/' + args[1] + '/csv', {}, API_KEY); 145 | return httpGet(url, options, cb, 'json'); 146 | } 147 | 148 | } 149 | 150 | class SerpWowError extends Error { 151 | constructor(err) { 152 | super(); 153 | var n = `SerpWowError: ${err.code} - ${err.status}`; 154 | this.name = n; 155 | this.code = err.code; 156 | this.status = err.status; 157 | this.message = err.message; 158 | } 159 | } 160 | 161 | function splitArgsIntoOptionsAndCallback (args) { 162 | let params; 163 | let options; 164 | let cb; 165 | if (args.length > 1) { 166 | const possibleCb = args[args.length - 1]; 167 | if ('function' === typeof possibleCb) { 168 | cb = possibleCb; 169 | options = args.length === 3 ? args[1] : undefined; 170 | } else { 171 | options = args[1]; 172 | } 173 | params = args[0]; 174 | } else if ('object' === typeof args[0]) { 175 | params = args[0]; 176 | } else if ('function' === typeof args[0]) { 177 | cb = args[0]; 178 | } 179 | return { params, options, cb }; 180 | } 181 | 182 | function createUrlFromEndpointAndOptions (endpoint, options, apiKey, output, qsArgs) { 183 | var o = {}; 184 | if (options != null) { 185 | o = JSON.parse(JSON.stringify(options)); 186 | } 187 | o.api_key = apiKey; 188 | o.source = 'nodejs'; 189 | if (output != null) { 190 | o.output = output; 191 | } 192 | if (qsArgs != null) { 193 | for (let argName of Object.keys(qsArgs)) { 194 | o[argName] = qsArgs[argName]; 195 | } 196 | } 197 | const query = qs.stringify(o); 198 | const baseURL = `${host}${endpoint}`; 199 | var r = query ? `${baseURL}?${query}` : baseURL; 200 | return r; 201 | } 202 | 203 | function httpGet(url, options, cb, type) { 204 | let useCallback = 'function' === typeof cb; 205 | const reqOptions = { headers: {} }; 206 | return fetch(url, reqOptions).then(res => Promise.all([res, res.text()])).then(([res, body]) => { 207 | 208 | if (res.ok) { 209 | if (type === 'json') { 210 | body = JSON.parse(body); 211 | } 212 | if (useCallback) return cb(null, body); 213 | return body; 214 | } else { 215 | var e = { 216 | code: res.status, 217 | status: res.statusText 218 | } 219 | try { 220 | e.message = JSON.parse(body).request_info.message; 221 | } catch(inner) {} 222 | throw new SerpWowError(e) 223 | } 224 | }).catch(err => { 225 | if (useCallback) return cb(err); 226 | throw err; 227 | }); 228 | } 229 | 230 | function httpPost(url, body, cb, type) { 231 | let useCallback = 'function' === typeof cb; 232 | const reqOptions = { 233 | method: 'post', 234 | body: JSON.stringify(body), 235 | headers: { 'Content-Type': 'application/json' } }; 236 | return fetch(url, reqOptions).then(res => Promise.all([res, res.text()])).then(([res, body]) => { 237 | 238 | if (res.ok) { 239 | if (type === 'json') { 240 | body = JSON.parse(body); 241 | } 242 | if (useCallback) return cb(null, body); 243 | return body; 244 | } else { 245 | var e = { 246 | code: res.status, 247 | status: res.statusText 248 | } 249 | try { 250 | e.message = JSON.parse(body).request_info.message; 251 | } catch(inner) {} 252 | throw new SerpWowError(e) 253 | } 254 | }).catch(err => { 255 | if (useCallback) return cb(err); 256 | throw err; 257 | }); 258 | } 259 | 260 | function httpPut(url, body, cb, type) { 261 | let useCallback = 'function' === typeof cb; 262 | const reqOptions = { 263 | method: 'put', 264 | body: JSON.stringify(body), 265 | headers: { 'Content-Type': 'application/json' } }; 266 | return fetch(url, reqOptions).then(res => Promise.all([res, res.text()])).then(([res, body]) => { 267 | 268 | if (res.ok) { 269 | if (type === 'json') { 270 | body = JSON.parse(body); 271 | } 272 | if (useCallback) return cb(null, body); 273 | return body; 274 | } else { 275 | var e = { 276 | code: res.status, 277 | status: res.statusText 278 | } 279 | try { 280 | e.message = JSON.parse(body).request_info.message; 281 | } catch(inner) {} 282 | throw new SerpWowError(e) 283 | } 284 | }).catch(err => { 285 | if (useCallback) return cb(err); 286 | throw err; 287 | }); 288 | } 289 | 290 | function httpDelete(url, cb, type) { 291 | let useCallback = 'function' === typeof cb; 292 | const reqOptions = { 293 | method: 'delete', 294 | headers: {} }; 295 | return fetch(url, reqOptions).then(res => Promise.all([res, res.text()])).then(([res, body]) => { 296 | 297 | if (res.ok) { 298 | if (type === 'json') { 299 | body = JSON.parse(body); 300 | } 301 | if (useCallback) return cb(null, body); 302 | return body; 303 | } else { 304 | var e = { 305 | code: res.status, 306 | status: res.statusText 307 | } 308 | try { 309 | e.message = JSON.parse(body).request_info.message; 310 | } catch(inner) {} 311 | throw new SerpWowError(e) 312 | } 313 | }).catch(err => { 314 | if (useCallback) return cb(err); 315 | throw err; 316 | }); 317 | } 318 | 319 | module.exports = SerpWow; --------------------------------------------------------------------------------