├── .github └── workflows │ └── ci.yml ├── .gitignore ├── LICENSE ├── README.md ├── bower.json ├── package.json ├── shell.nix ├── src ├── Toppoki.js └── Toppoki.purs ├── test.bash ├── test ├── .gitignore ├── Main.purs ├── crash.html ├── index.mjs ├── inject.js ├── test.html └── test2.html └── yarn.lock /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: ci 2 | 3 | # Run the workflow on any pushes or PRs. 4 | on: [push, pull_request] 5 | 6 | jobs: 7 | tests: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/checkout@v2 11 | - uses: cachix/install-nix-action@v12 12 | with: 13 | nix_path: nixpkgs=channel:nixos-unstable 14 | - run: ./test.bash 15 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /bower_components/ 2 | /node_modules/ 3 | /.pulp-cache/ 4 | /output/ 5 | /generated-docs/ 6 | /.psc-package/ 7 | /.psc* 8 | /.purs* 9 | /.psa* 10 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2018 Justin Woo 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # PureScript-Toppokki 2 | 3 | A binding to [puppeteer](https://github.com/GoogleChrome/puppeteer) to drive headless Chrome. 4 | 5 | This module is "incomplete" (but useful for regular work projects), and you can help by submitting PRs. You may find that `goto`, `pageWaitForSelector`, `click`, and `unsafeEvaluateStringFunction` already provide the functionality you need. 6 | 7 | Named for glorious Tteok-bokki. 8 | 9 | ![](https://i.imgur.com/KPSU9lY.png) 10 | 11 | ## Usage 12 | 13 | Make sure [Puppeteer](https://github.com/GoogleChrome/puppeteer) is installed (e.g. `npm i puppeteer`). 14 | 15 | ```hs 16 | module Main where 17 | 18 | import Toppokki as T 19 | import Prelude (bind, discard, (>)) 20 | import Effect.Aff (launchAff_) 21 | import Test.Unit.Assert as Assert 22 | import Data.String as String 23 | 24 | main = launchAff_ do 25 | browser <- T.launch {} 26 | page <- T.newPage browser 27 | T.goto (T.URL "https://example.com") page 28 | content <- T.content page 29 | Assert.assert "content is non-empty string" (String.length content > 0) 30 | _ <- T.screenshot {path: "./test/test.png"} page 31 | _ <- T.pdf {path: "./test/test.pdf"} page 32 | T.close browser 33 | ``` 34 | 35 | ## More examples 36 | 37 | You might also find this example from the [vidtracker](https://github.com/justinwoo/vidtracker/blob/37c511ed82f209e0236147399e8a91999aaf754c/src/GetIcons.purs) project useful: 38 | 39 | ```hs 40 | downloadIconIfNotExist :: T.Browser -> Set String -> String -> Aff Unit 41 | downloadIconIfNotExist browser existing name = 42 | unless (member name existing) do 43 | page <- T.newPage browser 44 | let 45 | name' = S.replace (S.Pattern " ") (S.Replacement "+") name 46 | pageURL = "https://duckduckgo.com/?iax=images&ia=images&q=" <> name' <> "+anime+wiki" 47 | T.goto (T.URL pageURL) page 48 | _ <- T.pageWaitForSelector (T.Selector ".tile--img__img") {} page 49 | result <- T.unsafeEvaluateStringFunction "document.querySelector('.tile--img__img').src" page 50 | case JSON.read result of 51 | Right (url :: String) -> do 52 | log $ "downloading from " <> url 53 | curl url (iconsPath <> "/" <> name) 54 | pure unit 55 | Left e -> do 56 | log $ "could not handle " <> name <> " with url " <> pageURL 57 | ``` 58 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "purescript-toppokki", 3 | "license": "MIT", 4 | "repository": { 5 | "type": "git", 6 | "url": "https://github.com/justinwoo/purescript-toppokki.git" 7 | }, 8 | "ignore": [ 9 | "**/.*", 10 | "node_modules", 11 | "bower_components", 12 | "output" 13 | ], 14 | "dependencies": { 15 | "purescript-prelude": "^6.0.0", 16 | "purescript-record": "^4.0.0", 17 | "purescript-functions": "^6.0.0", 18 | "purescript-node-http": "^8.0.0", 19 | "purescript-aff-promise": "^4.0.0", 20 | "purescript-node-buffer": "^8.0.0", 21 | "purescript-node-fs-aff": "^9.0.0" 22 | }, 23 | "devDependencies": { 24 | "purescript-milkis": "^9.0.0", 25 | "purescript-test-unit": "^17.0.0", 26 | "purescript-node-process": "^10.0.0" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "purescript-toppokki", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "directories": { 7 | "test": "test" 8 | }, 9 | "scripts": { 10 | "build": "pulp build --include test" 11 | }, 12 | "author": "", 13 | "license": "MIT", 14 | "devDependencies": { 15 | "pulp": "^16.0.1", 16 | "puppeteer": "14.1.0" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /shell.nix: -------------------------------------------------------------------------------- 1 | { pkgs ? import { } }: 2 | let 3 | easy-ps = import 4 | (pkgs.fetchFromGitHub { 5 | owner = "justinwoo"; 6 | repo = "easy-purescript-nix"; 7 | rev = "0ad5775c1e80cdd952527db2da969982e39ff592"; 8 | sha256 = "0x53ads5v8zqsk4r1mfpzf5913byifdpv5shnvxpgw634ifyj1kg"; 9 | }) 10 | { 11 | inherit pkgs; 12 | }; 13 | in 14 | pkgs.mkShell { 15 | buildInputs = [ 16 | easy-ps.purs 17 | easy-ps.psc-package 18 | pkgs.nodejs 19 | pkgs.nodePackages.pulp 20 | pkgs.nodePackages.bower 21 | pkgs.nodePackages.yarn 22 | ]; 23 | } 24 | -------------------------------------------------------------------------------- /src/Toppoki.js: -------------------------------------------------------------------------------- 1 | import puppeteer from "puppeteer"; 2 | export {puppeteer}; 3 | 4 | export function _launch(options) { 5 | return function() { 6 | return puppeteer.launch(options); 7 | }; 8 | } 9 | 10 | export function _launchChromeAWS(chromium, options) { 11 | return function() { 12 | return chromium.puppeteer.launch(options); 13 | }; 14 | } 15 | 16 | export function _newPage(browser) { 17 | return function() { 18 | return browser.newPage(); 19 | }; 20 | } 21 | 22 | export function _goto(url, page) { 23 | return function() { 24 | return page.goto(url); 25 | }; 26 | } 27 | 28 | export function _close(browser) { 29 | return function() { 30 | return browser.close(); 31 | }; 32 | } 33 | 34 | export function _content(page) { 35 | return function() { 36 | return page.content(); 37 | }; 38 | } 39 | 40 | export function _screenshot(options, page) { 41 | return function() { 42 | return page.screenshot(options); 43 | }; 44 | } 45 | 46 | export function _pdf(options, page) { 47 | return function() { 48 | return page.pdf(options); 49 | }; 50 | } 51 | 52 | export function _on(event, callback, page) { 53 | return page.on(event, callback); 54 | } 55 | 56 | export function _pageWaitForSelector(selector, options, page) { 57 | return function() { 58 | return page.waitForSelector(selector, options); 59 | }; 60 | } 61 | 62 | export function _focus(selector, page) { 63 | return function() { 64 | return page.focus(selector); 65 | }; 66 | } 67 | 68 | export function _select(selector, string, page) { 69 | return function() { 70 | return page.select(selector, string); 71 | }; 72 | } 73 | 74 | export function _type(selector, content, options, page) { 75 | return function() { 76 | return page.type(selector, content, options); 77 | }; 78 | } 79 | 80 | export function _setViewport(viewport, page) { 81 | return function() { 82 | return page.setViewport(viewport); 83 | }; 84 | } 85 | 86 | export function _click(selector, page) { 87 | return function() { 88 | return page.click(selector); 89 | }; 90 | } 91 | 92 | export function _waitForNavigation(options, page) { 93 | return function() { 94 | return page.waitForNavigation(options); 95 | }; 96 | } 97 | 98 | export function _getLocationHref(page) { 99 | return function() { 100 | return page.evaluate(function() { 101 | return window.location.href; 102 | }); 103 | }; 104 | } 105 | 106 | export function _unsafeEvaluateOnNewDocument(string, page) { 107 | return function() { 108 | return page.evaluateOnNewDocument(string); 109 | } 110 | } 111 | 112 | export function _unsafeEvaluateStringFunction(string, page) { 113 | return function() { 114 | return page.evaluate(string); 115 | }; 116 | } 117 | 118 | export function _unsafePageEval(selector, fnStr, page) { 119 | return function() { 120 | return page.$eval(selector, eval(fnStr)); 121 | }; 122 | } 123 | 124 | export function _unsafePageEvalAll(selector, fnStr, page) { 125 | return function() { 126 | return page.$$eval(selector, eval(fnStr)); 127 | }; 128 | } 129 | 130 | export function _keyboardDown(string, options, page) { 131 | return function() { 132 | return page.keyboard.down(string, options); 133 | }; 134 | } 135 | 136 | export function _keyboardPress(key, options, page) { 137 | return function() { 138 | return page.keyboard.press(key, options); 139 | }; 140 | } 141 | 142 | export function _keyboardSendCharacter(char, page) { 143 | return function() { 144 | return page.keyboard.sendCharacter(char); 145 | }; 146 | } 147 | 148 | export function _keyboardType(text, options, page) { 149 | return function() { 150 | return page.keyboard.type(text, options); 151 | }; 152 | } 153 | 154 | export function _keyboardUp(string, options, page) { 155 | return function() { 156 | return page.keyboard.up(string, options); 157 | }; 158 | } 159 | 160 | export function _setUserAgent(string, page) { 161 | return function() { 162 | return page.setUserAgent(string); 163 | }; 164 | } 165 | 166 | export function _bringToFront(page) { 167 | return function() { 168 | return page.bringToFront(); 169 | }; 170 | } 171 | -------------------------------------------------------------------------------- /src/Toppoki.purs: -------------------------------------------------------------------------------- 1 | module Toppokki where 2 | 3 | import Prelude 4 | 5 | import Control.Promise (Promise) 6 | import Control.Promise as Promise 7 | import Data.Function.Uncurried as FU 8 | import Data.Newtype (class Newtype) 9 | import Effect (Effect) 10 | import Effect.Aff (Aff) 11 | import Effect.Exception (Error) 12 | import Effect.Uncurried as EU 13 | import Foreign (Foreign) 14 | import Node.Buffer (Buffer) 15 | import Prim.Row as Row 16 | import Unsafe.Coerce (unsafeCoerce) 17 | 18 | foreign import data Puppeteer :: Type 19 | foreign import data Browser :: Type 20 | foreign import data Page :: Type 21 | foreign import data ElementHandle :: Type 22 | 23 | -- This is used when one wants to use chrome-aws-lambda version of puppeteer 24 | foreign import data ChromeAWS :: Type 25 | 26 | newtype URL = URL String 27 | derive instance newtypeURL :: Newtype URL _ 28 | 29 | newtype Selector = Selector String 30 | derive instance newtypeSelector :: Newtype Selector _ 31 | 32 | type LaunchOptions = 33 | ( args :: Array String 34 | , defaultViewport :: Record DefaultViewPort 35 | , devtools :: Boolean 36 | , dumpio :: Boolean 37 | , executablePath :: String 38 | , handleSIGHUP :: Boolean 39 | , handleSIGINT :: Boolean 40 | , handleSIGTERM :: Boolean 41 | , headless :: Boolean 42 | , ignoreDefaultArgs :: Array String 43 | , ignoreHTTPSErrors :: Boolean 44 | , pipe :: Boolean 45 | , slowMo :: Number 46 | , timeout :: Number 47 | , userDataDir :: String 48 | ) 49 | 50 | type DefaultViewPort = 51 | ( width :: Number 52 | , height :: Number 53 | , deviceScaleFactor :: Number 54 | , isMobile :: Boolean 55 | , hasTouch :: Boolean 56 | , isLandscape :: Boolean 57 | ) 58 | 59 | launch 60 | :: forall options trash 61 | . Row.Union options trash LaunchOptions 62 | => { | options } 63 | -> Aff Browser 64 | launch = runPromiseAffE1 _launch 65 | 66 | launchChromeAWS 67 | :: forall options trash 68 | . Row.Union options trash LaunchOptions 69 | => ChromeAWS 70 | -> { | options } 71 | -> Aff Browser 72 | launchChromeAWS = runPromiseAffE2 _launchChromeAWS 73 | 74 | newPage :: Browser -> Aff Page 75 | newPage = runPromiseAffE1 _newPage 76 | 77 | goto :: URL -> Page -> Aff Unit 78 | goto = runPromiseAffE2 _goto 79 | 80 | close :: Browser -> Aff Unit 81 | close = runPromiseAffE1 _close 82 | 83 | content :: Page -> Aff String 84 | content = runPromiseAffE1 _content 85 | 86 | type ScreenshotOptions = 87 | ( path :: String 88 | , type :: String 89 | , quality :: Int 90 | , fullPage :: Boolean 91 | , clip :: 92 | { x :: Int 93 | , y :: Int 94 | , width :: Int 95 | , height :: Int 96 | } 97 | , omitBackground :: Boolean 98 | ) 99 | 100 | screenshot 101 | :: forall options trash 102 | . Row.Union options trash ScreenshotOptions 103 | => { | options } 104 | -> Page 105 | -> Aff Buffer 106 | screenshot o p = runPromiseAffE2 _screenshot o p 107 | 108 | foreign import data PDFMargin :: Type 109 | 110 | type PDFMarginOptions = 111 | ( top :: String 112 | , right :: String 113 | , bottom :: String 114 | , left :: String 115 | ) 116 | 117 | makePDFMargin 118 | :: forall options trash 119 | . Row.Union options trash PDFMarginOptions 120 | => { | options } 121 | -> PDFMargin 122 | makePDFMargin = unsafeCoerce 123 | 124 | type PDFOptions = 125 | ( path :: String 126 | , scale :: Int 127 | , displayHeaderFooter :: Boolean 128 | , headerTemplate :: String 129 | , footerTemplate :: String 130 | , printBackground :: Boolean 131 | , landscape :: Boolean 132 | , pageRanges :: String 133 | , format :: String 134 | , width :: String 135 | , height :: String 136 | , margin :: PDFMargin 137 | ) 138 | 139 | pdf 140 | :: forall options trash 141 | . Row.Union options trash PDFOptions 142 | => { | options } 143 | -> Page 144 | -> Aff Buffer 145 | pdf = runPromiseAffE2 _pdf 146 | 147 | onPageError :: EU.EffectFn1 Error Unit -> Page -> Effect Unit 148 | onPageError = EU.runEffectFn3 _on "pageerror" 149 | 150 | onLoad :: EU.EffectFn1 Unit Unit -> Page -> Effect Unit 151 | onLoad = EU.runEffectFn3 _on "load" 152 | 153 | pageWaitForSelector 154 | :: forall options trash 155 | . Row.Union options trash 156 | ( visible :: Boolean 157 | , hidden :: Boolean 158 | , timeout :: Int 159 | ) 160 | => Selector 161 | -> { | options } 162 | -> Page 163 | -> Aff ElementHandle 164 | pageWaitForSelector = runPromiseAffE3 _pageWaitForSelector 165 | 166 | focus :: Selector -> Page -> Aff Unit 167 | focus = runPromiseAffE2 _focus 168 | 169 | 170 | -- | Select a specific option in select dropdown group. 171 | select 172 | :: Selector 173 | -> String 174 | -> Page 175 | -> Aff Unit 176 | select = runPromiseAffE3 _select 177 | 178 | type_ 179 | :: forall options trash 180 | . Row.Union options trash 181 | ( delay :: Int 182 | ) 183 | => Selector 184 | -> String 185 | -> { | options } 186 | -> Page 187 | -> Aff Unit 188 | type_ = runPromiseAffE4 _type 189 | 190 | click :: Selector -> Page -> Aff Unit 191 | click = runPromiseAffE2 _click 192 | 193 | foreign import data WaitUntilOption :: Type 194 | 195 | networkIdle :: WaitUntilOption 196 | networkIdle = unsafeCoerce $ "networkidle" 197 | 198 | networkIdle0 :: WaitUntilOption 199 | networkIdle0 = unsafeCoerce $ "networkidle0" 200 | 201 | networkIdle2 :: WaitUntilOption 202 | networkIdle2 = unsafeCoerce $ "networkidle2" 203 | 204 | waitForNavigation 205 | :: forall options trash 206 | . Row.Union options trash 207 | ( waitUntil :: WaitUntilOption 208 | ) 209 | => { | options } 210 | -> Page 211 | -> Aff Unit 212 | waitForNavigation = runPromiseAffE2 _waitForNavigation 213 | 214 | getLocationRef :: Page -> Aff String 215 | getLocationRef p = Promise.toAffE $ FU.runFn1 _getLocationHref p 216 | 217 | -- | The function is invoked after the document was created but before any of its scripts were run. 218 | -- | 219 | -- | This is useful to amend the environment, e.g. to seed Math.random. 220 | unsafeEvaluateOnNewDocument :: String -> Page -> Aff Foreign 221 | unsafeEvaluateOnNewDocument = runPromiseAffE2 _unsafeEvaluateOnNewDocument 222 | 223 | unsafeEvaluateStringFunction :: String -> Page -> Aff Foreign 224 | unsafeEvaluateStringFunction = runPromiseAffE2 _unsafeEvaluateStringFunction 225 | 226 | -- | This method runs document.querySelector within the page and passes it as the first argument to pageFunction. If there's no element matching selector, the method throws an error. 227 | -- | 228 | -- | Second argument is a pageFunction which should be a valid JavaScript function written as a string which we unsafely eval. 229 | -- | 230 | -- | If pageFunction returns a Promise, then page.$$eval would wait for the promise to resolve and return its value. 231 | unsafePageEval :: Selector -> String -> Page -> Aff Foreign 232 | unsafePageEval = runPromiseAffE3 _unsafePageEval 233 | 234 | -- | This method runs Array.from(document.querySelectorAll(selector)) within the page and passes it as the first argument to pageFunction. 235 | -- | 236 | -- | Second argument is a pageFunction which should be a valid JavaScript function written as a string which we unsafely eval. 237 | -- | 238 | -- | If pageFunction returns a Promise, then page.$$eval would wait for the promise to resolve and return its value. 239 | unsafePageEvalAll :: Selector -> String -> Page -> Aff Foreign 240 | unsafePageEvalAll = runPromiseAffE3 _unsafePageEvalAll 241 | 242 | runPromiseAffE1 :: forall a o. FU.Fn1 a (Effect (Promise o)) -> a -> Aff o 243 | runPromiseAffE1 f a = Promise.toAffE $ FU.runFn1 f a 244 | 245 | runPromiseAffE2 :: forall a b o. FU.Fn2 a b (Effect (Promise o)) -> a -> b -> Aff o 246 | runPromiseAffE2 f a b = Promise.toAffE $ FU.runFn2 f a b 247 | 248 | runPromiseAffE3 :: forall a b c o. FU.Fn3 a b c (Effect (Promise o)) -> a -> b -> c -> Aff o 249 | runPromiseAffE3 f a b c = Promise.toAffE $ FU.runFn3 f a b c 250 | 251 | runPromiseAffE4 :: forall a b c d o. FU.Fn4 a b c d (Effect (Promise o)) -> a -> b -> c -> d -> Aff o 252 | runPromiseAffE4 f a b c d = Promise.toAffE $ FU.runFn4 f a b c d 253 | 254 | -- | See [USKeyboardLayout](https://github.com/GoogleChrome/puppeteer/blob/v1.18.1/lib/USKeyboardLayout.js) for a list of all key names. 255 | newtype KeyboardKey = KeyboardKey String 256 | 257 | -- | Dispatches a keydown event. 258 | keyboardDown :: forall options trash 259 | . Row.Union options trash ( text :: String ) 260 | => KeyboardKey 261 | -> { | options } 262 | -> Page 263 | -> Aff Unit 264 | keyboardDown = runPromiseAffE3 _keyboardDown 265 | 266 | -- | Trigger a single keypress. Shortcut for `keyboard.down` and `keyboard.up`. 267 | keyboardPress 268 | :: forall options trash 269 | . Row.Union options trash 270 | ( delay :: Int 271 | , text :: String 272 | ) 273 | => KeyboardKey 274 | -> { | options } 275 | -> Page 276 | -> Aff Unit 277 | keyboardPress = runPromiseAffE3 _keyboardPress 278 | 279 | -- | Dispatches a keypress and input event. This does not send a keydown or keyup event. 280 | keyboardSendCharacter :: String -> Page -> Aff Unit 281 | keyboardSendCharacter = runPromiseAffE2 _keyboardSendCharacter 282 | 283 | -- | Sends a keydown, keypress/input, and keyup event for each character in the text. 284 | -- | To press a special key, like Control or ArrowDown, use keyboard.press. 285 | keyboardType :: forall options trash 286 | . Row.Union options trash ( delay :: Number ) 287 | => String 288 | -> { | options } 289 | -> Page 290 | -> Aff Unit 291 | keyboardType = runPromiseAffE3 _keyboardType 292 | 293 | -- | Dispatches a keyup event. 294 | keyboardUp :: forall options trash 295 | . Row.Union options trash ( text :: String ) 296 | => KeyboardKey 297 | -> { | options } 298 | -> Page 299 | -> Aff Unit 300 | keyboardUp = runPromiseAffE3 _keyboardUp 301 | 302 | -- | set Viewport 303 | setViewport :: Record DefaultViewPort -> Page -> Aff Unit 304 | setViewport = runPromiseAffE2 _setViewport 305 | 306 | -- | Specific user agent to use in this page 307 | setUserAgent :: String -> Page -> Aff Unit 308 | setUserAgent = runPromiseAffE2 _setUserAgent 309 | 310 | -- | Brings page to front (activates tab) 311 | bringToFront :: Page -> Aff Unit 312 | bringToFront = runPromiseAffE1 _bringToFront 313 | 314 | foreign import puppeteer :: Puppeteer 315 | foreign import _launch :: forall options. FU.Fn1 options (Effect (Promise Browser)) 316 | foreign import _launchChromeAWS :: forall options. FU.Fn2 ChromeAWS options (Effect (Promise Browser)) 317 | foreign import _newPage :: FU.Fn1 Browser (Effect (Promise Page)) 318 | foreign import _goto :: FU.Fn2 URL Page (Effect (Promise Unit)) 319 | foreign import _close :: FU.Fn1 Browser (Effect (Promise Unit)) 320 | foreign import _content :: FU.Fn1 Page (Effect (Promise String)) 321 | foreign import _screenshot :: forall options. FU.Fn2 options Page (Effect (Promise Buffer)) 322 | foreign import _pdf :: forall options. FU.Fn2 options Page (Effect (Promise Buffer)) 323 | foreign import _on :: forall a. EU.EffectFn3 String (EU.EffectFn1 a Unit) Page Unit 324 | foreign import _pageWaitForSelector :: forall options. FU.Fn3 Selector options Page (Effect (Promise ElementHandle)) 325 | foreign import _select :: forall options. FU.Fn3 Selector options Page (Effect (Promise Unit)) 326 | foreign import _focus :: FU.Fn2 Selector Page (Effect (Promise Unit)) 327 | foreign import _setViewport :: FU.Fn2 (Record DefaultViewPort) Page (Effect (Promise Unit)) 328 | foreign import _type :: forall options. FU.Fn4 Selector String options Page (Effect (Promise Unit)) 329 | foreign import _click :: FU.Fn2 Selector Page (Effect (Promise Unit)) 330 | foreign import _waitForNavigation :: forall options. FU.Fn2 options Page (Effect (Promise Unit)) 331 | foreign import _getLocationHref :: FU.Fn1 Page (Effect (Promise String)) 332 | foreign import _unsafeEvaluateOnNewDocument :: FU.Fn2 String Page (Effect (Promise Foreign)) 333 | foreign import _unsafeEvaluateStringFunction :: FU.Fn2 String Page (Effect (Promise Foreign)) 334 | foreign import _unsafePageEval :: FU.Fn3 Selector String Page (Effect (Promise Foreign)) 335 | foreign import _unsafePageEvalAll :: FU.Fn3 Selector String Page (Effect (Promise Foreign)) 336 | foreign import _keyboardDown :: forall options. FU.Fn3 KeyboardKey options Page (Effect (Promise Unit)) 337 | foreign import _keyboardPress :: forall options. FU.Fn3 KeyboardKey options Page (Effect (Promise Unit)) 338 | foreign import _keyboardSendCharacter :: FU.Fn2 String Page (Effect (Promise Unit)) 339 | foreign import _keyboardType :: forall options. FU.Fn3 String options Page (Effect (Promise Unit)) 340 | foreign import _keyboardUp :: forall options. FU.Fn3 KeyboardKey options Page (Effect (Promise Unit)) 341 | foreign import _setUserAgent :: FU.Fn2 String Page (Effect (Promise Unit)) 342 | foreign import _bringToFront :: FU.Fn1 Page (Effect (Promise Unit)) 343 | -------------------------------------------------------------------------------- /test.bash: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env nix-shell 2 | #! nix-shell shell.nix -i bash 3 | 4 | set -e 5 | 6 | bower install 7 | yarn 8 | 9 | pulp build --include test 10 | 11 | node ./test/index.mjs 12 | -------------------------------------------------------------------------------- /test/.gitignore: -------------------------------------------------------------------------------- 1 | *.pdf 2 | *.png 3 | -------------------------------------------------------------------------------- /test/Main.purs: -------------------------------------------------------------------------------- 1 | module Test.Main where 2 | 3 | import Prelude 4 | 5 | import Control.Monad.Except (runExcept) 6 | import Data.Either (Either(..)) 7 | import Data.Maybe (Maybe(..), isJust) 8 | import Data.String as String 9 | import Effect (Effect) 10 | import Effect.Aff (throwError) 11 | import Effect.Class (liftEffect) 12 | import Effect.Exception (error) 13 | import Effect.Ref as Ref 14 | import Effect.Uncurried as EU 15 | import Foreign (readString, unsafeFromForeign) 16 | import Node.Encoding (Encoding(..)) 17 | import Node.FS.Aff (readTextFile) 18 | import Node.Process (cwd) 19 | import Test.Unit (suite, test) 20 | import Test.Unit.Assert as Assert 21 | import Test.Unit.Main (runTest) 22 | import Toppokki as T 23 | 24 | main :: Effect Unit 25 | main = do 26 | dir <- liftEffect cwd 27 | tests dir 28 | 29 | tests :: String -> Effect Unit 30 | tests dir = runTest do 31 | suite "toppokki" do 32 | let crashUrl = T.URL $ "file://" <> dir <> "/test/crash.html" 33 | testUrl = T.URL $ "file://" <> dir <> "/test/test.html" 34 | testUrl2 = T.URL $ "file://" <> dir <> "/test/test2.html" 35 | 36 | test "can screenshot and pdf output a loaded page" do 37 | browser <- T.launch {} 38 | page <- T.newPage browser 39 | T.setViewport 40 | { width: 300.0 41 | , height: 500.0 42 | , deviceScaleFactor: 1.0 43 | , isMobile: true 44 | , hasTouch: true 45 | , isLandscape: false 46 | } page 47 | T.goto crashUrl page 48 | content <- T.content page 49 | Assert.assert "content is non-empty string" (String.length content > 0) 50 | _ <- T.screenshot {path: "./test/test.png"} page 51 | _ <- T.pdf {path: "./test/test.pdf"} page 52 | T.close browser 53 | 54 | test "can listen for errors and page load" do 55 | browser <- T.launch {} 56 | page <- T.newPage browser 57 | ref <- liftEffect $ Ref.new Nothing 58 | liftEffect $ T.onPageError (EU.mkEffectFn1 $ (Ref.write <@> ref) <<< Just) page 59 | T.goto crashUrl page 60 | value <- liftEffect $ Ref.read ref 61 | Assert.assert "error occurs from crash.html" $ isJust value 62 | T.close browser 63 | 64 | test "can wait for selectors" do 65 | browser <- T.launch {} 66 | page <- T.newPage browser 67 | ref <- liftEffect $ Ref.new Nothing 68 | liftEffect $ T.onPageError (EU.mkEffectFn1 $ (Ref.write <@> ref) <<< Just) page 69 | T.goto crashUrl page 70 | _ <- T.pageWaitForSelector (T.Selector "h1") {} page 71 | T.close browser 72 | 73 | test "can run functions against a single element in the page" do 74 | browser <- T.launch {} 75 | page <- T.newPage browser 76 | T.goto testUrl page 77 | innerTextF <- T.unsafePageEval 78 | (T.Selector ".eval-one") 79 | "el => el.innerText" 80 | page 81 | let innerText = (unsafeFromForeign innerTextF) :: String 82 | Assert.equal "abc" innerText 83 | T.close browser 84 | 85 | test "can run functions against elements in the page" do 86 | browser <- T.launch {} 87 | page <- T.newPage browser 88 | T.goto testUrl page 89 | innerTextsF <- T.unsafePageEvalAll 90 | (T.Selector ".eval-many") 91 | "els => els.map(e => e.innerText)" 92 | page 93 | let innerTexts = (unsafeFromForeign innerTextsF) :: Array String 94 | Assert.equal ["abc","def"] innerTexts 95 | T.close browser 96 | 97 | test "can trigger keyboard presses" do 98 | let 99 | aKey = T.KeyboardKey "a" 100 | getRawKeyName (T.KeyboardKey a) = a 101 | browser <- T.launch {} 102 | page <- T.newPage browser 103 | T.goto testUrl page 104 | T.focus (T.Selector "input#test-press") page 105 | T.keyboardPress aKey {} page 106 | input <- T.unsafePageEval 107 | (T.Selector "input#test-press") 108 | "e => e.value" 109 | page 110 | case runExcept $ readString input of 111 | Left _ -> throwError $ error "failed to read test input element value" 112 | Right value -> Assert.assert "test input element does not contain pressed key" (value == (getRawKeyName aKey)) 113 | T.close browser 114 | 115 | test "can trigger keyboard typing" do 116 | browser <- T.launch {} 117 | page <- T.newPage browser 118 | T.goto testUrl page 119 | T.focus (T.Selector "input#test-type") page 120 | T.keyboardType "Hello World!" {} page 121 | inputTextF <- T.unsafePageEval 122 | (T.Selector "input#test-type") 123 | "e => e.value" 124 | page 125 | case runExcept $ readString inputTextF of 126 | Left _ -> throwError $ error "failed to read test input element value" 127 | Right value -> Assert.equal "Hello World!" value 128 | T.close browser 129 | 130 | test "can trigger keyboard down and up" do 131 | browser <- T.launch {} 132 | page <- T.newPage browser 133 | T.goto testUrl page 134 | T.focus (T.Selector "input#test-downup") page 135 | T.keyboardDown (T.KeyboardKey "Shift") {} page 136 | T.keyboardPress (T.KeyboardKey "KeyA") {} page 137 | T.keyboardUp (T.KeyboardKey "Shift") {} page 138 | T.keyboardPress (T.KeyboardKey "KeyB") {} page 139 | inputTextF <- T.unsafePageEval 140 | (T.Selector "input#test-downup") 141 | "e => e.value" 142 | page 143 | case runExcept $ readString inputTextF of 144 | Left _ -> throwError $ error "failed to read test input element value" 145 | Right value -> Assert.equal "Ab" value 146 | T.close browser 147 | 148 | test "can send any character through the keyboard" do 149 | browser <- T.launch {} 150 | page <- T.newPage browser 151 | T.goto testUrl page 152 | T.focus (T.Selector "input#test-sendcharacter") page 153 | T.keyboardSendCharacter "∀" page 154 | inputTextF <- T.unsafePageEval 155 | (T.Selector "input#test-sendcharacter") 156 | "e => e.value" 157 | page 158 | case runExcept $ readString inputTextF of 159 | Left _ -> throwError $ error "failed to read test input element value" 160 | Right value -> Assert.equal "∀" value 161 | T.close browser 162 | 163 | test "setting the user agent successfully completes" do 164 | browser <- T.launch {} 165 | page <- T.newPage browser 166 | T.setUserAgent "Toppokki yum!" page 167 | T.close browser 168 | 169 | test "can inject js file into page" do 170 | browser <- T.launch {} 171 | page <- T.newPage browser 172 | jsFile <- readTextFile UTF8 "./test/inject.js" 173 | _ <- T.unsafeEvaluateOnNewDocument jsFile page 174 | T.goto testUrl page 175 | innerTextF <- T.unsafePageEval 176 | (T.Selector "#eval-inject") 177 | "el => el.innerText" 178 | page 179 | let innerText = (unsafeFromForeign innerTextF) :: String 180 | Assert.equal "345" innerText 181 | T.close browser 182 | 183 | test "can bring to front specific tab in current browser" do 184 | browser <- T.launch {} 185 | page1 <- T.newPage browser 186 | page2 <- T.newPage browser 187 | 188 | T.goto testUrl page1 189 | T.goto testUrl2 page2 190 | 191 | T.bringToFront page2 192 | 193 | innerTextF <- T.unsafePageEval 194 | (T.Selector ".page-title") 195 | "el => el.innerText" 196 | page2 197 | let innerText = (unsafeFromForeign innerTextF) :: String 198 | Assert.equal "title2" innerText 199 | T.close browser 200 | -------------------------------------------------------------------------------- /test/crash.html: -------------------------------------------------------------------------------- 1 |

