kickstarter-crawler
Advanced tools
Comparing version 0.1.3 to 2.0.0
140
index.js
@@ -1,1 +0,139 @@ | ||
module.exports.project = require('./lib/project'); | ||
const cheerio = require('cheerio'); | ||
const axios = require('axios'); | ||
module.exports = async function kickstarterCrawler(url) { | ||
try { | ||
let res = await axios.get(url); | ||
if (res.data) { | ||
let data = parseHTML(res); | ||
return data; | ||
} | ||
} catch(err) { | ||
console.error(err); | ||
} | ||
} | ||
function parseHTML(res) { | ||
const data = {}; | ||
// parse html ie "load" | ||
const $ = cheerio.load(res.data); | ||
const was_cancelled = $('#main_content').hasClass('Campaign-state-canceled'); | ||
const title = | ||
$('.project-profile__title') | ||
.eq(0) | ||
.text() | ||
.trim(); | ||
const creator = | ||
$('.hero__link') | ||
.eq(1) | ||
.text() | ||
.trim(); | ||
const description = | ||
$('.project-profile__blurb') | ||
.text() | ||
.trim(); | ||
// Sometimes kickstarter has a "projects we love" section before category/location | ||
const has_flag = $('.NS_projects__category_location').children().length === 3 | ||
const category_location_offset = has_flag ? 1 : 0; | ||
// leave unstructured (ie US vs international formatting) | ||
const location = | ||
$('.NS_projects__category_location a') | ||
.eq(category_location_offset) | ||
.text() | ||
.trim() | ||
.split(', '); | ||
const category = | ||
$('.NS_projects__category_location a') | ||
.eq(category_location_offset + 1) | ||
.text() | ||
.trim(); | ||
let duration = | ||
$('.NS_campaigns__funding_period .f5') | ||
.text() | ||
.trim(); | ||
duration = duration && duration.split('\n')[1]; | ||
duration = Number(duration.replace(/[^0-9]/g, '')); | ||
const startdate = | ||
$('.NS_campaigns__funding_period time') | ||
.eq(0) | ||
.text() | ||
.trim(); | ||
const enddate = | ||
$('.NS_campaigns__funding_period time') | ||
.eq(1) | ||
.text() | ||
.trim(); | ||
let funding = | ||
$('.money') | ||
.eq(1) | ||
.text(); | ||
funding = funding && Number(funding.replace(/[^0-9]+/g, '')); | ||
let goal = | ||
$('.money') | ||
.eq(2) | ||
.text(); | ||
goal = goal && Number(goal.replace(/[^0-9]+/g, '')); | ||
let backers = | ||
$('h3.mb0') | ||
.eq(1) | ||
.text(); | ||
backers = backers && Number(backers.replace(/[^0-9]/g, '')); | ||
const n = $('ol li .pledge__backer-stats').length; | ||
let pledges = []; | ||
for (let i = 0; i < n; i++) { | ||
let amount = | ||
$('ol li .pledge__amount') | ||
.eq(i) | ||
.text(); | ||
amount = amount && amount.match(/[1-9]+[,]*[0-9]*/)[0]; | ||
amount = amount.replace(/,/, ''); | ||
let backers = | ||
$('ol li .pledge__backer-stats') | ||
.eq(i) | ||
.text(); | ||
backers = backers && backers.replace(/[^0-9]/g, ''); | ||
backers = backers.replace(/,/, ''); | ||
pledges.push([Number(amount), Number(backers)]); | ||
} | ||
data.title = title; | ||
data.creator = creator; | ||
data.description = description; | ||
data.category = category; | ||
data.location = location; | ||
data.duration = duration; | ||
data.startdate = startdate; | ||
data.enddate = enddate; | ||
data.funding = funding; | ||
data.goal = goal; | ||
data.backers = backers; | ||
data.pledges = pledges; | ||
return data; | ||
} |
{ | ||
"name": "kickstarter-crawler", | ||
"version": "0.1.3", | ||
"description": "Crawl kickstarter project data (30 + 8n data points - where n is the # of pledges).", | ||
"version": "2.0.0", | ||
"description": "Kickstarter crawler that does what you think it would", | ||
"main": "index.js", | ||
"homepage": "https://github.com/ghostsnstuff/kickstarter-crawler", | ||
"authors": "Jared Halpert <jaredhalpert90@gmail.com> (https://github.com/ghostsnstuff)", | ||
"keywords": [ | ||
"kickstarter", | ||
"crawler", | ||
"crowdfunding", | ||
"data", | ||
"spider", | ||
"bot" | ||
], | ||
"scripts": { | ||
"test": "node test/static-spec && node test/type-spec && node test/queue-spec" | ||
"test": "mocha index.test.js" | ||
}, | ||
"repository": { | ||
"type": "git", | ||
"url": "https://github.com/ghostsnstuff/kickstarter-crawler.git" | ||
}, | ||
"bugs": { | ||
"url": "https://github.com/ghostsnstuff/kickstarter-crawler/issues" | ||
}, | ||
"license": "MIT", | ||
"author": "jared lamont", | ||
"license": "ISC", | ||
"dependencies": { | ||
"request": "*", | ||
"cheerio": "*", | ||
"colors": "*", | ||
"tape": "*", | ||
"crapi": "*", | ||
"is-url": "*" | ||
"axios": "^0.19.2", | ||
"cheerio": "^1.0.0-rc.3" | ||
}, | ||
"preferGlobal": "true", | ||
"bin": { | ||
"ks": "./lib/cli.js" | ||
}, | ||
"engines": { | ||
"node": "*" | ||
"devDependencies": { | ||
"mocha": "^8.1.0" | ||
} | ||
} |
249
README.md
@@ -1,227 +0,34 @@ | ||
## kickstarter-crawler | ||
[![Build Status](https://travis-ci.org/ghostsnstuff/kickstarter-crawler.svg?branch=master)](https://travis-ci.org/ghostsnstuff/kickstarter-crawler) | ||
[![NPM](https://nodei.co/npm/kickstarter-crawler.png?downloads=true)](https://nodei.co/npm/kickstarter-crawler/) | ||
##### Returns **30 + 8n** data points - where n is the number of pledges | ||
##### Analyze **61,356** kickstarter projects using [crapi](https://github.com/ghostsnstuff/crapi) | ||
## Installation | ||
npm install kickstarter-crawler -g | ||
## Test | ||
npm test | ||
## Getting Started | ||
[Examples](https://github.com/ghostsnstuff/kickstarter-crawler/blob/master/README.md#examples)<br> | ||
[API](https://github.com/ghostsnstuff/kickstarter-crawler/blob/master/README.md#API)<br> | ||
[The crawler as a service](http://kcaas.io)<br> | ||
### Examples | ||
The following example crawls a project collecting **general**, **funding**, and **location** | ||
related data | ||
# Getting started | ||
```javascript | ||
'use strict'; | ||
const kickstarterCrawler = require('kickstarter-crawler'); | ||
const url = 'https://www.kickstarter.com/projects/maxtemkin/philosophy-posters'; | ||
let result = kickstarterCrawler(url); | ||
result.then((data) => console.log(data)); | ||
var kickstarterCrawler = require('kickstarter-crawler'); | ||
// output | ||
{ | ||
title: 'Philosophy Posters', | ||
creator: 'Max Temkin', | ||
description: 'Ten giant philosophy posters with big ideas presented simply.', | ||
category: 'Graphic Design', | ||
location: [ 'Chicago', 'IL' ], | ||
duration: 30, | ||
startdate: 'Apr 4, 2012', | ||
enddate: 'May 4, 2012', | ||
funding: 41167, | ||
goal: 2000, | ||
backers: 1393, | ||
pledges: [ [ 20, 1003 ], [ 30, 359 ] ] | ||
} | ||
``` | ||
# Insallation | ||
``` | ||
npm i kickstarter-crawler | ||
``` | ||
var config, project; | ||
// Project configurations | ||
config = { | ||
url: 'https://www.kickstarter.com/projects/maxtemkin/philosophy-posters', | ||
fields: ['general', 'funding', 'location'] | ||
}; | ||
// Initialize the crawler | ||
project = new kickstarterCrawler.project(config); | ||
// Make request (crawl) | ||
project.request(function onRequest (err, data) { | ||
// Something broke | ||
if (err) { | ||
console.log(err); | ||
return; | ||
} | ||
// Log crawled data | ||
console.log(data); | ||
}); | ||
# Test | ||
``` | ||
** :pizza: MORE EXAMPLES COMING :pizza: ** | ||
## API | ||
### `kickstarterCrawler.project(config)` | ||
* {Object} project constructor<br> | ||
* Initializes the crawler and exposes its interface<br><br> | ||
### `config` | ||
* {Object} project configurations<br> | ||
* Configurations necessary to instantiate the project constructor<br><br> | ||
### `config.url` | ||
* {String} project profile url<br><br> | ||
### `config.fields` | ||
* {Array} array of project data-fields, which indicate what data points will be crawled<br> | ||
* If *undefined*, data from *all* fields will be returned.<br> | ||
**VALID FIELD VALUES** | ||
* general | ||
* time | ||
* funding | ||
* location | ||
* other | ||
* media | ||
* pledges | ||
### `project.request(callback)` | ||
* Makes a HTTP request to the respective project url<br> | ||
* @param `callback(err, data)` {Function}<br><br> | ||
### `project.parse(HTML)` | ||
* Parses the HTML corresponding to the respective project profile page<br> | ||
* Returns a nested JSON of parsed data | ||
* @param {String} `HTML`<br> | ||
* @return {Object} | ||
### `project.getTitle(callback)` | ||
* @param {Function} `callback(err, data)`<br> | ||
* `data` {Object} will consist of {String} generalTitle<br><br> | ||
### `project.getCreator(callback)` | ||
* @param {Function} `callback(err, data)`<br> | ||
* `data` {Object} will consist of {String} generalCreator<br><br> | ||
### `project.getCategory(callback)` | ||
* @param {Function} `callback(err, data)`<br> | ||
* `data` {Object} will consist of {String} generalCategory<br><br> | ||
### `project.getSubCategory(callback)` | ||
* @param {Function} `callback(err, data)`<br> | ||
* `data` {Object} will consist of {String} generalSubCategory<br><br> | ||
### `project.getAvatar(callback)` | ||
* @param {Function} `callback(err, data)`<br> | ||
* `data` {Object} will consist of {String} generalProjectAvatarURL<br><br> | ||
### `project.getProjectUrl(callback)` | ||
* @param {Function} `callback(err, data)`<br> | ||
* `data` {Object} will consist of {String} generalProjectURL<br><br> | ||
### `project.getCreatorUrl(callback)` | ||
* @param {Function} `callback(err, data)`<br> | ||
* `data` {Object} will consist of {String} generalCreatorURL<br><br> | ||
### `project.getProjectVideo(callback)` | ||
* @param {Function} `callback(err, data)`<br> | ||
* `data` {Object} will consist of {String} generalProjectVideoURL<br><br> | ||
### `project.getNumDays(callback)` | ||
* @param {Function} `callback(err, data)`<br> | ||
* `data` {Object} will consist of {Number} timeNumDays<br><br> | ||
### `project.getStartTime(callback)` | ||
* @param {Function} `callback(err, data)`<br> | ||
* `data` {Object} will consist of {Number} timeStart<br><br> | ||
### `project.getEndTime(callback)` | ||
* @param {Function} `callback(err, data)`<br> | ||
* `data` {Object} will consist of {Number} timeEnd<br><br> | ||
### `project.getDollarsRaised(callback)` | ||
* @param {Function} `callback(err, data)`<br> | ||
* `data` {Object} will consist of {Number} fundingDollarsRaised<br><br> | ||
### `project.getFundingGoal(callback)` | ||
* @param {Function} `callback(err, data)`<br> | ||
* `data` {Object} will consist of {Number} fundingGoal<br><br> | ||
### `project.getPercentRaised(callback)` | ||
* @param {Function} `callback(err, data)`<br> | ||
* `data` {Object} will consist of {Number} fundingPercentRaised<br><br> | ||
### `project.getCurrency(callback)` | ||
* @param {Function} `callback(err, data)`<br> | ||
* `data` {Object} will consist of {String} fundingCurrency<br><br> | ||
### `project.getSuccess(callback)` | ||
* @param {Function} `callback(err, data)`<br> | ||
* `data` {Object} will consist of {Boolean} fundingSuccess<br><br> | ||
### `project.getBackers(callback)` | ||
* @param {Function} `callback(err, data)`<br> | ||
* `data` {Object} will consist of {Number} fundingNumBackers<br><br> | ||
### `project.getCity(callback)` | ||
* @param {Function} `callback(err, data)`<br> | ||
* `data` {Object} will consist of {String} locationCity<br><br> | ||
### `project.getState(callback)` | ||
* @param {Function} `callback(err, data)`<br> | ||
* `data` {Object} will consist of {String} locationState<br><br> | ||
### `project.getCountry(callback)` | ||
* @param {Function} `callback(err, data)`<br> | ||
* `data` {Object} will consist of {String} locationCountry<br><br> | ||
### `project.getUpdates(callback)` | ||
* @param {Function} `callback(err, data)`<br> | ||
* `data` {Object} will consist of {Number} otherUpdates<br><br> | ||
### `project.getComments(callback)` | ||
* @param {Function} `callback(err, data)`<br> | ||
* `data` {Object} will consist of {Number} otherComments<br><br> | ||
### `project.getProjectsCreated(callback)` | ||
* @param {Function} `callback(err, data)`<br> | ||
* `data` {Object} will consist of {Number} otherProjectsCreated<br><br> | ||
### `project.getProjectsBacked(callback)` | ||
* @param {Function} `callback(err, data)`<br> | ||
* `data` {Object} will consist of {Number} otherProjectsBacked<br><br> | ||
### `project.getWebsiteUrl(callback)` | ||
* @param {Function} `callback(err, data)`<br> | ||
* `data` {Object} will consist of {String} otherWebsiteURL<br><br> | ||
### `project.getNumImages(callback)` | ||
* @param {Function} `callback(err, data)`<br> | ||
* `data` {Object} will consist of {Number} mediaNumImages<br><br> | ||
### `project.getImages(callback)` | ||
* @param {Function} `callback(err, data)`<br> | ||
* `data` {Object} will consist of {Array} mediaImages<br><br> | ||
### `project.getNumPledges(callback)` | ||
* @param {Function} `callback(err, data)`<br> | ||
* `data` {Object} will consist of {Number} pledgesNumPledges<br><br> | ||
### `project.getNumLimitedPledges(callback)` | ||
* @param {Function} `callback(err, data)`<br> | ||
* `data` {Object} will consist of {Number} pledgesNumLimitedPledges<br><br> | ||
### `project.getPledgeAmounts(callback)` | ||
* @param {Function} `callback(err, data)`<br> | ||
* `data` {Object} will consist of {Array} pledgesAmounts<br><br> | ||
### `project.getPledgesData(callback)` | ||
* @param {Function} `callback(err, data)`<br> | ||
* `data` {Object} will consist of {Object} pledgesData<br><br> | ||
npm run test | ||
``` |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
No bug tracker
MaintenancePackage does not have a linked bug tracker in package.json.
Found 1 instance in 1 package
No repository
Supply chain riskPackage does not have a linked source code repository. Without this field, a package will have no reference to the location of the source code use to generate the package.
Found 1 instance in 1 package
No website
QualityPackage does not have a website.
Found 1 instance in 1 package
Floating dependency
QualityPackage has a dependency with a floating version range. This can cause issues if the dependency publishes a new major version.
Found 6 instances in 1 package
No contributors or author data
MaintenancePackage does not specify a list of contributors or an author in package.json.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
2
1
4871
1
4
133
35
1
1
+ Addedaxios@^0.19.2
+ Addedaxios@0.19.2(transitive)
+ Addedcheerio@1.0.0-rc.12(transitive)
+ Addedcheerio-select@2.1.0(transitive)
+ Addedcss-select@5.1.0(transitive)
+ Addedcss-what@6.1.0(transitive)
+ Addeddom-serializer@2.0.0(transitive)
+ Addeddomelementtype@2.3.0(transitive)
+ Addeddomhandler@5.0.3(transitive)
+ Addeddomutils@3.1.0(transitive)
+ Addedentities@4.5.0(transitive)
+ Addedfollow-redirects@1.5.10(transitive)
+ Addedhtmlparser2@8.0.2(transitive)
+ Addednth-check@2.1.1(transitive)
+ Addedparse5@7.1.2(transitive)
+ Addedparse5-htmlparser2-tree-adapter@7.0.0(transitive)
- Removedcolors@*
- Removedcrapi@*
- Removedis-url@*
- Removedrequest@*
- Removedtape@*
- Removed@ljharb/resumer@0.1.3(transitive)
- Removed@ljharb/through@2.3.13(transitive)
- Removedajv@6.12.6(transitive)
- Removedarray-buffer-byte-length@1.0.1(transitive)
- Removedarray.prototype.every@1.1.6(transitive)
- Removedarraybuffer.prototype.slice@1.0.3(transitive)
- Removedasn1@0.2.6(transitive)
- Removedassert-plus@1.0.0(transitive)
- Removedasynckit@0.4.0(transitive)
- Removedavailable-typed-arrays@1.0.7(transitive)
- Removedaws-sign2@0.7.0(transitive)
- Removedaws4@1.13.0(transitive)
- Removedbalanced-match@1.0.2(transitive)
- Removedbcrypt-pbkdf@1.0.2(transitive)
- Removedbrace-expansion@1.1.11(transitive)
- Removedcall-bind@1.0.7(transitive)
- Removedcaseless@0.12.0(transitive)
- Removedcheerio@0.22.0(transitive)
- Removedcolors@1.4.0(transitive)
- Removedcombined-stream@1.0.8(transitive)
- Removedconcat-map@0.0.1(transitive)
- Removedcore-util-is@1.0.2(transitive)
- Removedcrapi@0.0.2(transitive)
- Removedcss-select@1.2.0(transitive)
- Removedcss-what@2.1.3(transitive)
- Removeddashdash@1.14.1(transitive)
- Removeddata-view-buffer@1.0.1(transitive)
- Removeddata-view-byte-length@1.0.1(transitive)
- Removeddata-view-byte-offset@1.0.0(transitive)
- Removeddeep-equal@2.2.3(transitive)
- Removeddefine-data-property@1.1.4(transitive)
- Removeddefine-properties@1.2.1(transitive)
- Removeddefined@1.0.1(transitive)
- Removeddelayed-stream@1.0.0(transitive)
- Removeddom-serializer@0.1.1(transitive)
- Removeddomelementtype@1.3.1(transitive)
- Removeddomhandler@2.4.2(transitive)
- Removeddomutils@1.5.1(transitive)
- Removeddotignore@0.1.2(transitive)
- Removedecc-jsbn@0.1.2(transitive)
- Removedentities@1.1.2(transitive)
- Removedes-abstract@1.23.3(transitive)
- Removedes-define-property@1.0.0(transitive)
- Removedes-errors@1.3.0(transitive)
- Removedes-get-iterator@1.1.3(transitive)
- Removedes-object-atoms@1.0.0(transitive)
- Removedes-set-tostringtag@2.0.3(transitive)
- Removedes-to-primitive@1.2.1(transitive)
- Removedextend@3.0.2(transitive)
- Removedextsprintf@1.3.0(transitive)
- Removedfast-deep-equal@3.1.3(transitive)
- Removedfast-json-stable-stringify@2.1.0(transitive)
- Removedfor-each@0.3.3(transitive)
- Removedforever-agent@0.6.1(transitive)
- Removedform-data@2.3.3(transitive)
- Removedfs.realpath@1.0.0(transitive)
- Removedfunction-bind@1.1.2(transitive)
- Removedfunction.prototype.name@1.1.6(transitive)
- Removedfunctions-have-names@1.2.3(transitive)
- Removedget-intrinsic@1.2.4(transitive)
- Removedget-package-type@0.1.0(transitive)
- Removedget-symbol-description@1.0.2(transitive)
- Removedgetpass@0.1.7(transitive)
- Removedglob@7.2.3(transitive)
- Removedglobalthis@1.0.4(transitive)
- Removedgopd@1.0.1(transitive)
- Removedhar-schema@2.0.0(transitive)
- Removedhar-validator@5.1.5(transitive)
- Removedhas-bigints@1.0.2(transitive)
- Removedhas-dynamic-import@2.1.0(transitive)
- Removedhas-property-descriptors@1.0.2(transitive)
- Removedhas-proto@1.0.3(transitive)
- Removedhas-symbols@1.0.3(transitive)
- Removedhas-tostringtag@1.0.2(transitive)
- Removedhasown@2.0.2(transitive)
- Removedhtmlparser2@3.10.1(transitive)
- Removedhttp-signature@1.2.0(transitive)
- Removedinflight@1.0.6(transitive)
- Removedinherits@2.0.4(transitive)
- Removedinternal-slot@1.0.7(transitive)
- Removedis-arguments@1.1.1(transitive)
- Removedis-array-buffer@3.0.4(transitive)
- Removedis-bigint@1.0.4(transitive)
- Removedis-boolean-object@1.1.2(transitive)
- Removedis-callable@1.2.7(transitive)
- Removedis-core-module@2.13.1(transitive)
- Removedis-data-view@1.0.1(transitive)
- Removedis-date-object@1.0.5(transitive)
- Removedis-map@2.0.3(transitive)
- Removedis-negative-zero@2.0.3(transitive)
- Removedis-number-object@1.0.7(transitive)
- Removedis-regex@1.1.4(transitive)
- Removedis-set@2.0.3(transitive)
- Removedis-shared-array-buffer@1.0.3(transitive)
- Removedis-string@1.0.7(transitive)
- Removedis-symbol@1.0.4(transitive)
- Removedis-typed-array@1.1.13(transitive)
- Removedis-typedarray@1.0.0(transitive)
- Removedis-url@1.2.4(transitive)
- Removedis-weakmap@2.0.2(transitive)
- Removedis-weakref@1.0.2(transitive)
- Removedis-weakset@2.0.3(transitive)
- Removedisarray@2.0.5(transitive)
- Removedisstream@0.1.2(transitive)
- Removedjsbn@0.1.1(transitive)
- Removedjson-schema@0.4.0(transitive)
- Removedjson-schema-traverse@0.4.1(transitive)
- Removedjson-stringify-safe@5.0.1(transitive)
- Removedjsprim@1.4.2(transitive)
- Removedlodash.assignin@4.2.0(transitive)
- Removedlodash.bind@4.2.1(transitive)
- Removedlodash.defaults@4.2.0(transitive)
- Removedlodash.filter@4.6.0(transitive)
- Removedlodash.flatten@4.4.0(transitive)
- Removedlodash.foreach@4.5.0(transitive)
- Removedlodash.map@4.6.0(transitive)
- Removedlodash.merge@4.6.2(transitive)
- Removedlodash.pick@4.4.0(transitive)
- Removedlodash.reduce@4.6.0(transitive)
- Removedlodash.reject@4.6.0(transitive)
- Removedlodash.some@4.6.0(transitive)
- Removedmime-db@1.52.0(transitive)
- Removedmime-types@2.1.35(transitive)
- Removedminimatch@3.1.2(transitive)
- Removedminimist@1.2.8(transitive)
- Removedmock-property@1.0.3(transitive)
- Removednth-check@1.0.2(transitive)
- Removedoauth-sign@0.9.0(transitive)
- Removedobject-inspect@1.13.1(transitive)
- Removedobject-is@1.1.6(transitive)
- Removedobject-keys@1.1.1(transitive)
- Removedobject.assign@4.1.5(transitive)
- Removedonce@1.4.0(transitive)
- Removedpath-is-absolute@1.0.1(transitive)
- Removedpath-parse@1.0.7(transitive)
- Removedperformance-now@2.1.0(transitive)
- Removedpossible-typed-array-names@1.0.0(transitive)
- Removedpsl@1.9.0(transitive)
- Removedpunycode@2.3.1(transitive)
- Removedqs@6.5.3(transitive)
- Removedreadable-stream@3.6.2(transitive)
- Removedregexp.prototype.flags@1.5.2(transitive)
- Removedrequest@2.88.2(transitive)
- Removedresolve@2.0.0-next.5(transitive)
- Removedsafe-array-concat@1.1.2(transitive)
- Removedsafe-buffer@5.2.1(transitive)
- Removedsafe-regex-test@1.0.3(transitive)
- Removedsafer-buffer@2.1.2(transitive)
- Removedset-function-length@1.2.2(transitive)
- Removedset-function-name@2.0.2(transitive)
- Removedside-channel@1.0.6(transitive)
- Removedsshpk@1.18.0(transitive)
- Removedstop-iteration-iterator@1.0.0(transitive)
- Removedstring.prototype.trim@1.2.9(transitive)
- Removedstring.prototype.trimend@1.0.8(transitive)
- Removedstring.prototype.trimstart@1.0.8(transitive)
- Removedstring_decoder@1.3.0(transitive)
- Removedsupports-preserve-symlinks-flag@1.0.0(transitive)
- Removedtape@5.7.5(transitive)
- Removedtough-cookie@2.5.0(transitive)
- Removedtunnel-agent@0.6.0(transitive)
- Removedtweetnacl@0.14.5(transitive)
- Removedtyped-array-buffer@1.0.2(transitive)
- Removedtyped-array-byte-length@1.0.1(transitive)
- Removedtyped-array-byte-offset@1.0.2(transitive)
- Removedtyped-array-length@1.0.6(transitive)
- Removedunbox-primitive@1.0.2(transitive)
- Removeduri-js@4.4.1(transitive)
- Removedutil-deprecate@1.0.2(transitive)
- Removeduuid@3.4.0(transitive)
- Removedverror@1.10.0(transitive)
- Removedwhich-boxed-primitive@1.0.2(transitive)
- Removedwhich-collection@1.0.2(transitive)
- Removedwhich-typed-array@1.1.15(transitive)
- Removedwrappy@1.0.2(transitive)
Updatedcheerio@^1.0.0-rc.3