├── .gitignore ├── README.md ├── cheerio.js ├── package.json ├── puppeteer.js ├── spa.js └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Three Ways to Scrape in Node.js 2 | 3 | - Cheerio 4 | - Puppeteer 5 | - Fetch (REST / GraphQL) 6 | -------------------------------------------------------------------------------- /cheerio.js: -------------------------------------------------------------------------------- 1 | const fetch = require("isomorphic-fetch"); 2 | const cheerio = require("cheerio"); 3 | 4 | const symbols = ["AAPL", "TSLA"]; 5 | 6 | async function app() { 7 | for await (symbol of symbols) { 8 | const description = await getDescription(symbol); 9 | console.log({ symbol, description }); 10 | } 11 | } 12 | 13 | async function getDescription(symbol) { 14 | const response = await fetch( 15 | `https://ih.advfn.com/stock-market/NASDAQ/${symbol}/stock-price` 16 | ); 17 | const text = await response.text(); 18 | const $ = cheerio.load(text); 19 | return $("#content > .TableElement:last-child").text().trim(); 20 | } 21 | 22 | app(); 23 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "video-scrape", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "author": "Leigh Halliday", 6 | "license": "MIT", 7 | "dependencies": { 8 | "cheerio": "^1.0.0-rc.3", 9 | "isomorphic-fetch": "^2.2.1", 10 | "puppeteer": "^5.2.1" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /puppeteer.js: -------------------------------------------------------------------------------- 1 | const puppeteer = require("puppeteer"); 2 | 3 | const symbols = ["AAPL", "TSLA"]; 4 | 5 | async function app() { 6 | for await (symbol of symbols) { 7 | const description = await getDescription(symbol); 8 | console.log({ symbol, description }); 9 | } 10 | } 11 | 12 | async function getDescription(symbol) { 13 | const browser = await puppeteer.launch({ headless: true }); 14 | const page = await browser.newPage(); 15 | await page.goto( 16 | `https://ih.advfn.com/stock-market/NASDAQ/${symbol}/stock-price` 17 | ); 18 | 19 | const text = await page.evaluate(() => { 20 | return document.querySelector("#content > .TableElement:last-child") 21 | .innerText; 22 | }); 23 | 24 | await browser.close(); 25 | 26 | return text; 27 | } 28 | 29 | app(); 30 | -------------------------------------------------------------------------------- /spa.js: -------------------------------------------------------------------------------- 1 | const fetch = require("isomorphic-fetch"); 2 | 3 | const symbols = ["SHOP", "CNR"]; 4 | 5 | async function app() { 6 | for await (symbol of symbols) { 7 | const description = await getDescription(symbol); 8 | console.log({ symbol, description }); 9 | } 10 | } 11 | 12 | async function getDescription(symbol) { 13 | const response = await fetch("https://app-money.tmx.com/graphql", { 14 | headers: { 15 | accept: "*/*", 16 | "accept-language": 17 | "en-CA,en;q=0.9,es-CO;q=0.8,es;q=0.7,en-GB;q=0.6,en-US;q=0.5", 18 | authorization: "", 19 | "content-type": "application/json", 20 | locale: "en", 21 | "sec-fetch-dest": "empty", 22 | "sec-fetch-mode": "cors", 23 | "sec-fetch-site": "same-site", 24 | }, 25 | referrer: `https://money.tmx.com/en/quote/${symbol}/company`, 26 | referrerPolicy: "no-referrer-when-downgrade", 27 | body: `{"operationName":"getQuoteBySymbol","variables":{"symbol":"${symbol}","locale":"en"},"query":"query getQuoteBySymbol($symbol: String, $locale: String) {\\n getQuoteBySymbol(symbol: $symbol, locale: $locale) {\\n symbol\\n name\\n price\\n priceChange\\n percentChange\\n exchangeName\\n exShortName\\n exchangeCode\\n marketPlace\\n sector\\n industry\\n volume\\n openPrice\\n dayHigh\\n dayLow\\n MarketCap\\n MarketCapAllClasses\\n peRatio\\n prevClose\\n dividendFrequency\\n dividendYield\\n dividendAmount\\n dividendCurrency\\n beta\\n eps\\n exDividendDate\\n shortDescription\\n longDescription\\n website\\n email\\n phoneNumber\\n fullAddress\\n employees\\n shareOutStanding\\n totalDebtToEquity\\n totalSharesOutStanding\\n sharesESCROW\\n vwap\\n dividendPayDate\\n weeks52high\\n weeks52low\\n alpha\\n averageVolume10D\\n averageVolume30D\\n averageVolume50D\\n priceToBook\\n priceToCashFlow\\n returnOnEquity\\n returnOnAssets\\n day21MovingAvg\\n day50MovingAvg\\n day200MovingAvg\\n dividend3Years\\n dividend5Years\\n datatype\\n __typename\\n }\\n}\\n"}`, 28 | method: "POST", 29 | mode: "cors", 30 | }); 31 | const data = await response.json(); 32 | return data.data.getQuoteBySymbol.longDescription; 33 | } 34 | 35 | app(); 36 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@types/node@*": 6 | version "14.6.4" 7 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.4.tgz#a145cc0bb14ef9c4777361b7bbafa5cf8e3acb5a" 8 | integrity sha512-Wk7nG1JSaMfMpoMJDKUsWYugliB2Vy55pdjLpmLixeyMi7HizW2I/9QoxsPCkXl3dO+ZOVqPumKaDUv5zJu2uQ== 9 | 10 | "@types/yauzl@^2.9.1": 11 | version "2.9.1" 12 | resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.9.1.tgz#d10f69f9f522eef3cf98e30afb684a1e1ec923af" 13 | integrity sha512-A1b8SU4D10uoPjwb0lnHmmu8wZhR9d+9o2PKBQT2jU5YPTKsxac6M2qGAdY7VcL+dHHhARVUDmeg0rOrcd9EjA== 14 | dependencies: 15 | "@types/node" "*" 16 | 17 | agent-base@5: 18 | version "5.1.1" 19 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-5.1.1.tgz#e8fb3f242959db44d63be665db7a8e739537a32c" 20 | integrity sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g== 21 | 22 | balanced-match@^1.0.0: 23 | version "1.0.0" 24 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 25 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 26 | 27 | base64-js@^1.0.2: 28 | version "1.3.1" 29 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" 30 | integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== 31 | 32 | bl@^4.0.1: 33 | version "4.0.3" 34 | resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.3.tgz#12d6287adc29080e22a705e5764b2a9522cdc489" 35 | integrity sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg== 36 | dependencies: 37 | buffer "^5.5.0" 38 | inherits "^2.0.4" 39 | readable-stream "^3.4.0" 40 | 41 | boolbase@~1.0.0: 42 | version "1.0.0" 43 | resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" 44 | integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= 45 | 46 | brace-expansion@^1.1.7: 47 | version "1.1.11" 48 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 49 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 50 | dependencies: 51 | balanced-match "^1.0.0" 52 | concat-map "0.0.1" 53 | 54 | buffer-crc32@~0.2.3: 55 | version "0.2.13" 56 | resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" 57 | integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= 58 | 59 | buffer@^5.2.1, buffer@^5.5.0: 60 | version "5.6.0" 61 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" 62 | integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== 63 | dependencies: 64 | base64-js "^1.0.2" 65 | ieee754 "^1.1.4" 66 | 67 | cheerio@^1.0.0-rc.3: 68 | version "1.0.0-rc.3" 69 | resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.3.tgz#094636d425b2e9c0f4eb91a46c05630c9a1a8bf6" 70 | integrity sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA== 71 | dependencies: 72 | css-select "~1.2.0" 73 | dom-serializer "~0.1.1" 74 | entities "~1.1.1" 75 | htmlparser2 "^3.9.1" 76 | lodash "^4.15.0" 77 | parse5 "^3.0.1" 78 | 79 | chownr@^1.1.1: 80 | version "1.1.4" 81 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" 82 | integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== 83 | 84 | concat-map@0.0.1: 85 | version "0.0.1" 86 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 87 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 88 | 89 | css-select@~1.2.0: 90 | version "1.2.0" 91 | resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" 92 | integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= 93 | dependencies: 94 | boolbase "~1.0.0" 95 | css-what "2.1" 96 | domutils "1.5.1" 97 | nth-check "~1.0.1" 98 | 99 | css-what@2.1: 100 | version "2.1.3" 101 | resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" 102 | integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== 103 | 104 | debug@4, debug@^4.1.0, debug@^4.1.1: 105 | version "4.1.1" 106 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" 107 | integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== 108 | dependencies: 109 | ms "^2.1.1" 110 | 111 | devtools-protocol@0.0.781568: 112 | version "0.0.781568" 113 | resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.781568.tgz#4cdca90a952d2c77831096ff6cd32695d8715a04" 114 | integrity sha512-9Uqnzy6m6zEStluH9iyJ3iHyaQziFnMnLeC8vK0eN6smiJmIx7+yB64d67C2lH/LZra+5cGscJAJsNXO+MdPMg== 115 | 116 | dom-serializer@0: 117 | version "0.2.2" 118 | resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" 119 | integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== 120 | dependencies: 121 | domelementtype "^2.0.1" 122 | entities "^2.0.0" 123 | 124 | dom-serializer@~0.1.1: 125 | version "0.1.1" 126 | resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" 127 | integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA== 128 | dependencies: 129 | domelementtype "^1.3.0" 130 | entities "^1.1.1" 131 | 132 | domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: 133 | version "1.3.1" 134 | resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" 135 | integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== 136 | 137 | domelementtype@^2.0.1: 138 | version "2.0.1" 139 | resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" 140 | integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== 141 | 142 | domhandler@^2.3.0: 143 | version "2.4.2" 144 | resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" 145 | integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== 146 | dependencies: 147 | domelementtype "1" 148 | 149 | domutils@1.5.1: 150 | version "1.5.1" 151 | resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" 152 | integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= 153 | dependencies: 154 | dom-serializer "0" 155 | domelementtype "1" 156 | 157 | domutils@^1.5.1: 158 | version "1.7.0" 159 | resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" 160 | integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== 161 | dependencies: 162 | dom-serializer "0" 163 | domelementtype "1" 164 | 165 | encoding@^0.1.11: 166 | version "0.1.13" 167 | resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" 168 | integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== 169 | dependencies: 170 | iconv-lite "^0.6.2" 171 | 172 | end-of-stream@^1.1.0, end-of-stream@^1.4.1: 173 | version "1.4.4" 174 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 175 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 176 | dependencies: 177 | once "^1.4.0" 178 | 179 | entities@^1.1.1, entities@~1.1.1: 180 | version "1.1.2" 181 | resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" 182 | integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== 183 | 184 | entities@^2.0.0: 185 | version "2.0.3" 186 | resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" 187 | integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ== 188 | 189 | extract-zip@^2.0.0: 190 | version "2.0.1" 191 | resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" 192 | integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== 193 | dependencies: 194 | debug "^4.1.1" 195 | get-stream "^5.1.0" 196 | yauzl "^2.10.0" 197 | optionalDependencies: 198 | "@types/yauzl" "^2.9.1" 199 | 200 | fd-slicer@~1.1.0: 201 | version "1.1.0" 202 | resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" 203 | integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= 204 | dependencies: 205 | pend "~1.2.0" 206 | 207 | find-up@^4.0.0: 208 | version "4.1.0" 209 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" 210 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== 211 | dependencies: 212 | locate-path "^5.0.0" 213 | path-exists "^4.0.0" 214 | 215 | fs-constants@^1.0.0: 216 | version "1.0.0" 217 | resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" 218 | integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== 219 | 220 | fs.realpath@^1.0.0: 221 | version "1.0.0" 222 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 223 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 224 | 225 | get-stream@^5.1.0: 226 | version "5.2.0" 227 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" 228 | integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== 229 | dependencies: 230 | pump "^3.0.0" 231 | 232 | glob@^7.1.3: 233 | version "7.1.6" 234 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 235 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 236 | dependencies: 237 | fs.realpath "^1.0.0" 238 | inflight "^1.0.4" 239 | inherits "2" 240 | minimatch "^3.0.4" 241 | once "^1.3.0" 242 | path-is-absolute "^1.0.0" 243 | 244 | htmlparser2@^3.9.1: 245 | version "3.10.1" 246 | resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" 247 | integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== 248 | dependencies: 249 | domelementtype "^1.3.1" 250 | domhandler "^2.3.0" 251 | domutils "^1.5.1" 252 | entities "^1.1.1" 253 | inherits "^2.0.1" 254 | readable-stream "^3.1.1" 255 | 256 | https-proxy-agent@^4.0.0: 257 | version "4.0.0" 258 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz#702b71fb5520a132a66de1f67541d9e62154d82b" 259 | integrity sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg== 260 | dependencies: 261 | agent-base "5" 262 | debug "4" 263 | 264 | iconv-lite@^0.6.2: 265 | version "0.6.2" 266 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.2.tgz#ce13d1875b0c3a674bd6a04b7f76b01b1b6ded01" 267 | integrity sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ== 268 | dependencies: 269 | safer-buffer ">= 2.1.2 < 3.0.0" 270 | 271 | ieee754@^1.1.4: 272 | version "1.1.13" 273 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" 274 | integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== 275 | 276 | inflight@^1.0.4: 277 | version "1.0.6" 278 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 279 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 280 | dependencies: 281 | once "^1.3.0" 282 | wrappy "1" 283 | 284 | inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4: 285 | version "2.0.4" 286 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 287 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 288 | 289 | is-stream@^1.0.1: 290 | version "1.1.0" 291 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 292 | integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= 293 | 294 | isomorphic-fetch@^2.2.1: 295 | version "2.2.1" 296 | resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" 297 | integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk= 298 | dependencies: 299 | node-fetch "^1.0.1" 300 | whatwg-fetch ">=0.10.0" 301 | 302 | locate-path@^5.0.0: 303 | version "5.0.0" 304 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" 305 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== 306 | dependencies: 307 | p-locate "^4.1.0" 308 | 309 | lodash@^4.15.0: 310 | version "4.17.20" 311 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" 312 | integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== 313 | 314 | mime@^2.0.3: 315 | version "2.4.6" 316 | resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1" 317 | integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== 318 | 319 | minimatch@^3.0.4: 320 | version "3.0.4" 321 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 322 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 323 | dependencies: 324 | brace-expansion "^1.1.7" 325 | 326 | mkdirp-classic@^0.5.2: 327 | version "0.5.3" 328 | resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" 329 | integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== 330 | 331 | ms@^2.1.1: 332 | version "2.1.2" 333 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 334 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 335 | 336 | node-fetch@^1.0.1: 337 | version "1.7.3" 338 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" 339 | integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== 340 | dependencies: 341 | encoding "^0.1.11" 342 | is-stream "^1.0.1" 343 | 344 | nth-check@~1.0.1: 345 | version "1.0.2" 346 | resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" 347 | integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== 348 | dependencies: 349 | boolbase "~1.0.0" 350 | 351 | once@^1.3.0, once@^1.3.1, once@^1.4.0: 352 | version "1.4.0" 353 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 354 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 355 | dependencies: 356 | wrappy "1" 357 | 358 | p-limit@^2.2.0: 359 | version "2.3.0" 360 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 361 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 362 | dependencies: 363 | p-try "^2.0.0" 364 | 365 | p-locate@^4.1.0: 366 | version "4.1.0" 367 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" 368 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== 369 | dependencies: 370 | p-limit "^2.2.0" 371 | 372 | p-try@^2.0.0: 373 | version "2.2.0" 374 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 375 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 376 | 377 | parse5@^3.0.1: 378 | version "3.0.3" 379 | resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c" 380 | integrity sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA== 381 | dependencies: 382 | "@types/node" "*" 383 | 384 | path-exists@^4.0.0: 385 | version "4.0.0" 386 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 387 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 388 | 389 | path-is-absolute@^1.0.0: 390 | version "1.0.1" 391 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 392 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 393 | 394 | pend@~1.2.0: 395 | version "1.2.0" 396 | resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" 397 | integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= 398 | 399 | pkg-dir@^4.2.0: 400 | version "4.2.0" 401 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" 402 | integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== 403 | dependencies: 404 | find-up "^4.0.0" 405 | 406 | progress@^2.0.1: 407 | version "2.0.3" 408 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 409 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 410 | 411 | proxy-from-env@^1.0.0: 412 | version "1.1.0" 413 | resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" 414 | integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== 415 | 416 | pump@^3.0.0: 417 | version "3.0.0" 418 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 419 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 420 | dependencies: 421 | end-of-stream "^1.1.0" 422 | once "^1.3.1" 423 | 424 | puppeteer@^5.2.1: 425 | version "5.2.1" 426 | resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-5.2.1.tgz#7f0564f0a5384f352a38c8cc42af875cd87f4ea6" 427 | integrity sha512-PZoZG7u+T6N1GFWBQmGVG162Ak5MAy8nYSVpeeQrwJK2oYUlDWpHEJPcd/zopyuEMTv7DiztS1blgny1txR2qw== 428 | dependencies: 429 | debug "^4.1.0" 430 | devtools-protocol "0.0.781568" 431 | extract-zip "^2.0.0" 432 | https-proxy-agent "^4.0.0" 433 | mime "^2.0.3" 434 | pkg-dir "^4.2.0" 435 | progress "^2.0.1" 436 | proxy-from-env "^1.0.0" 437 | rimraf "^3.0.2" 438 | tar-fs "^2.0.0" 439 | unbzip2-stream "^1.3.3" 440 | ws "^7.2.3" 441 | 442 | readable-stream@^3.1.1, readable-stream@^3.4.0: 443 | version "3.6.0" 444 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" 445 | integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== 446 | dependencies: 447 | inherits "^2.0.3" 448 | string_decoder "^1.1.1" 449 | util-deprecate "^1.0.1" 450 | 451 | rimraf@^3.0.2: 452 | version "3.0.2" 453 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 454 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 455 | dependencies: 456 | glob "^7.1.3" 457 | 458 | safe-buffer@~5.2.0: 459 | version "5.2.1" 460 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 461 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 462 | 463 | "safer-buffer@>= 2.1.2 < 3.0.0": 464 | version "2.1.2" 465 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 466 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 467 | 468 | string_decoder@^1.1.1: 469 | version "1.3.0" 470 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 471 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 472 | dependencies: 473 | safe-buffer "~5.2.0" 474 | 475 | tar-fs@^2.0.0: 476 | version "2.1.0" 477 | resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.0.tgz#d1cdd121ab465ee0eb9ccde2d35049d3f3daf0d5" 478 | integrity sha512-9uW5iDvrIMCVpvasdFHW0wJPez0K4JnMZtsuIeDI7HyMGJNxmDZDOCQROr7lXyS+iL/QMpj07qcjGYTSdRFXUg== 479 | dependencies: 480 | chownr "^1.1.1" 481 | mkdirp-classic "^0.5.2" 482 | pump "^3.0.0" 483 | tar-stream "^2.0.0" 484 | 485 | tar-stream@^2.0.0: 486 | version "2.1.3" 487 | resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.3.tgz#1e2022559221b7866161660f118255e20fa79e41" 488 | integrity sha512-Z9yri56Dih8IaK8gncVPx4Wqt86NDmQTSh49XLZgjWpGZL9GK9HKParS2scqHCC4w6X9Gh2jwaU45V47XTKwVA== 489 | dependencies: 490 | bl "^4.0.1" 491 | end-of-stream "^1.4.1" 492 | fs-constants "^1.0.0" 493 | inherits "^2.0.3" 494 | readable-stream "^3.1.1" 495 | 496 | through@^2.3.8: 497 | version "2.3.8" 498 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 499 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 500 | 501 | unbzip2-stream@^1.3.3: 502 | version "1.4.3" 503 | resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" 504 | integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== 505 | dependencies: 506 | buffer "^5.2.1" 507 | through "^2.3.8" 508 | 509 | util-deprecate@^1.0.1: 510 | version "1.0.2" 511 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 512 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 513 | 514 | whatwg-fetch@>=0.10.0: 515 | version "3.4.1" 516 | resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.4.1.tgz#e5f871572d6879663fa5674c8f833f15a8425ab3" 517 | integrity sha512-sofZVzE1wKwO+EYPbWfiwzaKovWiZXf4coEzjGP9b2GBVgQRLQUZ2QcuPpQExGDAW5GItpEm6Tl4OU5mywnAoQ== 518 | 519 | wrappy@1: 520 | version "1.0.2" 521 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 522 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 523 | 524 | ws@^7.2.3: 525 | version "7.3.1" 526 | resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" 527 | integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA== 528 | 529 | yauzl@^2.10.0: 530 | version "2.10.0" 531 | resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" 532 | integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= 533 | dependencies: 534 | buffer-crc32 "~0.2.3" 535 | fd-slicer "~1.1.0" 536 | --------------------------------------------------------------------------------