hello

2 | 5 | -------------------------------------------------------------------------------- /test/index.mjs: -------------------------------------------------------------------------------- 1 | import { main } from "../output/Test.Main/index.js"; 2 | 3 | main(); 4 | -------------------------------------------------------------------------------- /test/inject.js: -------------------------------------------------------------------------------- 1 | function ready(callbackFunction){ 2 | if(document.readyState != 'loading') 3 | callbackFunction(event) 4 | else 5 | document.addEventListener("DOMContentLoaded", callbackFunction) 6 | } 7 | ready(event => { 8 | console.log('DOM is ready.') 9 | document.getElementById('eval-inject').innerHTML = 345 10 | }) 11 | -------------------------------------------------------------------------------- /test/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | title1 11 |
12 |
13 | abc 14 |
15 | 16 |
17 | abc 18 |
19 | 20 |
21 | def 22 |
23 | 24 |
25 | 123 26 |
27 | 28 |
29 | 32 |
33 | 34 | 35 | -------------------------------------------------------------------------------- /test/test2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | title2 11 |
12 |
13 | abc 14 |
15 | 16 |
17 | abc 18 |
19 | 20 |
21 | def 22 |
23 | 24 |
25 | 123 26 |
27 | 28 |
29 | 32 |
33 | 34 | 35 | -------------------------------------------------------------------------------- /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.0.5" 7 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.5.tgz#3d03acd3b3414cf67faf999aed11682ed121f22b" 8 | integrity sha512-90hiq6/VqtQgX8Sp0EzeIsv3r+ellbGj4URKj5j30tLlZvRUpnAe9YbYnjl3pJM93GyXU0tghHhvXHq+5rnCKA== 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 | JSONStream@^0.10.0: 18 | version "0.10.0" 19 | resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-0.10.0.tgz#74349d0d89522b71f30f0a03ff9bd20ca6f12ac0" 20 | integrity sha1-dDSdDYlSK3HzDwoD/5vSDKbxKsA= 21 | dependencies: 22 | jsonparse "0.0.5" 23 | through ">=2.2.7 <3" 24 | 25 | JSONStream@^1.0.3: 26 | version "1.3.5" 27 | resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" 28 | integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== 29 | dependencies: 30 | jsonparse "^1.2.0" 31 | through ">=2.2.7 <3" 32 | 33 | acorn-node@^1.2.0, acorn-node@^1.3.0, acorn-node@^1.5.2, acorn-node@^1.6.1: 34 | version "1.8.2" 35 | resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" 36 | integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== 37 | dependencies: 38 | acorn "^7.0.0" 39 | acorn-walk "^7.0.0" 40 | xtend "^4.0.2" 41 | 42 | acorn-walk@^7.0.0: 43 | version "7.1.1" 44 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.1.1.tgz#345f0dffad5c735e7373d2fec9a1023e6a44b83e" 45 | integrity sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ== 46 | 47 | acorn@^7.0.0: 48 | version "7.2.0" 49 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.2.0.tgz#17ea7e40d7c8640ff54a694c889c26f31704effe" 50 | integrity sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ== 51 | 52 | agent-base@6: 53 | version "6.0.2" 54 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" 55 | integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== 56 | dependencies: 57 | debug "4" 58 | 59 | asn1.js@^4.0.0: 60 | version "4.10.1" 61 | resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" 62 | integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== 63 | dependencies: 64 | bn.js "^4.0.0" 65 | inherits "^2.0.1" 66 | minimalistic-assert "^1.0.0" 67 | 68 | assert@^1.4.0: 69 | version "1.5.0" 70 | resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" 71 | integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== 72 | dependencies: 73 | object-assign "^4.1.1" 74 | util "0.10.3" 75 | 76 | async@^1.5.2: 77 | version "1.5.2" 78 | resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" 79 | integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= 80 | 81 | balanced-match@^1.0.0: 82 | version "1.0.0" 83 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 84 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 85 | 86 | base64-js@^1.0.2: 87 | version "1.3.1" 88 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" 89 | integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== 90 | 91 | bl@^4.0.3: 92 | version "4.1.0" 93 | resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" 94 | integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== 95 | dependencies: 96 | buffer "^5.5.0" 97 | inherits "^2.0.4" 98 | readable-stream "^3.4.0" 99 | 100 | bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.4.0: 101 | version "4.11.9" 102 | resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" 103 | integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== 104 | 105 | bn.js@^5.1.1: 106 | version "5.1.2" 107 | resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.2.tgz#c9686902d3c9a27729f43ab10f9d79c2004da7b0" 108 | integrity sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA== 109 | 110 | brace-expansion@^1.1.7: 111 | version "1.1.11" 112 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 113 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 114 | dependencies: 115 | balanced-match "^1.0.0" 116 | concat-map "0.0.1" 117 | 118 | brorand@^1.0.1: 119 | version "1.1.0" 120 | resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" 121 | integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= 122 | 123 | browser-pack@^6.0.1: 124 | version "6.1.0" 125 | resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-6.1.0.tgz#c34ba10d0b9ce162b5af227c7131c92c2ecd5774" 126 | integrity sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA== 127 | dependencies: 128 | JSONStream "^1.0.3" 129 | combine-source-map "~0.8.0" 130 | defined "^1.0.0" 131 | safe-buffer "^5.1.1" 132 | through2 "^2.0.0" 133 | umd "^3.0.0" 134 | 135 | browser-resolve@^1.11.0, browser-resolve@^1.7.0: 136 | version "1.11.3" 137 | resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" 138 | integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== 139 | dependencies: 140 | resolve "1.1.7" 141 | 142 | browserify-aes@^1.0.0, browserify-aes@^1.0.4: 143 | version "1.2.0" 144 | resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" 145 | integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== 146 | dependencies: 147 | buffer-xor "^1.0.3" 148 | cipher-base "^1.0.0" 149 | create-hash "^1.1.0" 150 | evp_bytestokey "^1.0.3" 151 | inherits "^2.0.1" 152 | safe-buffer "^5.0.1" 153 | 154 | browserify-cache-api@^3.0.0: 155 | version "3.0.1" 156 | resolved "https://registry.yarnpkg.com/browserify-cache-api/-/browserify-cache-api-3.0.1.tgz#96247e853f068fd6e0d45cc73f0bb2cd9778ef02" 157 | integrity sha1-liR+hT8Gj9bg1FzHPwuyzZd47wI= 158 | dependencies: 159 | async "^1.5.2" 160 | through2 "^2.0.0" 161 | xtend "^4.0.0" 162 | 163 | browserify-cipher@^1.0.0: 164 | version "1.0.1" 165 | resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" 166 | integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== 167 | dependencies: 168 | browserify-aes "^1.0.4" 169 | browserify-des "^1.0.0" 170 | evp_bytestokey "^1.0.0" 171 | 172 | browserify-des@^1.0.0: 173 | version "1.0.2" 174 | resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" 175 | integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== 176 | dependencies: 177 | cipher-base "^1.0.1" 178 | des.js "^1.0.0" 179 | inherits "^2.0.1" 180 | safe-buffer "^5.1.2" 181 | 182 | browserify-incremental@^3.1.1: 183 | version "3.1.1" 184 | resolved "https://registry.yarnpkg.com/browserify-incremental/-/browserify-incremental-3.1.1.tgz#0713cb7587247a632a9f08cf1bd169b878b62a8a" 185 | integrity sha1-BxPLdYckemMqnwjPG9FpuHi2Koo= 186 | dependencies: 187 | JSONStream "^0.10.0" 188 | browserify-cache-api "^3.0.0" 189 | through2 "^2.0.0" 190 | xtend "^4.0.0" 191 | 192 | browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: 193 | version "4.0.1" 194 | resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" 195 | integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= 196 | dependencies: 197 | bn.js "^4.1.0" 198 | randombytes "^2.0.1" 199 | 200 | browserify-sign@^4.0.0: 201 | version "4.2.0" 202 | resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.0.tgz#545d0b1b07e6b2c99211082bf1b12cce7a0b0e11" 203 | integrity sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA== 204 | dependencies: 205 | bn.js "^5.1.1" 206 | browserify-rsa "^4.0.1" 207 | create-hash "^1.2.0" 208 | create-hmac "^1.1.7" 209 | elliptic "^6.5.2" 210 | inherits "^2.0.4" 211 | parse-asn1 "^5.1.5" 212 | readable-stream "^3.6.0" 213 | safe-buffer "^5.2.0" 214 | 215 | browserify-zlib@~0.2.0: 216 | version "0.2.0" 217 | resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" 218 | integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== 219 | dependencies: 220 | pako "~1.0.5" 221 | 222 | browserify@^16.2.3: 223 | version "16.5.1" 224 | resolved "https://registry.yarnpkg.com/browserify/-/browserify-16.5.1.tgz#3c13c97436802930d5c3ae28658ddc33bfd37dc2" 225 | integrity sha512-EQX0h59Pp+0GtSRb5rL6OTfrttlzv+uyaUVlK6GX3w11SQ0jKPKyjC/54RhPR2ib2KmfcELM06e8FxcI5XNU2A== 226 | dependencies: 227 | JSONStream "^1.0.3" 228 | assert "^1.4.0" 229 | browser-pack "^6.0.1" 230 | browser-resolve "^1.11.0" 231 | browserify-zlib "~0.2.0" 232 | buffer "~5.2.1" 233 | cached-path-relative "^1.0.0" 234 | concat-stream "^1.6.0" 235 | console-browserify "^1.1.0" 236 | constants-browserify "~1.0.0" 237 | crypto-browserify "^3.0.0" 238 | defined "^1.0.0" 239 | deps-sort "^2.0.0" 240 | domain-browser "^1.2.0" 241 | duplexer2 "~0.1.2" 242 | events "^2.0.0" 243 | glob "^7.1.0" 244 | has "^1.0.0" 245 | htmlescape "^1.1.0" 246 | https-browserify "^1.0.0" 247 | inherits "~2.0.1" 248 | insert-module-globals "^7.0.0" 249 | labeled-stream-splicer "^2.0.0" 250 | mkdirp-classic "^0.5.2" 251 | module-deps "^6.0.0" 252 | os-browserify "~0.3.0" 253 | parents "^1.0.1" 254 | path-browserify "~0.0.0" 255 | process "~0.11.0" 256 | punycode "^1.3.2" 257 | querystring-es3 "~0.2.0" 258 | read-only-stream "^2.0.0" 259 | readable-stream "^2.0.2" 260 | resolve "^1.1.4" 261 | shasum "^1.0.0" 262 | shell-quote "^1.6.1" 263 | stream-browserify "^2.0.0" 264 | stream-http "^3.0.0" 265 | string_decoder "^1.1.1" 266 | subarg "^1.0.0" 267 | syntax-error "^1.1.1" 268 | through2 "^2.0.0" 269 | timers-browserify "^1.0.1" 270 | tty-browserify "0.0.1" 271 | url "~0.11.0" 272 | util "~0.10.1" 273 | vm-browserify "^1.0.0" 274 | xtend "^4.0.0" 275 | 276 | buffer-crc32@^0.2.5, buffer-crc32@~0.2.3: 277 | version "0.2.13" 278 | resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" 279 | integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= 280 | 281 | buffer-from@^1.0.0: 282 | version "1.1.1" 283 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 284 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== 285 | 286 | buffer-xor@^1.0.3: 287 | version "1.0.3" 288 | resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" 289 | integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= 290 | 291 | buffer@^5.2.1, buffer@^5.5.0: 292 | version "5.6.0" 293 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" 294 | integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== 295 | dependencies: 296 | base64-js "^1.0.2" 297 | ieee754 "^1.1.4" 298 | 299 | buffer@~5.2.1: 300 | version "5.2.1" 301 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.2.1.tgz#dd57fa0f109ac59c602479044dca7b8b3d0b71d6" 302 | integrity sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg== 303 | dependencies: 304 | base64-js "^1.0.2" 305 | ieee754 "^1.1.4" 306 | 307 | builtin-status-codes@^3.0.0: 308 | version "3.0.0" 309 | resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" 310 | integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= 311 | 312 | cached-path-relative@^1.0.0, cached-path-relative@^1.0.2: 313 | version "1.0.2" 314 | resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.2.tgz#a13df4196d26776220cc3356eb147a52dba2c6db" 315 | integrity sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg== 316 | 317 | chownr@^1.1.1: 318 | version "1.1.4" 319 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" 320 | integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== 321 | 322 | cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: 323 | version "1.0.4" 324 | resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" 325 | integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== 326 | dependencies: 327 | inherits "^2.0.1" 328 | safe-buffer "^5.0.1" 329 | 330 | colors@>=0.6.0: 331 | version "1.4.0" 332 | resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" 333 | integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== 334 | 335 | combine-source-map@^0.8.0, combine-source-map@~0.8.0: 336 | version "0.8.0" 337 | resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.8.0.tgz#a58d0df042c186fcf822a8e8015f5450d2d79a8b" 338 | integrity sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos= 339 | dependencies: 340 | convert-source-map "~1.1.0" 341 | inline-source-map "~0.6.0" 342 | lodash.memoize "~3.0.3" 343 | source-map "~0.5.3" 344 | 345 | concat-map@0.0.1: 346 | version "0.0.1" 347 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 348 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 349 | 350 | concat-stream@^1.6.0, concat-stream@^1.6.1, concat-stream@~1.6.0: 351 | version "1.6.2" 352 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" 353 | integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== 354 | dependencies: 355 | buffer-from "^1.0.0" 356 | inherits "^2.0.3" 357 | readable-stream "^2.2.2" 358 | typedarray "^0.0.6" 359 | 360 | concat-stream@^2.0.0: 361 | version "2.0.0" 362 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" 363 | integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== 364 | dependencies: 365 | buffer-from "^1.0.0" 366 | inherits "^2.0.3" 367 | readable-stream "^3.0.2" 368 | typedarray "^0.0.6" 369 | 370 | console-browserify@^1.1.0: 371 | version "1.2.0" 372 | resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" 373 | integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== 374 | 375 | constants-browserify@~1.0.0: 376 | version "1.0.0" 377 | resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" 378 | integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= 379 | 380 | convert-source-map@^1.1.0: 381 | version "1.7.0" 382 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" 383 | integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== 384 | dependencies: 385 | safe-buffer "~5.1.1" 386 | 387 | convert-source-map@~1.1.0: 388 | version "1.1.3" 389 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860" 390 | integrity sha1-SCnId+n+SbMWHzvzZziI4gRpmGA= 391 | 392 | core-util-is@~1.0.0: 393 | version "1.0.2" 394 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 395 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 396 | 397 | create-ecdh@^4.0.0: 398 | version "4.0.3" 399 | resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" 400 | integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== 401 | dependencies: 402 | bn.js "^4.1.0" 403 | elliptic "^6.0.0" 404 | 405 | create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: 406 | version "1.2.0" 407 | resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" 408 | integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== 409 | dependencies: 410 | cipher-base "^1.0.1" 411 | inherits "^2.0.1" 412 | md5.js "^1.3.4" 413 | ripemd160 "^2.0.1" 414 | sha.js "^2.4.0" 415 | 416 | create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: 417 | version "1.1.7" 418 | resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" 419 | integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== 420 | dependencies: 421 | cipher-base "^1.0.3" 422 | create-hash "^1.1.0" 423 | inherits "^2.0.1" 424 | ripemd160 "^2.0.0" 425 | safe-buffer "^5.0.1" 426 | sha.js "^2.4.8" 427 | 428 | cross-fetch@3.1.5: 429 | version "3.1.5" 430 | resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" 431 | integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== 432 | dependencies: 433 | node-fetch "2.6.7" 434 | 435 | crypto-browserify@^3.0.0: 436 | version "3.12.0" 437 | resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" 438 | integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== 439 | dependencies: 440 | browserify-cipher "^1.0.0" 441 | browserify-sign "^4.0.0" 442 | create-ecdh "^4.0.0" 443 | create-hash "^1.1.0" 444 | create-hmac "^1.1.0" 445 | diffie-hellman "^5.0.0" 446 | inherits "^2.0.1" 447 | pbkdf2 "^3.0.3" 448 | public-encrypt "^4.0.0" 449 | randombytes "^2.0.0" 450 | randomfill "^1.0.3" 451 | 452 | dash-ast@^1.0.0: 453 | version "1.0.0" 454 | resolved "https://registry.yarnpkg.com/dash-ast/-/dash-ast-1.0.0.tgz#12029ba5fb2f8aa6f0a861795b23c1b4b6c27d37" 455 | integrity sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA== 456 | 457 | debug@4, debug@^4.1.1: 458 | version "4.1.1" 459 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" 460 | integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== 461 | dependencies: 462 | ms "^2.1.1" 463 | 464 | debug@4.3.4: 465 | version "4.3.4" 466 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 467 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 468 | dependencies: 469 | ms "2.1.2" 470 | 471 | defined@^1.0.0: 472 | version "1.0.0" 473 | resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" 474 | integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= 475 | 476 | deps-sort@^2.0.0: 477 | version "2.0.1" 478 | resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-2.0.1.tgz#9dfdc876d2bcec3386b6829ac52162cda9fa208d" 479 | integrity sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw== 480 | dependencies: 481 | JSONStream "^1.0.3" 482 | shasum-object "^1.0.0" 483 | subarg "^1.0.0" 484 | through2 "^2.0.0" 485 | 486 | des.js@^1.0.0: 487 | version "1.0.1" 488 | resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" 489 | integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== 490 | dependencies: 491 | inherits "^2.0.1" 492 | minimalistic-assert "^1.0.0" 493 | 494 | detective@^5.2.0: 495 | version "5.2.0" 496 | resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.0.tgz#feb2a77e85b904ecdea459ad897cc90a99bd2a7b" 497 | integrity sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg== 498 | dependencies: 499 | acorn-node "^1.6.1" 500 | defined "^1.0.0" 501 | minimist "^1.1.1" 502 | 503 | devtools-protocol@0.0.982423: 504 | version "0.0.982423" 505 | resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.982423.tgz#39ac3791d4c5b90ebb416d4384663b7b0cc44154" 506 | integrity sha512-FnVW2nDbjGNw1uD/JRC+9U5768W7e1TfUwqbDTcSsAu1jXFjITSX8w3rkW5FEpHRMPPGpvNSmO1pOpqByiWscA== 507 | 508 | diffie-hellman@^5.0.0: 509 | version "5.0.3" 510 | resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" 511 | integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== 512 | dependencies: 513 | bn.js "^4.1.0" 514 | miller-rabin "^4.0.0" 515 | randombytes "^2.0.0" 516 | 517 | domain-browser@^1.2.0: 518 | version "1.2.0" 519 | resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" 520 | integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== 521 | 522 | duplexer2@^0.1.2, duplexer2@~0.1.0, duplexer2@~0.1.2: 523 | version "0.1.4" 524 | resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" 525 | integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME= 526 | dependencies: 527 | readable-stream "^2.0.2" 528 | 529 | elliptic@^6.0.0, elliptic@^6.5.2: 530 | version "6.5.2" 531 | resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" 532 | integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== 533 | dependencies: 534 | bn.js "^4.4.0" 535 | brorand "^1.0.1" 536 | hash.js "^1.0.0" 537 | hmac-drbg "^1.0.0" 538 | inherits "^2.0.1" 539 | minimalistic-assert "^1.0.0" 540 | minimalistic-crypto-utils "^1.0.0" 541 | 542 | end-of-stream@^1.1.0, end-of-stream@^1.4.1: 543 | version "1.4.4" 544 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 545 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 546 | dependencies: 547 | once "^1.4.0" 548 | 549 | es6-promise@^3.1.2: 550 | version "3.3.1" 551 | resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" 552 | integrity sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM= 553 | 554 | events@^2.0.0: 555 | version "2.1.0" 556 | resolved "https://registry.yarnpkg.com/events/-/events-2.1.0.tgz#2a9a1e18e6106e0e812aa9ebd4a819b3c29c0ba5" 557 | integrity sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg== 558 | 559 | evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: 560 | version "1.0.3" 561 | resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" 562 | integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== 563 | dependencies: 564 | md5.js "^1.3.4" 565 | safe-buffer "^5.1.1" 566 | 567 | extract-zip@2.0.1: 568 | version "2.0.1" 569 | resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" 570 | integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== 571 | dependencies: 572 | debug "^4.1.1" 573 | get-stream "^5.1.0" 574 | yauzl "^2.10.0" 575 | optionalDependencies: 576 | "@types/yauzl" "^2.9.1" 577 | 578 | fast-safe-stringify@^2.0.7: 579 | version "2.0.7" 580 | resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz#124aa885899261f68aedb42a7c080de9da608743" 581 | integrity sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA== 582 | 583 | fd-slicer@~1.1.0: 584 | version "1.1.0" 585 | resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" 586 | integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= 587 | dependencies: 588 | pend "~1.2.0" 589 | 590 | find-up@^4.0.0: 591 | version "4.1.0" 592 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" 593 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== 594 | dependencies: 595 | locate-path "^5.0.0" 596 | path-exists "^4.0.0" 597 | 598 | fs-constants@^1.0.0: 599 | version "1.0.0" 600 | resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" 601 | integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== 602 | 603 | fs.realpath@^1.0.0: 604 | version "1.0.0" 605 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 606 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 607 | 608 | function-bind@^1.1.1: 609 | version "1.1.1" 610 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 611 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 612 | 613 | gaze@^1.1.3: 614 | version "1.1.3" 615 | resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a" 616 | integrity sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g== 617 | dependencies: 618 | globule "^1.0.0" 619 | 620 | get-assigned-identifiers@^1.2.0: 621 | version "1.2.0" 622 | resolved "https://registry.yarnpkg.com/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz#6dbf411de648cbaf8d9169ebb0d2d576191e2ff1" 623 | integrity sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ== 624 | 625 | get-stream@^5.1.0: 626 | version "5.1.0" 627 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" 628 | integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== 629 | dependencies: 630 | pump "^3.0.0" 631 | 632 | glob@^7.1.0, glob@^7.1.3, glob@~7.1.1: 633 | version "7.1.6" 634 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 635 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 636 | dependencies: 637 | fs.realpath "^1.0.0" 638 | inflight "^1.0.4" 639 | inherits "2" 640 | minimatch "^3.0.4" 641 | once "^1.3.0" 642 | path-is-absolute "^1.0.0" 643 | 644 | globule@^1.0.0: 645 | version "1.3.1" 646 | resolved "https://registry.yarnpkg.com/globule/-/globule-1.3.1.tgz#90a25338f22b7fbeb527cee63c629aea754d33b9" 647 | integrity sha512-OVyWOHgw29yosRHCHo7NncwR1hW5ew0W/UrvtwvjefVJeQ26q4/8r8FmPsSF1hJ93IgWkyv16pCTz6WblMzm/g== 648 | dependencies: 649 | glob "~7.1.1" 650 | lodash "~4.17.12" 651 | minimatch "~3.0.2" 652 | 653 | graceful-fs@^4.1.3: 654 | version "4.2.4" 655 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" 656 | integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== 657 | 658 | has@^1.0.0: 659 | version "1.0.3" 660 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 661 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 662 | dependencies: 663 | function-bind "^1.1.1" 664 | 665 | hash-base@^3.0.0: 666 | version "3.1.0" 667 | resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" 668 | integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== 669 | dependencies: 670 | inherits "^2.0.4" 671 | readable-stream "^3.6.0" 672 | safe-buffer "^5.2.0" 673 | 674 | hash.js@^1.0.0, hash.js@^1.0.3: 675 | version "1.1.7" 676 | resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" 677 | integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== 678 | dependencies: 679 | inherits "^2.0.3" 680 | minimalistic-assert "^1.0.1" 681 | 682 | hmac-drbg@^1.0.0: 683 | version "1.0.1" 684 | resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" 685 | integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= 686 | dependencies: 687 | hash.js "^1.0.3" 688 | minimalistic-assert "^1.0.0" 689 | minimalistic-crypto-utils "^1.0.1" 690 | 691 | htmlescape@^1.1.0: 692 | version "1.1.1" 693 | resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351" 694 | integrity sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E= 695 | 696 | https-browserify@^1.0.0: 697 | version "1.0.0" 698 | resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" 699 | integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= 700 | 701 | https-proxy-agent@5.0.1: 702 | version "5.0.1" 703 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" 704 | integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== 705 | dependencies: 706 | agent-base "6" 707 | debug "4" 708 | 709 | ieee754@^1.1.4: 710 | version "1.1.13" 711 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" 712 | integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== 713 | 714 | inflight@^1.0.4: 715 | version "1.0.6" 716 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 717 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 718 | dependencies: 719 | once "^1.3.0" 720 | wrappy "1" 721 | 722 | inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: 723 | version "2.0.4" 724 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 725 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 726 | 727 | inherits@2.0.1: 728 | version "2.0.1" 729 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" 730 | integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= 731 | 732 | inherits@2.0.3: 733 | version "2.0.3" 734 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 735 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 736 | 737 | inline-source-map@~0.6.0: 738 | version "0.6.2" 739 | resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5" 740 | integrity sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU= 741 | dependencies: 742 | source-map "~0.5.3" 743 | 744 | insert-module-globals@^7.0.0: 745 | version "7.2.0" 746 | resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.2.0.tgz#ec87e5b42728479e327bd5c5c71611ddfb4752ba" 747 | integrity sha512-VE6NlW+WGn2/AeOMd496AHFYmE7eLKkUY6Ty31k4og5vmA3Fjuwe9v6ifH6Xx/Hz27QvdoMoviw1/pqWRB09Sw== 748 | dependencies: 749 | JSONStream "^1.0.3" 750 | acorn-node "^1.5.2" 751 | combine-source-map "^0.8.0" 752 | concat-stream "^1.6.1" 753 | is-buffer "^1.1.0" 754 | path-is-absolute "^1.0.1" 755 | process "~0.11.0" 756 | through2 "^2.0.0" 757 | undeclared-identifiers "^1.1.2" 758 | xtend "^4.0.0" 759 | 760 | is-buffer@^1.1.0: 761 | version "1.1.6" 762 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" 763 | integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== 764 | 765 | isarray@~1.0.0: 766 | version "1.0.0" 767 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 768 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 769 | 770 | isexe@^2.0.0: 771 | version "2.0.0" 772 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 773 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 774 | 775 | json-stable-stringify@~0.0.0: 776 | version "0.0.1" 777 | resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz#611c23e814db375527df851193db59dd2af27f45" 778 | integrity sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U= 779 | dependencies: 780 | jsonify "~0.0.0" 781 | 782 | jsonify@~0.0.0: 783 | version "0.0.0" 784 | resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" 785 | integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= 786 | 787 | jsonparse@0.0.5: 788 | version "0.0.5" 789 | resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-0.0.5.tgz#330542ad3f0a654665b778f3eb2d9a9fa507ac64" 790 | integrity sha1-MwVCrT8KZUZlt3jz6y2an6UHrGQ= 791 | 792 | jsonparse@^1.2.0: 793 | version "1.3.1" 794 | resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" 795 | integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= 796 | 797 | labeled-stream-splicer@^2.0.0: 798 | version "2.0.2" 799 | resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz#42a41a16abcd46fd046306cf4f2c3576fffb1c21" 800 | integrity sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw== 801 | dependencies: 802 | inherits "^2.0.1" 803 | stream-splicer "^2.0.0" 804 | 805 | locate-path@^5.0.0: 806 | version "5.0.0" 807 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" 808 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== 809 | dependencies: 810 | p-locate "^4.1.0" 811 | 812 | lodash.memoize@~3.0.3: 813 | version "3.0.4" 814 | resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f" 815 | integrity sha1-LcvSwofLwKVcxCMovQxzYVDVPj8= 816 | 817 | lodash@~4.17.12: 818 | version "4.17.15" 819 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" 820 | integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== 821 | 822 | md5.js@^1.3.4: 823 | version "1.3.5" 824 | resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" 825 | integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== 826 | dependencies: 827 | hash-base "^3.0.0" 828 | inherits "^2.0.1" 829 | safe-buffer "^5.1.2" 830 | 831 | miller-rabin@^4.0.0: 832 | version "4.0.1" 833 | resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" 834 | integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== 835 | dependencies: 836 | bn.js "^4.0.0" 837 | brorand "^1.0.1" 838 | 839 | mime@^1.2.9: 840 | version "1.6.0" 841 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 842 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 843 | 844 | minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: 845 | version "1.0.1" 846 | resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" 847 | integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== 848 | 849 | minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: 850 | version "1.0.1" 851 | resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" 852 | integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= 853 | 854 | minimatch@^3.0.4, minimatch@~3.0.2: 855 | version "3.0.4" 856 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 857 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 858 | dependencies: 859 | brace-expansion "^1.1.7" 860 | 861 | minimist@^1.1.0, minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: 862 | version "1.2.5" 863 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 864 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 865 | 866 | minimist@~0.0.1: 867 | version "0.0.10" 868 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" 869 | integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= 870 | 871 | mkdirp-classic@^0.5.2: 872 | version "0.5.3" 873 | resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" 874 | integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== 875 | 876 | mkdirp@^0.5.1: 877 | version "0.5.5" 878 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" 879 | integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== 880 | dependencies: 881 | minimist "^1.2.5" 882 | 883 | module-deps@^6.0.0: 884 | version "6.2.2" 885 | resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-6.2.2.tgz#d8a15c2265dfc119153c29bb47386987d0ee423b" 886 | integrity sha512-a9y6yDv5u5I4A+IPHTnqFxcaKr4p50/zxTjcQJaX2ws9tN/W6J6YXnEKhqRyPhl494dkcxx951onSKVezmI+3w== 887 | dependencies: 888 | JSONStream "^1.0.3" 889 | browser-resolve "^1.7.0" 890 | cached-path-relative "^1.0.2" 891 | concat-stream "~1.6.0" 892 | defined "^1.0.0" 893 | detective "^5.2.0" 894 | duplexer2 "^0.1.2" 895 | inherits "^2.0.1" 896 | parents "^1.0.0" 897 | readable-stream "^2.0.2" 898 | resolve "^1.4.0" 899 | stream-combiner2 "^1.1.1" 900 | subarg "^1.0.0" 901 | through2 "^2.0.0" 902 | xtend "^4.0.0" 903 | 904 | mold-source-map@^0.4.0: 905 | version "0.4.0" 906 | resolved "https://registry.yarnpkg.com/mold-source-map/-/mold-source-map-0.4.0.tgz#cf67e0b31c47ab9badb5c9c25651862127bb8317" 907 | integrity sha1-z2fgsxxHq5uttcnCVlGGISe7gxc= 908 | dependencies: 909 | convert-source-map "^1.1.0" 910 | through "~2.2.7" 911 | 912 | ms@2.1.2, ms@^2.1.1: 913 | version "2.1.2" 914 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 915 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 916 | 917 | mute-stream@~0.0.4: 918 | version "0.0.8" 919 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" 920 | integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== 921 | 922 | node-fetch@2.6.7: 923 | version "2.6.7" 924 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" 925 | integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== 926 | dependencies: 927 | whatwg-url "^5.0.0" 928 | 929 | node-static@^0.7.11: 930 | version "0.7.11" 931 | resolved "https://registry.yarnpkg.com/node-static/-/node-static-0.7.11.tgz#60120d349f3cef533e4e820670057eb631882e7f" 932 | integrity sha512-zfWC/gICcqb74D9ndyvxZWaI1jzcoHmf4UTHWQchBNuNMxdBLJMDiUgZ1tjGLEIe/BMhj2DxKD8HOuc2062pDQ== 933 | dependencies: 934 | colors ">=0.6.0" 935 | mime "^1.2.9" 936 | optimist ">=0.3.4" 937 | 938 | object-assign@^4.1.1: 939 | version "4.1.1" 940 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 941 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 942 | 943 | once@^1.3.0, once@^1.3.1, once@^1.4.0: 944 | version "1.4.0" 945 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 946 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 947 | dependencies: 948 | wrappy "1" 949 | 950 | optimist@>=0.3.4: 951 | version "0.6.1" 952 | resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" 953 | integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= 954 | dependencies: 955 | minimist "~0.0.1" 956 | wordwrap "~0.0.2" 957 | 958 | os-browserify@~0.3.0: 959 | version "0.3.0" 960 | resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" 961 | integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= 962 | 963 | p-limit@^2.2.0: 964 | version "2.3.0" 965 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 966 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 967 | dependencies: 968 | p-try "^2.0.0" 969 | 970 | p-locate@^4.1.0: 971 | version "4.1.0" 972 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" 973 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== 974 | dependencies: 975 | p-limit "^2.2.0" 976 | 977 | p-try@^2.0.0: 978 | version "2.2.0" 979 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 980 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 981 | 982 | pako@~1.0.5: 983 | version "1.0.11" 984 | resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" 985 | integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== 986 | 987 | parents@^1.0.0, parents@^1.0.1: 988 | version "1.0.1" 989 | resolved "https://registry.yarnpkg.com/parents/-/parents-1.0.1.tgz#fedd4d2bf193a77745fe71e371d73c3307d9c751" 990 | integrity sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E= 991 | dependencies: 992 | path-platform "~0.11.15" 993 | 994 | parse-asn1@^5.0.0, parse-asn1@^5.1.5: 995 | version "5.1.5" 996 | resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" 997 | integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== 998 | dependencies: 999 | asn1.js "^4.0.0" 1000 | browserify-aes "^1.0.0" 1001 | create-hash "^1.1.0" 1002 | evp_bytestokey "^1.0.0" 1003 | pbkdf2 "^3.0.3" 1004 | safe-buffer "^5.1.1" 1005 | 1006 | path-browserify@~0.0.0: 1007 | version "0.0.1" 1008 | resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" 1009 | integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== 1010 | 1011 | path-exists@^4.0.0: 1012 | version "4.0.0" 1013 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 1014 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1015 | 1016 | path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: 1017 | version "1.0.1" 1018 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1019 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1020 | 1021 | path-parse@^1.0.6: 1022 | version "1.0.6" 1023 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 1024 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== 1025 | 1026 | path-platform@~0.11.15: 1027 | version "0.11.15" 1028 | resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2" 1029 | integrity sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I= 1030 | 1031 | pbkdf2@^3.0.3: 1032 | version "3.0.17" 1033 | resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" 1034 | integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== 1035 | dependencies: 1036 | create-hash "^1.1.2" 1037 | create-hmac "^1.1.4" 1038 | ripemd160 "^2.0.1" 1039 | safe-buffer "^5.0.1" 1040 | sha.js "^2.4.8" 1041 | 1042 | pend@~1.2.0: 1043 | version "1.2.0" 1044 | resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" 1045 | integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= 1046 | 1047 | pkg-dir@4.2.0: 1048 | version "4.2.0" 1049 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" 1050 | integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== 1051 | dependencies: 1052 | find-up "^4.0.0" 1053 | 1054 | process-nextick-args@~2.0.0: 1055 | version "2.0.1" 1056 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 1057 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 1058 | 1059 | process@~0.11.0: 1060 | version "0.11.10" 1061 | resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" 1062 | integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= 1063 | 1064 | progress@2.0.3: 1065 | version "2.0.3" 1066 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 1067 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 1068 | 1069 | proxy-from-env@1.1.0: 1070 | version "1.1.0" 1071 | resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" 1072 | integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== 1073 | 1074 | public-encrypt@^4.0.0: 1075 | version "4.0.3" 1076 | resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" 1077 | integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== 1078 | dependencies: 1079 | bn.js "^4.1.0" 1080 | browserify-rsa "^4.0.0" 1081 | create-hash "^1.1.0" 1082 | parse-asn1 "^5.0.0" 1083 | randombytes "^2.0.1" 1084 | safe-buffer "^5.1.2" 1085 | 1086 | pulp@^16.0.1: 1087 | version "16.0.1" 1088 | resolved "https://registry.yarnpkg.com/pulp/-/pulp-16.0.1.tgz#eebc52a226cf3f1c9f3dbeda94e086d625eb0d2c" 1089 | integrity sha512-cz8q10m3JLqmxOwp5JBNFAdgMx89UGyGlp4hHOp4lImNPcDUmw7e+991x10tQXYxRy77tfQS1HUFsFspV85jvQ== 1090 | dependencies: 1091 | browserify "^16.2.3" 1092 | browserify-incremental "^3.1.1" 1093 | concat-stream "^2.0.0" 1094 | gaze "^1.1.3" 1095 | glob "^7.1.3" 1096 | mold-source-map "^0.4.0" 1097 | node-static "^0.7.11" 1098 | read "^1.0.7" 1099 | sorcery "^0.10.0" 1100 | temp "^0.9.0" 1101 | through "^2.3.8" 1102 | tree-kill "^1.2.1" 1103 | which "^1.3.1" 1104 | wordwrap "1.0.0" 1105 | 1106 | pump@^3.0.0: 1107 | version "3.0.0" 1108 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 1109 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 1110 | dependencies: 1111 | end-of-stream "^1.1.0" 1112 | once "^1.3.1" 1113 | 1114 | punycode@1.3.2: 1115 | version "1.3.2" 1116 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" 1117 | integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= 1118 | 1119 | punycode@^1.3.2: 1120 | version "1.4.1" 1121 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 1122 | integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= 1123 | 1124 | puppeteer@14.1.0: 1125 | version "14.1.0" 1126 | resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-14.1.0.tgz#319560e20ff451890158d7146c79ab589c6e7031" 1127 | integrity sha512-T3eB4f6k9HVttYvyy8drGIKb04M+vxhepqM7qqcVCBTNT3T6M9cUaJT4k7P+a6wSonObJSJUP98JkPDQG+3fJw== 1128 | dependencies: 1129 | cross-fetch "3.1.5" 1130 | debug "4.3.4" 1131 | devtools-protocol "0.0.982423" 1132 | extract-zip "2.0.1" 1133 | https-proxy-agent "5.0.1" 1134 | pkg-dir "4.2.0" 1135 | progress "2.0.3" 1136 | proxy-from-env "1.1.0" 1137 | rimraf "3.0.2" 1138 | tar-fs "2.1.1" 1139 | unbzip2-stream "1.4.3" 1140 | ws "8.6.0" 1141 | 1142 | querystring-es3@~0.2.0: 1143 | version "0.2.1" 1144 | resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" 1145 | integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= 1146 | 1147 | querystring@0.2.0: 1148 | version "0.2.0" 1149 | resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" 1150 | integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= 1151 | 1152 | randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: 1153 | version "2.1.0" 1154 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" 1155 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 1156 | dependencies: 1157 | safe-buffer "^5.1.0" 1158 | 1159 | randomfill@^1.0.3: 1160 | version "1.0.4" 1161 | resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" 1162 | integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== 1163 | dependencies: 1164 | randombytes "^2.0.5" 1165 | safe-buffer "^5.1.0" 1166 | 1167 | read-only-stream@^2.0.0: 1168 | version "2.0.0" 1169 | resolved "https://registry.yarnpkg.com/read-only-stream/-/read-only-stream-2.0.0.tgz#2724fd6a8113d73764ac288d4386270c1dbf17f0" 1170 | integrity sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A= 1171 | dependencies: 1172 | readable-stream "^2.0.2" 1173 | 1174 | read@^1.0.7: 1175 | version "1.0.7" 1176 | resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" 1177 | integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ= 1178 | dependencies: 1179 | mute-stream "~0.0.4" 1180 | 1181 | readable-stream@^2.0.2, readable-stream@^2.2.2, readable-stream@~2.3.6: 1182 | version "2.3.7" 1183 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" 1184 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== 1185 | dependencies: 1186 | core-util-is "~1.0.0" 1187 | inherits "~2.0.3" 1188 | isarray "~1.0.0" 1189 | process-nextick-args "~2.0.0" 1190 | safe-buffer "~5.1.1" 1191 | string_decoder "~1.1.1" 1192 | util-deprecate "~1.0.1" 1193 | 1194 | readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: 1195 | version "3.6.0" 1196 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" 1197 | integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== 1198 | dependencies: 1199 | inherits "^2.0.3" 1200 | string_decoder "^1.1.1" 1201 | util-deprecate "^1.0.1" 1202 | 1203 | resolve@1.1.7: 1204 | version "1.1.7" 1205 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" 1206 | integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= 1207 | 1208 | resolve@^1.1.4, resolve@^1.4.0: 1209 | version "1.17.0" 1210 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" 1211 | integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== 1212 | dependencies: 1213 | path-parse "^1.0.6" 1214 | 1215 | rimraf@3.0.2: 1216 | version "3.0.2" 1217 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 1218 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 1219 | dependencies: 1220 | glob "^7.1.3" 1221 | 1222 | rimraf@^2.5.2: 1223 | version "2.7.1" 1224 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" 1225 | integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== 1226 | dependencies: 1227 | glob "^7.1.3" 1228 | 1229 | rimraf@~2.6.2: 1230 | version "2.6.3" 1231 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" 1232 | integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== 1233 | dependencies: 1234 | glob "^7.1.3" 1235 | 1236 | ripemd160@^2.0.0, ripemd160@^2.0.1: 1237 | version "2.0.2" 1238 | resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" 1239 | integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== 1240 | dependencies: 1241 | hash-base "^3.0.0" 1242 | inherits "^2.0.1" 1243 | 1244 | safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: 1245 | version "5.2.1" 1246 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1247 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1248 | 1249 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 1250 | version "5.1.2" 1251 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1252 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1253 | 1254 | sander@^0.5.0: 1255 | version "0.5.1" 1256 | resolved "https://registry.yarnpkg.com/sander/-/sander-0.5.1.tgz#741e245e231f07cafb6fdf0f133adfa216a502ad" 1257 | integrity sha1-dB4kXiMfB8r7b98PEzrfohalAq0= 1258 | dependencies: 1259 | es6-promise "^3.1.2" 1260 | graceful-fs "^4.1.3" 1261 | mkdirp "^0.5.1" 1262 | rimraf "^2.5.2" 1263 | 1264 | sha.js@^2.4.0, sha.js@^2.4.8, sha.js@~2.4.4: 1265 | version "2.4.11" 1266 | resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" 1267 | integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== 1268 | dependencies: 1269 | inherits "^2.0.1" 1270 | safe-buffer "^5.0.1" 1271 | 1272 | shasum-object@^1.0.0: 1273 | version "1.0.0" 1274 | resolved "https://registry.yarnpkg.com/shasum-object/-/shasum-object-1.0.0.tgz#0b7b74ff5b66ecf9035475522fa05090ac47e29e" 1275 | integrity sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg== 1276 | dependencies: 1277 | fast-safe-stringify "^2.0.7" 1278 | 1279 | shasum@^1.0.0: 1280 | version "1.0.2" 1281 | resolved "https://registry.yarnpkg.com/shasum/-/shasum-1.0.2.tgz#e7012310d8f417f4deb5712150e5678b87ae565f" 1282 | integrity sha1-5wEjENj0F/TetXEhUOVni4euVl8= 1283 | dependencies: 1284 | json-stable-stringify "~0.0.0" 1285 | sha.js "~2.4.4" 1286 | 1287 | shell-quote@^1.6.1: 1288 | version "1.7.2" 1289 | resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" 1290 | integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== 1291 | 1292 | simple-concat@^1.0.0: 1293 | version "1.0.0" 1294 | resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6" 1295 | integrity sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY= 1296 | 1297 | sorcery@^0.10.0: 1298 | version "0.10.0" 1299 | resolved "https://registry.yarnpkg.com/sorcery/-/sorcery-0.10.0.tgz#8ae90ad7d7cb05fc59f1ab0c637845d5c15a52b7" 1300 | integrity sha1-iukK19fLBfxZ8asMY3hF1cFaUrc= 1301 | dependencies: 1302 | buffer-crc32 "^0.2.5" 1303 | minimist "^1.2.0" 1304 | sander "^0.5.0" 1305 | sourcemap-codec "^1.3.0" 1306 | 1307 | source-map@~0.5.3: 1308 | version "0.5.7" 1309 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 1310 | integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= 1311 | 1312 | sourcemap-codec@^1.3.0: 1313 | version "1.4.8" 1314 | resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" 1315 | integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== 1316 | 1317 | stream-browserify@^2.0.0: 1318 | version "2.0.2" 1319 | resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" 1320 | integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== 1321 | dependencies: 1322 | inherits "~2.0.1" 1323 | readable-stream "^2.0.2" 1324 | 1325 | stream-combiner2@^1.1.1: 1326 | version "1.1.1" 1327 | resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe" 1328 | integrity sha1-+02KFCDqNidk4hrUeAOXvry0HL4= 1329 | dependencies: 1330 | duplexer2 "~0.1.0" 1331 | readable-stream "^2.0.2" 1332 | 1333 | stream-http@^3.0.0: 1334 | version "3.1.1" 1335 | resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-3.1.1.tgz#0370a8017cf8d050b9a8554afe608f043eaff564" 1336 | integrity sha512-S7OqaYu0EkFpgeGFb/NPOoPLxFko7TPqtEeFg5DXPB4v/KETHG0Ln6fRFrNezoelpaDKmycEmmZ81cC9DAwgYg== 1337 | dependencies: 1338 | builtin-status-codes "^3.0.0" 1339 | inherits "^2.0.4" 1340 | readable-stream "^3.6.0" 1341 | xtend "^4.0.2" 1342 | 1343 | stream-splicer@^2.0.0: 1344 | version "2.0.1" 1345 | resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-2.0.1.tgz#0b13b7ee2b5ac7e0609a7463d83899589a363fcd" 1346 | integrity sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg== 1347 | dependencies: 1348 | inherits "^2.0.1" 1349 | readable-stream "^2.0.2" 1350 | 1351 | string_decoder@^1.1.1: 1352 | version "1.3.0" 1353 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 1354 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 1355 | dependencies: 1356 | safe-buffer "~5.2.0" 1357 | 1358 | string_decoder@~1.1.1: 1359 | version "1.1.1" 1360 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 1361 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 1362 | dependencies: 1363 | safe-buffer "~5.1.0" 1364 | 1365 | subarg@^1.0.0: 1366 | version "1.0.0" 1367 | resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" 1368 | integrity sha1-9izxdYHplrSPyWVpn1TAauJouNI= 1369 | dependencies: 1370 | minimist "^1.1.0" 1371 | 1372 | syntax-error@^1.1.1: 1373 | version "1.4.0" 1374 | resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.4.0.tgz#2d9d4ff5c064acb711594a3e3b95054ad51d907c" 1375 | integrity sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w== 1376 | dependencies: 1377 | acorn-node "^1.2.0" 1378 | 1379 | tar-fs@2.1.1: 1380 | version "2.1.1" 1381 | resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" 1382 | integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== 1383 | dependencies: 1384 | chownr "^1.1.1" 1385 | mkdirp-classic "^0.5.2" 1386 | pump "^3.0.0" 1387 | tar-stream "^2.1.4" 1388 | 1389 | tar-stream@^2.1.4: 1390 | version "2.2.0" 1391 | resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" 1392 | integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== 1393 | dependencies: 1394 | bl "^4.0.3" 1395 | end-of-stream "^1.4.1" 1396 | fs-constants "^1.0.0" 1397 | inherits "^2.0.3" 1398 | readable-stream "^3.1.1" 1399 | 1400 | temp@^0.9.0: 1401 | version "0.9.1" 1402 | resolved "https://registry.yarnpkg.com/temp/-/temp-0.9.1.tgz#2d666114fafa26966cd4065996d7ceedd4dd4697" 1403 | integrity sha512-WMuOgiua1xb5R56lE0eH6ivpVmg/lq2OHm4+LtT/xtEtPQ+sz6N3bBM6WZ5FvO1lO4IKIOb43qnhoc4qxP5OeA== 1404 | dependencies: 1405 | rimraf "~2.6.2" 1406 | 1407 | through2@^2.0.0: 1408 | version "2.0.5" 1409 | resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" 1410 | integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== 1411 | dependencies: 1412 | readable-stream "~2.3.6" 1413 | xtend "~4.0.1" 1414 | 1415 | "through@>=2.2.7 <3", through@^2.3.8: 1416 | version "2.3.8" 1417 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 1418 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 1419 | 1420 | through@~2.2.7: 1421 | version "2.2.7" 1422 | resolved "https://registry.yarnpkg.com/through/-/through-2.2.7.tgz#6e8e21200191d4eb6a99f6f010df46aa1c6eb2bd" 1423 | integrity sha1-bo4hIAGR1OtqmfbwEN9Gqhxusr0= 1424 | 1425 | timers-browserify@^1.0.1: 1426 | version "1.4.2" 1427 | resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.4.2.tgz#c9c58b575be8407375cb5e2462dacee74359f41d" 1428 | integrity sha1-ycWLV1voQHN1y14kYtrO50NZ9B0= 1429 | dependencies: 1430 | process "~0.11.0" 1431 | 1432 | tr46@~0.0.3: 1433 | version "0.0.3" 1434 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" 1435 | integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= 1436 | 1437 | tree-kill@^1.2.1: 1438 | version "1.2.2" 1439 | resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" 1440 | integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== 1441 | 1442 | tty-browserify@0.0.1: 1443 | version "0.0.1" 1444 | resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811" 1445 | integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw== 1446 | 1447 | typedarray@^0.0.6: 1448 | version "0.0.6" 1449 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" 1450 | integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= 1451 | 1452 | umd@^3.0.0: 1453 | version "3.0.3" 1454 | resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.3.tgz#aa9fe653c42b9097678489c01000acb69f0b26cf" 1455 | integrity sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow== 1456 | 1457 | unbzip2-stream@1.4.3: 1458 | version "1.4.3" 1459 | resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" 1460 | integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== 1461 | dependencies: 1462 | buffer "^5.2.1" 1463 | through "^2.3.8" 1464 | 1465 | undeclared-identifiers@^1.1.2: 1466 | version "1.1.3" 1467 | resolved "https://registry.yarnpkg.com/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz#9254c1d37bdac0ac2b52de4b6722792d2a91e30f" 1468 | integrity sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw== 1469 | dependencies: 1470 | acorn-node "^1.3.0" 1471 | dash-ast "^1.0.0" 1472 | get-assigned-identifiers "^1.2.0" 1473 | simple-concat "^1.0.0" 1474 | xtend "^4.0.1" 1475 | 1476 | url@~0.11.0: 1477 | version "0.11.0" 1478 | resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" 1479 | integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= 1480 | dependencies: 1481 | punycode "1.3.2" 1482 | querystring "0.2.0" 1483 | 1484 | util-deprecate@^1.0.1, util-deprecate@~1.0.1: 1485 | version "1.0.2" 1486 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1487 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 1488 | 1489 | util@0.10.3: 1490 | version "0.10.3" 1491 | resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" 1492 | integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= 1493 | dependencies: 1494 | inherits "2.0.1" 1495 | 1496 | util@~0.10.1: 1497 | version "0.10.4" 1498 | resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" 1499 | integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== 1500 | dependencies: 1501 | inherits "2.0.3" 1502 | 1503 | vm-browserify@^1.0.0: 1504 | version "1.1.2" 1505 | resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" 1506 | integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== 1507 | 1508 | webidl-conversions@^3.0.0: 1509 | version "3.0.1" 1510 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" 1511 | integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= 1512 | 1513 | whatwg-url@^5.0.0: 1514 | version "5.0.0" 1515 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" 1516 | integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= 1517 | dependencies: 1518 | tr46 "~0.0.3" 1519 | webidl-conversions "^3.0.0" 1520 | 1521 | which@^1.3.1: 1522 | version "1.3.1" 1523 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 1524 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 1525 | dependencies: 1526 | isexe "^2.0.0" 1527 | 1528 | wordwrap@1.0.0: 1529 | version "1.0.0" 1530 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 1531 | integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= 1532 | 1533 | wordwrap@~0.0.2: 1534 | version "0.0.3" 1535 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" 1536 | integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= 1537 | 1538 | wrappy@1: 1539 | version "1.0.2" 1540 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1541 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1542 | 1543 | ws@8.6.0: 1544 | version "8.6.0" 1545 | resolved "https://registry.yarnpkg.com/ws/-/ws-8.6.0.tgz#e5e9f1d9e7ff88083d0c0dd8281ea662a42c9c23" 1546 | integrity sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw== 1547 | 1548 | xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.1: 1549 | version "4.0.2" 1550 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" 1551 | integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== 1552 | 1553 | yauzl@^2.10.0: 1554 | version "2.10.0" 1555 | resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" 1556 | integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= 1557 | dependencies: 1558 | buffer-crc32 "~0.2.3" 1559 | fd-slicer "~1.1.0" 1560 | --------------------------------------------------------------------------------