├── .github └── workflows │ └── nodejs.yml ├── .gitignore ├── LICENSE ├── README.adoc ├── package.json ├── pom.xml ├── project.clj ├── shadow-cljs.edn ├── src ├── main │ └── async_interop │ │ ├── interop.clj │ │ └── interop.cljs └── test │ └── async_interop │ └── interop_tests.cljs └── yarn.lock /.github/workflows/nodejs.yml: -------------------------------------------------------------------------------- 1 | name: Node CI 2 | 3 | on: 4 | pull_request: ~ 5 | push: 6 | branches: 7 | # These are the branches that we want CI to run on direct pushes. 8 | # All other changes should go through PRs. 9 | - master 10 | 11 | jobs: 12 | test: 13 | runs-on: ubuntu-latest 14 | steps: 15 | - uses: actions/checkout@v1 16 | - name: Cache node_modules 17 | uses: actions/cache@v1 18 | with: 19 | path: node_modules 20 | key: node_modules-${{ hashFiles('yarn.lock') }} 21 | restore-keys: | 22 | node_modules- 23 | - name: Cache maven 24 | uses: actions/cache@v1 25 | with: 26 | path: ~/.m2 27 | key: m2-${{ hashFiles('shadow-cljs.edn') }} 28 | restore-keys: | 29 | m2- 30 | - name: Use Node.js 12.x 31 | uses: actions/setup-node@v1 32 | with: 33 | node-version: '12.x' 34 | - name: Install 35 | run: yarn 36 | - name: Lint 37 | run: yarn lint 38 | - name: Test 39 | run: yarn test:once 40 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | public/js 3 | out 4 | target 5 | .shadow-cljs 6 | .nrepl-port 7 | .clj-kondo 8 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019-present, Filipe Silva. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /README.adoc: -------------------------------------------------------------------------------- 1 | = Current status 2 | 3 | Merged into CLJS, please refer to https://clojurescript.org/guides/promise-interop for the official guide. 4 | 5 | = Promise interop 6 | Filipe Silva 7 | 2019-10-03 8 | :type: guides 9 | :toc: macro 10 | :icons: font 11 | 12 | ifdef::env-github,env-browser[:outfilesuffix: .adoc] 13 | 14 | toc::[] 15 | 16 | [[notes]] 17 | == Notes 18 | 19 | This repository follows up on a discussion had on the Clojurians `clojurescript` slack channel 20 | where it was noted that questions about promises were a recurring topic. 21 | 22 | David Nolen provided a macro (provided here almost verbatim) and remarked that it could be a 23 | candidate for the `core.async.interop` namespace along with a post on the topic. 24 | 25 | This proposal is being tracked in https://clojure.atlassian.net/browse/ASYNC-230. 26 | 27 | Meanwhile I'm putting this repository up with some tests and what I imagine could be a guide in 28 | https://clojurescript.org/guides/ (except for this "Notes" section). 29 | You can also get it on https://clojars.org/async-interop: 30 | 31 | [source,clojure] 32 | ---- 33 | :dependencies [[org.clojure/core.async "0.4.500"] 34 | [async-interop "0.1.4"]], 35 | ---- 36 | [source,clojure] 37 | ---- 38 | (:require 39 | [cljs.core.async :refer [go]] 40 | [async-interop.interop :refer [
console.log(val)); 54 | ---- 55 | 56 | *ClojureScript:* 57 | [source,clojure] 58 | ---- 59 | (.then (js/Promise.resolve 42) 60 | #(js/console.log %)) 61 | ---- 62 | 63 | However, chained promise methods in ClojureScript results in cascading code. 64 | Using the https://cljs.github.io/api/cljs.core/#-GT[thread-first macro] we can can get back to more 65 | elegant code. 66 | 67 | *JavaScript:* 68 | [source,clojure] 69 | ---- 70 | Promise.resolve(42) 71 | .then(val => console.log(val)) 72 | .catch(err => console.log(err)) 73 | .finally(() => console.log('cleanup')); 74 | ---- 75 | 76 | *ClojureScript:* 77 | [source,javascript] 78 | ---- 79 | (.finally 80 | (.catch 81 | (.then (js/Promise.resolve 42) 82 | #(js/console.log %)) 83 | #(js/console.log %)) 84 | #(js/console.log "cleanup")) 85 | 86 | ; same as above 87 | (-> (js/Promise.resolve 42) 88 | (.then #(js/console.log %)) 89 | (.catch #(js/console.log %)) 90 | (.finally #(js/console.log "cleanup"))) 91 | ---- 92 | 93 | Promise-heavy code that uses `await` results in more complicated code structures that aren't very 94 | friendly. 95 | Take this example from https://github.com/GoogleChrome/puppeteer#usage[Puppeteer usage]: 96 | 97 | *JavaScript:* 98 | [source,javascript] 99 | ---- 100 | const puppeteer = require('puppeteer'); 101 | 102 | (async () => { 103 | const browser = await puppeteer.launch(); 104 | const page = await browser.newPage(); 105 | try { 106 | await page.goto('https://example.com'); 107 | await page.screenshot({path: 'example.png'}); 108 | } catch (err) { 109 | console.log(err); 110 | } 111 | 112 | await browser.close(); 113 | })(); 114 | ---- 115 | 116 | *ClojureScript:* 117 | [source,clojure] 118 | ---- 119 | (def puppeteer (js/require "puppeteer")) 120 | 121 | (-> (.launch puppeteer) 122 | (.then (fn [browser] 123 | (-> (.newPage browser) 124 | (.then (fn [page] 125 | (-> (.goto page "https://clojure.org") 126 | (.then #(.screenshot page #js{:path "screenshot.png"})) 127 | (.catch #(js/console.log %)) 128 | (.then #(.close browser))))))))) 129 | ---- 130 | 131 | To tame this sort of code we turn to `core.async`. 132 | 133 | 134 | [[using-promises-with-core-async]] 135 | == Using Promises with core.async 136 | 137 | ClojureScript offers excellent facilities for async programming in https://github.com/clojure/core.async[core.async]. 138 | One especially handy tool is the `
c ~exp)))) -------------------------------------------------------------------------------- /src/main/async_interop/interop.cljs: -------------------------------------------------------------------------------- 1 | (ns async-interop.interop 2 | (:require-macros [async-interop.interop]) 3 | (:require [cljs.core.async :as async])) 4 | 5 | (defn p->c 6 | "Puts the promise resolution into a promise-chan and returns it. 7 | The value of a rejected promise will be wrapped in a instance of 8 | ExceptionInfo, acessible via ex-cause." 9 | [p] 10 | (let [c (async/promise-chan)] 11 | (.then p 12 | (fn [res] 13 | (if (nil? res) 14 | (async/close! c) 15 | (async/put! c res))) 16 | (fn [err] 17 | (async/put! c 18 | (ex-info "Promise error" 19 | {:error :promise-error} 20 | err)))) 21 | c)) 22 | 23 | (defn throw-err 24 | "Throw val if it's an ExceptionInfo from p->c, otherwise return it." 25 | [val] 26 | (if (and 27 | (instance? cljs.core/ExceptionInfo val) 28 | (= (:error (ex-data val)) :promise-error)) 29 | (throw val) 30 | val)) 31 | 32 | -------------------------------------------------------------------------------- /src/test/async_interop/interop_tests.cljs: -------------------------------------------------------------------------------- 1 | (ns async-interop.interop-tests 2 | (:require 3 | [cljs.core.async :refer [go c
(js/Promise.resolve 1) 20 | (.then #(swap! total + %)) 21 | (.then #(js/Promise.resolve 2)) 22 | (.then #(swap! total + %)) 23 | (.then #(js/Promise.resolve 3)) 24 | (.then #(swap! total + %)) 25 | (.finally 26 | #(do (is (= @total 6)) 27 | (done))))))) 28 | 29 | (deftest native-catch 30 | (async done 31 | (.finally 32 | (let [err (js/Error. "Rejected")] 33 | (.then (js/Promise.reject err) 34 | #(is false "Should not resolve") 35 | #(is (= err %)))) 36 | (done)))) 37 | 38 | ; This is similar to the puppeteer example in https://github.com/athos/kitchen-async#example. 39 | (deftest native-nested 40 | (async done 41 | (let [total (atom 0)] 42 | (-> (js/Promise.resolve 1) 43 | (.then (fn [first-res] 44 | (-> (js/Promise.resolve 2) 45 | (.then (fn [second-res] 46 | (-> (js/Promise.resolve 3) 47 | (.then #(swap! total + %)) 48 | (.then #(js/Promise.resolve 5)) 49 | (.then #(swap! total + %)) 50 | (.then #(swap! total + first-res)) 51 | (.then #(swap! total + second-res)) 52 | (.finally 53 | #(do (is (= @total 11)) 54 | (done))))))))))))) 55 | 56 | ; Equivalent async-interop tests 57 | (deftest interop-resolve 58 | (async done 59 | (go 60 | (is (= (
c-semantics 123 | (async done 124 | (go 125 | (let [c (p->c (js/Promise.resolve 42))] 126 | (is (= (=0.3.0 <0.4" 204 | 205 | chownr@^1.1.1: 206 | version "1.1.3" 207 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142" 208 | integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw== 209 | 210 | cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: 211 | version "1.0.4" 212 | resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" 213 | integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== 214 | dependencies: 215 | inherits "^2.0.1" 216 | safe-buffer "^5.0.1" 217 | 218 | clj-kondo@2019.11.23: 219 | version "2019.11.23" 220 | resolved "https://registry.yarnpkg.com/clj-kondo/-/clj-kondo-2019.11.23.tgz#c892c593c86090f187694936973991c6a955e7fd" 221 | integrity sha512-M3wiZ3vQn89yVDzkX+S+ZEttivYl8aOSO3mqVhx50aNOXvC5+qY+gVaPvS9tVXIGSyWg3FQzYIjbtE0c/Nho8w== 222 | dependencies: 223 | binwrap "^0.2.2" 224 | request "^2.88.0" 225 | 226 | combined-stream@^1.0.6, combined-stream@~1.0.6: 227 | version "1.0.8" 228 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 229 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 230 | dependencies: 231 | delayed-stream "~1.0.0" 232 | 233 | console-browserify@^1.1.0: 234 | version "1.2.0" 235 | resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" 236 | integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== 237 | 238 | constants-browserify@^1.0.0: 239 | version "1.0.0" 240 | resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" 241 | integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= 242 | 243 | core-util-is@1.0.2, core-util-is@~1.0.0: 244 | version "1.0.2" 245 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 246 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 247 | 248 | create-ecdh@^4.0.0: 249 | version "4.0.3" 250 | resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" 251 | integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== 252 | dependencies: 253 | bn.js "^4.1.0" 254 | elliptic "^6.0.0" 255 | 256 | create-hash@^1.1.0, create-hash@^1.1.2: 257 | version "1.2.0" 258 | resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" 259 | integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== 260 | dependencies: 261 | cipher-base "^1.0.1" 262 | inherits "^2.0.1" 263 | md5.js "^1.3.4" 264 | ripemd160 "^2.0.1" 265 | sha.js "^2.4.0" 266 | 267 | create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: 268 | version "1.1.7" 269 | resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" 270 | integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== 271 | dependencies: 272 | cipher-base "^1.0.3" 273 | create-hash "^1.1.0" 274 | inherits "^2.0.1" 275 | ripemd160 "^2.0.0" 276 | safe-buffer "^5.0.1" 277 | sha.js "^2.4.8" 278 | 279 | crypto-browserify@^3.11.0: 280 | version "3.12.0" 281 | resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" 282 | integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== 283 | dependencies: 284 | browserify-cipher "^1.0.0" 285 | browserify-sign "^4.0.0" 286 | create-ecdh "^4.0.0" 287 | create-hash "^1.1.0" 288 | create-hmac "^1.1.0" 289 | diffie-hellman "^5.0.0" 290 | inherits "^2.0.1" 291 | pbkdf2 "^3.0.3" 292 | public-encrypt "^4.0.0" 293 | randombytes "^2.0.0" 294 | randomfill "^1.0.3" 295 | 296 | dashdash@^1.12.0: 297 | version "1.14.1" 298 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 299 | integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= 300 | dependencies: 301 | assert-plus "^1.0.0" 302 | 303 | delayed-stream@~1.0.0: 304 | version "1.0.0" 305 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 306 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= 307 | 308 | des.js@^1.0.0: 309 | version "1.0.0" 310 | resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" 311 | integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw= 312 | dependencies: 313 | inherits "^2.0.1" 314 | minimalistic-assert "^1.0.0" 315 | 316 | diffie-hellman@^5.0.0: 317 | version "5.0.3" 318 | resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" 319 | integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== 320 | dependencies: 321 | bn.js "^4.1.0" 322 | miller-rabin "^4.0.0" 323 | randombytes "^2.0.0" 324 | 325 | domain-browser@^1.1.1: 326 | version "1.2.0" 327 | resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" 328 | integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== 329 | 330 | ecc-jsbn@~0.1.1: 331 | version "0.1.2" 332 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" 333 | integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= 334 | dependencies: 335 | jsbn "~0.1.0" 336 | safer-buffer "^2.1.0" 337 | 338 | elliptic@^6.0.0: 339 | version "6.5.1" 340 | resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.1.tgz#c380f5f909bf1b9b4428d028cd18d3b0efd6b52b" 341 | integrity sha512-xvJINNLbTeWQjrl6X+7eQCrIy/YPv5XCpKW6kB5mKvtnGILoLDcySuwomfdzt0BMdLNVnuRNTuzKNHj0bva1Cg== 342 | dependencies: 343 | bn.js "^4.4.0" 344 | brorand "^1.0.1" 345 | hash.js "^1.0.0" 346 | hmac-drbg "^1.0.0" 347 | inherits "^2.0.1" 348 | minimalistic-assert "^1.0.0" 349 | minimalistic-crypto-utils "^1.0.0" 350 | 351 | events@^3.0.0: 352 | version "3.0.0" 353 | resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" 354 | integrity sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA== 355 | 356 | evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: 357 | version "1.0.3" 358 | resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" 359 | integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== 360 | dependencies: 361 | md5.js "^1.3.4" 362 | safe-buffer "^5.1.1" 363 | 364 | extend@~3.0.2: 365 | version "3.0.2" 366 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" 367 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== 368 | 369 | extsprintf@1.3.0: 370 | version "1.3.0" 371 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" 372 | integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= 373 | 374 | extsprintf@^1.2.0: 375 | version "1.4.0" 376 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" 377 | integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= 378 | 379 | fast-deep-equal@^2.0.1: 380 | version "2.0.1" 381 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" 382 | integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= 383 | 384 | fast-json-stable-stringify@^2.0.0: 385 | version "2.0.0" 386 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" 387 | integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= 388 | 389 | forever-agent@~0.6.1: 390 | version "0.6.1" 391 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 392 | integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= 393 | 394 | form-data@~2.3.2: 395 | version "2.3.3" 396 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" 397 | integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== 398 | dependencies: 399 | asynckit "^0.4.0" 400 | combined-stream "^1.0.6" 401 | mime-types "^2.1.12" 402 | 403 | fs-minipass@^1.2.5: 404 | version "1.2.7" 405 | resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" 406 | integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== 407 | dependencies: 408 | minipass "^2.6.0" 409 | 410 | getpass@^0.1.1: 411 | version "0.1.7" 412 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 413 | integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= 414 | dependencies: 415 | assert-plus "^1.0.0" 416 | 417 | har-schema@^2.0.0: 418 | version "2.0.0" 419 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" 420 | integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= 421 | 422 | har-validator@~5.1.0: 423 | version "5.1.3" 424 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" 425 | integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== 426 | dependencies: 427 | ajv "^6.5.5" 428 | har-schema "^2.0.0" 429 | 430 | hash-base@^3.0.0: 431 | version "3.0.4" 432 | resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" 433 | integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= 434 | dependencies: 435 | inherits "^2.0.1" 436 | safe-buffer "^5.0.1" 437 | 438 | hash.js@^1.0.0, hash.js@^1.0.3: 439 | version "1.1.7" 440 | resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" 441 | integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== 442 | dependencies: 443 | inherits "^2.0.3" 444 | minimalistic-assert "^1.0.1" 445 | 446 | hmac-drbg@^1.0.0: 447 | version "1.0.1" 448 | resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" 449 | integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= 450 | dependencies: 451 | hash.js "^1.0.3" 452 | minimalistic-assert "^1.0.0" 453 | minimalistic-crypto-utils "^1.0.1" 454 | 455 | http-signature@~1.2.0: 456 | version "1.2.0" 457 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" 458 | integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= 459 | dependencies: 460 | assert-plus "^1.0.0" 461 | jsprim "^1.2.2" 462 | sshpk "^1.7.0" 463 | 464 | https-browserify@^1.0.0: 465 | version "1.0.0" 466 | resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" 467 | integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= 468 | 469 | ieee754@^1.1.4: 470 | version "1.1.13" 471 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" 472 | integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== 473 | 474 | inherits@2.0.1: 475 | version "2.0.1" 476 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" 477 | integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= 478 | 479 | inherits@2.0.3: 480 | version "2.0.3" 481 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 482 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 483 | 484 | inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: 485 | version "2.0.4" 486 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 487 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 488 | 489 | is-typedarray@~1.0.0: 490 | version "1.0.0" 491 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 492 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 493 | 494 | isarray@^1.0.0, isarray@~1.0.0: 495 | version "1.0.0" 496 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 497 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 498 | 499 | isexe@^2.0.0: 500 | version "2.0.0" 501 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 502 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 503 | 504 | isstream@~0.1.2: 505 | version "0.1.2" 506 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 507 | integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= 508 | 509 | jsbn@~0.1.0: 510 | version "0.1.1" 511 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 512 | integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= 513 | 514 | json-schema-traverse@^0.4.1: 515 | version "0.4.1" 516 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 517 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 518 | 519 | json-schema@0.2.3: 520 | version "0.2.3" 521 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 522 | integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= 523 | 524 | json-stringify-safe@~5.0.1: 525 | version "5.0.1" 526 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 527 | integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= 528 | 529 | jsprim@^1.2.2: 530 | version "1.4.1" 531 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" 532 | integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= 533 | dependencies: 534 | assert-plus "1.0.0" 535 | extsprintf "1.3.0" 536 | json-schema "0.2.3" 537 | verror "1.10.0" 538 | 539 | lodash@^4.17.11: 540 | version "4.17.15" 541 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" 542 | integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== 543 | 544 | md5.js@^1.3.4: 545 | version "1.3.5" 546 | resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" 547 | integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== 548 | dependencies: 549 | hash-base "^3.0.0" 550 | inherits "^2.0.1" 551 | safe-buffer "^5.1.2" 552 | 553 | miller-rabin@^4.0.0: 554 | version "4.0.1" 555 | resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" 556 | integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== 557 | dependencies: 558 | bn.js "^4.0.0" 559 | brorand "^1.0.1" 560 | 561 | mime-db@1.40.0: 562 | version "1.40.0" 563 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" 564 | integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== 565 | 566 | mime-types@^2.1.12, mime-types@~2.1.19: 567 | version "2.1.24" 568 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" 569 | integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ== 570 | dependencies: 571 | mime-db "1.40.0" 572 | 573 | minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: 574 | version "1.0.1" 575 | resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" 576 | integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== 577 | 578 | minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: 579 | version "1.0.1" 580 | resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" 581 | integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= 582 | 583 | minimist@0.0.8: 584 | version "0.0.8" 585 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 586 | integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= 587 | 588 | minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: 589 | version "2.9.0" 590 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" 591 | integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== 592 | dependencies: 593 | safe-buffer "^5.1.2" 594 | yallist "^3.0.0" 595 | 596 | minizlib@^1.2.1: 597 | version "1.3.3" 598 | resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" 599 | integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== 600 | dependencies: 601 | minipass "^2.9.0" 602 | 603 | mkdirp@^0.5.0, mkdirp@^0.5.1: 604 | version "0.5.1" 605 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 606 | integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= 607 | dependencies: 608 | minimist "0.0.8" 609 | 610 | mustache@^3.0.1: 611 | version "3.1.0" 612 | resolved "https://registry.yarnpkg.com/mustache/-/mustache-3.1.0.tgz#9fba26e7aefc5709f07ff585abb7e0abced6c372" 613 | integrity sha512-3Bxq1R5LBZp7fbFPZzFe5WN4s0q3+gxZaZuZVY+QctYJiCiVgXHOTIC0/HgZuOPFt/6BQcx5u0H2CUOxT/RoGQ== 614 | 615 | node-libs-browser@^2.0.0: 616 | version "2.2.1" 617 | resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" 618 | integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== 619 | dependencies: 620 | assert "^1.1.1" 621 | browserify-zlib "^0.2.0" 622 | buffer "^4.3.0" 623 | console-browserify "^1.1.0" 624 | constants-browserify "^1.0.0" 625 | crypto-browserify "^3.11.0" 626 | domain-browser "^1.1.1" 627 | events "^3.0.0" 628 | https-browserify "^1.0.0" 629 | os-browserify "^0.3.0" 630 | path-browserify "0.0.1" 631 | process "^0.11.10" 632 | punycode "^1.2.4" 633 | querystring-es3 "^0.2.0" 634 | readable-stream "^2.3.3" 635 | stream-browserify "^2.0.1" 636 | stream-http "^2.7.2" 637 | string_decoder "^1.0.0" 638 | timers-browserify "^2.0.4" 639 | tty-browserify "0.0.0" 640 | url "^0.11.0" 641 | util "^0.11.0" 642 | vm-browserify "^1.0.1" 643 | 644 | oauth-sign@~0.9.0: 645 | version "0.9.0" 646 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" 647 | integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== 648 | 649 | object-assign@^4.1.1: 650 | version "4.1.1" 651 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 652 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 653 | 654 | os-browserify@^0.3.0: 655 | version "0.3.0" 656 | resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" 657 | integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= 658 | 659 | pako@~1.0.5: 660 | version "1.0.10" 661 | resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" 662 | integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw== 663 | 664 | parse-asn1@^5.0.0: 665 | version "5.1.5" 666 | resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" 667 | integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== 668 | dependencies: 669 | asn1.js "^4.0.0" 670 | browserify-aes "^1.0.0" 671 | create-hash "^1.1.0" 672 | evp_bytestokey "^1.0.0" 673 | pbkdf2 "^3.0.3" 674 | safe-buffer "^5.1.1" 675 | 676 | path-browserify@0.0.1: 677 | version "0.0.1" 678 | resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" 679 | integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== 680 | 681 | pbkdf2@^3.0.3: 682 | version "3.0.17" 683 | resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" 684 | integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== 685 | dependencies: 686 | create-hash "^1.1.2" 687 | create-hmac "^1.1.4" 688 | ripemd160 "^2.0.1" 689 | safe-buffer "^5.0.1" 690 | sha.js "^2.4.8" 691 | 692 | performance-now@^2.1.0: 693 | version "2.1.0" 694 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" 695 | integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= 696 | 697 | process-nextick-args@~2.0.0: 698 | version "2.0.1" 699 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 700 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 701 | 702 | process@^0.11.10: 703 | version "0.11.10" 704 | resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" 705 | integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= 706 | 707 | psl@^1.1.24, psl@^1.1.28: 708 | version "1.4.0" 709 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.4.0.tgz#5dd26156cdb69fa1fdb8ab1991667d3f80ced7c2" 710 | integrity sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw== 711 | 712 | public-encrypt@^4.0.0: 713 | version "4.0.3" 714 | resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" 715 | integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== 716 | dependencies: 717 | bn.js "^4.1.0" 718 | browserify-rsa "^4.0.0" 719 | create-hash "^1.1.0" 720 | parse-asn1 "^5.0.0" 721 | randombytes "^2.0.1" 722 | safe-buffer "^5.1.2" 723 | 724 | punycode@1.3.2: 725 | version "1.3.2" 726 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" 727 | integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= 728 | 729 | punycode@^1.2.4, punycode@^1.4.1: 730 | version "1.4.1" 731 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 732 | integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= 733 | 734 | punycode@^2.1.0, punycode@^2.1.1: 735 | version "2.1.1" 736 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 737 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 738 | 739 | qs@~6.5.2: 740 | version "6.5.2" 741 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" 742 | integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== 743 | 744 | querystring-es3@^0.2.0: 745 | version "0.2.1" 746 | resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" 747 | integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= 748 | 749 | querystring@0.2.0: 750 | version "0.2.0" 751 | resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" 752 | integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= 753 | 754 | randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: 755 | version "2.1.0" 756 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" 757 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 758 | dependencies: 759 | safe-buffer "^5.1.0" 760 | 761 | randomfill@^1.0.3: 762 | version "1.0.4" 763 | resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" 764 | integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== 765 | dependencies: 766 | randombytes "^2.0.5" 767 | safe-buffer "^5.1.0" 768 | 769 | readable-stream@^2.0.2, readable-stream@^2.3.3, readable-stream@^2.3.6: 770 | version "2.3.6" 771 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" 772 | integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== 773 | dependencies: 774 | core-util-is "~1.0.0" 775 | inherits "~2.0.3" 776 | isarray "~1.0.0" 777 | process-nextick-args "~2.0.0" 778 | safe-buffer "~5.1.1" 779 | string_decoder "~1.1.1" 780 | util-deprecate "~1.0.1" 781 | 782 | readline-sync@^1.4.7: 783 | version "1.4.10" 784 | resolved "https://registry.yarnpkg.com/readline-sync/-/readline-sync-1.4.10.tgz#41df7fbb4b6312d673011594145705bf56d8873b" 785 | integrity sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw== 786 | 787 | request-promise-core@1.1.2: 788 | version "1.1.2" 789 | resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.2.tgz#339f6aababcafdb31c799ff158700336301d3346" 790 | integrity sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag== 791 | dependencies: 792 | lodash "^4.17.11" 793 | 794 | request-promise@^4.2.4: 795 | version "4.2.4" 796 | resolved "https://registry.yarnpkg.com/request-promise/-/request-promise-4.2.4.tgz#1c5ed0d71441e38ad58c7ce4ea4ea5b06d54b310" 797 | integrity sha512-8wgMrvE546PzbR5WbYxUQogUnUDfM0S7QIFZMID+J73vdFARkFy+HElj4T+MWYhpXwlLp0EQ8Zoj8xUA0he4Vg== 798 | dependencies: 799 | bluebird "^3.5.0" 800 | request-promise-core "1.1.2" 801 | stealthy-require "^1.1.1" 802 | tough-cookie "^2.3.3" 803 | 804 | request@^2.88.0: 805 | version "2.88.0" 806 | resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" 807 | integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== 808 | dependencies: 809 | aws-sign2 "~0.7.0" 810 | aws4 "^1.8.0" 811 | caseless "~0.12.0" 812 | combined-stream "~1.0.6" 813 | extend "~3.0.2" 814 | forever-agent "~0.6.1" 815 | form-data "~2.3.2" 816 | har-validator "~5.1.0" 817 | http-signature "~1.2.0" 818 | is-typedarray "~1.0.0" 819 | isstream "~0.1.2" 820 | json-stringify-safe "~5.0.1" 821 | mime-types "~2.1.19" 822 | oauth-sign "~0.9.0" 823 | performance-now "^2.1.0" 824 | qs "~6.5.2" 825 | safe-buffer "^5.1.2" 826 | tough-cookie "~2.4.3" 827 | tunnel-agent "^0.6.0" 828 | uuid "^3.3.2" 829 | 830 | ripemd160@^2.0.0, ripemd160@^2.0.1: 831 | version "2.0.2" 832 | resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" 833 | integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== 834 | dependencies: 835 | hash-base "^3.0.0" 836 | inherits "^2.0.1" 837 | 838 | 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: 839 | version "5.2.0" 840 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" 841 | integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== 842 | 843 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 844 | version "5.1.2" 845 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 846 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 847 | 848 | safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: 849 | version "2.1.2" 850 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 851 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 852 | 853 | setimmediate@^1.0.4: 854 | version "1.0.5" 855 | resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" 856 | integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= 857 | 858 | sha.js@^2.4.0, sha.js@^2.4.8: 859 | version "2.4.11" 860 | resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" 861 | integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== 862 | dependencies: 863 | inherits "^2.0.1" 864 | safe-buffer "^5.0.1" 865 | 866 | shadow-cljs-jar@1.3.1: 867 | version "1.3.1" 868 | resolved "https://registry.yarnpkg.com/shadow-cljs-jar/-/shadow-cljs-jar-1.3.1.tgz#a5f8ab7664b40e11345837e4c6bce8e0ac9b2cc3" 869 | integrity sha512-IJSm4Gfu/wWDsOQ0wNrSxuaGdjzsd78us+3bop3cpWsoO2Igdu6VIBItYrZHRRBKl5LIZKXfnSh/2eWG3C1EFw== 870 | 871 | shadow-cljs@~2.8.80: 872 | version "2.8.81" 873 | resolved "https://registry.yarnpkg.com/shadow-cljs/-/shadow-cljs-2.8.81.tgz#d4f28313ef3d0023a9d7b9a0891ee0e124f0cfb8" 874 | integrity sha512-ux+S7yB2isXxna8/BHRkkp80C6fXPwVrKnDd0SfTbLgjUE9TMjqHCgsO0jLejw/cjjAzAvyG4uVLyK60NxIwEg== 875 | dependencies: 876 | mkdirp "^0.5.1" 877 | node-libs-browser "^2.0.0" 878 | readline-sync "^1.4.7" 879 | shadow-cljs-jar "1.3.1" 880 | source-map-support "^0.4.15" 881 | which "^1.3.1" 882 | ws "^3.0.0" 883 | 884 | source-map-support@^0.4.15: 885 | version "0.4.18" 886 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" 887 | integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== 888 | dependencies: 889 | source-map "^0.5.6" 890 | 891 | source-map@^0.5.6: 892 | version "0.5.7" 893 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 894 | integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= 895 | 896 | sshpk@^1.7.0: 897 | version "1.16.1" 898 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" 899 | integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== 900 | dependencies: 901 | asn1 "~0.2.3" 902 | assert-plus "^1.0.0" 903 | bcrypt-pbkdf "^1.0.0" 904 | dashdash "^1.12.0" 905 | ecc-jsbn "~0.1.1" 906 | getpass "^0.1.1" 907 | jsbn "~0.1.0" 908 | safer-buffer "^2.0.2" 909 | tweetnacl "~0.14.0" 910 | 911 | stealthy-require@^1.1.1: 912 | version "1.1.1" 913 | resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" 914 | integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= 915 | 916 | stream-browserify@^2.0.1: 917 | version "2.0.2" 918 | resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" 919 | integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== 920 | dependencies: 921 | inherits "~2.0.1" 922 | readable-stream "^2.0.2" 923 | 924 | stream-http@^2.7.2: 925 | version "2.8.3" 926 | resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" 927 | integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== 928 | dependencies: 929 | builtin-status-codes "^3.0.0" 930 | inherits "^2.0.1" 931 | readable-stream "^2.3.6" 932 | to-arraybuffer "^1.0.0" 933 | xtend "^4.0.0" 934 | 935 | string_decoder@^1.0.0: 936 | version "1.3.0" 937 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 938 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 939 | dependencies: 940 | safe-buffer "~5.2.0" 941 | 942 | string_decoder@~1.1.1: 943 | version "1.1.1" 944 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 945 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 946 | dependencies: 947 | safe-buffer "~5.1.0" 948 | 949 | tar@^4.4.10: 950 | version "4.4.13" 951 | resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" 952 | integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== 953 | dependencies: 954 | chownr "^1.1.1" 955 | fs-minipass "^1.2.5" 956 | minipass "^2.8.6" 957 | minizlib "^1.2.1" 958 | mkdirp "^0.5.0" 959 | safe-buffer "^5.1.2" 960 | yallist "^3.0.3" 961 | 962 | timers-browserify@^2.0.4: 963 | version "2.0.11" 964 | resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" 965 | integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== 966 | dependencies: 967 | setimmediate "^1.0.4" 968 | 969 | to-arraybuffer@^1.0.0: 970 | version "1.0.1" 971 | resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" 972 | integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= 973 | 974 | tough-cookie@^2.3.3: 975 | version "2.5.0" 976 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" 977 | integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== 978 | dependencies: 979 | psl "^1.1.28" 980 | punycode "^2.1.1" 981 | 982 | tough-cookie@~2.4.3: 983 | version "2.4.3" 984 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" 985 | integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== 986 | dependencies: 987 | psl "^1.1.24" 988 | punycode "^1.4.1" 989 | 990 | "traverse@>=0.3.0 <0.4": 991 | version "0.3.9" 992 | resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9" 993 | integrity sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk= 994 | 995 | tty-browserify@0.0.0: 996 | version "0.0.0" 997 | resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" 998 | integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= 999 | 1000 | tunnel-agent@^0.6.0: 1001 | version "0.6.0" 1002 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 1003 | integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= 1004 | dependencies: 1005 | safe-buffer "^5.0.1" 1006 | 1007 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 1008 | version "0.14.5" 1009 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 1010 | integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= 1011 | 1012 | ultron@~1.1.0: 1013 | version "1.1.1" 1014 | resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" 1015 | integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== 1016 | 1017 | unzip-stream@^0.3.0: 1018 | version "0.3.0" 1019 | resolved "https://registry.yarnpkg.com/unzip-stream/-/unzip-stream-0.3.0.tgz#c30c054cd6b0d64b13a23cd3ece911eb0b2b52d8" 1020 | integrity sha512-NG1h/MdGIX3HzyqMjyj1laBCmlPYhcO4xEy7gEqqzGiSLw7XqDQCnY4nYSn5XSaH8mQ6TFkaujrO8d/PIZN85A== 1021 | dependencies: 1022 | binary "^0.3.0" 1023 | mkdirp "^0.5.1" 1024 | 1025 | uri-js@^4.2.2: 1026 | version "4.2.2" 1027 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" 1028 | integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== 1029 | dependencies: 1030 | punycode "^2.1.0" 1031 | 1032 | url@^0.11.0: 1033 | version "0.11.0" 1034 | resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" 1035 | integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= 1036 | dependencies: 1037 | punycode "1.3.2" 1038 | querystring "0.2.0" 1039 | 1040 | util-deprecate@~1.0.1: 1041 | version "1.0.2" 1042 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1043 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 1044 | 1045 | util@0.10.3: 1046 | version "0.10.3" 1047 | resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" 1048 | integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= 1049 | dependencies: 1050 | inherits "2.0.1" 1051 | 1052 | util@^0.11.0: 1053 | version "0.11.1" 1054 | resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" 1055 | integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== 1056 | dependencies: 1057 | inherits "2.0.3" 1058 | 1059 | uuid@^3.3.2: 1060 | version "3.3.3" 1061 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" 1062 | integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== 1063 | 1064 | verror@1.10.0: 1065 | version "1.10.0" 1066 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" 1067 | integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= 1068 | dependencies: 1069 | assert-plus "^1.0.0" 1070 | core-util-is "1.0.2" 1071 | extsprintf "^1.2.0" 1072 | 1073 | vm-browserify@^1.0.1: 1074 | version "1.1.0" 1075 | resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019" 1076 | integrity sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw== 1077 | 1078 | which@^1.3.1: 1079 | version "1.3.1" 1080 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 1081 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 1082 | dependencies: 1083 | isexe "^2.0.0" 1084 | 1085 | ws@^3.0.0: 1086 | version "3.3.3" 1087 | resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" 1088 | integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== 1089 | dependencies: 1090 | async-limiter "~1.0.0" 1091 | safe-buffer "~5.1.0" 1092 | ultron "~1.1.0" 1093 | 1094 | xtend@^4.0.0: 1095 | version "4.0.2" 1096 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" 1097 | integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== 1098 | 1099 | yallist@^3.0.0, yallist@^3.0.3: 1100 | version "3.1.1" 1101 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" 1102 | integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== 1103 | --------------------------------------------------------------------------------