From 9a69b4734cb64da743c48d3baedc2191ab923765 Mon Sep 17 00:00:00 2001 From: Bart Wyatt Date: Wed, 11 Sep 2019 15:41:17 -0400 Subject: [PATCH 01/76] first draft of contract changes for webauthn 2FA protected "rent" action --- .gitignore | 5 + .../contracts/tropical/tropical.contracts.md | 31 ++++++ eosio/contracts/tropical/tropical.cpp | 102 +++++++++++++++++- 3 files changed, 136 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index c57af4f7..4ef98d1d 100644 --- a/.gitignore +++ b/.gitignore @@ -69,3 +69,8 @@ jspm_packages/ # Misc .env + +# Smart Contract Artifacts +*.wasm +*.abi + diff --git a/eosio/contracts/tropical/tropical.contracts.md b/eosio/contracts/tropical/tropical.contracts.md index 7fedca33..84d85a1a 100644 --- a/eosio/contracts/tropical/tropical.contracts.md +++ b/eosio/contracts/tropical/tropical.contracts.md @@ -10,3 +10,34 @@ icon: https://upload.wikimedia.org/wikipedia/commons/thumb/4/42/Love_Heart_SVG.s Liking this property will be visible to anyone who views your profile or searches your name. This like may result in the post owner’s property to be featured on the property owner’s most liked pages. Any usage of bots, macros, or any autonomous form of liking a specific person’s property would result in the investigation of like legitimacy for a post. +

+ rent +

+--- +spec_version: 0.2.0 +title: Rent a Property +summary: Rent a Tropical Example property +icon: https://https://upload.wikimedia.org/wikipedia/commons/thumb/3/3e/Dollar_sign_in_circle.svg/240px-Dollar_sign_in_circle.svg.png#27F7CC5F628A8FC0B16680C141D58D42A1F49E3E38B1A4F67590C61F5D607CBF +--- +Renting a property requires 2FA and constitutes a binding agreement to pay the listed rental fee(s). +Any usage of bots, macros, or any autonomous form of liking a specific person’s property would result in the investigation of like legitimacy for a post. +

+ check2fa +

+--- +spec_version: 0.2.0 +title: Validate the 2FA Token +summary: Validate a WebAuthn second factor +icon: https://upload.wikimedia.org/wikipedia/commons/thumb/d/d4/OOjs_UI_icon_key-ltr.svg/200px-OOjs_UI_icon_key-ltr.svg.png#0A1E2435DCAFDF4B34E60C65C570DCE30FAAC1862D7C5E139D188A6EAAF95014 +--- +Any usage of bots, macros, or any autonomous form of liking a specific person’s property would result in the investigation of like legitimacy for a post. +

+ setsrvkey +

+--- +spec_version: 0.2.0 +title: Set the Root-of-trust +summary: This is an administrative action that sets the respected "root of trust" key that counter signs 2FA +icon: https://upload.wikimedia.org/wikipedia/commons/thumb/d/d4/OOjs_UI_icon_key-ltr.svg/200px-OOjs_UI_icon_key-ltr.svg.png#0A1E2435DCAFDF4B34E60C65C570DCE30FAAC1862D7C5E139D188A6EAAF95014 +--- +Any usage of bots, macros, or any autonomous form of liking a specific person’s property would result in the investigation of like legitimacy for a post. diff --git a/eosio/contracts/tropical/tropical.cpp b/eosio/contracts/tropical/tropical.cpp index 516c8d2f..cd22b485 100644 --- a/eosio/contracts/tropical/tropical.cpp +++ b/eosio/contracts/tropical/tropical.cpp @@ -1,12 +1,110 @@ #include +#include +#include +#include using namespace eosio; CONTRACT tropical : public contract { - public: - using contract::contract; + public: + tropical(name self, name first_receiver, datastream ds) + :contract(self, first_receiver, ds) + ,server_key_singleton(get_self(), get_self().value) + {} ACTION like( name user ) { print_f("You've liked a property on chain, %!\n", user); } + + /** + * Global singleton that holds the current "root of trust" + */ + eosio::singleton< "srvkey"_n, public_key > server_key_singleton; + + /** + * + * @param user + * @param property + * @return + */ + ACTION rent( name user, name property ) { + // enforce that the check2fa action is the first CFA + // + auto check2fa_action = get_action(0, 0); + + // unpack the first two parameters + // + auto second_factor_params = unpack>(check2fa_action.data); + + // validate that the 2FA was properly sent to this contract + // + check(check2fa_action.account == _self, "Malformed 2FA action, wrong account"); + + // validate that the 2FA was propertly sent to the `check2fa` context-free action handler + // + check(check2fa_action.name == "check2fa"_n, "Malfomed 2FA action, wrong name"); + + // validate that the 2FA was for this user and property + // + check(std::get<0>(second_factor_params) == user, "Malformed 2FA action, wrong user"); + check(std::get<1>(second_factor_params) == property, "Malfomed 2FA action, wrong property"); + + // finally validate that the root of trust, the server_key, matches the chain state + // this was not possible in a context free action + // + auto server_key = server_key_singleton.get(); + check(std::get<2>(second_factor_params) == server_key, "Malfomed 2FA action, wrong root of trust"); + + print_f("You've rented a % on chain, %!\n", property, user); + } + + /** + * Validate that a provided pair of signatures represents the provided user and property names as well as + * a chain of trust for a user_key that terminates in a server_key + * + * This is a context-free action. This means it cannot access any chain state. It can only enforce the + * consistency of the parameters passed to it. This implies that this action will succeed as long as + * the user, property, and user_key are attested to by the server_key via various signatures. + * + * it *does not* validate the server_key + * + * @param user - the name of the user present in this 2fa assertion + * @param property - the name of the property present in this 2fa assertion + * @param server_key - the public key that is the root of trust for this assertion + * @param user_key - a public key, trusted by `server_key`, to be in possessed by `user` + * @param server_auth - a signature from the `server_key` + * @param bearer_auth - a signature from the `user_key` + */ + ACTION check2fa( name user, name property, public_key server_key, public_key user_key, signature server_auth, signature bearer_auth ) { + // concatenate the serialized user name, property name, and user public key + // as the "challenge" that the server would have signed + // + auto challenge = pack(std::forward_as_tuple(user, property, user_key)); + + // hash the "challenge" into a signature digest that both the server and the user's WebAuthn authenticator + // will sign in order to prove to the chain that there was a valid second factor ceremony + // + auto signature_digest = sha256(challenge.data(), challenge.size()); + + // verify the provided signature from the server, this is something only an entity in possession of the + // private `server_key` can have properly generated + // + assert_recover_key(signature_digest, server_auth, server_key); + + // verify the provided signature from the bearer, this is something only an entity in possession of the + // private `user_key` can have properly generated and the `user_key` is attested to by the `server_key` + // via the challenge digest + // + assert_recover_key(signature_digest, bearer_auth, user_key); + } + + /** + * Administrative action to set the root of trust, aka server key + * + * @param server_key - the public key that is the root of trust for this contract + */ + ACTION setsrvkey(public_key server_key) { + require_auth(_self); + server_key_singleton.set(server_key, _self); + } }; From aaac92d5f5eb41ebefd5faf38fdd08d63dbc6465 Mon Sep 17 00:00:00 2001 From: Bart Wyatt Date: Wed, 11 Sep 2019 19:17:00 -0500 Subject: [PATCH 02/76] abi fixes and deployment script work to support a pre-built wasm --- eosio/contracts/tropical/tropical.cpp | 14 ++++++++++---- eosio/scripts/deploy_contracts.sh | 10 +++++++++- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/eosio/contracts/tropical/tropical.cpp b/eosio/contracts/tropical/tropical.cpp index cd22b485..54e251e4 100644 --- a/eosio/contracts/tropical/tropical.cpp +++ b/eosio/contracts/tropical/tropical.cpp @@ -9,7 +9,7 @@ CONTRACT tropical : public contract { public: tropical(name self, name first_receiver, datastream ds) :contract(self, first_receiver, ds) - ,server_key_singleton(get_self(), get_self().value) + ,configuration_singleton(get_self(), get_self().value) {} ACTION like( name user ) { @@ -19,7 +19,13 @@ CONTRACT tropical : public contract { /** * Global singleton that holds the current "root of trust" */ - eosio::singleton< "srvkey"_n, public_key > server_key_singleton; + TABLE config { + public_key srvkey; + + EOSLIB_SERIALIZE( config, (srvkey) ) + }; + + eosio::singleton< "config"_n, config > configuration_singleton; /** * @@ -52,7 +58,7 @@ CONTRACT tropical : public contract { // finally validate that the root of trust, the server_key, matches the chain state // this was not possible in a context free action // - auto server_key = server_key_singleton.get(); + auto server_key = configuration_singleton.get().srvkey; check(std::get<2>(second_factor_params) == server_key, "Malfomed 2FA action, wrong root of trust"); print_f("You've rented a % on chain, %!\n", property, user); @@ -105,6 +111,6 @@ CONTRACT tropical : public contract { */ ACTION setsrvkey(public_key server_key) { require_auth(_self); - server_key_singleton.set(server_key, _self); + configuration_singleton.set({server_key}, _self); } }; diff --git a/eosio/scripts/deploy_contracts.sh b/eosio/scripts/deploy_contracts.sh index 8323a9d3..c0e8651a 100755 --- a/eosio/scripts/deploy_contracts.sh +++ b/eosio/scripts/deploy_contracts.sh @@ -94,13 +94,21 @@ function deploy_app_contract { # Move into contracts directory cd "$CONTRACTS_DIR/$1/" ( - eosio-cpp -abigen "$1.cpp" -o "$1.wasm" -I ./ + if [ ! -f "$1.wasm" ]; then + eosio-cpp -abigen "$1.cpp" -o "$1.wasm" -I ./ + else + echo "Using pre-built contract..." + fi ) && # Move back into the executable directory cd $CONTRACTS_DIR # Set (deploy) the compiled contract to the blockchain cleos set contract $2 "$CONTRACTS_DIR/$1/" -p $2 + + # Set the root of trust for the contract + cleos push action $2 setprivkey '["'"$TROPICAL_EXAMPLE_ACCOUNT_PUBLIC_KEY"'"]' -p $2@ + } function issue_sys_tokens { From b0b57f036216e4e255eac767023c7008543ca485 Mon Sep 17 00:00:00 2001 From: Bart Wyatt Date: Thu, 12 Sep 2019 13:00:11 -0400 Subject: [PATCH 03/76] fix deploy script issue --- eosio/scripts/deploy_contracts.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eosio/scripts/deploy_contracts.sh b/eosio/scripts/deploy_contracts.sh index c0e8651a..48becde3 100755 --- a/eosio/scripts/deploy_contracts.sh +++ b/eosio/scripts/deploy_contracts.sh @@ -107,7 +107,7 @@ function deploy_app_contract { cleos set contract $2 "$CONTRACTS_DIR/$1/" -p $2 # Set the root of trust for the contract - cleos push action $2 setprivkey '["'"$TROPICAL_EXAMPLE_ACCOUNT_PUBLIC_KEY"'"]' -p $2@ + cleos push action $2 setsrvkey '["'"$TROPICAL_EXAMPLE_ACCOUNT_PUBLIC_KEY"'"]' -p $2 } From 10409fb9866995e2a8c5d75f74e81084a222e44a Mon Sep 17 00:00:00 2001 From: Bart Wyatt Date: Thu, 12 Sep 2019 13:00:32 -0400 Subject: [PATCH 04/76] beginning of UI work --- src/components/navigation/UserDropdown.js | 79 +++++++++++++++++---- src/components/navigation/UserDropdown.scss | 11 ++- src/components/navigation/UserInfo.js | 11 +-- 3 files changed, 79 insertions(+), 22 deletions(-) diff --git a/src/components/navigation/UserDropdown.js b/src/components/navigation/UserDropdown.js index e14dd969..6210e42e 100644 --- a/src/components/navigation/UserDropdown.js +++ b/src/components/navigation/UserDropdown.js @@ -1,25 +1,74 @@ import React from 'react' import { func } from 'prop-types' +// UAL context object that can be set via the contextType property on a class and can be referenced using this.context +import { UALContext } from 'ual-reactjs-renderer' import './UserDropdown.scss' import { onKeyUpEnter } from 'utils/keyPress' +import { generateEnrollTransaction, transactionConfig } from 'utils/transaction' -const UserDropdown = ({ logout }) => ( -
onKeyUpEnter(event, logout)} - > - - Logout - -
-) +class UserDropdown extends React.Component { + static contextType = UALContext -UserDropdown.propTypes = { - logout: func.isRequired, + static propTypes = { + logout: func.isRequired, + displayError: func.isRequired + } + + state = { + enrolled: false + } + + onEnroll = async () => { + const { displayError } = this.props + // Via static contextType = UALContext, access to the activeUser object on this.context is now available + const { activeUser } = this.context + if (activeUser) { + try { + //const accountName = await activeUser.getAccountName() + //const transaction = generateEnrollTransaction(accountName) + // The activeUser.signTransaction will propose the passed in transaction to the logged in Authenticator + //await activeUser.signTransaction(transaction, transactionConfig) + this.setState({ enrolled: true }) + } catch (err) { + displayError(err) + } + } else { + displayError("Not Logged In!") + } + } + + render() { + const { logout, displayError } = this.props; + const { enrolled } = this.state; + return ( +
+
    + { !enrolled + ?
  • onKeyUpEnter(event, this.onEnroll)} + > + Enable WebAuthn 2FA +
  • + :
  • + WebAuthn 2FA Enabled! +
  • + } +
  • onKeyUpEnter(event, logout)} + > + Logout +
  • +
+
+ ) + } } export default UserDropdown diff --git a/src/components/navigation/UserDropdown.scss b/src/components/navigation/UserDropdown.scss index 7728d7c2..aff91847 100644 --- a/src/components/navigation/UserDropdown.scss +++ b/src/components/navigation/UserDropdown.scss @@ -12,10 +12,17 @@ z-index: 1; cursor: pointer; - .user-dropdown-item { - color: black; + li { + &.user-dropdown-item { + display: inline-block; + margin: 0 0 0 0; + font-weight: normal; + color: black; + } } + + &:after { content: ''; position: absolute; diff --git a/src/components/navigation/UserInfo.js b/src/components/navigation/UserInfo.js index 8fdd0811..07867284 100644 --- a/src/components/navigation/UserInfo.js +++ b/src/components/navigation/UserInfo.js @@ -38,7 +38,7 @@ class UserInfo extends React.Component { })) } - renderLogout = () => ( + renderLogout = ( displayError ) => (
dropdown
- { this.state.showDropdown && this.renderDropdown() } + { this.state.showDropdown && this.renderDropdown( displayError ) }
) - renderDropdown = () => { + renderDropdown = ( displayError ) => { const { logout } = this.context return (
- +
) } @@ -65,12 +65,13 @@ class UserInfo extends React.Component { render() { const { logout, isAutoLogin } = this.context const { accountName } = this.state + const { displayError } = this.props; const shouldDisplayLogout = logout && !isAutoLogin return (
Signed in as
{accountName}
- { shouldDisplayLogout && this.renderLogout() } + { shouldDisplayLogout && this.renderLogout(displayError) }
) } From 7c9d1069e31fc6424b245641f1c7be4bb6e095e8 Mon Sep 17 00:00:00 2001 From: Bart Wyatt Date: Tue, 17 Sep 2019 07:02:38 -0500 Subject: [PATCH 05/76] commiting work so far so I can bring on help. this includes a pre-compiled wasm --- eosio/Dockerfile | 2 +- eosio/contracts/tropical/tropical.abi | 114 ++ eosio/contracts/tropical/tropical.wasm | Bin 0 -> 23076 bytes package.json | 8 +- src/api/index.js | 74 ++ src/setupProxy.js | 14 + yarn.lock | 1535 +++++++++++++----------- 7 files changed, 1059 insertions(+), 688 deletions(-) create mode 100644 eosio/contracts/tropical/tropical.abi create mode 100755 eosio/contracts/tropical/tropical.wasm create mode 100644 src/api/index.js create mode 100644 src/setupProxy.js diff --git a/eosio/Dockerfile b/eosio/Dockerfile index 945b2c87..e0fc6e7a 100644 --- a/eosio/Dockerfile +++ b/eosio/Dockerfile @@ -25,7 +25,7 @@ RUN mv /eosio.assert/eosio.assert-0.1.0 /opt/eosio/bin/contracts RUN mv /opt/eosio/bin/contracts/eosio.assert-0.1.0 /opt/eosio/bin/contracts/eosio.assert RUN echo "COPYING APP CONTRACTS" -COPY ./ /opt/eosio/bin +COPY ./././././ /opt/eosio/bin RUN echo "COPYING EOSIO.TOKEN RICARDIAN CONTRACT" RUN cp /opt/eosio/bin/contracts/eosio.token/eosio.token.contracts.md /opt/eosio/bin/contracts/eosio.contracts/contracts/eosio.token/src diff --git a/eosio/contracts/tropical/tropical.abi b/eosio/contracts/tropical/tropical.abi new file mode 100644 index 00000000..ba67d165 --- /dev/null +++ b/eosio/contracts/tropical/tropical.abi @@ -0,0 +1,114 @@ +{ + "____comment": "This file was generated with eosio-abigen. DO NOT EDIT ", + "version": "eosio::abi/1.1", + "types": [], + "structs": [ + { + "name": "check2fa", + "base": "", + "fields": [ + { + "name": "user", + "type": "name" + }, + { + "name": "property", + "type": "name" + }, + { + "name": "server_key", + "type": "public_key" + }, + { + "name": "user_key", + "type": "public_key" + }, + { + "name": "server_auth", + "type": "signature" + }, + { + "name": "bearer_auth", + "type": "signature" + } + ] + }, + { + "name": "config", + "base": "", + "fields": [ + { + "name": "srvkey", + "type": "public_key" + } + ] + }, + { + "name": "like", + "base": "", + "fields": [ + { + "name": "user", + "type": "name" + } + ] + }, + { + "name": "rent", + "base": "", + "fields": [ + { + "name": "user", + "type": "name" + }, + { + "name": "property", + "type": "name" + } + ] + }, + { + "name": "setsrvkey", + "base": "", + "fields": [ + { + "name": "server_key", + "type": "public_key" + } + ] + } + ], + "actions": [ + { + "name": "check2fa", + "type": "check2fa", + "ricardian_contract": "---\nspec_version: 0.2.0\ntitle: Validate the 2FA Token\nsummary: Validate a WebAuthn second factor\nicon: https://upload.wikimedia.org/wikipedia/commons/thumb/d/d4/OOjs_UI_icon_key-ltr.svg/200px-OOjs_UI_icon_key-ltr.svg.png#0A1E2435DCAFDF4B34E60C65C570DCE30FAAC1862D7C5E139D188A6EAAF95014\n---\nAny usage of bots, macros, or any autonomous form of liking a specific person’s property would result in the investigation of like legitimacy for a post." + }, + { + "name": "like", + "type": "like", + "ricardian_contract": "---\nspec_version: 0.2.0\ntitle: Like a Property\nsummary: Like a Tropical Example property\nicon: https://upload.wikimedia.org/wikipedia/commons/thumb/4/42/Love_Heart_SVG.svg/265px-Love_Heart_SVG.svg.png#301991F0C25EE8EAA55F4CE940B9E5910560652A8D930C56D65C3C8987FF7DDB\n---\nLiking this property will be visible to anyone who views your profile or searches your name.\nThis like may result in the post owner’s property to be featured on the property owner’s most liked pages.\nAny usage of bots, macros, or any autonomous form of liking a specific person’s property would result in the investigation of like legitimacy for a post." + }, + { + "name": "rent", + "type": "rent", + "ricardian_contract": "---\nspec_version: 0.2.0\ntitle: Rent a Property\nsummary: Rent a Tropical Example property\nicon: https://https://upload.wikimedia.org/wikipedia/commons/thumb/3/3e/Dollar_sign_in_circle.svg/240px-Dollar_sign_in_circle.svg.png#27F7CC5F628A8FC0B16680C141D58D42A1F49E3E38B1A4F67590C61F5D607CBF\n---\nRenting a property requires 2FA and constitutes a binding agreement to pay the listed rental fee(s).\nAny usage of bots, macros, or any autonomous form of liking a specific person’s property would result in the investigation of like legitimacy for a post." + }, + { + "name": "setsrvkey", + "type": "setsrvkey", + "ricardian_contract": "---\nspec_version: 0.2.0\ntitle: Set the Root-of-trust\nsummary: This is an administrative action that sets the respected \"root of trust\" key that counter signs 2FA\nicon: https://upload.wikimedia.org/wikipedia/commons/thumb/d/d4/OOjs_UI_icon_key-ltr.svg/200px-OOjs_UI_icon_key-ltr.svg.png#0A1E2435DCAFDF4B34E60C65C570DCE30FAAC1862D7C5E139D188A6EAAF95014\n---\nAny usage of bots, macros, or any autonomous form of liking a specific person’s property would result in the investigation of like legitimacy for a post." + } + ], + "tables": [ + { + "name": "config", + "type": "config", + "index_type": "i64", + "key_names": [], + "key_types": [] + } + ], + "ricardian_clauses": [], + "variants": [] +} \ No newline at end of file diff --git a/eosio/contracts/tropical/tropical.wasm b/eosio/contracts/tropical/tropical.wasm new file mode 100755 index 0000000000000000000000000000000000000000..eb94f0f277d84907f6706bfc6ec6956c0c3414df GIT binary patch literal 23076 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 { + const private_key_wif = process.env.API_SERVER_PRIVATE_KEY + const api = Router() + + const decodeResponse = (clientData, webauthnResp) => { + const attestationBuffer = base64url.toBuffer(webAuthnResponse.response.attestationObject) + const attestation = cbor.decodeAllSync(attestationBuffer)[0] + + const flags = attestation.authData.readUInt8(32) + const credentialIDLength = attestation.authData.readUInt16BE(53) + const credentialID = attestation.authData.slice(55, credentialIDLength) + const COSEPublicKeyBuffer = attestation.authData.slice( 55 + credentialIDLength ) + const COSEPublicKey = cbor.decodeAllSync(COSEPublicKeyBuffer)[0] + const x = COSEPublicKey.get(-2) + const y = COSEPublicKey.get(-3) + + const rpId = 'localhost' + const presence = ((flags)=>{ + if (flags & 0x04) + return 2 + else if (flags & 0x01) + return 1 + else + return 0 + })(flags) + + const eosioPubkey = Buffer.allocUnsafe(45) + eosioPubkey.writeInt8(2, 0) // WebAuthn pubkey + eosioPubkey.writeInt8((y[31] & 1) ? 3 : 2, 1) // solution hint for compact key + x.copy(eosioPubkey, 2, 0, 32) // ECC x + eosioPubkey.writeInt8(presence, 35) // presence enum + eosioPubkey.writeInt8(9, 36) // varInt length of rpId + eosioPubkey.write(rpId, 37) // rpId + + return {eosioPubkey, credentialID} + } + + const users = {} + + api.get( '/generateRentChallenge', (req, resp) => { + const name = request.body.name + const property_name = request.body.property_name + + const namePairBuffer = new SerialBuffer() + namePairBuffer.pushName(name) + namePairBuffer.pushName(property_name) + const sigData = Buffer.concat( namePairBuffer.asUint8Array(), users[name].eosioPubkey ) + const sigDigest = ecc.sha256(sigData) + const challenge = ecc.signHash(sigDigest, private_key_wif).toString() + + response.json({ + 'status': 'ok', + 'challenge': challenge + }) + }) + + api.post( '/enroll', (req, resp) => { + // Note there is no verfication of this data as it is out of scope for this demo + // + const name = request.body.name + const webauthnResp = request.body.webauthnResp + + users[name] = decodeResponse(webauthnResp) + response.json({ 'status': 'ok' }) + }) + + return api +} \ No newline at end of file diff --git a/src/setupProxy.js b/src/setupProxy.js new file mode 100644 index 00000000..c8acc87b --- /dev/null +++ b/src/setupProxy.js @@ -0,0 +1,14 @@ +// The API is in ES6 and this is run in the node environment +require("@babel/register")({ + presets: ["@babel/preset-env"] +}); + +const Api = require('./api').default; + +// This is a mis-use of the react proxySetup to allow for a simple API layer that the application can +// interact with. In a production setup, this would either proxy to an api service endpoint OR proper +// CORS/access control would be in place for the api service to be directly accessible from the app +// +module.exports = function(app) { + app.use('/api', Api()); +}; \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 5966b2ce..d7fd266e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,27 +9,27 @@ dependencies: "@babel/highlight" "^7.0.0" -"@babel/core@7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.5.5.tgz#17b2686ef0d6bc58f963dddd68ab669755582c30" - integrity sha512-i4qoSr2KTtce0DmkuuQBV4AuQgGPUcPXMr9L5MyYAtk06z068lQ10a4O009fe5OB/DfNV+h+qqT7ddNV8UnRjg== +"@babel/core@7.4.3": + version "7.4.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.3.tgz#198d6d3af4567be3989550d97e068de94503074f" + integrity sha512-oDpASqKFlbspQfzAE7yaeTmdljSH2ADIvBlb0RwbStltTuWa0+7CCI1fYVINNv9saHPa1W7oaKeuNuKj+RQCvA== dependencies: - "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.5.5" - "@babel/helpers" "^7.5.5" - "@babel/parser" "^7.5.5" - "@babel/template" "^7.4.4" - "@babel/traverse" "^7.5.5" - "@babel/types" "^7.5.5" + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.4.0" + "@babel/helpers" "^7.4.3" + "@babel/parser" "^7.4.3" + "@babel/template" "^7.4.0" + "@babel/traverse" "^7.4.3" + "@babel/types" "^7.4.0" convert-source-map "^1.1.0" debug "^4.1.0" json5 "^2.1.0" - lodash "^4.17.13" + lodash "^4.17.11" resolve "^1.3.2" semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.1.0", "@babel/core@^7.4.5": +"@babel/core@7.6.0", "@babel/core@^7.1.0", "@babel/core@^7.4.5": version "7.6.0" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.6.0.tgz#9b00f73554edd67bebc86df8303ef678be3d7b48" integrity sha512-FuRhDRtsd6IptKpHXAa+4WPZYY2ZzgowkbLBecEDDSje1X/apG7jQM33or3NdOmjXBKWGOg4JmSiRfUfuTtHXw== @@ -49,7 +49,27 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.4.0", "@babel/generator@^7.5.5", "@babel/generator@^7.6.0": +"@babel/core@^7.1.6": + version "7.6.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.6.4.tgz#6ebd9fe00925f6c3e177bb726a188b5f578088ff" + integrity sha512-Rm0HGw101GY8FTzpWSyRbki/jzq+/PkNQJ+nSulrdY6gFGOsNseCqD6KHRYe2E+EdzuBdr2pxCp6s4Uk6eJ+XQ== + dependencies: + "@babel/code-frame" "^7.5.5" + "@babel/generator" "^7.6.4" + "@babel/helpers" "^7.6.2" + "@babel/parser" "^7.6.4" + "@babel/template" "^7.6.0" + "@babel/traverse" "^7.6.3" + "@babel/types" "^7.6.3" + convert-source-map "^1.1.0" + debug "^4.1.0" + json5 "^2.1.0" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.4.0", "@babel/generator@^7.6.0": version "7.6.0" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.6.0.tgz#e2c21efbfd3293ad819a2359b448f002bfdfda56" integrity sha512-Ms8Mo7YBdMMn1BYuNtKuP/z0TgEIhbcyB8HVR6PPNYp4P61lMsABiS4A3VG1qznjXVCf3r+fVHhm4efTYVsySA== @@ -60,6 +80,16 @@ source-map "^0.5.0" trim-right "^1.0.1" +"@babel/generator@^7.6.3", "@babel/generator@^7.6.4": + version "7.6.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.6.4.tgz#a4f8437287bf9671b07f483b76e3bb731bc97671" + integrity sha512-jsBuXkFoZxk0yWLyGI9llT9oiQ2FeTASmRFE32U+aaDTfoE92t78eroO7PTpU/OrYq38hlcDM6vbfLDaOLy+7w== + dependencies: + "@babel/types" "^7.6.3" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + "@babel/helper-annotate-as-pure@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" @@ -92,7 +122,7 @@ "@babel/traverse" "^7.4.4" "@babel/types" "^7.4.4" -"@babel/helper-create-class-features-plugin@^7.4.4", "@babel/helper-create-class-features-plugin@^7.5.5", "@babel/helper-create-class-features-plugin@^7.6.0": +"@babel/helper-create-class-features-plugin@^7.5.5", "@babel/helper-create-class-features-plugin@^7.6.0": version "7.6.0" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.6.0.tgz#769711acca889be371e9bc2eb68641d55218021f" integrity sha512-O1QWBko4fzGju6VoVvrZg0RROCVifcLxiApnGP3OWfWzvxRZFCoBD81K5ur5e3bVY2Vf/5rIJm8cqPKn8HUJng== @@ -235,7 +265,16 @@ "@babel/traverse" "^7.1.0" "@babel/types" "^7.2.0" -"@babel/helpers@^7.5.5", "@babel/helpers@^7.6.0": +"@babel/helpers@^7.4.3", "@babel/helpers@^7.6.2": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.6.2.tgz#681ffe489ea4dcc55f23ce469e58e59c1c045153" + integrity sha512-3/bAUL8zZxYs1cdX2ilEE0WobqbCmKWr/889lf2SS0PpDcpEIY8pb1CCyz0pEcX3pEb+MCbks1jIokz2xLtGTA== + dependencies: + "@babel/template" "^7.6.0" + "@babel/traverse" "^7.6.2" + "@babel/types" "^7.6.0" + +"@babel/helpers@^7.6.0": version "7.6.0" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.6.0.tgz#21961d16c6a3c3ab597325c34c465c0887d31c6e" integrity sha512-W9kao7OBleOjfXtFGgArGRX6eCP0UEcA2ZWEWNkJdRZnHhW4eEbeswbG3EwaRsnQUAEGWYgMq1HsIXuNNNy2eQ== @@ -253,11 +292,16 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.5.5", "@babel/parser@^7.6.0": +"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.6.0": version "7.6.0" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.6.0.tgz#3e05d0647432a8326cb28d0de03895ae5a57f39b" integrity sha512-+o2q111WEx4srBs7L9eJmcwi655eD8sXniLqMB93TBK9GrNzGrxDWSjiqz2hLU0Ha8MTXFIP0yd9fNdP+m43ZQ== +"@babel/parser@^7.6.3", "@babel/parser@^7.6.4": + version "7.6.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.6.4.tgz#cb9b36a7482110282d5cb6dd424ec9262b473d81" + integrity sha512-D8RHPW5qd0Vbyo3qb+YjO5nvUVRTXFLQ/FsDxJU2Nqz4uB5EnUN0ZQSEYpvTIbRuttig1XbHWU5oMeQwQSAA+A== + "@babel/plugin-proposal-async-generator-functions@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e" @@ -275,12 +319,12 @@ "@babel/helper-create-class-features-plugin" "^7.5.5" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-proposal-decorators@7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.4.4.tgz#de9b2a1a8ab0196f378e2a82f10b6e2a36f21cc0" - integrity sha512-z7MpQz3XC/iQJWXH9y+MaWcLPNSMY9RQSthrLzak8R8hCj0fuyNk+Dzi9kfNe/JxxlWQ2g7wkABbgWjW36MTcw== +"@babel/plugin-proposal-decorators@7.6.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.6.0.tgz#6659d2572a17d70abd68123e89a12a43d90aa30c" + integrity sha512-ZSyYw9trQI50sES6YxREXKu+4b7MAg6Qx2cvyDDYjP2Hpzd3FleOUwC9cqn1+za8d0A2ZU8SHujxFao956efUg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.4.4" + "@babel/helper-create-class-features-plugin" "^7.6.0" "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-decorators" "^7.2.0" @@ -308,6 +352,14 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-object-rest-spread" "^7.2.0" +"@babel/plugin-proposal-object-rest-spread@^7.4.3", "@babel/plugin-proposal-object-rest-spread@^7.6.2": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.6.2.tgz#8ffccc8f3a6545e9f78988b6bf4fe881b88e8096" + integrity sha512-LDBXlmADCsMZV1Y9OQwMc0MyGZ8Ta/zlD9N67BfQT8uYwkRswiu2hU6nJKrjrt/58aH/vqfQlR/9yId/7A2gWw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + "@babel/plugin-proposal-optional-catch-binding@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5" @@ -316,7 +368,7 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" -"@babel/plugin-proposal-unicode-property-regex@^7.4.4": +"@babel/plugin-proposal-unicode-property-regex@^7.4.0", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz#501ffd9826c0b91da22690720722ac7cb1ca9c78" integrity sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA== @@ -325,6 +377,15 @@ "@babel/helper-regex" "^7.4.4" regexpu-core "^4.5.4" +"@babel/plugin-proposal-unicode-property-regex@^7.6.2": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.6.2.tgz#05413762894f41bfe42b9a5e80919bd575dcc802" + integrity sha512-NxHETdmpeSCtiatMRYWVJo7266rrvAC3DTeG5exQBIH/fMIUK7ejDNznBbn3HQl/o9peymRRg7Yqkx6PdUXmMw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.4.4" + regexpu-core "^4.6.0" + "@babel/plugin-syntax-async-generators@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f" @@ -395,7 +456,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-async-to-generator@^7.5.0": +"@babel/plugin-transform-async-to-generator@^7.4.0", "@babel/plugin-transform-async-to-generator@^7.5.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.5.0.tgz#89a3848a0166623b5bc481164b5936ab947e887e" integrity sha512-mqvkzwIGkq0bEF1zLRRiTdjfomZJDV33AH3oQzHVGkI2VzEmXLpKKOBvEVaFZBJdN0XTyH38s9j/Kiqr68dggg== @@ -411,7 +472,15 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-block-scoping@^7.5.5", "@babel/plugin-transform-block-scoping@^7.6.0": +"@babel/plugin-transform-block-scoping@^7.4.0": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz#c13279fabf6b916661531841a23c4b7dae29646d" + integrity sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + lodash "^4.17.11" + +"@babel/plugin-transform-block-scoping@^7.6.0": version "7.6.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.0.tgz#c49e21228c4bbd4068a35667e6d951c75439b1dc" integrity sha512-tIt4E23+kw6TgL/edACZwP1OUKrjOTyMrFMLoT5IOFrfMRabCgekjqFd5o6PaAMildBu46oFkekIdMuGkkPEpA== @@ -419,7 +488,15 @@ "@babel/helper-plugin-utils" "^7.0.0" lodash "^4.17.13" -"@babel/plugin-transform-classes@^7.5.5": +"@babel/plugin-transform-block-scoping@^7.6.3": + version "7.6.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.3.tgz#6e854e51fbbaa84351b15d4ddafe342f3a5d542a" + integrity sha512-7hvrg75dubcO3ZI2rjYTzUrEuh1E9IyDEhhB6qfcooxhDA33xx2MasuLVgdxzcP6R/lipAC6n9ub9maNW6RKdw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + lodash "^4.17.13" + +"@babel/plugin-transform-classes@^7.4.3", "@babel/plugin-transform-classes@^7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.5.5.tgz#d094299d9bd680a14a2a0edae38305ad60fb4de9" integrity sha512-U2htCNK/6e9K7jGyJ++1p5XRU+LJjrwtoiVn9SzRlDT2KubcZ11OOwy3s24TjHxPgxNwonCYP7U2K51uVYCMDg== @@ -440,21 +517,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-destructuring@7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.5.0.tgz#f6c09fdfe3f94516ff074fe877db7bc9ef05855a" - integrity sha512-YbYgbd3TryYYLGyC7ZR+Tq8H/+bCmwoaxHfJHupom5ECstzbRLTch6gOQbhEY9Z4hiCNHEURgq06ykFv9JZ/QQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-destructuring@^7.5.0", "@babel/plugin-transform-destructuring@^7.6.0": +"@babel/plugin-transform-destructuring@7.6.0", "@babel/plugin-transform-destructuring@^7.4.3", "@babel/plugin-transform-destructuring@^7.6.0": version "7.6.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.6.0.tgz#44bbe08b57f4480094d57d9ffbcd96d309075ba6" integrity sha512-2bGIS5P1v4+sWTCnKNDZDxbGvEqi0ijeqM/YqHtVGrvG2y0ySgnEEhXErvE9dA0bnIzY9bIzdFK0jFA46ASIIQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-dotall-regex@^7.4.4": +"@babel/plugin-transform-dotall-regex@^7.4.3", "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz#361a148bc951444312c69446d76ed1ea8e4450c3" integrity sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg== @@ -463,7 +533,16 @@ "@babel/helper-regex" "^7.4.4" regexpu-core "^4.5.4" -"@babel/plugin-transform-duplicate-keys@^7.5.0": +"@babel/plugin-transform-dotall-regex@^7.6.2": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.6.2.tgz#44abb948b88f0199a627024e1508acaf8dc9b2f9" + integrity sha512-KGKT9aqKV+9YMZSkowzYoYEiHqgaDhGmPNZlZxX6UeHC4z30nC1J9IrZuGqbYFB1jaIGdv91ujpze0exiVK8bA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.4.4" + regexpu-core "^4.6.0" + +"@babel/plugin-transform-duplicate-keys@^7.2.0", "@babel/plugin-transform-duplicate-keys@^7.5.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz#c5dbf5106bf84cdf691222c0974c12b1df931853" integrity sha512-igcziksHizyQPlX9gfSjHkE2wmoCH3evvD2qR5w29/Dk0SMKE/eOI7f1HhBdNhR/zxJDqrgpoDTq5YSLH/XMsQ== @@ -486,14 +565,14 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-flow" "^7.2.0" -"@babel/plugin-transform-for-of@^7.4.4": +"@babel/plugin-transform-for-of@^7.4.3", "@babel/plugin-transform-for-of@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz#0267fc735e24c808ba173866c6c4d1440fc3c556" integrity sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-function-name@^7.4.4": +"@babel/plugin-transform-function-name@^7.4.3", "@babel/plugin-transform-function-name@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz#e1436116abb0610c2259094848754ac5230922ad" integrity sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA== @@ -515,6 +594,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-modules-amd@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz#82a9bce45b95441f617a24011dc89d12da7f4ee6" + integrity sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw== + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-modules-amd@^7.5.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz#ef00435d46da0a5961aa728a1d2ecff063e4fb91" @@ -524,7 +611,7 @@ "@babel/helper-plugin-utils" "^7.0.0" babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-commonjs@^7.5.0", "@babel/plugin-transform-modules-commonjs@^7.6.0": +"@babel/plugin-transform-modules-commonjs@^7.4.3", "@babel/plugin-transform-modules-commonjs@^7.6.0": version "7.6.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.6.0.tgz#39dfe957de4420445f1fcf88b68a2e4aa4515486" integrity sha512-Ma93Ix95PNSEngqomy5LSBMAQvYKVe3dy+JlVJSHEXZR5ASL9lQBedMiCyVtmTLraIDVRE3ZjTZvmXXD2Ozw3g== @@ -534,6 +621,14 @@ "@babel/helper-simple-access" "^7.1.0" babel-plugin-dynamic-import-node "^2.3.0" +"@babel/plugin-transform-modules-systemjs@^7.4.0": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.4.tgz#dc83c5665b07d6c2a7b224c00ac63659ea36a405" + integrity sha512-MSiModfILQc3/oqnG7NrP1jHaSPryO6tA2kOMmAQApz5dayPxWiHqmq4sWH2xF5LcQK56LlbKByCd8Aah/OIkQ== + dependencies: + "@babel/helper-hoist-variables" "^7.4.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-modules-systemjs@^7.5.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz#e75266a13ef94202db2a0620977756f51d52d249" @@ -551,21 +646,35 @@ "@babel/helper-module-transforms" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-named-capturing-groups-regex@^7.4.5", "@babel/plugin-transform-named-capturing-groups-regex@^7.6.0": +"@babel/plugin-transform-named-capturing-groups-regex@^7.4.2": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.4.tgz#5611d96d987dfc4a3a81c4383bb173361037d68d" + integrity sha512-Ki+Y9nXBlKfhD+LXaRS7v95TtTGYRAf9Y1rTDiE75zf8YQz4GDaWRXosMfJBXxnk88mGFjWdCRIeqDbon7spYA== + dependencies: + regexp-tree "^0.1.0" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.6.0": version "7.6.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.6.0.tgz#1e6e663097813bb4f53d42df0750cf28ad3bb3f1" integrity sha512-jem7uytlmrRl3iCAuQyw8BpB4c4LWvSpvIeXKpMb+7j84lkx4m4mYr5ErAcmN5KM7B6BqrAvRGjBIbbzqCczew== dependencies: regexp-tree "^0.1.13" -"@babel/plugin-transform-new-target@^7.4.4": +"@babel/plugin-transform-named-capturing-groups-regex@^7.6.3": + version "7.6.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.6.3.tgz#aaa6e409dd4fb2e50b6e2a91f7e3a3149dbce0cf" + integrity sha512-jTkk7/uE6H2s5w6VlMHeWuH+Pcy2lmdwFoeWCVnvIrDUnB5gQqTVI8WfmEAhF2CDEarGrknZcmSFg1+bkfCoSw== + dependencies: + regexpu-core "^4.6.0" + +"@babel/plugin-transform-new-target@^7.4.0", "@babel/plugin-transform-new-target@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz#18d120438b0cc9ee95a47f2c72bc9768fbed60a5" integrity sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-object-super@^7.5.5": +"@babel/plugin-transform-object-super@^7.2.0", "@babel/plugin-transform-object-super@^7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.5.5.tgz#c70021df834073c65eb613b8679cc4a381d1a9f9" integrity sha512-un1zJQAhSosGFBduPgN/YFNvWVpRuHKU7IHBglLoLZsGmruJPOo6pbInneflUdmq7YvSVqhpPs5zdBvLnteltQ== @@ -573,7 +682,7 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-replace-supers" "^7.5.5" -"@babel/plugin-transform-parameters@^7.4.4": +"@babel/plugin-transform-parameters@^7.4.3", "@babel/plugin-transform-parameters@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz#7556cf03f318bd2719fe4c922d2d808be5571e16" integrity sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw== @@ -629,7 +738,7 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-jsx" "^7.2.0" -"@babel/plugin-transform-regenerator@^7.4.5": +"@babel/plugin-transform-regenerator@^7.4.3", "@babel/plugin-transform-regenerator@^7.4.5": version "7.4.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz#629dc82512c55cee01341fb27bdfcb210354680f" integrity sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA== @@ -643,10 +752,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-runtime@7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.5.5.tgz#a6331afbfc59189d2135b2e09474457a8e3d28bc" - integrity sha512-6Xmeidsun5rkwnGfMOp6/z9nSzWpHFNVr2Jx7kwoq4mVatQfQx5S56drBgEHF+XQbKOdIaOiMIINvp/kAwMN+w== +"@babel/plugin-transform-runtime@7.6.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.6.0.tgz#85a3cce402b28586138e368fce20ab3019b9713e" + integrity sha512-Da8tMf7uClzwUm/pnJ1S93m/aRXmoYNDD7TkHua8xBDdaAs54uZpTWvEt6NGwmoVMb9mZbntfTqmG2oSzN/7Vg== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" @@ -667,6 +776,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-spread@^7.6.2": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.6.2.tgz#fc77cf798b24b10c46e1b51b1b88c2bf661bb8dd" + integrity sha512-DpSvPFryKdK1x+EDJYCy28nmAaIMdxmhot62jAXF/o99iA33Zj2Lmcp3vDmz+MUh0LNYVPvfj5iC3feb3/+PFg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-sticky-regex@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1" @@ -675,7 +791,7 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-regex" "^7.0.0" -"@babel/plugin-transform-template-literals@^7.4.4": +"@babel/plugin-transform-template-literals@^7.2.0", "@babel/plugin-transform-template-literals@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz#9d28fea7bbce637fb7612a0750989d8321d4bcb0" integrity sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g== @@ -690,16 +806,16 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-typescript@^7.3.2": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.6.0.tgz#48d78405f1aa856ebeea7288a48a19ed8da377a6" - integrity sha512-yzw7EopOOr6saONZ3KA3lpizKnWRTe+rfBqg4AmQbSow7ik7fqmzrfIqt053osLwLE2AaTqGinLM2tl6+M/uog== +"@babel/plugin-transform-typescript@^7.6.0": + version "7.6.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.6.3.tgz#dddb50cf3b8b2ef70b22e5326e9a91f05a1db13b" + integrity sha512-aiWINBrPMSC3xTXRNM/dfmyYuPNKY/aexYqBgh0HBI5Y+WO5oRAqW/oROYeYHrF4Zw12r9rK4fMk/ZlAmqx/FQ== dependencies: "@babel/helper-create-class-features-plugin" "^7.6.0" "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-typescript" "^7.2.0" -"@babel/plugin-transform-unicode-regex@^7.4.4": +"@babel/plugin-transform-unicode-regex@^7.4.3", "@babel/plugin-transform-unicode-regex@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz#ab4634bb4f14d36728bf5978322b35587787970f" integrity sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA== @@ -708,10 +824,73 @@ "@babel/helper-regex" "^7.4.4" regexpu-core "^4.5.4" -"@babel/preset-env@7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.5.5.tgz#bc470b53acaa48df4b8db24a570d6da1fef53c9a" - integrity sha512-GMZQka/+INwsMz1A5UEql8tG015h5j/qjptpKY2gJ7giy8ohzU710YciJB5rcKsWGWHiW3RUnHib0E5/m3Tp3A== +"@babel/plugin-transform-unicode-regex@^7.6.2": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.6.2.tgz#b692aad888a7e8d8b1b214be6b9dc03d5031f698" + integrity sha512-orZI6cWlR3nk2YmYdb0gImrgCUwb5cBUwjf6Ks6dvNVvXERkwtJWOQaEOjPiu0Gu1Tq6Yq/hruCZZOOi9F34Dw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.4.4" + regexpu-core "^4.6.0" + +"@babel/preset-env@7.4.3": + version "7.4.3" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.4.3.tgz#e71e16e123dc0fbf65a52cbcbcefd072fbd02880" + integrity sha512-FYbZdV12yHdJU5Z70cEg0f6lvtpZ8jFSDakTm7WXeJbLXh4R0ztGEu/SW7G1nJ2ZvKwDhz8YrbA84eYyprmGqw== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-async-generator-functions" "^7.2.0" + "@babel/plugin-proposal-json-strings" "^7.2.0" + "@babel/plugin-proposal-object-rest-spread" "^7.4.3" + "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.0" + "@babel/plugin-syntax-async-generators" "^7.2.0" + "@babel/plugin-syntax-json-strings" "^7.2.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + "@babel/plugin-transform-arrow-functions" "^7.2.0" + "@babel/plugin-transform-async-to-generator" "^7.4.0" + "@babel/plugin-transform-block-scoped-functions" "^7.2.0" + "@babel/plugin-transform-block-scoping" "^7.4.0" + "@babel/plugin-transform-classes" "^7.4.3" + "@babel/plugin-transform-computed-properties" "^7.2.0" + "@babel/plugin-transform-destructuring" "^7.4.3" + "@babel/plugin-transform-dotall-regex" "^7.4.3" + "@babel/plugin-transform-duplicate-keys" "^7.2.0" + "@babel/plugin-transform-exponentiation-operator" "^7.2.0" + "@babel/plugin-transform-for-of" "^7.4.3" + "@babel/plugin-transform-function-name" "^7.4.3" + "@babel/plugin-transform-literals" "^7.2.0" + "@babel/plugin-transform-member-expression-literals" "^7.2.0" + "@babel/plugin-transform-modules-amd" "^7.2.0" + "@babel/plugin-transform-modules-commonjs" "^7.4.3" + "@babel/plugin-transform-modules-systemjs" "^7.4.0" + "@babel/plugin-transform-modules-umd" "^7.2.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.4.2" + "@babel/plugin-transform-new-target" "^7.4.0" + "@babel/plugin-transform-object-super" "^7.2.0" + "@babel/plugin-transform-parameters" "^7.4.3" + "@babel/plugin-transform-property-literals" "^7.2.0" + "@babel/plugin-transform-regenerator" "^7.4.3" + "@babel/plugin-transform-reserved-words" "^7.2.0" + "@babel/plugin-transform-shorthand-properties" "^7.2.0" + "@babel/plugin-transform-spread" "^7.2.0" + "@babel/plugin-transform-sticky-regex" "^7.2.0" + "@babel/plugin-transform-template-literals" "^7.2.0" + "@babel/plugin-transform-typeof-symbol" "^7.2.0" + "@babel/plugin-transform-unicode-regex" "^7.4.3" + "@babel/types" "^7.4.0" + browserslist "^4.5.2" + core-js-compat "^3.0.0" + invariant "^2.2.2" + js-levenshtein "^1.1.3" + semver "^5.5.0" + +"@babel/preset-env@7.6.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.6.0.tgz#aae4141c506100bb2bfaa4ac2a5c12b395619e50" + integrity sha512-1efzxFv/TcPsNXlRhMzRnkBFMeIqBBgzwmZwlFDw5Ubj0AGLeufxugirwZmkkX/ayi3owsSqoQ4fw8LkfK9SYg== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" @@ -729,10 +908,10 @@ "@babel/plugin-transform-arrow-functions" "^7.2.0" "@babel/plugin-transform-async-to-generator" "^7.5.0" "@babel/plugin-transform-block-scoped-functions" "^7.2.0" - "@babel/plugin-transform-block-scoping" "^7.5.5" + "@babel/plugin-transform-block-scoping" "^7.6.0" "@babel/plugin-transform-classes" "^7.5.5" "@babel/plugin-transform-computed-properties" "^7.2.0" - "@babel/plugin-transform-destructuring" "^7.5.0" + "@babel/plugin-transform-destructuring" "^7.6.0" "@babel/plugin-transform-dotall-regex" "^7.4.4" "@babel/plugin-transform-duplicate-keys" "^7.5.0" "@babel/plugin-transform-exponentiation-operator" "^7.2.0" @@ -741,10 +920,10 @@ "@babel/plugin-transform-literals" "^7.2.0" "@babel/plugin-transform-member-expression-literals" "^7.2.0" "@babel/plugin-transform-modules-amd" "^7.5.0" - "@babel/plugin-transform-modules-commonjs" "^7.5.0" + "@babel/plugin-transform-modules-commonjs" "^7.6.0" "@babel/plugin-transform-modules-systemjs" "^7.5.0" "@babel/plugin-transform-modules-umd" "^7.2.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.4.5" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.6.0" "@babel/plugin-transform-new-target" "^7.4.4" "@babel/plugin-transform-object-super" "^7.5.5" "@babel/plugin-transform-parameters" "^7.4.4" @@ -757,26 +936,26 @@ "@babel/plugin-transform-template-literals" "^7.4.4" "@babel/plugin-transform-typeof-symbol" "^7.2.0" "@babel/plugin-transform-unicode-regex" "^7.4.4" - "@babel/types" "^7.5.5" + "@babel/types" "^7.6.0" browserslist "^4.6.0" core-js-compat "^3.1.1" invariant "^2.2.2" js-levenshtein "^1.1.3" semver "^5.5.0" -"@babel/preset-env@^7.4.5": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.6.0.tgz#aae4141c506100bb2bfaa4ac2a5c12b395619e50" - integrity sha512-1efzxFv/TcPsNXlRhMzRnkBFMeIqBBgzwmZwlFDw5Ubj0AGLeufxugirwZmkkX/ayi3owsSqoQ4fw8LkfK9SYg== +"@babel/preset-env@^7.1.6": + version "7.6.3" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.6.3.tgz#9e1bf05a2e2d687036d24c40e4639dc46cef2271" + integrity sha512-CWQkn7EVnwzlOdR5NOm2+pfgSNEZmvGjOhlCHBDq0J8/EStr+G+FvPEiz9B56dR6MoiUFjXhfE4hjLoAKKJtIQ== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-proposal-async-generator-functions" "^7.2.0" "@babel/plugin-proposal-dynamic-import" "^7.5.0" "@babel/plugin-proposal-json-strings" "^7.2.0" - "@babel/plugin-proposal-object-rest-spread" "^7.5.5" + "@babel/plugin-proposal-object-rest-spread" "^7.6.2" "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-proposal-unicode-property-regex" "^7.6.2" "@babel/plugin-syntax-async-generators" "^7.2.0" "@babel/plugin-syntax-dynamic-import" "^7.2.0" "@babel/plugin-syntax-json-strings" "^7.2.0" @@ -785,11 +964,11 @@ "@babel/plugin-transform-arrow-functions" "^7.2.0" "@babel/plugin-transform-async-to-generator" "^7.5.0" "@babel/plugin-transform-block-scoped-functions" "^7.2.0" - "@babel/plugin-transform-block-scoping" "^7.6.0" + "@babel/plugin-transform-block-scoping" "^7.6.3" "@babel/plugin-transform-classes" "^7.5.5" "@babel/plugin-transform-computed-properties" "^7.2.0" "@babel/plugin-transform-destructuring" "^7.6.0" - "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.6.2" "@babel/plugin-transform-duplicate-keys" "^7.5.0" "@babel/plugin-transform-exponentiation-operator" "^7.2.0" "@babel/plugin-transform-for-of" "^7.4.4" @@ -800,7 +979,7 @@ "@babel/plugin-transform-modules-commonjs" "^7.6.0" "@babel/plugin-transform-modules-systemjs" "^7.5.0" "@babel/plugin-transform-modules-umd" "^7.2.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.6.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.6.3" "@babel/plugin-transform-new-target" "^7.4.4" "@babel/plugin-transform-object-super" "^7.5.5" "@babel/plugin-transform-parameters" "^7.4.4" @@ -808,12 +987,12 @@ "@babel/plugin-transform-regenerator" "^7.4.5" "@babel/plugin-transform-reserved-words" "^7.2.0" "@babel/plugin-transform-shorthand-properties" "^7.2.0" - "@babel/plugin-transform-spread" "^7.2.0" + "@babel/plugin-transform-spread" "^7.6.2" "@babel/plugin-transform-sticky-regex" "^7.2.0" "@babel/plugin-transform-template-literals" "^7.4.4" "@babel/plugin-transform-typeof-symbol" "^7.2.0" - "@babel/plugin-transform-unicode-regex" "^7.4.4" - "@babel/types" "^7.6.0" + "@babel/plugin-transform-unicode-regex" "^7.6.2" + "@babel/types" "^7.6.3" browserslist "^4.6.0" core-js-compat "^3.1.1" invariant "^2.2.2" @@ -831,22 +1010,27 @@ "@babel/plugin-transform-react-jsx-self" "^7.0.0" "@babel/plugin-transform-react-jsx-source" "^7.0.0" -"@babel/preset-typescript@7.3.3": - version "7.3.3" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.3.3.tgz#88669911053fa16b2b276ea2ede2ca603b3f307a" - integrity sha512-mzMVuIP4lqtn4du2ynEfdO0+RYcslwrZiJHXu4MGaC1ctJiW2fyaeDrtjJGs7R/KebZ1sgowcIoWf4uRpEfKEg== +"@babel/preset-typescript@7.6.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.6.0.tgz#25768cb8830280baf47c45ab1a519a9977498c98" + integrity sha512-4xKw3tTcCm0qApyT6PqM9qniseCE79xGHiUnNdKGdxNsGUc2X7WwZybqIpnTmoukg3nhPceI5KPNzNqLNeIJww== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-transform-typescript" "^7.3.2" + "@babel/plugin-transform-typescript" "^7.6.0" -"@babel/runtime@7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.5.5.tgz#74fba56d35efbeca444091c7850ccd494fd2f132" - integrity sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ== +"@babel/register@7.4.3": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.4.4.tgz#370a68ba36f08f015a8b35d4864176c6b65d7a23" + integrity sha512-sn51H88GRa00+ZoMqCVgOphmswG4b7mhf9VOB0LUBAieykq2GnRFerlN+JQkO/ntT7wz4jaHNSRPg9IdMPEUkA== dependencies: - regenerator-runtime "^0.13.2" + core-js "^3.0.0" + find-cache-dir "^2.0.0" + lodash "^4.17.11" + mkdirp "^0.5.1" + pirates "^4.0.0" + source-map-support "^0.5.9" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.2", "@babel/runtime@^7.4.5": +"@babel/runtime@7.6.0", "@babel/runtime@^7.0.0", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.2", "@babel/runtime@^7.4.5": version "7.6.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.6.0.tgz#4fc1d642a9fd0299754e8b5de62c631cf5568205" integrity sha512-89eSBLJsxNxOERC0Op4vd+0Bqm6wRMqMbFtV3i0/fbaWw/mJ8Q3eBvgX0G4SyrOOLCtbu98HspF8o09MRT+KzQ== @@ -862,7 +1046,22 @@ "@babel/parser" "^7.6.0" "@babel/types" "^7.6.0" -"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.4", "@babel/traverse@^7.5.5", "@babel/traverse@^7.6.0": +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0": + version "7.2.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.2.3.tgz#7ff50cefa9c7c0bd2d81231fdac122f3957748d8" + integrity sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.2.2" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + "@babel/parser" "^7.2.3" + "@babel/types" "^7.2.2" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.10" + +"@babel/traverse@^7.4.3", "@babel/traverse@^7.4.4", "@babel/traverse@^7.5.5", "@babel/traverse@^7.6.0": version "7.6.0" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.6.0.tgz#389391d510f79be7ce2ddd6717be66d3fed4b516" integrity sha512-93t52SaOBgml/xY74lsmt7xOR4ufYvhb5c5qiM6lu4J/dWGMAfAh6eKw4PjLes6DI6nQgearoxnFJk60YchpvQ== @@ -877,6 +1076,21 @@ globals "^11.1.0" lodash "^4.17.13" +"@babel/traverse@^7.6.2", "@babel/traverse@^7.6.3": + version "7.6.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.6.3.tgz#66d7dba146b086703c0fb10dd588b7364cec47f9" + integrity sha512-unn7P4LGsijIxaAJo/wpoU11zN+2IaClkQAxcJWBNCMS6cmVh802IyLHNkAjQ0iYnRS3nnxk5O3fuXW28IMxTw== + dependencies: + "@babel/code-frame" "^7.5.5" + "@babel/generator" "^7.6.3" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/parser" "^7.6.3" + "@babel/types" "^7.6.3" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + "@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.5.5", "@babel/types@^7.6.0": version "7.6.1" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.6.1.tgz#53abf3308add3ac2a2884d539151c57c4b3ac648" @@ -886,6 +1100,15 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" +"@babel/types@^7.6.3": + version "7.6.3" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.6.3.tgz#3f07d96f854f98e2fbd45c64b0cb942d11e8ba09" + integrity sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA== + dependencies: + esutils "^2.0.2" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + "@blockone/eslint-config-blockone@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@blockone/eslint-config-blockone/-/eslint-config-blockone-1.1.1.tgz#44f81571c0051bdb356d10fb3676d866ddc18fc9" @@ -1119,7 +1342,7 @@ source-map "^0.6.1" write-file-atomic "2.4.1" -"@jest/types@^24.8.0", "@jest/types@^24.9.0": +"@jest/types@^24.7.0", "@jest/types@^24.9.0": version "24.9.0" resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== @@ -1161,10 +1384,10 @@ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-4.2.0.tgz#310ec0775de808a6a2e4fd4268c245fd734c1165" integrity sha512-U9m870Kqm0ko8beHawRXLGLvSi/ZMrl89gJ5BNcT452fAjtF2p4uRzXkdzvGJJJYBgx7BmqlDjBN/eCp5AAX2w== -"@svgr/babel-plugin-svg-dynamic-title@^4.3.1": - version "4.3.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.3.1.tgz#646c2f5b5770c2fe318d6e51492344c3d62ddb63" - integrity sha512-p6z6JJroP989jHWcuraeWpzdejehTmLUpyC9smhTBWyPN0VVGe2phbYxpPTV7Vh8XzmFrcG55idrnfWn/2oQEw== +"@svgr/babel-plugin-svg-dynamic-title@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.3.3.tgz#2cdedd747e5b1b29ed4c241e46256aac8110dd93" + integrity sha512-w3Be6xUNdwgParsvxkkeZb545VhXEwjGMwExMVBIdPQJeyMQHqm9Msnb2a1teHBqUYL66qtwfhNkbj1iarCG7w== "@svgr/babel-plugin-svg-em-dimensions@^4.2.0": version "4.2.0" @@ -1181,26 +1404,26 @@ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-4.2.0.tgz#5f1e2f886b2c85c67e76da42f0f6be1b1767b697" integrity sha512-hYfYuZhQPCBVotABsXKSCfel2slf/yvJY8heTVX1PCTaq/IgASq1IyxPPKJ0chWREEKewIU/JMSsIGBtK1KKxw== -"@svgr/babel-preset@^4.3.1": - version "4.3.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-4.3.1.tgz#62ffcb85d756580e8ce608e9d2ac3b9063be9e28" - integrity sha512-rPFKLmyhlh6oeBv3j2vEAj2nd2QbWqpoJLKzBLjwQVt+d9aeXajVaPNEqrES2spjXKR4OxfgSs7U0NtmAEkr0Q== +"@svgr/babel-preset@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-4.3.3.tgz#a75d8c2f202ac0e5774e6bfc165d028b39a1316c" + integrity sha512-6PG80tdz4eAlYUN3g5GZiUjg2FMcp+Wn6rtnz5WJG9ITGEF1pmFdzq02597Hn0OmnQuCVaBYQE1OVFAnwOl+0A== dependencies: "@svgr/babel-plugin-add-jsx-attribute" "^4.2.0" "@svgr/babel-plugin-remove-jsx-attribute" "^4.2.0" "@svgr/babel-plugin-remove-jsx-empty-expression" "^4.2.0" "@svgr/babel-plugin-replace-jsx-attribute-value" "^4.2.0" - "@svgr/babel-plugin-svg-dynamic-title" "^4.3.1" + "@svgr/babel-plugin-svg-dynamic-title" "^4.3.3" "@svgr/babel-plugin-svg-em-dimensions" "^4.2.0" "@svgr/babel-plugin-transform-react-native-svg" "^4.2.0" "@svgr/babel-plugin-transform-svg-component" "^4.2.0" -"@svgr/core@^4.3.2": - version "4.3.2" - resolved "https://registry.yarnpkg.com/@svgr/core/-/core-4.3.2.tgz#939c89be670ad79b762f4c063f213f0e02535f2e" - integrity sha512-N+tP5CLFd1hP9RpO83QJPZY3NL8AtrdqNbuhRgBkjE/49RnMrrRsFm1wY8pueUfAGvzn6tSXUq29o6ah8RuR5w== +"@svgr/core@^4.1.0": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-4.3.3.tgz#b37b89d5b757dc66e8c74156d00c368338d24293" + integrity sha512-qNuGF1QON1626UCaZamWt5yedpgOytvLj5BQZe2j1k1B8DUG4OyugZyfEwBeXozCUwhLEpsrgPrE+eCu4fY17w== dependencies: - "@svgr/plugin-jsx" "^4.3.2" + "@svgr/plugin-jsx" "^4.3.3" camelcase "^5.3.1" cosmiconfig "^5.2.1" @@ -1211,17 +1434,17 @@ dependencies: "@babel/types" "^7.4.4" -"@svgr/plugin-jsx@^4.3.2": - version "4.3.2" - resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-4.3.2.tgz#ce9ddafc8cdd74da884c9f7af014afcf37f93d3c" - integrity sha512-+1GW32RvmNmCsOkMoclA/TppNjHPLMnNZG3/Ecscxawp051XJ2MkO09Hn11VcotdC2EPrDfT8pELGRo+kbZ1Eg== +"@svgr/plugin-jsx@^4.1.0", "@svgr/plugin-jsx@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-4.3.3.tgz#e2ba913dbdfbe85252a34db101abc7ebd50992fa" + integrity sha512-cLOCSpNWQnDB1/v+SUENHH7a0XY09bfuMKdq9+gYvtuwzC2rU4I0wKGFEp1i24holdQdwodCtDQdFtJiTCWc+w== dependencies: "@babel/core" "^7.4.5" - "@svgr/babel-preset" "^4.3.1" + "@svgr/babel-preset" "^4.3.3" "@svgr/hast-util-to-babel-ast" "^4.3.2" svg-parser "^2.0.0" -"@svgr/plugin-svgo@^4.3.1": +"@svgr/plugin-svgo@^4.0.3": version "4.3.1" resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-4.3.1.tgz#daac0a3d872e3f55935c6588dd370336865e9e32" integrity sha512-PrMtEDUWjX3Ea65JsVCwTIXuSqa3CG9px+DluF1/eo9mlDrgrtFE7NE/DjdhjJgSM9wenlVBzkzneSIUgfUI/w== @@ -1230,19 +1453,19 @@ merge-deep "^3.0.2" svgo "^1.2.2" -"@svgr/webpack@4.3.2": - version "4.3.2" - resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-4.3.2.tgz#319d4471c8f3d5c3af35059274834d9b5b8fb956" - integrity sha512-F3VE5OvyOWBEd2bF7BdtFRyI6E9it3mN7teDw0JQTlVtc4HZEYiiLSl+Uf9Uub6IYHVGc+qIrxxDyeedkQru2w== +"@svgr/webpack@4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-4.1.0.tgz#20c88f32f731c7b1d4711045b2b993887d731c28" + integrity sha512-d09ehQWqLMywP/PT/5JvXwPskPK9QCXUjiSkAHehreB381qExXf5JFCBWhfEyNonRbkIneCeYM99w+Ud48YIQQ== dependencies: - "@babel/core" "^7.4.5" + "@babel/core" "^7.1.6" "@babel/plugin-transform-react-constant-elements" "^7.0.0" - "@babel/preset-env" "^7.4.5" + "@babel/preset-env" "^7.1.6" "@babel/preset-react" "^7.0.0" - "@svgr/core" "^4.3.2" - "@svgr/plugin-jsx" "^4.3.2" - "@svgr/plugin-svgo" "^4.3.1" - loader-utils "^1.2.3" + "@svgr/core" "^4.1.0" + "@svgr/plugin-jsx" "^4.1.0" + "@svgr/plugin-svgo" "^4.0.3" + loader-utils "^1.1.0" "@types/babel__core@^7.1.0": version "7.1.3" @@ -1277,11 +1500,6 @@ dependencies: "@babel/types" "^7.3.0" -"@types/eslint-visitor-keys@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" - integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== - "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": version "2.0.1" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" @@ -1302,11 +1520,6 @@ "@types/istanbul-lib-coverage" "*" "@types/istanbul-lib-report" "*" -"@types/json-schema@^7.0.3": - version "7.0.3" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.3.tgz#bdfd69d61e464dcc81b25159c270d75a73c1a636" - integrity sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A== - "@types/q@^1.5.1": version "1.5.2" resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" @@ -1329,40 +1542,29 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@1.13.0": - version "1.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.13.0.tgz#22fed9b16ddfeb402fd7bcde56307820f6ebc49f" - integrity sha512-WQHCozMnuNADiqMtsNzp96FNox5sOVpU8Xt4meaT4em8lOG1SrOv92/mUbEHQVh90sldKSfcOc/I0FOb/14G1g== +"@typescript-eslint/eslint-plugin@1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.6.0.tgz#a5ff3128c692393fb16efa403ec7c8a5593dab0f" + integrity sha512-U224c29E2lo861TQZs6GSmyC0OYeRNg6bE9UVIiFBxN2MlA0nq2dCrgIVyyRbC05UOcrgf2Wk/CF2gGOPQKUSQ== dependencies: - "@typescript-eslint/experimental-utils" "1.13.0" - eslint-utils "^1.3.1" - functional-red-black-tree "^1.0.1" - regexpp "^2.0.1" + "@typescript-eslint/parser" "1.6.0" + "@typescript-eslint/typescript-estree" "1.6.0" + requireindex "^1.2.0" tsutils "^3.7.0" -"@typescript-eslint/experimental-utils@1.13.0": - version "1.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-1.13.0.tgz#b08c60d780c0067de2fb44b04b432f540138301e" - integrity sha512-zmpS6SyqG4ZF64ffaJ6uah6tWWWgZ8m+c54XXgwFtUv0jNz8aJAVx8chMCvnk7yl6xwn8d+d96+tWp7fXzTuDg== +"@typescript-eslint/parser@1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-1.6.0.tgz#f01189c8b90848e3b8e45a6cdad27870529d1804" + integrity sha512-VB9xmSbfafI+/kI4gUK3PfrkGmrJQfh0N4EScT1gZXSZyUxpsBirPL99EWZg9MmPG0pzq/gMtgkk7/rAHj4aQw== dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "1.13.0" + "@typescript-eslint/typescript-estree" "1.6.0" eslint-scope "^4.0.0" - -"@typescript-eslint/parser@1.13.0": - version "1.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-1.13.0.tgz#61ac7811ea52791c47dc9fd4dd4a184fae9ac355" - integrity sha512-ITMBs52PCPgLb2nGPoeT4iU3HdQZHcPaZVw+7CsFagRJHUhyeTgorEwHXhFf3e7Evzi8oujKNpHc8TONth8AdQ== - dependencies: - "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "1.13.0" - "@typescript-eslint/typescript-estree" "1.13.0" eslint-visitor-keys "^1.0.0" -"@typescript-eslint/typescript-estree@1.13.0": - version "1.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-1.13.0.tgz#8140f17d0f60c03619798f1d628b8434913dc32e" - integrity sha512-b5rCmd2e6DCC6tCTN9GSUAuxdYwCM/k/2wdjHGrIRGPSJotWMCe/dGpi66u42bhuh8q3QBzqM4TMA1GUUCJvdw== +"@typescript-eslint/typescript-estree@1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-1.6.0.tgz#6cf43a07fee08b8eb52e4513b428c8cdc9751ef0" + integrity sha512-A4CanUwfaG4oXobD5y7EXbsOHjCwn8tj1RDd820etpPAjH+Icjc2K9e/DQM1Hac5zH2BSy+u6bjvvF2wwREvYA== dependencies: lodash.unescape "4.0.1" semver "5.5.0" @@ -1541,6 +1743,11 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" +acorn-dynamic-import@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948" + integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw== + acorn-globals@^4.1.0, acorn-globals@^4.3.0: version "4.3.4" resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" @@ -1549,7 +1756,7 @@ acorn-globals@^4.1.0, acorn-globals@^4.3.0: acorn "^6.0.1" acorn-walk "^6.0.1" -acorn-jsx@^5.0.0, acorn-jsx@^5.0.2: +acorn-jsx@^5.0.0: version "5.0.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.2.tgz#84b68ea44b373c4f8686023a551f61a21b7c4a4f" integrity sha512-tiNTrP1MP0QrChmD2DdupCr6HWSFeKVw5d/dHTu4Y7rkAkRhU/Dt7dphAfIUyxtHpl/eBVip5uTNSpQJHylpAw== @@ -1564,48 +1771,27 @@ acorn@^5.5.3: resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== -acorn@^6.0.1, acorn@^6.0.4, acorn@^6.0.7, acorn@^6.2.1: +acorn@^6.0.1, acorn@^6.0.4, acorn@^6.0.5, acorn@^6.0.7: version "6.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.3.0.tgz#0087509119ffa4fc0a0041d1e93a417e68cb856e" integrity sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA== -acorn@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.0.0.tgz#26b8d1cd9a9b700350b71c0905546f64d1284e7a" - integrity sha512-PaF/MduxijYYt7unVGRuds1vBC9bFxbNf+VWqhOClfdgy7RlVkQqt610ig1/yxTgsDIfW1cWDel5EBbOy3jdtQ== - -address@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/address/-/address-1.1.0.tgz#ef8e047847fcd2c5b6f50c16965f924fd99fe709" - integrity sha512-4diPfzWbLEIElVG4AnqP+00SULlPzNuyJFNnmMrLgyaxG6tZXJ1sn7mjBu4fHrJE+Yp/jgylOweJn2xsLMFggQ== - -address@^1.0.1: +address@1.1.2, address@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== -adjust-sourcemap-loader@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-2.0.0.tgz#6471143af75ec02334b219f54bc7970c52fb29a4" - integrity sha512-4hFsTsn58+YjrU9qKzML2JSSDqKvN8mUGQ0nNIrfPi8hmIONT4L3uUaT6MKdMsZ9AjsU6D2xDkZxCkbQPxChrA== - dependencies: - assert "1.4.1" - camelcase "5.0.0" - loader-utils "1.2.3" - object-path "0.11.4" - regex-parser "2.2.10" - ajv-errors@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: +ajv-keywords@^3.1.0: version "3.4.1" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5, ajv@^6.9.1: +ajv@^6.1.0, ajv@^6.10.2, ajv@^6.5.5, ajv@^6.9.1: version "6.10.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== @@ -1703,11 +1889,6 @@ aria-query@^3.0.0: ast-types-flow "0.0.7" commander "^2.11.0" -arity-n@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/arity-n/-/arity-n-1.0.4.tgz#d9e76b11733e08569c0847ae7b39b2860b30b745" - integrity sha1-2edrEXM+CFacCEeuezmyhgswt0U= - arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" @@ -1728,11 +1909,6 @@ array-equal@^1.0.0: resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= -array-filter@~0.0.0: - version "0.0.1" - resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" - integrity sha1-fajPLiZijtcygDWB/SH2fKzS7uw= - array-find-index@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" @@ -1756,16 +1932,6 @@ array-includes@^3.0.3: define-properties "^1.1.2" es-abstract "^1.7.0" -array-map@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" - integrity sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI= - -array-reduce@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" - integrity sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys= - array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -1814,13 +1980,6 @@ assert-plus@1.0.0, assert-plus@^1.0.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= -assert@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" - integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE= - dependencies: - util "0.10.3" - assert@^1.1.1: version "1.5.0" resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" @@ -1874,18 +2033,18 @@ atob@^2.1.1: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@^9.6.1: - version "9.6.1" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.6.1.tgz#51967a02d2d2300bb01866c1611ec8348d355a47" - integrity sha512-aVo5WxR3VyvyJxcJC3h4FKfwCQvQWb1tSI5VHNibddCVWrcD1NvlxEweg3TSgiPztMnWfjpy2FURKA2kvDE+Tw== +autoprefixer@^9.4.9: + version "9.6.5" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.6.5.tgz#98f4afe7e93cccf323287515d426019619775e5e" + integrity sha512-rGd50YV8LgwFQ2WQp4XzOTG69u1qQsXn0amww7tjqV5jJuNazgFKYEVItEBngyyvVITKOg20zr2V+9VsrXJQ2g== dependencies: - browserslist "^4.6.3" - caniuse-lite "^1.0.30000980" + browserslist "^4.7.0" + caniuse-lite "^1.0.30000999" chalk "^2.4.2" normalize-range "^0.1.2" num2fraction "^1.2.2" - postcss "^7.0.17" - postcss-value-parser "^4.0.0" + postcss "^7.0.18" + postcss-value-parser "^4.0.2" aws-sign2@~0.7.0: version "0.7.0" @@ -1913,10 +2072,10 @@ babel-code-frame@^6.22.0: esutils "^2.0.2" js-tokens "^3.0.2" -babel-eslint@10.0.2: - version "10.0.2" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.2.tgz#182d5ac204579ff0881684b040560fdcc1558456" - integrity sha512-UdsurWPtgiPgpJ06ryUnuaSXC2s0WoSZnQmEpbAH65XZSdwowgN5MvyP7e88nW07FYXv72erVtpBkxyDVKhH1Q== +babel-eslint@10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.1.tgz#919681dc099614cd7d31d45c8908695092a1faed" + integrity sha512-z7OT1iNV+TjOwHNLLyJk+HN+YVWX+CLE6fPD2SymJZOZQBs+QIexFjhm4keGTm8MW9xr4EC9Q0PbaLB24V5GoQ== dependencies: "@babel/code-frame" "^7.0.0" "@babel/parser" "^7.0.0" @@ -1957,15 +2116,15 @@ babel-jest@^24.8.0, babel-jest@^24.9.0: chalk "^2.4.2" slash "^2.0.0" -babel-loader@8.0.6: - version "8.0.6" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.6.tgz#e33bdb6f362b03f4bb141a0c21ab87c501b70dfb" - integrity sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw== +babel-loader@8.0.5: + version "8.0.5" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.5.tgz#225322d7509c2157655840bba52e46b6c2f2fe33" + integrity sha512-NTnHnVRd2JnRqPC0vW+iOQWU5pchDbYXsG2E6DMXEpMfUcQKclF9gmf3G3ZMhzG7IG9ji4coL0cm+FxeWxDpnw== dependencies: find-cache-dir "^2.0.0" loader-utils "^1.0.2" mkdirp "^0.5.1" - pify "^4.0.1" + util.promisify "^1.0.0" babel-plugin-dynamic-import-node@2.3.0, babel-plugin-dynamic-import-node@^2.3.0: version "2.3.0" @@ -2000,10 +2159,10 @@ babel-plugin-macros@2.6.1: cosmiconfig "^5.2.0" resolve "^1.10.0" -babel-plugin-named-asset-import@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.3.tgz#9ba2f3ac4dc78b042651654f07e847adfe50667c" - integrity sha512-1XDRysF4894BUdMChT+2HHbtJYiO7zx5Be7U6bT8dISy7OdyETMGIAQBMPQCsY1YRf0xcubwnKKaDr5bk15JTA== +babel-plugin-named-asset-import@^0.3.2: + version "0.3.4" + resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.4.tgz#4a8fc30e9a3e2b1f5ed36883386ab2d84e1089bd" + integrity sha512-S6d+tEzc5Af1tKIMbsf2QirCcPdQ+mKUCY2H1nJj1DyA1ShwpsoxEOAwbWsG5gcXNV/olpvQd9vrUWRx4bnhpw== "babel-plugin-styled-components@>= 1": version "1.10.6" @@ -2046,24 +2205,24 @@ babel-preset-jest@^24.9.0: "@babel/plugin-syntax-object-rest-spread" "^7.0.0" babel-plugin-jest-hoist "^24.9.0" -babel-preset-react-app@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-9.0.1.tgz#16a2cf84363045b530b6a03460527a5c6eac42ba" - integrity sha512-v7MeY+QxdBhM9oU5uOQCIHLsErYkEbbjctXsb10II+KAnttbe0rvprvP785dRxfa9dI4ZbsGXsRU07Qdi5BtOw== +babel-preset-react-app@^9.0.0: + version "9.0.2" + resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-9.0.2.tgz#247d37e883d6d6f4b4691e5f23711bb2dd80567d" + integrity sha512-aXD+CTH8Chn8sNJr4tO/trWKqe5sSE4hdO76j9fhVezJSzmpWYWUSc5JoPmdSxADwef5kQFNGKXd433vvkd2VQ== dependencies: - "@babel/core" "7.5.5" + "@babel/core" "7.6.0" "@babel/plugin-proposal-class-properties" "7.5.5" - "@babel/plugin-proposal-decorators" "7.4.4" + "@babel/plugin-proposal-decorators" "7.6.0" "@babel/plugin-proposal-object-rest-spread" "7.5.5" "@babel/plugin-syntax-dynamic-import" "7.2.0" - "@babel/plugin-transform-destructuring" "7.5.0" + "@babel/plugin-transform-destructuring" "7.6.0" "@babel/plugin-transform-flow-strip-types" "7.4.4" "@babel/plugin-transform-react-display-name" "7.2.0" - "@babel/plugin-transform-runtime" "7.5.5" - "@babel/preset-env" "7.5.5" + "@babel/plugin-transform-runtime" "7.6.0" + "@babel/preset-env" "7.6.0" "@babel/preset-react" "7.0.0" - "@babel/preset-typescript" "7.3.3" - "@babel/runtime" "7.5.5" + "@babel/preset-typescript" "7.6.0" + "@babel/runtime" "7.6.0" babel-plugin-dynamic-import-node "2.3.0" babel-plugin-macros "2.6.1" babel-plugin-transform-react-remove-prop-types "0.4.24" @@ -2098,6 +2257,11 @@ base64-js@^1.0.2: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== +base64url@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/base64url/-/base64url-2.0.0.tgz#eac16e03ea1438eff9423d69baa36262ed1f70bb" + integrity sha1-6sFuA+oUOO/5Qj1puqNiYu0fcLs= + base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" @@ -2133,6 +2297,11 @@ bigi@^1.1.0, bigi@^1.4.2: resolved "https://registry.yarnpkg.com/bigi/-/bigi-1.4.2.tgz#9c665a95f88b8b08fc05cfd731f561859d725825" integrity sha1-nGZalfiLiwj8Bc/XMfVhhZ1yWCU= +bignumber.js@^4.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-4.1.0.tgz#db6f14067c140bd46624815a7916c92d9b6c24b1" + integrity sha512-eJzYkFYy9L4JzXsbymsFn3p54D+llV27oTQ+ziJG7WFRheJcNZilgVXMG0LoZtlQSKBsJdWtLFqOD0u+U0jZKA== + binary-extensions@^1.0.0: version "1.13.1" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" @@ -2288,16 +2457,7 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@4.6.6: - version "4.6.6" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.6.6.tgz#6e4bf467cde520bc9dbdf3747dafa03531cec453" - integrity sha512-D2Nk3W9JL9Fp/gIcWei8LrERCS+eXu9AM5cfXA8WEZ84lFks+ARnZ0q/R69m2SV3Wjma83QDDPxsNKXUwdIsyA== - dependencies: - caniuse-lite "^1.0.30000984" - electron-to-chromium "^1.3.191" - node-releases "^1.1.25" - -browserslist@^4.0.0, browserslist@^4.1.1, browserslist@^4.6.0, browserslist@^4.6.3, browserslist@^4.6.4, browserslist@^4.6.6: +browserslist@4.7.0, browserslist@^4.0.0, browserslist@^4.1.1, browserslist@^4.6.0, browserslist@^4.6.6: version "4.7.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.7.0.tgz#9ee89225ffc07db03409f2fee524dc8227458a17" integrity sha512-9rGNDtnj+HaahxiVV38Gn8n8Lr8REKsel68v1sPFfIGEK6uSXTY3h9acgiT1dZVtOOUtifo/Dn8daDQ5dUgVsA== @@ -2306,6 +2466,15 @@ browserslist@^4.0.0, browserslist@^4.1.1, browserslist@^4.6.0, browserslist@^4.6 electron-to-chromium "^1.3.247" node-releases "^1.1.29" +browserslist@^4.4.2, browserslist@^4.5.2, browserslist@^4.7.0, browserslist@^4.7.1: + version "4.7.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.7.1.tgz#bd400d1aea56538580e8c4d5f1c54ac11b5ab468" + integrity sha512-QtULFqKIAtiyNx7NhZ/p4rB8m3xDozVo/pi5VgTlADLF2tNigz/QH+v0m5qhn7XfHT7u+607NcCNOnC0HZAlMg== + dependencies: + caniuse-lite "^1.0.30000999" + electron-to-chromium "^1.3.284" + node-releases "^1.1.36" + bs58@4.0.1, bs58@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" @@ -2366,6 +2535,26 @@ bytes@3.1.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== +cacache@^11.0.2: + version "11.3.3" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.3.tgz#8bd29df8c6a718a6ebd2d010da4d7972ae3bbadc" + integrity sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + cacache@^12.0.2: version "12.0.3" resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390" @@ -2447,11 +2636,6 @@ camelcase-keys@^2.0.0: camelcase "^2.0.0" map-obj "^1.0.0" -camelcase@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" - integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== - camelcase@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" @@ -2487,11 +2671,16 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000980, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30000984, caniuse-lite@^1.0.30000989: +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000989: version "1.0.30000989" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000989.tgz#b9193e293ccf7e4426c5245134b8f2a56c0ac4b9" integrity sha512-vrMcvSuMz16YY6GSVZ0dWDTJP8jqk3iFQ/Aq5iqblPwxSVVZI+zxDyTX0VPqtQsDnfdrBDcsmhgTEOh5R8Lbpw== +caniuse-lite@^1.0.30000939, caniuse-lite@^1.0.30000999: + version "1.0.30001002" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001002.tgz#ba999a737b1abd5bf0fd47efe43a09b9cadbe9b0" + integrity sha512-pRuxPE8wdrWmVPKcDmJJiGBxr6lFJq4ivdSeo9FTmGj5Rb8NX3Mby2pARG57MXF15hYAhZ0nHV5XxT2ig4bz3g== + capture-exit@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" @@ -2509,6 +2698,16 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= +cbor@3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/cbor/-/cbor-3.0.3.tgz#7caaa24f481996d246ef428cecdde053073a903e" + integrity sha512-+UY2FhD8w4GCp8QzP2a3eW0NRTFh2BaXn6t/sVYtGzKJAl0LL8nwma7qzIwmojq7jMF94X5DVfBUeIj8BBHBqA== + dependencies: + bignumber.js "^4.0" + commander "^2.11" + json-text-sequence "^0.1" + nofilter "^0.0.3" + chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -2558,7 +2757,7 @@ chownr@^1.1.1: resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.2.tgz#a18f1e0b269c8a6a5d3c86eb298beb14c3dd7bf6" integrity sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A== -chrome-trace-event@^1.0.2: +chrome-trace-event@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== @@ -2650,14 +2849,15 @@ clone-deep@^0.2.4: lazy-cache "^1.0.3" shallow-clone "^0.1.2" -clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== +clone-deep@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-2.0.2.tgz#00db3a1e173656730d1188c3d6aced6d7ea97713" + integrity sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ== dependencies: + for-own "^1.0.0" is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" + kind-of "^6.0.0" + shallow-clone "^1.0.0" co@^4.6.0: version "4.6.0" @@ -2731,16 +2931,21 @@ commander@2.17.x: resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== -commander@^2.11.0, commander@^2.20.0, commander@~2.20.0: +commander@^2.11, commander@^2.20.0, commander@~2.20.0: version "2.20.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== -commander@~2.19.0: +commander@^2.11.0, commander@~2.19.0: version "2.19.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== +commander@^2.19.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + common-tags@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" @@ -2756,13 +2961,6 @@ component-emitter@^1.2.1: resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== -compose-function@3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/compose-function/-/compose-function-3.0.3.tgz#9ed675f13cc54501d30950a486ff6a7ba3ab185f" - integrity sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8= - dependencies: - arity-n "^1.0.4" - compressible@~2.0.16: version "2.0.17" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1" @@ -2798,11 +2996,16 @@ concat-stream@^1.5.0: readable-stream "^2.2.2" typedarray "^0.0.6" -confusing-browser-globals@^1.0.5, confusing-browser-globals@^1.0.8: +confusing-browser-globals@^1.0.5: version "1.0.8" resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.8.tgz#93ffec1f82a6e2bf2bc36769cc3a92fa20e502f3" integrity sha512-lI7asCibVJ6Qd3FGU7mu4sfG4try4LX3+GVS+Gv8UlrEf2AeW57piecapnog2UHZSbcX/P/1UDWVaTsblowlZg== +confusing-browser-globals@^1.0.7: + version "1.0.9" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" + integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw== + connect-history-api-fallback@^1.3.0: version "1.6.0" resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" @@ -2842,18 +3045,13 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -convert-source-map@1.6.0, convert-source-map@^1.1.0, convert-source-map@^1.4.0: +convert-source-map@^1.1.0, convert-source-map@^1.4.0: version "1.6.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== dependencies: safe-buffer "~5.1.1" -convert-source-map@^0.3.3: - version "0.3.5" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" - integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= - cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" @@ -2881,6 +3079,14 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= +core-js-compat@^3.0.0: + version "3.3.3" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.3.3.tgz#82642808cf484a35292b2f8e83ef9376884e760f" + integrity sha512-GNZkENsx5pMnS7Inwv7ZO/s3B68a9WU5kIjxqrD/tkNR8mtfXJRk8fAKRlbvWZSGPc59/TkiOBDYl5Cb65pTVA== + dependencies: + browserslist "^4.7.1" + semver "^6.3.0" + core-js-compat@^3.1.1: version "3.2.1" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.2.1.tgz#0cbdbc2e386e8e00d3b85dc81c848effec5b8150" @@ -2889,16 +3095,21 @@ core-js-compat@^3.1.1: browserslist "^4.6.6" semver "^6.3.0" -core-js@3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.1.4.tgz#3a2837fc48e582e1ae25907afcd6cf03b0cc7a07" - integrity sha512-YNZN8lt82XIMLnLirj9MhKDFZHalwzzrL9YLt6eb0T5D0EDl4IQ90IGkua8mHbnxNrkj1d8hbdizMc0Qmg1WnQ== +core-js@3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.2.1.tgz#cd41f38534da6cc59f7db050fe67307de9868b09" + integrity sha512-Qa5XSVefSVPRxy2XfUC13WbvqkxhkwB3ve+pgCQveNgYzbM/UxZeu1dcOX/xr4UmfUd+muuvsaxilQzCyUurMw== core-js@^2.4.0: version "2.6.9" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2" integrity sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A== +core-js@^3.0.0: + version "3.3.3" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.3.3.tgz#b7048d3c6c1a52b5fe55a729c1d4ccdffe0891bb" + integrity sha512-0xmD4vUJRY8nfLyV9zcpC17FtSie5STXzw+HyYw2t8IIvmDnbq7RJUULECCo+NstpJtwK9kx8S+898iyqgeUow== + core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -3098,17 +3309,7 @@ css-what@2.1, css-what@^2.1.2: resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== -css@^2.0.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" - integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== - dependencies: - inherits "^2.0.3" - source-map "^0.6.1" - source-map-resolve "^0.5.2" - urix "^0.1.0" - -cssdb@^4.4.0: +cssdb@^4.3.0: version "4.4.0" resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== @@ -3181,7 +3382,7 @@ cssnano-util-same-parent@^4.0.0: resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== -cssnano@^4.1.10: +cssnano@^4.1.0: version "4.1.10" resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== @@ -3222,14 +3423,6 @@ cyclist@^1.0.1: resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= -d@1, d@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" - integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== - dependencies: - es5-ext "^0.10.50" - type "^1.0.1" - damerau-levenshtein@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.5.tgz#780cf7144eb2e8dbd1c3bb83ae31100ccc31a414" @@ -3375,6 +3568,11 @@ delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= +delimit-stream@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/delimit-stream/-/delimit-stream-0.1.0.tgz#9b8319477c0e5f8aeb3ce357ae305fc25ea1cd2b" + integrity sha1-m4MZR3wOX4rrPONXrjBfwl6hzSs= + depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" @@ -3598,11 +3796,16 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.3.191, electron-to-chromium@^1.3.247: +electron-to-chromium@^1.3.247: version "1.3.260" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.260.tgz#ffd686b4810bab0e1a428e7af5f08c21fe7c1fa2" integrity sha512-wGt+OivF1C1MPwaSv3LJ96ebNbLAWlx3HndivDDWqwIVSQxmhL17Y/YmwUdEMtS/bPyommELt47Dct0/VZNQBQ== +electron-to-chromium@^1.3.284: + version "1.3.292" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.292.tgz#7812fc5138619342f1dd5823df6e9cbb7d2820e9" + integrity sha512-hqkem5ANpt6mxVXmhAmlbdG8iicuyM/jEYgmP1tiHPeOLyZoTyGUzrDmJS/xyrrZy9frkW1uQcubicu7f6DS5g== + elliptic@^6.0.0: version "6.5.1" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.1.tgz#c380f5f909bf1b9b4428d028cd18d3b0efd6b52b" @@ -3743,37 +3946,11 @@ es-to-primitive@^1.1.1, es-to-primitive@^1.2.0: is-date-object "^1.0.1" is-symbol "^1.0.2" -es5-ext@^0.10.35, es5-ext@^0.10.50, es5-ext@^0.10.51: - version "0.10.51" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.51.tgz#ed2d7d9d48a12df86e0299287e93a09ff478842f" - integrity sha512-oRpWzM2WcLHVKpnrcyB7OW8j/s67Ba04JCm0WnNv3RiABSvs7mrQlutB8DBv793gKcp0XENR8Il8WxGTlZ73gQ== - dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.1" - next-tick "^1.0.0" - -es6-iterator@2.0.3, es6-iterator@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - es6-promise@^4.2.4: version "4.2.8" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== -es6-symbol@^3.1.1, es6-symbol@~3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.2.tgz#859fdd34f32e905ff06d752e7171ddd4444a7ed1" - integrity sha512-/ZypxQsArlv+KHpGvng52/Iz8by3EQPxhmbuz8yFG89N/caTFBSbcXONDw0aMjy827gQg26XAjP4uXFvnfINmQ== - dependencies: - d "^1.0.1" - es5-ext "^0.10.51" - escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -3814,12 +3991,12 @@ eslint-config-airbnb@^17.1.0: object.assign "^4.1.0" object.entries "^1.1.0" -eslint-config-react-app@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-5.0.1.tgz#5f3d666ba3ee3cb384eb943e260e868f6c72251b" - integrity sha512-GYXP3F/0PSHlYfGHhahqnJze8rYKxzXgrzXVqRRd4rDO40ga4NA3aHM7/HKbwceDN0/C1Ij3BoAWFawJgRbXEw== +eslint-config-react-app@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-4.0.1.tgz#23fd0fd7ea89442ef1e733f66a7207674b23c8db" + integrity sha512-ZsaoXUIGsK8FCi/x4lT2bZR5mMkL/Kgj+Lnw690rbvvUr/uiwgFiD8FcfAhkCycm7Xte6O5lYz4EqMx2vX7jgw== dependencies: - confusing-browser-globals "^1.0.8" + confusing-browser-globals "^1.0.7" eslint-import-resolver-node@^0.3.2: version "0.3.2" @@ -3829,10 +4006,10 @@ eslint-import-resolver-node@^0.3.2: debug "^2.6.9" resolve "^1.5.0" -eslint-loader@2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-2.2.1.tgz#28b9c12da54057af0845e2a6112701a2f6bf8337" - integrity sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg== +eslint-loader@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-2.1.2.tgz#453542a1230d6ffac90e4e7cb9cadba9d851be68" + integrity sha512-rA9XiXEOilLYPOIInvVH5S/hYfyTPyxag6DZhoQOduM+3TkghAEQ3VcFO8VnX4J4qg/UIBzp72aOf/xvYmpmsg== dependencies: loader-fs-cache "^1.0.0" loader-utils "^1.0.2" @@ -3840,7 +4017,7 @@ eslint-loader@2.2.1: object-hash "^1.1.4" rimraf "^2.6.1" -eslint-module-utils@^2.4.0: +eslint-module-utils@^2.3.0, eslint-module-utils@^2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.4.1.tgz#7b4675875bf96b0dbf1b21977456e5bb1f5e018c" integrity sha512-H6DOj+ejw7Tesdgbfs4jeS4YMFrT8uI8xwd1gtQqXssaR0EQ26L+2O/w6wkYFy2MymON0fTwHmXBvvfLNZVZEw== @@ -3848,14 +4025,30 @@ eslint-module-utils@^2.4.0: debug "^2.6.8" pkg-dir "^2.0.0" -eslint-plugin-flowtype@3.13.0: - version "3.13.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-3.13.0.tgz#e241ebd39c0ce519345a3f074ec1ebde4cf80f2c" - integrity sha512-bhewp36P+t7cEV0b6OdmoRWJCBYRiHFlqPZAG1oS3SF+Y0LQkeDvFSM4oxoxvczD1OdONCXMlJfQFiWLcV9urw== +eslint-plugin-flowtype@2.50.1: + version "2.50.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.50.1.tgz#36d4c961ac8b9e9e1dc091d3fba0537dad34ae8a" + integrity sha512-9kRxF9hfM/O6WGZcZPszOVPd2W0TLHBtceulLTsGfwMPtiCCLnCW0ssRiOOiXyqrCA20pm1iXdXm7gQeN306zQ== dependencies: - lodash "^4.17.15" + lodash "^4.17.10" + +eslint-plugin-import@2.16.0: + version "2.16.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.16.0.tgz#97ac3e75d0791c4fac0e15ef388510217be7f66f" + integrity sha512-z6oqWlf1x5GkHIFgrSvtmudnqM6Q60KM4KvpWi5ubonMjycLjndvd5+8VAZIsTlHC03djdgJuyKG6XO577px6A== + dependencies: + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.2" + eslint-module-utils "^2.3.0" + has "^1.0.3" + lodash "^4.17.11" + minimatch "^3.0.4" + read-pkg-up "^2.0.0" + resolve "^1.9.0" -eslint-plugin-import@2.18.2, eslint-plugin-import@^2.14.0: +eslint-plugin-import@^2.14.0: version "2.18.2" resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz#02f1180b90b077b33d447a17a2326ceb400aceb6" integrity sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ== @@ -3872,7 +4065,21 @@ eslint-plugin-import@2.18.2, eslint-plugin-import@^2.14.0: read-pkg-up "^2.0.0" resolve "^1.11.0" -eslint-plugin-jsx-a11y@6.2.3, eslint-plugin-jsx-a11y@^6.1.2: +eslint-plugin-jsx-a11y@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.1.tgz#4ebba9f339b600ff415ae4166e3e2e008831cf0c" + integrity sha512-cjN2ObWrRz0TTw7vEcGQrx+YltMvZoOEx4hWU8eEERDnBIU00OTq7Vr+jA7DFKxiwLNv4tTh5Pq2GUNEa8b6+w== + dependencies: + aria-query "^3.0.0" + array-includes "^3.0.3" + ast-types-flow "^0.0.7" + axobject-query "^2.0.2" + damerau-levenshtein "^1.0.4" + emoji-regex "^7.0.2" + has "^1.0.3" + jsx-ast-utils "^2.0.1" + +eslint-plugin-jsx-a11y@^6.1.2: version "6.2.3" resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz#b872a09d5de51af70a97db1eea7dc933043708aa" integrity sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg== @@ -3892,12 +4099,25 @@ eslint-plugin-no-exclusive-tests@^1.0.0-rc.1: resolved "https://registry.yarnpkg.com/eslint-plugin-no-exclusive-tests/-/eslint-plugin-no-exclusive-tests-1.0.0-rc.1.tgz#6f6a61ebd904a2a1cec013e16688ec16bc94aa83" integrity sha1-b2ph69kEoqHOwBPhZojsFryUqoM= -eslint-plugin-react-hooks@^1.6.1: +eslint-plugin-react-hooks@^1.5.0: version "1.7.0" resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz#6210b6d5a37205f0b92858f895a4e827020a7d04" integrity sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA== -eslint-plugin-react@7.14.3, eslint-plugin-react@^7.11.1: +eslint-plugin-react@7.12.4: + version "7.12.4" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.12.4.tgz#b1ecf26479d61aee650da612e425c53a99f48c8c" + integrity sha512-1puHJkXJY+oS1t467MjbqjvX53uQ05HXwjqDgdbGBqf5j9eeydI54G3KwiJmWciQ0HTBacIKw2jgwSBSH3yfgQ== + dependencies: + array-includes "^3.0.3" + doctrine "^2.1.0" + has "^1.0.3" + jsx-ast-utils "^2.0.1" + object.fromentries "^2.0.0" + prop-types "^15.6.2" + resolve "^1.9.0" + +eslint-plugin-react@^7.11.1: version "7.14.3" resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.14.3.tgz#911030dd7e98ba49e1b2208599571846a66bdf13" integrity sha512-EzdyyBWC4Uz2hPYBiEJrKCUi2Fn+BJ9B/pJQcjw5X+x/H2Nm59S4MJIvL4O5NEE0+WbnQwEBxWY03oUk+Bc3FA== @@ -3933,27 +4153,19 @@ eslint-scope@^4.0.0, eslint-scope@^4.0.3: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-scope@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" - integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-utils@^1.3.1, eslint-utils@^1.4.2: +eslint-utils@^1.3.1: version "1.4.2" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.2.tgz#166a5180ef6ab7eb462f162fd0e6f2463d7309ab" integrity sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q== dependencies: eslint-visitor-keys "^1.0.0" -eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: +eslint-visitor-keys@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== -eslint@^5.4.0: +eslint@^5.16.0, eslint@^5.4.0: version "5.16.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea" integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg== @@ -3995,49 +4207,6 @@ eslint@^5.4.0: table "^5.2.3" text-table "^0.2.0" -eslint@^6.1.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.4.0.tgz#5aa9227c3fbe921982b2eda94ba0d7fae858611a" - integrity sha512-WTVEzK3lSFoXUovDHEbkJqCVPEPwbhCq4trDktNI6ygs7aO41d4cDT0JFAT5MivzZeVLWlg7vHL+bgrQv/t3vA== - dependencies: - "@babel/code-frame" "^7.0.0" - ajv "^6.10.0" - chalk "^2.1.0" - cross-spawn "^6.0.5" - debug "^4.0.1" - doctrine "^3.0.0" - eslint-scope "^5.0.0" - eslint-utils "^1.4.2" - eslint-visitor-keys "^1.1.0" - espree "^6.1.1" - esquery "^1.0.1" - esutils "^2.0.2" - file-entry-cache "^5.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" - globals "^11.7.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - inquirer "^6.4.1" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.14" - minimatch "^3.0.4" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - optionator "^0.8.2" - progress "^2.0.0" - regexpp "^2.0.1" - semver "^6.1.2" - strip-ansi "^5.2.0" - strip-json-comments "^3.0.1" - table "^5.2.3" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - espree@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" @@ -4047,15 +4216,6 @@ espree@^5.0.1: acorn-jsx "^5.0.0" eslint-visitor-keys "^1.0.0" -espree@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.1.tgz#7f80e5f7257fc47db450022d723e356daeb1e5de" - integrity sha512-EYbr8XZUhWbYCqQRW0duU5LxzL5bETN6AjKBGy1302qqzPaCH10QbRg3Wvco79Z8x9WbiE8HYB4e75xl6qUYvQ== - dependencies: - acorn "^7.0.0" - acorn-jsx "^5.0.2" - eslint-visitor-keys "^1.1.0" - esprima@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" @@ -4456,6 +4616,13 @@ for-own@^0.1.3: dependencies: for-in "^1.0.1" +for-own@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" + integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= + dependencies: + for-in "^1.0.1" + foreach@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" @@ -4554,10 +4721,10 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.0.7.tgz#382c9b443c6cbac4c57187cdda23aa3bf1ccfc2a" - integrity sha512-a7YT0SV3RB+DjYcppwVDLtn13UQnmg0SWZS7ezZD0UjnLwXmy8Zm21GMVGLaFGimIqcvyMQaOJBrop8MyOp1kQ== +fsevents@2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.0.6.tgz#87b19df0bfb4a1a51d7ddb51b01b5f3bedb40c33" + integrity sha512-vfmKZp3XPM36DNF0qhW+Cdxk7xm7gTEHY1clv1Xq1arwRQuKZgAhw+NZNWbJBtuaNxzNXwhfdPYRrvIbjfS33A== fsevents@^1.2.7: version "1.2.9" @@ -4662,13 +4829,6 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.0.0.tgz#1dc99f0f39b006d3e92c2c284068382f0c20e954" - integrity sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg== - dependencies: - is-glob "^4.0.1" - glob-to-regexp@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" @@ -5229,7 +5389,7 @@ inquirer@6.5.0: strip-ansi "^5.1.0" through "^2.3.6" -inquirer@^6.2.2, inquirer@^6.4.1: +inquirer@^6.2.2: version "6.5.2" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== @@ -5453,7 +5613,7 @@ is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" -is-glob@^4.0.0, is-glob@^4.0.1: +is-glob@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== @@ -5650,7 +5810,7 @@ jest-changed-files@^24.9.0: execa "^1.0.0" throat "^4.0.0" -jest-cli@^24.8.0: +jest-cli@^24.7.1: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af" integrity sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg== @@ -5856,12 +6016,12 @@ jest-resolve-dependencies@^24.9.0: jest-regex-util "^24.3.0" jest-snapshot "^24.9.0" -jest-resolve@24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.8.0.tgz#84b8e5408c1f6a11539793e2b5feb1b6e722439f" - integrity sha512-+hjSzi1PoRvnuOICoYd5V/KpIQmkAsfjFO71458hQ2Whi/yf1GDeBOFj8Gxw4LrApHsVJvn5fmjcPdmoUHaVKw== +jest-resolve@24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.7.1.tgz#e4150198299298380a75a9fd55043fa3b9b17fde" + integrity sha512-Bgrc+/UUZpGJ4323sQyj85hV9d+ANyPNu6XfRDUcyFNX1QrZpSoM0kE4Mb2vZMAYTJZsBFzYe8X1UaOkOELSbw== dependencies: - "@jest/types" "^24.8.0" + "@jest/types" "^24.7.0" browser-resolve "^1.11.3" chalk "^2.0.1" jest-pnp-resolver "^1.2.1" @@ -5986,10 +6146,10 @@ jest-validate@^24.9.0: leven "^3.1.0" pretty-format "^24.9.0" -jest-watch-typeahead@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.3.1.tgz#47701024b64b444aa325d801b4b3a6d61ed70701" - integrity sha512-cDIko96c4Yqg/7mfye1eEYZ6Pvugo9mnOOhGQod3Es7/KptNv1b+9gFVaotzdqNqTlwbkA80BnWHtzV4dc+trA== +jest-watch-typeahead@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.3.0.tgz#f56d9ee17ea71ecbf8253fed213df3185a1584c9" + integrity sha512-+uOtlppt9ysST6k6ZTqsPI0WNz2HLa8bowiZylZoQCQaAVn7XsVmHhZREkz73FhKelrFrpne4hQQjdq42nFEmA== dependencies: ansi-escapes "^3.0.0" chalk "^2.4.1" @@ -6019,13 +6179,13 @@ jest-worker@^24.6.0, jest-worker@^24.9.0: merge-stream "^2.0.0" supports-color "^6.1.0" -jest@24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-24.8.0.tgz#d5dff1984d0d1002196e9b7f12f75af1b2809081" - integrity sha512-o0HM90RKFRNWmAWvlyV8i5jGZ97pFwkeVoGvPW1EtLTgJc2+jcuqcbbqcSZLE/3f2S5pt0y2ZBETuhpWNl1Reg== +jest@24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest/-/jest-24.7.1.tgz#0d94331cf510c75893ee32f87d7321d5bf8f2501" + integrity sha512-AbvRar5r++izmqo5gdbAjTeA6uNRGoNRuj5vHB0OnDXo2DXWZJVuaObiGgtlvhKb+cWy2oYbQSfxv7Q7GjnAtA== dependencies: import-local "^2.0.0" - jest-cli "^24.8.0" + jest-cli "^24.7.1" js-base64@^2.1.8: version "2.5.1" @@ -6166,6 +6326,13 @@ json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= +json-text-sequence@^0.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/json-text-sequence/-/json-text-sequence-0.1.1.tgz#a72f217dc4afc4629fff5feb304dc1bd51a2f3d2" + integrity sha1-py8hfcSvxGKf/1/rME3BvVGi89I= + dependencies: + delimit-stream "0.1.0" + json3@^3.3.2: version "3.3.3" resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" @@ -6207,7 +6374,7 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -jsx-ast-utils@^2.1.0, jsx-ast-utils@^2.2.1: +jsx-ast-utils@^2.0.1, jsx-ast-utils@^2.1.0, jsx-ast-utils@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.1.tgz#4d4973ebf8b9d2837ee91a8208cc66f3a2776cfb" integrity sha512-v3FxCcAf20DayI+uxnCuw795+oOIkVu6EnJ1+kSzhqqTZHNkTZ7B66ZgLp4oLJ/gbA64cI0B7WRoHZMSRdyVRQ== @@ -6345,7 +6512,7 @@ loader-fs-cache@^1.0.0: find-cache-dir "^0.1.1" mkdirp "0.5.1" -loader-runner@^2.4.0: +loader-runner@^2.3.0: version "2.4.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== @@ -6390,6 +6557,11 @@ lodash.sortby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= +lodash.tail@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664" + integrity sha1-0jM6NtnncXyK0vfKyv7HwytERmQ= + lodash.template@^4.4.0, lodash.template@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" @@ -6415,7 +6587,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -"lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.5, lodash@~4.17.10: +"lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.5, lodash@~4.17.10: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -6547,7 +6719,7 @@ memoize-one@^4.0.0: resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-4.1.0.tgz#a2387c58c03fff27ca390c31b764a79addf3f906" integrity sha512-2GApq0yI/b22J2j9rhbrAlsHb0Qcz+7yWxeLG8h+95sl1XPUgeLimQSOdur4Vw7cUhrBHwaUZxWFZueojqNRzA== -memory-fs@^0.4.0, memory-fs@^0.4.1: +memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= @@ -6605,7 +6777,7 @@ microevent.ts@~0.1.1: resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== -micromatch@^3.1.10, micromatch@^3.1.4: +micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -6654,7 +6826,7 @@ mime@1.6.0: resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mime@^2.4.4: +mime@^2.0.3, mime@^2.4.4: version "2.4.4" resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== @@ -6764,7 +6936,7 @@ mixin-object@^2.0.1: for-in "^0.1.3" is-extendable "^0.1.1" -mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: +mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= @@ -6857,16 +7029,11 @@ negotiator@0.6.2: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1: +neo-async@^2.5.0, neo-async@^2.6.0: version "2.6.1" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== -next-tick@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" - integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= - nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" @@ -6907,7 +7074,7 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= -node-libs-browser@^2.2.1: +node-libs-browser@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== @@ -6968,13 +7135,20 @@ node-pre-gyp@^0.12.0: semver "^5.3.0" tar "^4" -node-releases@^1.1.25, node-releases@^1.1.29: +node-releases@^1.1.29: version "1.1.32" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.32.tgz#485b35c1bf9b4d8baa105d782f8ca731e518276e" integrity sha512-VhVknkitq8dqtWoluagsGPn3dxTvN9fwgR59fV3D7sLBHe0JfDramsMI8n8mY//ccq/Kkrf8ZRHRpsyVZ3qw1A== dependencies: semver "^5.3.0" +node-releases@^1.1.36: + version "1.1.38" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.38.tgz#d81b365df2936654ba37f509ba2fbe91eff2578b" + integrity sha512-/5NZAaOyTj134Oy5Cp/J8mso8OD/D9CSuL+6TOXXsTKO8yjc5e4up75SRPCganCjwFKMj2jbp5tR0dViVdox7g== + dependencies: + semver "^6.3.0" + node-sass@^4.10.0: version "4.12.0" resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.12.0.tgz#0914f531932380114a30cc5fa4fa63233a25f017" @@ -6998,6 +7172,11 @@ node-sass@^4.10.0: stdout-stream "^1.4.0" "true-case-path" "^1.0.2" +nofilter@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-0.0.3.tgz#241e342078177a8693a3043e83f37567e276410c" + integrity sha1-JB40IHgXeoaTowQ+g/N1Z+J2QQw= + "nopt@2 || 3": version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" @@ -7136,11 +7315,6 @@ object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object-path@0.11.4: - version "0.11.4" - resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.4.tgz#370ae752fbf37de3ea70a861c23bba8915691949" - integrity sha1-NwrnUvvzfePqcKhhwju6iRVpGUk= - object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" @@ -7256,12 +7430,12 @@ optimist@^0.6.1: minimist "~0.0.1" wordwrap "~0.0.2" -optimize-css-assets-webpack-plugin@5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz#e2f1d4d94ad8c0af8967ebd7cf138dcb1ef14572" - integrity sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA== +optimize-css-assets-webpack-plugin@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.1.tgz#9eb500711d35165b45e7fd60ba2df40cb3eb9159" + integrity sha512-Rqm6sSjWtx9FchdP0uzTQDc7GXDKnwVEGoSxjezPkzMewx7gEWE9IMUYKmigTRC4U3RaNSwYVnUDLuIdtTpm0A== dependencies: - cssnano "^4.1.10" + cssnano "^4.1.0" last-call-webpack-plugin "^3.0.0" optionator@^0.8.1, optionator@^0.8.2: @@ -7580,7 +7754,7 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= -pirates@^4.0.1: +pirates@^4.0.0, pirates@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== @@ -7620,12 +7794,12 @@ pn@^1.1.0: resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== -pnp-webpack-plugin@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.5.0.tgz#62a1cd3068f46d564bb33c56eb250e4d586676eb" - integrity sha512-jd9olUr9D7do+RN8Wspzhpxhgp1n6Vd0NtQ4SFkmIACZoEL1nkyAdW9Ygrinjec0vgDcWjscFQQ1gDW8rsfKTg== +pnp-webpack-plugin@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.2.1.tgz#cd9d698df2a6fcf7255093c1c9511adf65b9421b" + integrity sha512-W6GctK7K2qQiVR+gYSv/Gyt6jwwIH4vwdviFqx+Y2jAtVf5eZyYIDf5Ac2NCDMBiX5yWscBLZElPTsyA1UtVVA== dependencies: - ts-pnp "^1.1.2" + ts-pnp "^1.0.0" portfinder@^1.0.9: version "1.0.24" @@ -7683,7 +7857,7 @@ postcss-color-gray@^5.0.0: postcss "^7.0.5" postcss-values-parser "^2.0.0" -postcss-color-hex-alpha@^5.0.3: +postcss-color-hex-alpha@^5.0.2: version "5.0.3" resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== @@ -7727,14 +7901,14 @@ postcss-convert-values@^4.0.1: postcss "^7.0.0" postcss-value-parser "^3.0.0" -postcss-custom-media@^7.0.8: +postcss-custom-media@^7.0.7: version "7.0.8" resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== dependencies: postcss "^7.0.14" -postcss-custom-properties@^8.0.11: +postcss-custom-properties@^8.0.9: version "8.0.11" resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== @@ -8117,27 +8291,27 @@ postcss-place@^4.0.1: postcss "^7.0.2" postcss-values-parser "^2.0.0" -postcss-preset-env@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" - integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== +postcss-preset-env@6.6.0: + version "6.6.0" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.6.0.tgz#642e7d962e2bdc2e355db117c1eb63952690ed5b" + integrity sha512-I3zAiycfqXpPIFD6HXhLfWXIewAWO8emOKz+QSsxaUZb9Dp8HbF5kUf+4Wy/AxR33o+LRoO8blEWCHth0ZsCLA== dependencies: - autoprefixer "^9.6.1" - browserslist "^4.6.4" - caniuse-lite "^1.0.30000981" + autoprefixer "^9.4.9" + browserslist "^4.4.2" + caniuse-lite "^1.0.30000939" css-blank-pseudo "^0.1.4" css-has-pseudo "^0.10.0" css-prefers-color-scheme "^3.1.1" - cssdb "^4.4.0" - postcss "^7.0.17" + cssdb "^4.3.0" + postcss "^7.0.14" postcss-attribute-case-insensitive "^4.0.1" postcss-color-functional-notation "^2.0.1" postcss-color-gray "^5.0.0" - postcss-color-hex-alpha "^5.0.3" + postcss-color-hex-alpha "^5.0.2" postcss-color-mod-function "^3.0.3" postcss-color-rebeccapurple "^4.0.1" - postcss-custom-media "^7.0.8" - postcss-custom-properties "^8.0.11" + postcss-custom-media "^7.0.7" + postcss-custom-properties "^8.0.9" postcss-custom-selectors "^5.1.2" postcss-dir-pseudo-class "^5.0.0" postcss-double-position-gradients "^1.0.0" @@ -8269,7 +8443,7 @@ postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0, postcss-value-parser@^ resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== -postcss-value-parser@^4.0.0: +postcss-value-parser@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz#482282c09a42706d1fc9a069b73f44ec08391dc9" integrity sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ== @@ -8283,16 +8457,7 @@ postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: indexes-of "^1.0.1" uniq "^1.0.1" -postcss@7.0.14: - version "7.0.14" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.14.tgz#4527ed6b1ca0d82c53ce5ec1a2041c2346bbd6e5" - integrity sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.5, postcss@^7.0.6: +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.18, postcss@^7.0.2, postcss@^7.0.5, postcss@^7.0.6: version "7.0.18" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.18.tgz#4b9cda95ae6c069c67a4d933029eddd4838ac233" integrity sha512-/7g1QXXgegpF+9GJj4iN7ChGF40sYuGYJ8WZu8DZWnmhQ/G36hfdk3q9LBJmoK+lZ+yzZ5KYpOoxq7LF1BxE8g== @@ -8543,26 +8708,26 @@ rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-app-polyfill@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-1.0.2.tgz#2a51175885c88245a2a356dc46df29f38ec9f060" - integrity sha512-yZcpLnIr0FOIzrOOz9JC37NWAWEuCaQWmYn9EWjEzlCW4cOmA5MkT5L3iP8QuUeFnoqVCTJgjIWYbXEJgNXhGA== +react-app-polyfill@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-1.0.4.tgz#4dd2636846b585c2d842b1e44e1bc29044345874" + integrity sha512-5Vte6ki7jpNsNCUKaboyofAhmURmCn2Y6Hu7ydJ6Iu4dct1CIGoh/1FT7gUZKAbowVX2lxVPlijvp1nKxfAl4w== dependencies: - core-js "3.1.4" + core-js "3.2.1" object-assign "4.1.1" promise "8.0.3" raf "3.4.1" regenerator-runtime "0.13.3" whatwg-fetch "3.0.0" -react-dev-utils@^9.0.3: - version "9.0.3" - resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-9.0.3.tgz#7607455587abb84599451460eb37cef0b684131a" - integrity sha512-OyInhcwsvycQ3Zr2pQN+HV4gtRXrky5mJXIy4HnqrWa+mI624xfYfqGuC9dYbxp4Qq3YZzP8GSGQjv0AgNU15w== +react-dev-utils@^9.0.1: + version "9.1.0" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-9.1.0.tgz#3ad2bb8848a32319d760d0a84c56c14bdaae5e81" + integrity sha512-X2KYF/lIGyGwP/F/oXgGDF24nxDA2KC4b7AFto+eqzc/t838gpSGiaU8trTqHXOohuLxxc5qi1eDzsl9ucPDpg== dependencies: "@babel/code-frame" "7.5.5" - address "1.1.0" - browserslist "4.6.6" + address "1.1.2" + browserslist "4.7.0" chalk "2.4.2" cross-spawn "6.0.5" detect-port-alt "1.1.6" @@ -8579,10 +8744,10 @@ react-dev-utils@^9.0.3: loader-utils "1.2.3" open "^6.3.0" pkg-up "2.0.0" - react-error-overlay "^6.0.1" + react-error-overlay "^6.0.3" recursive-readdir "2.2.2" - shell-quote "1.6.1" - sockjs-client "1.3.0" + shell-quote "1.7.2" + sockjs-client "1.4.0" strip-ansi "5.2.0" text-table "0.2.0" @@ -8606,10 +8771,10 @@ react-dom@16.8.6: prop-types "^15.6.2" scheduler "^0.13.6" -react-error-overlay@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.1.tgz#b8d3cf9bb991c02883225c48044cb3ee20413e0f" - integrity sha512-V9yoTr6MeZXPPd4nV/05eCBvGH9cGzc52FN8fs0O0TVQ3HYYf1n7EgZVtHbldRq5xU9zEzoXIITjYNIfxDDdUw== +react-error-overlay@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.3.tgz#c378c4b0a21e88b2e159a3e62b2f531fd63bf60d" + integrity sha512-bOUvMWFQVk5oz8Ded9Xb7WVdEi3QGLC8tH7HmYP0Fdp4Bn3qw0tRFmr5TW6mvahzvmrK4a6bqWGfCevBflP+Xw== react-icons@3.4.0: version "3.4.0" @@ -8621,66 +8786,65 @@ react-is@^16.6.0, react-is@^16.8.1, react-is@^16.8.4: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.9.0.tgz#21ca9561399aad0ff1a7701c01683e8ca981edcb" integrity sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw== -react-scripts@^3.0.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-3.1.1.tgz#1796bc92447f3a2d3072c3b71ca99f88d099c48d" - integrity sha512-dbjTG9vJC61OI62hIswQYg5xHvwlxDTH6QXz6ICEuA5AqkFQWk1LKl76sk8fVL2WsyumbBc4FErALwKcEV2vNA== - dependencies: - "@babel/core" "7.5.5" - "@svgr/webpack" "4.3.2" - "@typescript-eslint/eslint-plugin" "1.13.0" - "@typescript-eslint/parser" "1.13.0" - babel-eslint "10.0.2" +react-scripts@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-3.0.1.tgz#e5565350d8069cc9966b5998d3fe3befe3d243ac" + integrity sha512-LKEjBhVpEB+c312NeJhzF+NATxF7JkHNr5GhtwMeRS1cMeLElMeIu8Ye7WGHtDP7iz7ra4ryy48Zpo6G/cwWUw== + dependencies: + "@babel/core" "7.4.3" + "@svgr/webpack" "4.1.0" + "@typescript-eslint/eslint-plugin" "1.6.0" + "@typescript-eslint/parser" "1.6.0" + babel-eslint "10.0.1" babel-jest "^24.8.0" - babel-loader "8.0.6" - babel-plugin-named-asset-import "^0.3.3" - babel-preset-react-app "^9.0.1" + babel-loader "8.0.5" + babel-plugin-named-asset-import "^0.3.2" + babel-preset-react-app "^9.0.0" camelcase "^5.2.0" case-sensitive-paths-webpack-plugin "2.2.0" css-loader "2.1.1" dotenv "6.2.0" dotenv-expand "4.2.0" - eslint "^6.1.0" - eslint-config-react-app "^5.0.1" - eslint-loader "2.2.1" - eslint-plugin-flowtype "3.13.0" - eslint-plugin-import "2.18.2" - eslint-plugin-jsx-a11y "6.2.3" - eslint-plugin-react "7.14.3" - eslint-plugin-react-hooks "^1.6.1" + eslint "^5.16.0" + eslint-config-react-app "^4.0.1" + eslint-loader "2.1.2" + eslint-plugin-flowtype "2.50.1" + eslint-plugin-import "2.16.0" + eslint-plugin-jsx-a11y "6.2.1" + eslint-plugin-react "7.12.4" + eslint-plugin-react-hooks "^1.5.0" file-loader "3.0.1" fs-extra "7.0.1" html-webpack-plugin "4.0.0-beta.5" identity-obj-proxy "3.0.0" is-wsl "^1.1.0" - jest "24.8.0" + jest "24.7.1" jest-environment-jsdom-fourteen "0.1.0" - jest-resolve "24.8.0" - jest-watch-typeahead "0.3.1" + jest-resolve "24.7.1" + jest-watch-typeahead "0.3.0" mini-css-extract-plugin "0.5.0" - optimize-css-assets-webpack-plugin "5.0.3" - pnp-webpack-plugin "1.5.0" + optimize-css-assets-webpack-plugin "5.0.1" + pnp-webpack-plugin "1.2.1" postcss-flexbugs-fixes "4.1.0" postcss-loader "3.0.0" postcss-normalize "7.0.1" - postcss-preset-env "6.7.0" + postcss-preset-env "6.6.0" postcss-safe-parser "4.0.1" - react-app-polyfill "^1.0.2" - react-dev-utils "^9.0.3" - resolve "1.12.0" - resolve-url-loader "3.1.0" - sass-loader "7.2.0" - semver "6.3.0" - style-loader "1.0.0" - terser-webpack-plugin "1.4.1" + react-app-polyfill "^1.0.1" + react-dev-utils "^9.0.1" + resolve "1.10.0" + sass-loader "7.1.0" + semver "6.0.0" + style-loader "0.23.1" + terser-webpack-plugin "1.2.3" ts-pnp "1.1.2" - url-loader "2.1.0" - webpack "4.39.1" + url-loader "1.1.2" + webpack "4.29.6" webpack-dev-server "3.2.1" webpack-manifest-plugin "2.0.4" - workbox-webpack-plugin "4.3.1" + workbox-webpack-plugin "4.2.0" optionalDependencies: - fsevents "2.0.7" + fsevents "2.0.6" react-tooltip@3.9.2: version "3.9.2" @@ -8851,10 +9015,10 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regex-parser@2.2.10: - version "2.2.10" - resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.10.tgz#9e66a8f73d89a107616e63b39d4deddfee912b37" - integrity sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA== +regexp-tree@^0.1.0: + version "0.1.14" + resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.14.tgz#1abca3675f6cc4b0dee5c959c6c4554ed172dfae" + integrity sha512-59v5A90TAh4cAMyDQEOzcnsu4q7Wb10RsyTjngEnJIZsWYM4siVGu+JmLT1WsxHvOWhiu4YS20XiTuxWMeVoHQ== regexp-tree@^0.1.13: version "0.1.13" @@ -8873,7 +9037,7 @@ regexpp@^2.0.1: resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== -regexpu-core@^4.5.4: +regexpu-core@^4.5.4, regexpu-core@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.6.0.tgz#2037c18b327cfce8a6fea2a4ec441f2432afb8b6" integrity sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg== @@ -8992,6 +9156,11 @@ require-main-filename@^2.0.0: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== +requireindex@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.2.0.tgz#3463cdb22ee151902635aa6c9535d4de9c2ef1ef" + integrity sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww== + requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" @@ -9014,22 +9183,6 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve-url-loader@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.0.tgz#54d8181d33cd1b66a59544d05cadf8e4aa7d37cc" - integrity sha512-2QcrA+2QgVqsMJ1Hn5NnJXIGCX1clQ1F6QJTqOeiaDw9ACo1G2k+8/shq3mtqne03HOFyskAClqfxKyFBriXZg== - dependencies: - adjust-sourcemap-loader "2.0.0" - camelcase "5.0.0" - compose-function "3.0.3" - convert-source-map "1.6.0" - es6-iterator "2.0.3" - loader-utils "1.2.3" - postcss "7.0.14" - rework "1.0.1" - rework-visit "1.0.0" - source-map "0.6.1" - resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" @@ -9040,7 +9193,14 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@1.12.0, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1: +resolve@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" + integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== + dependencies: + path-parse "^1.0.6" + +resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1, resolve@^1.9.0: version "1.12.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== @@ -9060,19 +9220,6 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== -rework-visit@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a" - integrity sha1-mUWygD8hni96ygCtuLyfZA+ELJo= - -rework@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz#30806a841342b54510aa4110850cd48534144aa7" - integrity sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc= - dependencies: - convert-source-map "^0.3.3" - css "^2.0.0" - rgb-regex@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" @@ -9178,15 +9325,16 @@ sass-graph@^2.2.4: scss-tokenizer "^0.2.3" yargs "^7.0.0" -sass-loader@7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-7.2.0.tgz#e34115239309d15b2527cb62b5dfefb62a96ff7f" - integrity sha512-h8yUWaWtsbuIiOCgR9fd9c2lRXZ2uG+h8Dzg/AGNj+Hg/3TO8+BBAW9mEP+mh8ei+qBKqSJ0F1FLlYjNBc61OA== +sass-loader@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-7.1.0.tgz#16fd5138cb8b424bf8a759528a1972d72aad069d" + integrity sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w== dependencies: - clone-deep "^4.0.1" + clone-deep "^2.0.1" loader-utils "^1.0.1" + lodash.tail "^4.1.1" neo-async "^2.5.0" - pify "^4.0.1" + pify "^3.0.0" semver "^5.5.0" sax@^1.2.4, sax@~1.2.4: @@ -9242,14 +9390,6 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" -schema-utils@^2.0.0, schema-utils@^2.0.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.2.0.tgz#48a065ce219e0cacf4631473159037b2c1ae82da" - integrity sha512-5EwsCNhfFTZvUreQhx/4vVQpJ/lnCAkgoIHLhSpp4ZirE+4hzFvdJi0FMub6hxbFVBJYSpeVVmon+2e7uEGRrA== - dependencies: - ajv "^6.10.2" - ajv-keywords "^3.4.1" - scss-tokenizer@^0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" @@ -9280,7 +9420,12 @@ semver@5.5.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== -semver@6.3.0, semver@^6.0.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: +semver@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.0.0.tgz#05e359ee571e5ad7ed641a6eec1e547ba52dea65" + integrity sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ== + +semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== @@ -9309,7 +9454,7 @@ send@0.17.1: range-parser "~1.2.1" statuses "~1.5.0" -serialize-javascript@^1.7.0: +serialize-javascript@^1.4.0, serialize-javascript@^1.7.0: version "1.9.1" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.9.1.tgz#cfc200aef77b600c47da9bb8149c943e798c2fdb" integrity sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A== @@ -9385,12 +9530,14 @@ shallow-clone@^0.1.2: lazy-cache "^0.2.3" mixin-object "^2.0.1" -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== +shallow-clone@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-1.0.0.tgz#4480cd06e882ef68b2ad88a3ea54832e2c48b571" + integrity sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA== dependencies: - kind-of "^6.0.2" + is-extendable "^0.1.1" + kind-of "^5.0.0" + mixin-object "^2.0.1" shebang-command@^1.2.0: version "1.2.0" @@ -9404,15 +9551,10 @@ shebang-regex@^1.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= -shell-quote@1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" - integrity sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c= - dependencies: - array-filter "~0.0.0" - array-map "~0.0.0" - array-reduce "~0.0.0" - jsonify "~0.0.0" +shell-quote@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" + integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== shellwords@^0.1.1: version "0.1.1" @@ -9497,6 +9639,18 @@ sockjs-client@1.3.0: json3 "^3.3.2" url-parse "^1.4.3" +sockjs-client@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" + integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== + dependencies: + debug "^3.2.5" + eventsource "^1.0.7" + faye-websocket "~0.11.1" + inherits "^2.0.3" + json3 "^3.3.2" + url-parse "^1.4.3" + sockjs@0.3.19: version "0.3.19" resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d" @@ -9510,7 +9664,7 @@ source-list-map@^2.0.0: resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== -source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: +source-map-resolve@^0.5.0: version "0.5.2" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== @@ -9521,7 +9675,7 @@ source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.5.6, source-map-support@~0.5.12: +source-map-support@^0.5.6, source-map-support@^0.5.9, source-map-support@~0.5.10, source-map-support@~0.5.12: version "0.5.13" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== @@ -9534,11 +9688,6 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= -source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - source-map@^0.4.2: version "0.4.4" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" @@ -9551,6 +9700,11 @@ source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + spdx-correct@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" @@ -9832,18 +9986,13 @@ strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -strip-json-comments@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" - integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== - -style-loader@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.0.0.tgz#1d5296f9165e8e2c85d24eee0b7caf9ec8ca1f82" - integrity sha512-B0dOCFwv7/eY31a5PCieNwMgMhVGFe9w+rh7s/Bx8kfFkrth9zfTZquoYvdw8URgiqxObQKcpW51Ugz1HjfdZw== +style-loader@0.23.1: + version "0.23.1" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925" + integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg== dependencies: - loader-utils "^1.2.3" - schema-utils "^2.0.1" + loader-utils "^1.1.0" + schema-utils "^1.0.0" styled-components@4.1.3: version "4.1.3" @@ -9939,7 +10088,7 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" -tapable@^1.0.0, tapable@^1.1.0, tapable@^1.1.3: +tapable@^1.0.0, tapable@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== @@ -9966,7 +10115,21 @@ tar@^4: safe-buffer "^5.1.2" yallist "^3.0.3" -terser-webpack-plugin@1.4.1, terser-webpack-plugin@^1.4.1: +terser-webpack-plugin@1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.2.3.tgz#3f98bc902fac3e5d0de730869f50668561262ec8" + integrity sha512-GOK7q85oAb/5kE12fMuLdn2btOS9OBZn4VsecpHDywoUC/jLhSAKOiYo0ezx7ss2EXPMzyEWFoE0s1WLE+4+oA== + dependencies: + cacache "^11.0.2" + find-cache-dir "^2.0.0" + schema-utils "^1.0.0" + serialize-javascript "^1.4.0" + source-map "^0.6.1" + terser "^3.16.1" + webpack-sources "^1.1.0" + worker-farm "^1.5.2" + +terser-webpack-plugin@^1.1.0: version "1.4.1" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.1.tgz#61b18e40eaee5be97e771cdbb10ed1280888c2b4" integrity sha512-ZXmmfiwtCLfz8WKZyYUuuHf3dMYEjg8NrjHMb0JqHVHVOSkzp3cW2/XG1fP3tRhqEqSzMwzzRQGtAPbs4Cncxg== @@ -9981,6 +10144,15 @@ terser-webpack-plugin@1.4.1, terser-webpack-plugin@^1.4.1: webpack-sources "^1.4.0" worker-farm "^1.7.0" +terser@^3.16.1: + version "3.17.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-3.17.0.tgz#f88ffbeda0deb5637f9d24b0da66f4e15ab10cb2" + integrity sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ== + dependencies: + commander "^2.19.0" + source-map "~0.6.1" + source-map-support "~0.5.10" + terser@^4.1.2: version "4.3.1" resolved "https://registry.yarnpkg.com/terser/-/terser-4.3.1.tgz#09820bcb3398299c4b48d9a86aefc65127d0ed65" @@ -10149,7 +10321,7 @@ ts-pnp@1.1.2: resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.2.tgz#be8e4bfce5d00f0f58e0666a82260c34a57af552" integrity sha512-f5Knjh7XCyRIzoC/z1Su1yLLRrPrFCgtUAh/9fCSP6NKbATwpOL1+idQVXQokK9GRFURn/jYPGPfegIctwunoA== -ts-pnp@^1.1.2: +ts-pnp@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.4.tgz#ae27126960ebaefb874c6d7fa4729729ab200d90" integrity sha512-1J/vefLC+BWSo+qe8OnJQfWTYRS6ingxjwqmHMqaMxXMj7kFtKLgAaYW3JeX3mktjgUL+etlU8/B4VUAUI9QGw== @@ -10198,11 +10370,6 @@ type-is@~1.6.17, type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" -type@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/type/-/type-1.0.3.tgz#16f5d39f27a2d28d86e48f8981859e9d3296c179" - integrity sha512-51IMtNfVcee8+9GJvj0spSuFcZHe9vSib6Xtgsny1Km9ugyz2mbS08I3rsUIRYgJohFRFU1160sgRodYz378Hg== - typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -10387,14 +10554,14 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= -url-loader@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-2.1.0.tgz#bcc1ecabbd197e913eca23f5e0378e24b4412961" - integrity sha512-kVrp/8VfEm5fUt+fl2E0FQyrpmOYgMEkBsv8+UDP1wFhszECq5JyGF33I7cajlVY90zRZ6MyfgKXngLvHYZX8A== +url-loader@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-1.1.2.tgz#b971d191b83af693c5e3fea4064be9e1f2d7f8d8" + integrity sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg== dependencies: - loader-utils "^1.2.3" - mime "^2.4.4" - schema-utils "^2.0.0" + loader-utils "^1.1.0" + mime "^2.0.3" + schema-utils "^1.0.0" url-parse@^1.4.3: version "1.4.7" @@ -10464,11 +10631,6 @@ uuid@^3.0.1, uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== -v8-compile-cache@^2.0.3: - version "2.1.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" - integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== - validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -10524,7 +10686,7 @@ walker@^1.0.7, walker@~1.0.5: dependencies: makeerror "1.0.x" -watchpack@^1.6.0: +watchpack@^1.5.0: version "1.6.0" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA== @@ -10609,7 +10771,7 @@ webpack-manifest-plugin@2.0.4: lodash ">=3.5 <5" tapable "^1.0.0" -webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1: +webpack-sources@^1.1.0, webpack-sources@^1.3.0, webpack-sources@^1.4.0: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== @@ -10617,34 +10779,35 @@ webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@4.39.1: - version "4.39.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.39.1.tgz#60ed9fb2b72cd60f26ea526c404d2a4cc97a1bd8" - integrity sha512-/LAb2TJ2z+eVwisldp3dqTEoNhzp/TLCZlmZm3GGGAlnfIWDgOEE758j/9atklNLfRyhKbZTCOIoPqLJXeBLbQ== +webpack@4.29.6: + version "4.29.6" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.29.6.tgz#66bf0ec8beee4d469f8b598d3988ff9d8d90e955" + integrity sha512-MwBwpiE1BQpMDkbnUUaW6K8RFZjljJHArC6tWQJoFm0oQtfoSebtg4Y7/QHnJ/SddtjYLHaKGX64CFjG5rehJw== dependencies: "@webassemblyjs/ast" "1.8.5" "@webassemblyjs/helper-module-context" "1.8.5" "@webassemblyjs/wasm-edit" "1.8.5" "@webassemblyjs/wasm-parser" "1.8.5" - acorn "^6.2.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" - chrome-trace-event "^1.0.2" + acorn "^6.0.5" + acorn-dynamic-import "^4.0.0" + ajv "^6.1.0" + ajv-keywords "^3.1.0" + chrome-trace-event "^1.0.0" enhanced-resolve "^4.1.0" - eslint-scope "^4.0.3" + eslint-scope "^4.0.0" json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.1" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" + loader-runner "^2.3.0" + loader-utils "^1.1.0" + memory-fs "~0.4.1" + micromatch "^3.1.8" + mkdirp "~0.5.0" + neo-async "^2.5.0" + node-libs-browser "^2.0.0" schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.1" - watchpack "^1.6.0" - webpack-sources "^1.4.1" + tapable "^1.1.0" + terser-webpack-plugin "^1.1.0" + watchpack "^1.5.0" + webpack-sources "^1.3.0" websocket-driver@>=0.5.1: version "0.7.3" @@ -10743,7 +10906,7 @@ workbox-broadcast-update@^4.3.1: dependencies: workbox-core "^4.3.1" -workbox-build@^4.3.1: +workbox-build@^4.2.0: version "4.3.1" resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-4.3.1.tgz#414f70fb4d6de47f6538608b80ec52412d233e64" integrity sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw== @@ -10848,14 +11011,14 @@ workbox-sw@^4.3.1: resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-4.3.1.tgz#df69e395c479ef4d14499372bcd84c0f5e246164" integrity sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w== -workbox-webpack-plugin@4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-4.3.1.tgz#47ff5ea1cc074b6c40fb5a86108863a24120d4bd" - integrity sha512-gJ9jd8Mb8wHLbRz9ZvGN57IAmknOipD3W4XNE/Lk/4lqs5Htw4WOQgakQy/o/4CoXQlMCYldaqUg+EJ35l9MEQ== +workbox-webpack-plugin@4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-4.2.0.tgz#c94c3f69ff39c8a5b0c7e6bebc382cb53410a63d" + integrity sha512-YZsiA+y/ns/GdWRaBsfYv8dln1ebWtGnJcTOg1ppO0pO1tScAHX0yGtHIjndxz3L/UUhE8b0NQE9KeLNwJwA5A== dependencies: "@babel/runtime" "^7.0.0" json-stable-stringify "^1.0.1" - workbox-build "^4.3.1" + workbox-build "^4.2.0" workbox-window@^4.3.1: version "4.3.1" @@ -10864,7 +11027,7 @@ workbox-window@^4.3.1: dependencies: workbox-core "^4.3.1" -worker-farm@^1.7.0: +worker-farm@^1.5.2, worker-farm@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== From 1eebe3524de9039f01e335005c6b6547e3fd32ea Mon Sep 17 00:00:00 2001 From: Bart Wyatt Date: Tue, 17 Sep 2019 13:02:04 -0400 Subject: [PATCH 06/76] temporarily hardcode chain-manifests to https... this means the app will be broken if not served over https for the EOSIO authenticators that use chain-manifests. We will need to make this hot-swappable prior to release --- public/chain-manifests.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/chain-manifests.json b/public/chain-manifests.json index 1fe3e66c..e9b01d4f 100644 --- a/public/chain-manifests.json +++ b/public/chain-manifests.json @@ -5,8 +5,8 @@ "chainId": "cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f", "manifest": { "account": "tropical", - "domain": "http://localhost:3000", - "appmeta": "http://localhost:3000/app-metadata.json#bc677523fca562e307343296e49596e25cb14aac6b112a9428a42119da9f65fa", + "domain": "https://localhost:3000", + "appmeta": "https://localhost:3000/app-metadata.json#bc677523fca562e307343296e49596e25cb14aac6b112a9428a42119da9f65fa", "whitelist": [ { "contract": "tropical", From 11cb01000d50ab12061c8f75cc41390212bd6c4a Mon Sep 17 00:00:00 2001 From: Bart Wyatt Date: Tue, 17 Sep 2019 19:21:07 -0500 Subject: [PATCH 07/76] basic enroll plumbing --- src/App.js | 91 +++++++++++++++++++++- src/api/index.js | 21 ++--- src/components/navigation/NavigationBar.js | 5 +- src/components/navigation/UserDropdown.js | 30 ++----- src/components/navigation/UserInfo.js | 12 +-- 5 files changed, 117 insertions(+), 42 deletions(-) diff --git a/src/App.js b/src/App.js index c8d88012..2f9d7387 100644 --- a/src/App.js +++ b/src/App.js @@ -3,6 +3,7 @@ import { func, shape, instanceOf } from 'prop-types' // HOC (Higher Order Component) to pass the UALProvider context to the component import { withUAL } from 'ual-reactjs-renderer' import 'App.scss' +import base64url from 'base64url' import NavigationBar from 'components/navigation/NavigationBar' import NotificationBar from 'components/notification/NotificationBar' @@ -70,6 +71,94 @@ class App extends React.Component { this.displayNotificationBar(false) } + enroll = async ( onSuccess ) => { + // Via static contextType = UALContext, access to the activeUser object on this.context is now available + const { ual: { activeUser } } = this.props + if (activeUser) { + try { + const accountName = await activeUser.getAccountName() + const createCredentialOptions = { + // Format of new credentials is publicKey + publicKey: { + // Relying Party + rp: { + name: "Tropical Stay", + id: "localhost" + }, + // Cryptographic challenge from the server + challenge: new Uint8Array(26), + // User + user: { + id: new Uint8Array(16), + name: accountName, + displayName: accountName, + }, + // Requested format of new keypair + pubKeyCredParams: [{ + type: "public-key", + alg: -7, + }], + timeout: 60000, + attestation: 'direct' + } + } + + const webauthnResp = await navigator.credentials.create(createCredentialOptions) + const publicKeyCredentialToJSON = (pubKeyCred) => { + if(pubKeyCred instanceof Array) { + let arr = []; + for(let i of pubKeyCred) + arr.push(publicKeyCredentialToJSON(i)); + + return arr + } + + if(pubKeyCred instanceof ArrayBuffer) { + return base64url.encode(pubKeyCred) + } + + if(pubKeyCred instanceof Object) { + let obj = {}; + + for (let key in pubKeyCred) { + obj[key] = publicKeyCredentialToJSON(pubKeyCred[key]) + } + + return obj + } + + return pubKeyCred + } + + const payload = { + name: accountName, + webauthnResp: publicKeyCredentialToJSON(webauthnResp) + } + + const enrollResponse = await fetch('/api/enroll', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(payload) + }) + + const enrollResult = await enrollResponse.json() + if (!enrollResult.status || enrollResult.status !== "ok") { + this.displayError({message: "Enrollment failed"}); + } else { + onSuccess() + } + } catch (err) { + console.error('Enroll Error', JSON.parse(JSON.stringify(err))) + this.displayError(err) + } + } else { + this.displayError({message: "Not Logged In!"}) + } + } + + render() { const login = () => this.displayLoginModal(true) const routeToResults = () => this.displayResults(true) @@ -80,7 +169,7 @@ class App extends React.Component { return (
{ showNotificationBar && } - + { showResults ? : diff --git a/src/api/index.js b/src/api/index.js index a76de3ea..e5ebeda3 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -1,4 +1,4 @@ -import { Router } from 'express' +import { Router, json } from 'express' import ecc from 'eosjs-ecc' import {SerialBuffer} from 'eosjs' import base64url from 'base64url' @@ -7,9 +7,10 @@ import cbor from 'cbor' export default () => { const private_key_wif = process.env.API_SERVER_PRIVATE_KEY const api = Router() + console.log(json) - const decodeResponse = (clientData, webauthnResp) => { - const attestationBuffer = base64url.toBuffer(webAuthnResponse.response.attestationObject) + const decodeResponse = (webauthnResp) => { + const attestationBuffer = base64url.toBuffer(webauthnResp.response.attestationObject) const attestation = cbor.decodeAllSync(attestationBuffer)[0] const flags = attestation.authData.readUInt8(32) @@ -43,9 +44,9 @@ export default () => { const users = {} - api.get( '/generateRentChallenge', (req, resp) => { - const name = request.body.name - const property_name = request.body.property_name + api.get( '/generateRentChallenge', json(), (req, resp) => { + const name = req.body.name + const property_name = req.body.property_name const namePairBuffer = new SerialBuffer() namePairBuffer.pushName(name) @@ -60,14 +61,14 @@ export default () => { }) }) - api.post( '/enroll', (req, resp) => { + api.post( '/enroll', json(), (req, resp) => { // Note there is no verfication of this data as it is out of scope for this demo // - const name = request.body.name - const webauthnResp = request.body.webauthnResp + const name = req.body.name + const webauthnResp = req.body.webauthnResp users[name] = decodeResponse(webauthnResp) - response.json({ 'status': 'ok' }) + resp.json({ 'status': 'ok' }) }) return api diff --git a/src/components/navigation/NavigationBar.js b/src/components/navigation/NavigationBar.js index 4574a018..65ccffe6 100644 --- a/src/components/navigation/NavigationBar.js +++ b/src/components/navigation/NavigationBar.js @@ -12,7 +12,7 @@ import LoginButton from 'components/navigation/LoginButton' import { onKeyUpEnter } from 'utils/keyPress' import logo from 'assets/images/logo.svg' -const NavigationBar = ({ ual: { activeUser }, routeToLanding, login }) => ( +const NavigationBar = ({ ual: { activeUser }, routeToLanding, login, enroll }) => (
(
  • Post a Property
  • { activeUser - ?
  • + ?
  • :
  • }
@@ -46,6 +46,7 @@ NavigationBar.propTypes = { }), routeToLanding: func.isRequired, login: func.isRequired, + enroll: func.isRequired, } NavigationBar.defaultProps = { diff --git a/src/components/navigation/UserDropdown.js b/src/components/navigation/UserDropdown.js index 6210e42e..e90084ae 100644 --- a/src/components/navigation/UserDropdown.js +++ b/src/components/navigation/UserDropdown.js @@ -12,35 +12,19 @@ class UserDropdown extends React.Component { static propTypes = { logout: func.isRequired, - displayError: func.isRequired + enroll: func.isRequired } state = { enrolled: false } - onEnroll = async () => { - const { displayError } = this.props - // Via static contextType = UALContext, access to the activeUser object on this.context is now available - const { activeUser } = this.context - if (activeUser) { - try { - //const accountName = await activeUser.getAccountName() - //const transaction = generateEnrollTransaction(accountName) - // The activeUser.signTransaction will propose the passed in transaction to the logged in Authenticator - //await activeUser.signTransaction(transaction, transactionConfig) - this.setState({ enrolled: true }) - } catch (err) { - displayError(err) - } - } else { - displayError("Not Logged In!") - } - } - render() { - const { logout, displayError } = this.props; + const { logout, enroll } = this.props; const { enrolled } = this.state; + const doEnroll = () => { + enroll(() => this.setState({enrolled: true})) + } return (
{ !enrolled ?
  • onKeyUpEnter(event, this.onEnroll)} + onClick={doEnroll} + onKeyUp={event => onKeyUpEnter(event, doEnroll)} > Enable WebAuthn 2FA
  • diff --git a/src/components/navigation/UserInfo.js b/src/components/navigation/UserInfo.js index 07867284..af1f4278 100644 --- a/src/components/navigation/UserInfo.js +++ b/src/components/navigation/UserInfo.js @@ -38,7 +38,7 @@ class UserInfo extends React.Component { })) } - renderLogout = ( displayError ) => ( + renderLogout = ( enroll ) => (
    dropdown
    - { this.state.showDropdown && this.renderDropdown( displayError ) } + { this.state.showDropdown && this.renderDropdown( enroll ) }
    ) - renderDropdown = ( displayError ) => { + renderDropdown = ( enroll ) => { const { logout } = this.context return (
    - +
    ) } @@ -65,13 +65,13 @@ class UserInfo extends React.Component { render() { const { logout, isAutoLogin } = this.context const { accountName } = this.state - const { displayError } = this.props; + const { enroll } = this.props; const shouldDisplayLogout = logout && !isAutoLogin return (
    Signed in as
    {accountName}
    - { shouldDisplayLogout && this.renderLogout(displayError) } + { shouldDisplayLogout && this.renderLogout(enroll) }
    ) } From 787f1d9e1f04616852e299a5372c08a2cedb0166 Mon Sep 17 00:00:00 2001 From: Bart Wyatt Date: Wed, 18 Sep 2019 11:52:04 -0400 Subject: [PATCH 08/76] refactored enrollment into util file, fixed issues with API and eos-js versioning --- package.json | 1 + src/App.js | 81 ++++--------------------------------------- src/api/index.js | 30 ++++++++++------ src/utils/webauthn.js | 61 ++++++++++++++++++++++++++++++++ yarn.lock | 36 +++++++++++-------- 5 files changed, 110 insertions(+), 99 deletions(-) create mode 100644 src/utils/webauthn.js diff --git a/package.json b/package.json index a330b531..752b64f1 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "@babel/register": "7.4.4", "base64url": "2.0.0", "cbor": "3.0.3", + "eosjs": "20.0.2-a53eecb.0", "eosjs-ecc": "4.0.4", "focus-visible": "4.1.5", "prop-types": "15.7.2", diff --git a/src/App.js b/src/App.js index 2f9d7387..8f6e15f4 100644 --- a/src/App.js +++ b/src/App.js @@ -3,13 +3,14 @@ import { func, shape, instanceOf } from 'prop-types' // HOC (Higher Order Component) to pass the UALProvider context to the component import { withUAL } from 'ual-reactjs-renderer' import 'App.scss' -import base64url from 'base64url' import NavigationBar from 'components/navigation/NavigationBar' import NotificationBar from 'components/notification/NotificationBar' import ResultsPage from 'components/results/ResultsPage' import LandingPage from 'components/landing/LandingPage' +import {generateWebauthnPubkey, enrollWebauthnPubkey} from "utils/webauthn" + class App extends React.Component { static propTypes = { ual: shape({ @@ -77,84 +78,14 @@ class App extends React.Component { if (activeUser) { try { const accountName = await activeUser.getAccountName() - const createCredentialOptions = { - // Format of new credentials is publicKey - publicKey: { - // Relying Party - rp: { - name: "Tropical Stay", - id: "localhost" - }, - // Cryptographic challenge from the server - challenge: new Uint8Array(26), - // User - user: { - id: new Uint8Array(16), - name: accountName, - displayName: accountName, - }, - // Requested format of new keypair - pubKeyCredParams: [{ - type: "public-key", - alg: -7, - }], - timeout: 60000, - attestation: 'direct' - } - } - - const webauthnResp = await navigator.credentials.create(createCredentialOptions) - const publicKeyCredentialToJSON = (pubKeyCred) => { - if(pubKeyCred instanceof Array) { - let arr = []; - for(let i of pubKeyCred) - arr.push(publicKeyCredentialToJSON(i)); - - return arr - } - - if(pubKeyCred instanceof ArrayBuffer) { - return base64url.encode(pubKeyCred) - } - - if(pubKeyCred instanceof Object) { - let obj = {}; - - for (let key in pubKeyCred) { - obj[key] = publicKeyCredentialToJSON(pubKeyCred[key]) - } - - return obj - } - - return pubKeyCred - } - - const payload = { - name: accountName, - webauthnResp: publicKeyCredentialToJSON(webauthnResp) - } - - const enrollResponse = await fetch('/api/enroll', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify(payload) - }) - - const enrollResult = await enrollResponse.json() - if (!enrollResult.status || enrollResult.status !== "ok") { - this.displayError({message: "Enrollment failed"}); - } else { - onSuccess() - } + const pubkey = await generateWebauthnPubkey(accountName) + await enrollWebauthnPubkey(accountName, pubkey) + onSuccess(); } catch (err) { - console.error('Enroll Error', JSON.parse(JSON.stringify(err))) this.displayError(err) } } else { - this.displayError({message: "Not Logged In!"}) + this.displayError(new Error("Not Logged In!")) } } diff --git a/src/api/index.js b/src/api/index.js index e5ebeda3..0d943a86 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -1,16 +1,17 @@ import { Router, json } from 'express' import ecc from 'eosjs-ecc' -import {SerialBuffer} from 'eosjs' +import {Serialize, Numeric} from 'eosjs' import base64url from 'base64url' import cbor from 'cbor' +import util from 'util'; export default () => { const private_key_wif = process.env.API_SERVER_PRIVATE_KEY const api = Router() console.log(json) - const decodeResponse = (webauthnResp) => { - const attestationBuffer = base64url.toBuffer(webauthnResp.response.attestationObject) + const decodeWebauthnPublicKey = (webauthnPublicKey) => { + const attestationBuffer = base64url.toBuffer(webauthnPublicKey.attestationObject) const attestation = cbor.decodeAllSync(attestationBuffer)[0] const flags = attestation.authData.readUInt8(32) @@ -44,20 +45,29 @@ export default () => { const users = {} - api.get( '/generateRentChallenge', json(), (req, resp) => { + api.post( '/generateRentChallenge', json(), (req, resp) => { const name = req.body.name const property_name = req.body.property_name - const namePairBuffer = new SerialBuffer() + console.log(users[name].eosioPubkey.toString('hex')) + + const namePairBuffer = new Serialize.SerialBuffer({textEncoder: new util.TextEncoder(), textDecoder: new util.TextDecoder()}) namePairBuffer.pushName(name) namePairBuffer.pushName(property_name) - const sigData = Buffer.concat( namePairBuffer.asUint8Array(), users[name].eosioPubkey ) + const sigData = Buffer.concat( [ namePairBuffer.asUint8Array(), users[name].eosioPubkey ] ) const sigDigest = ecc.sha256(sigData) const challenge = ecc.signHash(sigDigest, private_key_wif).toString() + const user_key = Numeric.publicKeyToString({ + type: Numeric.KeyType.wa, + data: users[name].eosioPubkey.slice(1), + }) + const server_key = ecc.privateToPublic(private_key_wif); - response.json({ + resp.json({ 'status': 'ok', - 'challenge': challenge + 'user_key' : user_key, + 'server_key' : server_key, + 'server_auth': challenge }) }) @@ -65,9 +75,9 @@ export default () => { // Note there is no verfication of this data as it is out of scope for this demo // const name = req.body.name - const webauthnResp = req.body.webauthnResp + const webauthnPublicKey = req.body.webauthnPublicKey - users[name] = decodeResponse(webauthnResp) + users[name] = decodeWebauthnPublicKey(webauthnPublicKey) resp.json({ 'status': 'ok' }) }) diff --git a/src/utils/webauthn.js b/src/utils/webauthn.js new file mode 100644 index 00000000..ca7a3b67 --- /dev/null +++ b/src/utils/webauthn.js @@ -0,0 +1,61 @@ +import base64url from 'base64url' + +// taken from the +const formatWebauthnPubkey = (pubkey) => { + const clientDataStr = String.fromCharCode.apply(null, new Uint8Array(pubkey.clientDataJSON)); + return { + attestationObject: base64url.encode(pubkey.attestationObject), + clientData: JSON.parse(clientDataStr) + } +} + +export const generateWebauthnPubkey = async ( accountName ) => { + const createCredentialOptions = { + // Format of new credentials is publicKey + publicKey: { + // Relying Party + rp: { + name: "Tropical Stay", + id: "localhost" + }, + // Cryptographic challenge from the server + challenge: new Uint8Array(26), + // User + user: { + id: new Uint8Array(16), + name: accountName, + displayName: accountName, + }, + // Requested format of new keypair + pubKeyCredParams: [{ + type: "public-key", + alg: -7, + }], + timeout: 60000, + attestation: 'direct' + } + } + + const webauthnResp = await navigator.credentials.create(createCredentialOptions) + return formatWebauthnPubkey(webauthnResp.response); +} + +export const enrollWebauthnPubkey = async (accountName, pubkey) => { + const payload = { + name: accountName, + webauthnPublicKey: pubkey + } + + const enrollResponse = await fetch('/api/enroll', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(payload) + }) + + const enrollResult = await enrollResponse.json() + if (!enrollResult.status || enrollResult.status !== "ok") { + throw new Error("Enrollment failed") + } +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index d7fd266e..3dde5dd4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -69,6 +69,16 @@ semver "^5.4.1" source-map "^0.5.0" +"@babel/generator@^7.2.2", "@babel/generator@^7.6.3", "@babel/generator@^7.6.4": + version "7.6.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.6.4.tgz#a4f8437287bf9671b07f483b76e3bb731bc97671" + integrity sha512-jsBuXkFoZxk0yWLyGI9llT9oiQ2FeTASmRFE32U+aaDTfoE92t78eroO7PTpU/OrYq38hlcDM6vbfLDaOLy+7w== + dependencies: + "@babel/types" "^7.6.3" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + "@babel/generator@^7.4.0", "@babel/generator@^7.6.0": version "7.6.0" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.6.0.tgz#e2c21efbfd3293ad819a2359b448f002bfdfda56" @@ -80,16 +90,6 @@ source-map "^0.5.0" trim-right "^1.0.1" -"@babel/generator@^7.6.3", "@babel/generator@^7.6.4": - version "7.6.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.6.4.tgz#a4f8437287bf9671b07f483b76e3bb731bc97671" - integrity sha512-jsBuXkFoZxk0yWLyGI9llT9oiQ2FeTASmRFE32U+aaDTfoE92t78eroO7PTpU/OrYq38hlcDM6vbfLDaOLy+7w== - dependencies: - "@babel/types" "^7.6.3" - jsesc "^2.5.1" - lodash "^4.17.13" - source-map "^0.5.0" - "@babel/helper-annotate-as-pure@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" @@ -248,7 +248,7 @@ "@babel/template" "^7.1.0" "@babel/types" "^7.0.0" -"@babel/helper-split-export-declaration@^7.4.4": +"@babel/helper-split-export-declaration@^7.0.0", "@babel/helper-split-export-declaration@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q== @@ -297,7 +297,7 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.6.0.tgz#3e05d0647432a8326cb28d0de03895ae5a57f39b" integrity sha512-+o2q111WEx4srBs7L9eJmcwi655eD8sXniLqMB93TBK9GrNzGrxDWSjiqz2hLU0Ha8MTXFIP0yd9fNdP+m43ZQ== -"@babel/parser@^7.6.3", "@babel/parser@^7.6.4": +"@babel/parser@^7.2.3", "@babel/parser@^7.6.3", "@babel/parser@^7.6.4": version "7.6.4" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.6.4.tgz#cb9b36a7482110282d5cb6dd424ec9262b473d81" integrity sha512-D8RHPW5qd0Vbyo3qb+YjO5nvUVRTXFLQ/FsDxJU2Nqz4uB5EnUN0ZQSEYpvTIbRuttig1XbHWU5oMeQwQSAA+A== @@ -1018,7 +1018,7 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-typescript" "^7.6.0" -"@babel/register@7.4.3": +"@babel/register@7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.4.4.tgz#370a68ba36f08f015a8b35d4864176c6b65d7a23" integrity sha512-sn51H88GRa00+ZoMqCVgOphmswG4b7mhf9VOB0LUBAieykq2GnRFerlN+JQkO/ntT7wz4jaHNSRPg9IdMPEUkA== @@ -1100,7 +1100,7 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" -"@babel/types@^7.6.3": +"@babel/types@^7.2.2", "@babel/types@^7.6.3": version "7.6.3" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.6.3.tgz#3f07d96f854f98e2fbd45c64b0cb942d11e8ba09" integrity sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA== @@ -3907,6 +3907,14 @@ eosjs@20.0.0: eosjs-ecc "4.0.4" text-encoding "0.7.0" +eosjs@20.0.2-a53eecb.0: + version "20.0.2-a53eecb.0" + resolved "https://registry.yarnpkg.com/eosjs/-/eosjs-20.0.2-a53eecb.0.tgz#1a131bd8fb7c98a2dee178885dc47c9899f7e4a3" + integrity sha512-VGirrkYKy3LrBMkMH+C5ncnj0ZZ/9QaL+5RhWFtxBsOsgH+IiGwFtweBGOo0aSXlOJNJ9Mt+kR01tYhm3QkTDQ== + dependencies: + babel-runtime "6.26.0" + text-encoding "0.7.0" + errno@^0.1.3, errno@~0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" From 2e1051c315f2f900f1071bca2bcd70389e6c4e9d Mon Sep 17 00:00:00 2001 From: Bart Wyatt Date: Wed, 18 Sep 2019 13:02:03 -0400 Subject: [PATCH 09/76] work on the rent interaction with webauthn --- package.json | 5 +- src/App.js | 1 - src/api/index.js | 20 ++-- src/components/navigation/UserDropdown.js | 1 - src/components/results/property/Property.js | 26 ++++- src/utils/transaction.js | 32 ++++++ src/utils/webauthn.js | 106 +++++++++++++++++++- yarn.lock | 19 ++++ 8 files changed, 191 insertions(+), 19 deletions(-) diff --git a/package.json b/package.json index 752b64f1..43faf0ff 100644 --- a/package.json +++ b/package.json @@ -28,12 +28,12 @@ "prop-types": "15.7.2", "react": "16.8.6", "react-dom": "16.8.6", + "react-scripts": "3.0.1", "ual-eosio-reference-authenticator": "0.1.3", "ual-lynx": "0.2.2", "ual-reactjs-renderer": "0.1.6", "ual-scatter": "0.1.6", - "ual-token-pocket": "0.1.2", - "react-scripts": "3.0.1" + "ual-token-pocket": "0.1.2" }, "scripts": { "start": "node scripts/copyDefaultEnv.js && react-scripts start", @@ -55,6 +55,7 @@ ], "devDependencies": { "@blockone/eslint-config-blockone": "^1.1.1", + "@types/elliptic": "^6.4.6", "eslint-plugin-no-exclusive-tests": "^1.0.0-rc.1", "node-sass": "^4.10.0" } diff --git a/src/App.js b/src/App.js index 8f6e15f4..f625a725 100644 --- a/src/App.js +++ b/src/App.js @@ -89,7 +89,6 @@ class App extends React.Component { } } - render() { const login = () => this.displayLoginModal(true) const routeToResults = () => this.displayResults(true) diff --git a/src/api/index.js b/src/api/index.js index 0d943a86..d354e02d 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -46,35 +46,37 @@ export default () => { const users = {} api.post( '/generateRentChallenge', json(), (req, resp) => { - const name = req.body.name - const property_name = req.body.property_name + const name = req.body.accountName + const propertyName = req.body.propertyName console.log(users[name].eosioPubkey.toString('hex')) const namePairBuffer = new Serialize.SerialBuffer({textEncoder: new util.TextEncoder(), textDecoder: new util.TextDecoder()}) namePairBuffer.pushName(name) - namePairBuffer.pushName(property_name) + namePairBuffer.pushName(propertyName) const sigData = Buffer.concat( [ namePairBuffer.asUint8Array(), users[name].eosioPubkey ] ) const sigDigest = ecc.sha256(sigData) const challenge = ecc.signHash(sigDigest, private_key_wif).toString() - const user_key = Numeric.publicKeyToString({ + const userKey = Numeric.publicKeyToString({ type: Numeric.KeyType.wa, data: users[name].eosioPubkey.slice(1), }) - const server_key = ecc.privateToPublic(private_key_wif); + const serverKey = ecc.privateToPublic(private_key_wif) + const credentialIDStr = base64url.encode(users[name].credentialID) resp.json({ 'status': 'ok', - 'user_key' : user_key, - 'server_key' : server_key, - 'server_auth': challenge + 'userKey' : userKey, + 'serverKey' : serverKey, + 'serverAuth': challenge, + 'credentialID': credentialIDStr }) }) api.post( '/enroll', json(), (req, resp) => { // Note there is no verfication of this data as it is out of scope for this demo // - const name = req.body.name + const name = req.body.accountName const webauthnPublicKey = req.body.webauthnPublicKey users[name] = decodeWebauthnPublicKey(webauthnPublicKey) diff --git a/src/components/navigation/UserDropdown.js b/src/components/navigation/UserDropdown.js index e90084ae..9e9abddc 100644 --- a/src/components/navigation/UserDropdown.js +++ b/src/components/navigation/UserDropdown.js @@ -5,7 +5,6 @@ import { UALContext } from 'ual-reactjs-renderer' import './UserDropdown.scss' import { onKeyUpEnter } from 'utils/keyPress' -import { generateEnrollTransaction, transactionConfig } from 'utils/transaction' class UserDropdown extends React.Component { static contextType = UALContext diff --git a/src/components/results/property/Property.js b/src/components/results/property/Property.js index 2359a2f7..5be33b64 100644 --- a/src/components/results/property/Property.js +++ b/src/components/results/property/Property.js @@ -5,7 +5,8 @@ import { UALContext } from 'ual-reactjs-renderer' import './Property.scss' import PropertyImage from 'components/results/property/PropertyImage' -import { generateTransaction, transactionConfig } from 'utils/transaction' +import { generateTransaction, generateRentTransaction, transactionConfig } from 'utils/transaction' +import { generateRentChallenge, signRentChallenge } from 'utils/webauthn' import { onKeyUpEnter } from 'utils/keyPress' class Property extends React.Component { @@ -19,6 +20,7 @@ class Property extends React.Component { state = { loading: false, liked: false, + rented: false, } onLike = async () => { @@ -42,6 +44,28 @@ class Property extends React.Component { } } + onRent = async () => { + const { login, displayError } = this.props + const { activeUser } = this.context + if ( activeUser ) { + this.setState({ loading: true }) + try { + const accountName = await activeUser.getAccountName() + const rentChallenge = await generateRentChallenge(accountName, "aproperty") + const userAuth = await signRentChallenge(accountName, "aproperty", rentChallenge) + const transaction = generateRentTransaction(accountName, "aproperty", rentChallenge.serverKey, rentChallenge.userKey, rentChallenge.serverAuth, userAuth) + // The activeUser.signTransaction will propose the passed in transaction to the logged in Authenticator + await activeUser.signTransaction(transaction, transactionConfig) + this.setState({rented: true}) + } catch (err) { + displayError(err) + } + this.setState({ loading: false }) + } else { + login() + } + } + render() { const { loading, liked } = this.state diff --git a/src/utils/transaction.js b/src/utils/transaction.js index 7e820828..8efe2450 100644 --- a/src/utils/transaction.js +++ b/src/utils/transaction.js @@ -12,4 +12,36 @@ export const generateTransaction = account => ({ }], }) +export const generateRentTransaction = (accountName, propertyName, serverKey, userKey, serverAuth, userAuth) => { + return { + context_free_actions: [{ + account: 'tropical', + name: 'check2fa', + authorization: [], + data: { + user: accountName, + property: propertyName, + server_key: serverKey, + user_key: userKey, + server_auth: serverAuth, + bearer_auth: userAuth + } + }], + actions: [{ + account: 'tropical', + name: 'rent', + authorization: [{ + actor: accountName, + permission: 'active' + } + ], + data: { + user: accountName, + property: propertyName, + } + } + ], + } +} + export const transactionConfig = { broadcast: true, expireSeconds: 300 } diff --git a/src/utils/webauthn.js b/src/utils/webauthn.js index ca7a3b67..08a8c19a 100644 --- a/src/utils/webauthn.js +++ b/src/utils/webauthn.js @@ -1,14 +1,63 @@ import base64url from 'base64url' +import {Serialize, Numeric} from 'eosjs' +import ecc from 'eosjs-ecc' +import { ec } from 'elliptic' // taken from the const formatWebauthnPubkey = (pubkey) => { - const clientDataStr = String.fromCharCode.apply(null, new Uint8Array(pubkey.clientDataJSON)); + const clientDataStr = String.fromCharCode.apply(null, new Uint8Array(pubkey.clientDataJSON)) return { attestationObject: base64url.encode(pubkey.attestationObject), clientData: JSON.parse(clientDataStr) } } +const decodeWebauthnSignature = (assertion, key) => { + const fixup = (x) => { + const a = Array.from(x) + while (a.length < 32) + a.unshift(0) + while (a.length > 32) + if (a.shift() !== 0) + throw new Error('Signature has an r or s that is too big') + return new Uint8Array(a) + } + + const der = new Serialize.SerialBuffer({ array: new Uint8Array(assertion.signature) }) + if (der.get() !== 0x30) + throw new Error('Signature missing DER prefix') + if (der.get() !== der.array.length - 2) + throw new Error('Signature has bad length') + if (der.get() !== 0x02) + throw new Error('Signature has bad r marker') + const r = fixup(der.getUint8Array(der.get())) + if (der.get() !== 0x02) + throw new Error('Signature has bad s marker') + const s = fixup(der.getUint8Array(der.get())) + + const e = new ec('p256'); + const pubKey = e.keyFromPublic(Numeric.stringToPublicKey(key).data.subarray(0, 33)).getPublic(); + + const whatItReallySigned = new Serialize.SerialBuffer() + whatItReallySigned.pushArray(new Uint8Array(assertion.authenticatorData)) + whatItReallySigned.pushArray(ecc.sha256(assertion.clientDataJSON)) + const hash = ecc.sha256(whatItReallySigned.asUint8Array().slice()) + const recid = e.getKeyRecoveryParam(hash, new Uint8Array(assertion.signature), pubKey) + + const sigData = new Serialize.SerialBuffer() + sigData.push(recid + 27 + 4) + sigData.pushArray(r) + sigData.pushArray(s) + sigData.pushBytes(new Uint8Array(assertion.authenticatorData)) + sigData.pushBytes(new Uint8Array(assertion.clientDataJSON)) + + const sig = Numeric.signatureToString({ + type: Numeric.KeyType.wa, + data: sigData.asUint8Array().slice(), + }) + return sig; +} + export const generateWebauthnPubkey = async ( accountName ) => { const createCredentialOptions = { // Format of new credentials is publicKey @@ -37,13 +86,13 @@ export const generateWebauthnPubkey = async ( accountName ) => { } const webauthnResp = await navigator.credentials.create(createCredentialOptions) - return formatWebauthnPubkey(webauthnResp.response); + return formatWebauthnPubkey(webauthnResp.response) } -export const enrollWebauthnPubkey = async (accountName, pubkey) => { +export const enrollWebauthnPubkey = async (accountName, webauthnPublicKey) => { const payload = { - name: accountName, - webauthnPublicKey: pubkey + accountName, + webauthnPublicKey } const enrollResponse = await fetch('/api/enroll', { @@ -58,4 +107,51 @@ export const enrollWebauthnPubkey = async (accountName, pubkey) => { if (!enrollResult.status || enrollResult.status !== "ok") { throw new Error("Enrollment failed") } +} + +export const generateRentChallenge = async(accountName, propertyName) => { + const payload = { + accountName, + propertyName + } + + const resp = await fetch('/api/generateRentChallenge', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(payload) + }) + + const result = await resp.json() + if (!result.status || result.status !== "ok") { + throw new Error("Enrollment failed") + } + + return result +} + +export const signRentChallenge = async(accountName, propertyName, challenge) => { + const challengeBuffer = new Serialize.SerialBuffer() + challengeBuffer.pushName(accountName) + challengeBuffer.pushName(propertyName) + challengeBuffer.pushPublicKey(challenge.userKey) + const sigDigest = ecc.sha256(challengeBuffer.asUint8Array()) + + console.log(challenge) + const getCredentialOptions = { + publicKey: { + timeout: 60000, + allowCredentials: [{ + id: base64url.toBuffer(challenge.credentialID), + type: 'public-key', + }], + challenge: Buffer.from(sigDigest, 'hex'), + }, + } + + console.log(getCredentialOptions) + + const webauthnResp = await navigator.credentials.get(getCredentialOptions) + return decodeWebauthnSignature(webauthnResp.response, challenge.userKey) } \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 3dde5dd4..d15f97f0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1500,6 +1500,20 @@ dependencies: "@babel/types" "^7.3.0" +"@types/bn.js@*": + version "4.11.5" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.5.tgz#40e36197433f78f807524ec623afcf0169ac81dc" + integrity sha512-AEAZcIZga0JgVMHNtl1CprA/hXX7/wPt79AgR4XqaDt7jyj3QWYw6LPoOiznPtugDmlubUnAahMs2PFxGcQrng== + dependencies: + "@types/node" "*" + +"@types/elliptic@^6.4.6": + version "6.4.9" + resolved "https://registry.yarnpkg.com/@types/elliptic/-/elliptic-6.4.9.tgz#e24874622535dd022778cf56e7421799375108d8" + integrity sha512-Mn+OyENd6YHwJKgUSyCTUDunEDFMaFpCXt52JCA00sxtzEa1ji6H0doZHL3iXhqMTo1Ob53X+Dv0s4PAJ+IVlA== + dependencies: + "@types/bn.js" "*" + "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": version "2.0.1" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" @@ -1520,6 +1534,11 @@ "@types/istanbul-lib-coverage" "*" "@types/istanbul-lib-report" "*" +"@types/node@*": + version "12.11.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.11.2.tgz#75ba3beda30d690b89a5089ca1c6e8e386150b76" + integrity sha512-dsfE4BHJkLQW+reOS6b17xhZ/6FB1rB8eRRvO08nn5o+voxf3i74tuyFWNH6djdfgX7Sm5s6LD8t6mJug4dpDw== + "@types/q@^1.5.1": version "1.5.2" resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" From 4e747cb05e252c4f49014a5e39b9773fe8b9fc3e Mon Sep 17 00:00:00 2001 From: Bart Wyatt Date: Thu, 19 Sep 2019 11:26:05 -0400 Subject: [PATCH 10/76] temporary checkin to get help --- public/chain-manifests.json | 8 +++++ src/api/index.js | 37 +++++++++++---------- src/components/results/property/Property.js | 5 +-- src/utils/webauthn.js | 22 +++++------- 4 files changed, 39 insertions(+), 33 deletions(-) diff --git a/public/chain-manifests.json b/public/chain-manifests.json index e9b01d4f..9f52817b 100644 --- a/public/chain-manifests.json +++ b/public/chain-manifests.json @@ -11,6 +11,14 @@ { "contract": "tropical", "action": "like" + }, + { + "contract": "tropical", + "action": "rent" + }, + { + "contract": "tropical", + "action": "check2fa" } ] } diff --git a/src/api/index.js b/src/api/index.js index d354e02d..290862b7 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -8,19 +8,22 @@ import util from 'util'; export default () => { const private_key_wif = process.env.API_SERVER_PRIVATE_KEY const api = Router() - console.log(json) const decodeWebauthnPublicKey = (webauthnPublicKey) => { const attestationBuffer = base64url.toBuffer(webauthnPublicKey.attestationObject) - const attestation = cbor.decodeAllSync(attestationBuffer)[0] + const attestation = cbor.decodeFirstSync(attestationBuffer) + const authdata = attestation.authData + const flags = authdata.readUInt8(32) + const credentialIDLength = authdata.readUInt16BE(53) + const credentialID = authdata.slice(55, 55 + credentialIDLength) + const COSEPublicKeyBuffer = authdata.slice( 55 + credentialIDLength ) + const COSEPublicKey = cbor.decodeFirstSync(COSEPublicKeyBuffer) - const flags = attestation.authData.readUInt8(32) - const credentialIDLength = attestation.authData.readUInt16BE(53) - const credentialID = attestation.authData.slice(55, credentialIDLength) - const COSEPublicKeyBuffer = attestation.authData.slice( 55 + credentialIDLength ) - const COSEPublicKey = cbor.decodeAllSync(COSEPublicKeyBuffer)[0] + console.log(COSEPublicKey); const x = COSEPublicKey.get(-2) const y = COSEPublicKey.get(-3) + console.log(Buffer.from(x).toString('hex')) + console.log(Buffer.from(y).toString('hex')) const rpId = 'localhost' const presence = ((flags)=>{ @@ -32,14 +35,15 @@ export default () => { return 0 })(flags) - const eosioPubkey = Buffer.allocUnsafe(45) - eosioPubkey.writeInt8(2, 0) // WebAuthn pubkey - eosioPubkey.writeInt8((y[31] & 1) ? 3 : 2, 1) // solution hint for compact key - x.copy(eosioPubkey, 2, 0, 32) // ECC x - eosioPubkey.writeInt8(presence, 35) // presence enum - eosioPubkey.writeInt8(9, 36) // varInt length of rpId - eosioPubkey.write(rpId, 37) // rpId + const ser = new Serialize.SerialBuffer({textEncoder: new util.TextEncoder(), textDecoder: new util.TextDecoder()}) + ser.push(2) + ser.push((y[31] & 1) ? 3 : 2) + ser.pushArray(x) + ser.push(presence) + ser.pushString(rpId) + const eosioPubkey = ser.asUint8Array() + console.log(Buffer.from(eosioPubkey).toString('hex')) return {eosioPubkey, credentialID} } @@ -48,14 +52,11 @@ export default () => { api.post( '/generateRentChallenge', json(), (req, resp) => { const name = req.body.accountName const propertyName = req.body.propertyName - - console.log(users[name].eosioPubkey.toString('hex')) - const namePairBuffer = new Serialize.SerialBuffer({textEncoder: new util.TextEncoder(), textDecoder: new util.TextDecoder()}) namePairBuffer.pushName(name) namePairBuffer.pushName(propertyName) const sigData = Buffer.concat( [ namePairBuffer.asUint8Array(), users[name].eosioPubkey ] ) - const sigDigest = ecc.sha256(sigData) + const sigDigest = Buffer.from(ecc.sha256(sigData), 'hex') const challenge = ecc.signHash(sigDigest, private_key_wif).toString() const userKey = Numeric.publicKeyToString({ type: Numeric.KeyType.wa, diff --git a/src/components/results/property/Property.js b/src/components/results/property/Property.js index 5be33b64..2f414d53 100644 --- a/src/components/results/property/Property.js +++ b/src/components/results/property/Property.js @@ -54,6 +54,7 @@ class Property extends React.Component { const rentChallenge = await generateRentChallenge(accountName, "aproperty") const userAuth = await signRentChallenge(accountName, "aproperty", rentChallenge) const transaction = generateRentTransaction(accountName, "aproperty", rentChallenge.serverKey, rentChallenge.userKey, rentChallenge.serverAuth, userAuth) + console.log(JSON.stringify(transaction, null, ' ')) // The activeUser.signTransaction will propose the passed in transaction to the logged in Authenticator await activeUser.signTransaction(transaction, transactionConfig) this.setState({rented: true}) @@ -75,8 +76,8 @@ class Property extends React.Component { className='property-image' tabIndex={0} role='button' - onClick={this.onLike} - onKeyUp={event => onKeyUpEnter(event, this.onLike)} + onClick={this.onRent} + onKeyUp={event => onKeyUpEnter(event, this.onRent)} >
    diff --git a/src/utils/webauthn.js b/src/utils/webauthn.js index 08a8c19a..5c501fcd 100644 --- a/src/utils/webauthn.js +++ b/src/utils/webauthn.js @@ -35,14 +35,12 @@ const decodeWebauthnSignature = (assertion, key) => { throw new Error('Signature has bad s marker') const s = fixup(der.getUint8Array(der.get())) + const pubkeyData = Numeric.stringToPublicKey(key).data.subarray(0, 33) const e = new ec('p256'); - const pubKey = e.keyFromPublic(Numeric.stringToPublicKey(key).data.subarray(0, 33)).getPublic(); - - const whatItReallySigned = new Serialize.SerialBuffer() - whatItReallySigned.pushArray(new Uint8Array(assertion.authenticatorData)) - whatItReallySigned.pushArray(ecc.sha256(assertion.clientDataJSON)) - const hash = ecc.sha256(whatItReallySigned.asUint8Array().slice()) - const recid = e.getKeyRecoveryParam(hash, new Uint8Array(assertion.signature), pubKey) + const pubKey = e.keyFromPublic(pubkeyData).getPublic(); + const signedData = Buffer.concat([Buffer.from(assertion.authenticatorData), Buffer.from(ecc.sha256(Buffer.from(assertion.clientDataJSON)), 'hex')]) + const hash = Buffer.from(ecc.sha256(signedData), 'hex') + const recid = e.getKeyRecoveryParam(hash, Buffer.from(assertion.signature), pubKey) const sigData = new Serialize.SerialBuffer() sigData.push(recid + 27 + 4) @@ -55,6 +53,7 @@ const decodeWebauthnSignature = (assertion, key) => { type: Numeric.KeyType.wa, data: sigData.asUint8Array().slice(), }) + console.log(sig) return sig; } @@ -136,9 +135,8 @@ export const signRentChallenge = async(accountName, propertyName, challenge) => challengeBuffer.pushName(accountName) challengeBuffer.pushName(propertyName) challengeBuffer.pushPublicKey(challenge.userKey) - const sigDigest = ecc.sha256(challengeBuffer.asUint8Array()) - - console.log(challenge) + const sigData = challengeBuffer.asUint8Array() + const sigDigest = Buffer.from(ecc.sha256(sigData), 'hex') const getCredentialOptions = { publicKey: { timeout: 60000, @@ -146,12 +144,10 @@ export const signRentChallenge = async(accountName, propertyName, challenge) => id: base64url.toBuffer(challenge.credentialID), type: 'public-key', }], - challenge: Buffer.from(sigDigest, 'hex'), + challenge: sigDigest, }, } - console.log(getCredentialOptions) - const webauthnResp = await navigator.credentials.get(getCredentialOptions) return decodeWebauthnSignature(webauthnResp.response, challenge.userKey) } \ No newline at end of file From 6a6cfd3a8ec46d999bc2d217870164dad87ebf00 Mon Sep 17 00:00:00 2001 From: Bart Wyatt Date: Thu, 19 Sep 2019 11:46:15 -0400 Subject: [PATCH 11/76] update protocol in deployment script --- eosio/scripts/deploy_contracts.sh | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/eosio/scripts/deploy_contracts.sh b/eosio/scripts/deploy_contracts.sh index 48becde3..b1680033 100755 --- a/eosio/scripts/deploy_contracts.sh +++ b/eosio/scripts/deploy_contracts.sh @@ -235,16 +235,17 @@ assert_set_chain "cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc # Register tropical manifest # If running in Gitpod, we need to alter the URLs +CONTRACT_NAME="tropical" +MANIFEST="[{ "\""contract"\"": "\""tropical"\"", "\""action"\"": "\""like"\"" },{ "\""contract"\"": "\""tropical"\"", "\""action"\"": "\""rent"\"" },{ "\""contract"\"": "\""tropical"\"", "\""action"\"": "\""check2fa"\"" }]" if [ -z "$RUNNING_IN_GITPOD" ]; then - assert_register_manifest "tropical" "http://localhost:3000" "http://localhost:3000/app-metadata.json#bc677523fca562e307343296e49596e25cb14aac6b112a9428a42119da9f65fa" "[{ "\""contract"\"": "\""tropical"\"", "\""action"\"": "\""like"\"" }]" + APP_DOMAIN="http://localhost:3000" + APPMETA="http://localhost:3000/app-metadata.json#bc677523fca562e307343296e49596e25cb14aac6b112a9428a42119da9f65fa" else GP_URL=$(gp url 8000) - CONTRACT_NAME="tropical" APP_DOMAIN="${GP_URL}" APPMETA="${GP_URL}/app-metadata.json#bc677523fca562e307343296e49596e25cb14aac6b112a9428a42119da9f65fa" - MANIFEST="[{ "\""contract"\"": "\""tropical"\"", "\""action"\"": "\""like"\"" }]" - assert_register_manifest $CONTRACT_NAME $APP_DOMAIN $APPMETA "$MANIFEST" fi +assert_register_manifest $CONTRACT_NAME $APP_DOMAIN $APPMETA "$MANIFEST" echo "All done initializing the blockchain" From 0f5b3be4c75cfea243b419a48ba79092124a7904 Mon Sep 17 00:00:00 2001 From: Bart Wyatt Date: Thu, 19 Sep 2019 12:16:12 -0400 Subject: [PATCH 12/76] added retry logic and bumped up the transaction time to get contracts more reliably installed. Also fail if they dont install properly --- eosio/scripts/deploy_contracts.sh | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/eosio/scripts/deploy_contracts.sh b/eosio/scripts/deploy_contracts.sh index b1680033..e8771769 100755 --- a/eosio/scripts/deploy_contracts.sh +++ b/eosio/scripts/deploy_contracts.sh @@ -49,6 +49,30 @@ function start_wallet { cleos wallet import --private-key $SYSTEM_ACCOUNT_PRIVATE_KEY } +# $1 account name +# $2 contract directory +# $3 wasm file name +# $4 abi file name +function setcode { + retry_count="4" + + while [ $retry_count -gt 0 ]; do + cleos set contract $1 $2 $3 $4 -p $1@active + if [ $? -eq 0 ]; then + break + fi + + echo "setcode failed retrying..." + sleep 1s + retry_count=$[$retry_count-1] + done + + if [ $retry_count -eq 0 ]; then + echo "setcode failed too many times, bailing." + exit 1 + fi +} + # $1 - parent folder where smart contract directory is located # $2 - smart contract name # $3 - account name @@ -69,7 +93,7 @@ function deploy_system_contract { cd $CONTRACTS_DIR # Set (deploy) the compiled contract to the blockchain - cleos set contract $3 "$CONTRACTS_DIR/$1/$2/src" "$2.wasm" "$2.abi" -p $3@active + setcode $3 "$CONTRACTS_DIR/$1/$2/src" "$2.wasm" "$2.abi" } # $1 - account name @@ -104,7 +128,7 @@ function deploy_app_contract { cd $CONTRACTS_DIR # Set (deploy) the compiled contract to the blockchain - cleos set contract $2 "$CONTRACTS_DIR/$1/" -p $2 + setcode $2 "$CONTRACTS_DIR/$1/" "$1.wasm" "$1.abi" # Set the root of trust for the contract cleos push action $2 setsrvkey '["'"$TROPICAL_EXAMPLE_ACCOUNT_PUBLIC_KEY"'"]' -p $2 @@ -157,6 +181,7 @@ if [ -z "$NODEOS_RUNNING" ]; then --http-server-address=0.0.0.0:8888 \ --access-control-allow-origin=* \ --contracts-console \ + --max-transaction-time=100000 \ --verbose-http-errors & fi From 9663d8f34064d6f8c2ffe64197486b96fba15ee6 Mon Sep 17 00:00:00 2001 From: Bart Wyatt Date: Fri, 20 Sep 2019 10:13:34 -0400 Subject: [PATCH 13/76] upgraded chain to 2.0-develop, added activation of the webauthn sigs, built contract with version of CDT that includes fixes to *_recover_key wrappers --- docker-compose.yml | 2 +- eosio/Dockerfile | 17 +++++++++-------- eosio/contracts/tropical/tropical.cpp | 12 ++++++++++++ eosio/contracts/tropical/tropical.wasm | Bin 23076 -> 24365 bytes eosio/scripts/deploy_contracts.sh | 20 +++++++++++++++++++- 5 files changed, 41 insertions(+), 10 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index d04f41f7..ad63d44e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,7 +7,7 @@ services: labels: - "cleanup" image: tropical-example/eosio - command: ["nodeos", "--data-dir", "/root/.local/share", "-e", "-p", "eosio", "--hard-replay", "--plugin", "eosio::producer_plugin", "--plugin", "eosio::chain_api_plugin", "--plugin", "eosio::http_plugin", "--http-server-address=0.0.0.0:8888", "--access-control-allow-origin=*", "--contracts-console", "--http-validate-host=false", "--verbose-http-errors"] + command: ["nodeos", "--data-dir", "/root/.local/share", "-e", "-p", "eosio", "--hard-replay", "--plugin", "eosio::producer_plugin", "--plugin", "eosio::chain_api_plugin", "--plugin", "eosio::http_plugin", "--http-server-address=0.0.0.0:8888", "--access-control-allow-origin=*", "--contracts-console", "--http-validate-host=false", "--verbose-http-errors", "--max-transaction-time=100"] labels: - "cleanup" ports: diff --git a/eosio/Dockerfile b/eosio/Dockerfile index e0fc6e7a..bd8a2275 100644 --- a/eosio/Dockerfile +++ b/eosio/Dockerfile @@ -4,18 +4,19 @@ RUN echo "INSTALLING EOSIO AND CDT" RUN apt-get update && apt-get install -y wget sudo curl RUN wget https://github.com/EOSIO/eosio.cdt/releases/download/v1.6.1/eosio.cdt_1.6.1-1_amd64.deb RUN apt-get update && sudo apt install -y ./eosio.cdt_1.6.1-1_amd64.deb -RUN wget https://github.com/EOSIO/eos/releases/download/v1.7.3/eosio_1.7.3-1-ubuntu-18.04_amd64.deb -RUN apt-get update && sudo apt install -y ./eosio_1.7.3-1-ubuntu-18.04_amd64.deb - +#RUN wget https://github.com/EOSIO/eos/releases/download/v1.8.3/eosio_1.8.3-1-ubuntu-18.04_amd64.deb +#RUN apt-get update && sudo apt install -y ./eosio_1.8.3-1-ubuntu-18.04_amd64.deb +COPY ./eosio_1.9.0-develop_amd64.deb ./ +RUN apt-get update && sudo apt install -y ./eosio_1.9.0-develop_amd64.deb RUN echo "INSTALLING CONTRACTS" RUN mkdir -p "/opt/eosio/bin/contracts" RUN echo "INSTALLING EOSIO.CONTRACTS" -RUN wget https://github.com/EOSIO/eosio.contracts/archive/v1.6.0.tar.gz +RUN wget https://github.com/EOSIO/eosio.contracts/archive/v1.7.0.tar.gz RUN mkdir -p /eosio.contracts -RUN tar xvzf ./v1.6.0.tar.gz -C /eosio.contracts -RUN mv /eosio.contracts/eosio.contracts-1.6.0 /opt/eosio/bin/contracts -RUN mv /opt/eosio/bin/contracts/eosio.contracts-1.6.0 /opt/eosio/bin/contracts/eosio.contracts +RUN tar xvzf ./v1.7.0.tar.gz -C /eosio.contracts +RUN mv /eosio.contracts/eosio.contracts-1.7.0 /opt/eosio/bin/contracts +RUN mv /opt/eosio/bin/contracts/eosio.contracts-1.7.0 /opt/eosio/bin/contracts/eosio.contracts RUN echo "INSTALLING EOSIO.ASSERT CONTRACT" RUN wget https://github.com/EOSIO/eosio.assert/archive/v0.1.0.tar.gz @@ -25,7 +26,7 @@ RUN mv /eosio.assert/eosio.assert-0.1.0 /opt/eosio/bin/contracts RUN mv /opt/eosio/bin/contracts/eosio.assert-0.1.0 /opt/eosio/bin/contracts/eosio.assert RUN echo "COPYING APP CONTRACTS" -COPY ./././././ /opt/eosio/bin +COPY ./ /opt/eosio/bin RUN echo "COPYING EOSIO.TOKEN RICARDIAN CONTRACT" RUN cp /opt/eosio/bin/contracts/eosio.token/eosio.token.contracts.md /opt/eosio/bin/contracts/eosio.contracts/contracts/eosio.token/src diff --git a/eosio/contracts/tropical/tropical.cpp b/eosio/contracts/tropical/tropical.cpp index 54e251e4..c00d2a2b 100644 --- a/eosio/contracts/tropical/tropical.cpp +++ b/eosio/contracts/tropical/tropical.cpp @@ -34,14 +34,19 @@ CONTRACT tropical : public contract { * @return */ ACTION rent( name user, name property ) { + print("processing rent"); // enforce that the check2fa action is the first CFA // auto check2fa_action = get_action(0, 0); + print("got action"); + // unpack the first two parameters // auto second_factor_params = unpack>(check2fa_action.data); + print("unpacked params"); + // validate that the 2FA was properly sent to this contract // check(check2fa_action.account == _self, "Malformed 2FA action, wrong account"); @@ -55,6 +60,7 @@ CONTRACT tropical : public contract { check(std::get<0>(second_factor_params) == user, "Malformed 2FA action, wrong user"); check(std::get<1>(second_factor_params) == property, "Malfomed 2FA action, wrong property"); + print("fetching server key"); // finally validate that the root of trust, the server_key, matches the chain state // this was not possible in a context free action // @@ -85,23 +91,29 @@ CONTRACT tropical : public contract { // concatenate the serialized user name, property name, and user public key // as the "challenge" that the server would have signed // + print("packing challenge..."); auto challenge = pack(std::forward_as_tuple(user, property, user_key)); + print("challenge packed!"); // hash the "challenge" into a signature digest that both the server and the user's WebAuthn authenticator // will sign in order to prove to the chain that there was a valid second factor ceremony // auto signature_digest = sha256(challenge.data(), challenge.size()); +print("digest calculated!"); // verify the provided signature from the server, this is something only an entity in possession of the // private `server_key` can have properly generated // assert_recover_key(signature_digest, server_auth, server_key); +print("server key validated!"); // verify the provided signature from the bearer, this is something only an entity in possession of the // private `user_key` can have properly generated and the `user_key` is attested to by the `server_key` // via the challenge digest // assert_recover_key(signature_digest, bearer_auth, user_key); + + print("challenge validated"); } /** diff --git a/eosio/contracts/tropical/tropical.wasm b/eosio/contracts/tropical/tropical.wasm index eb94f0f277d84907f6706bfc6ec6956c0c3414df..e7d2967635a5de2b3053f6c5f74b2fbdbbbeec0f 100755 GIT binary patch delta 8177 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 Kfj4efGWI{h4Srhy delta 6866 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 diff --git a/eosio/scripts/deploy_contracts.sh b/eosio/scripts/deploy_contracts.sh index e8771769..1084d0e3 100755 --- a/eosio/scripts/deploy_contracts.sh +++ b/eosio/scripts/deploy_contracts.sh @@ -49,6 +49,18 @@ function start_wallet { cleos wallet import --private-key $SYSTEM_ACCOUNT_PRIVATE_KEY } +function post_preactivate { + curl -X POST http://127.0.0.1:8888/v1/producer/schedule_protocol_feature_activations -d '{"protocol_features_to_activate": ["0ec7e080177b2c02b278d5088611686b49d739925a92d9bfcacd7fc6b74053bd"]}' +} + +# $1 feature disgest to activate +function activate_feature { + cleos push action eosio activate '["'"$1"'"]' -p eosio + if [ $? -ne 0 ]; then + exit 1 + fi +} + # $1 account name # $2 contract directory # $3 wasm file name @@ -175,7 +187,7 @@ if [ -z "$NODEOS_RUNNING" ]; then --data-dir $BLOCKCHAIN_DATA_DIR \ --config-dir $BLOCKCHAIN_CONFIG_DIR \ --http-validate-host=false \ - --plugin eosio::producer_plugin \ + --plugin eosio::producer_api_plugin \ --plugin eosio::chain_api_plugin \ --plugin eosio::http_plugin \ --http-server-address=0.0.0.0:8888 \ @@ -232,6 +244,9 @@ if [ ! -z "$RUNNING_IN_GITPOD" ]; then cp $GITPOD_WORKSPACE_ROOT/eosio/contracts/tropical/* $CONTRACTS_DIR/tropical/ fi +# preactivate concensus upgrades +post_preactivate + # Create accounts and deploy contracts # eosio.assert create_account eosio.assert $SYSTEM_ACCOUNT_PUBLIC_KEY $SYSTEM_ACCOUNT_PRIVATE_KEY @@ -245,6 +260,9 @@ create_account eosio.token $SYSTEM_ACCOUNT_PUBLIC_KEY $SYSTEM_ACCOUNT_PRIVATE_KE deploy_system_contract eosio.contracts/contracts eosio.token eosio.token issue_sys_tokens +# activate Webauthn support +activate_feature "4fca8bd82bbd181e714e283f83e1b45d95ca5af40fb89ad3977b653c448f78c2" + # tropical create_account tropical $TROPICAL_EXAMPLE_ACCOUNT_PUBLIC_KEY $TROPICAL_EXAMPLE_ACCOUNT_PRIVATE_KEY deploy_app_contract tropical tropical From 23e43a87dd875faf1c161a64445ad47551799283 Mon Sep 17 00:00:00 2001 From: Bart Wyatt Date: Fri, 20 Sep 2019 10:15:09 -0400 Subject: [PATCH 14/76] strip debug prints from contract --- eosio/contracts/tropical/tropical.cpp | 12 ------------ eosio/contracts/tropical/tropical.wasm | Bin 24365 -> 23671 bytes 2 files changed, 12 deletions(-) diff --git a/eosio/contracts/tropical/tropical.cpp b/eosio/contracts/tropical/tropical.cpp index c00d2a2b..54e251e4 100644 --- a/eosio/contracts/tropical/tropical.cpp +++ b/eosio/contracts/tropical/tropical.cpp @@ -34,19 +34,14 @@ CONTRACT tropical : public contract { * @return */ ACTION rent( name user, name property ) { - print("processing rent"); // enforce that the check2fa action is the first CFA // auto check2fa_action = get_action(0, 0); - print("got action"); - // unpack the first two parameters // auto second_factor_params = unpack>(check2fa_action.data); - print("unpacked params"); - // validate that the 2FA was properly sent to this contract // check(check2fa_action.account == _self, "Malformed 2FA action, wrong account"); @@ -60,7 +55,6 @@ CONTRACT tropical : public contract { check(std::get<0>(second_factor_params) == user, "Malformed 2FA action, wrong user"); check(std::get<1>(second_factor_params) == property, "Malfomed 2FA action, wrong property"); - print("fetching server key"); // finally validate that the root of trust, the server_key, matches the chain state // this was not possible in a context free action // @@ -91,29 +85,23 @@ CONTRACT tropical : public contract { // concatenate the serialized user name, property name, and user public key // as the "challenge" that the server would have signed // - print("packing challenge..."); auto challenge = pack(std::forward_as_tuple(user, property, user_key)); - print("challenge packed!"); // hash the "challenge" into a signature digest that both the server and the user's WebAuthn authenticator // will sign in order to prove to the chain that there was a valid second factor ceremony // auto signature_digest = sha256(challenge.data(), challenge.size()); -print("digest calculated!"); // verify the provided signature from the server, this is something only an entity in possession of the // private `server_key` can have properly generated // assert_recover_key(signature_digest, server_auth, server_key); -print("server key validated!"); // verify the provided signature from the bearer, this is something only an entity in possession of the // private `user_key` can have properly generated and the `user_key` is attested to by the `server_key` // via the challenge digest // assert_recover_key(signature_digest, bearer_auth, user_key); - - print("challenge validated"); } /** diff --git a/eosio/contracts/tropical/tropical.wasm b/eosio/contracts/tropical/tropical.wasm index e7d2967635a5de2b3053f6c5f74b2fbdbbbeec0f..d4bf47f94c91e4fa82ec8ebd57fcd5652b785618 100755 GIT binary patch delta 2990 zcmaJ@eNa@_6~Fhsx480__%u>rzj%u%OI&pkShTS%PZ1J90n4b76YQn2l5rB#X;LQB&e+*$hjuUnSzxqD+hk%J|F9EmGA+~c$99HH=wInM_bo0M zrf=rWx%Yhh?)kbOzj}{FMb{!zz|;;LPNjZ&zbe^X~7TdiwM;XP%86?LKz= zM9)*bKX~q3yq`bMf5^}C3;ad?62HW=2jAggc)}Lrk;Is-Whs9W&aSA0UCZ9)!-<(? zU4q|)wiRy4zQZRIEf2>9KbyFnJHW-KNr>c)6Y=L)5^2x>s~8!Bs)9P#AF{X-U&YK6 zKU$;|Gea>)c+6xb)1QF13*Laoog2mMC_LwMiPuNrb*H!R>ibORny5zAejY1Tm?4^T z(7?PQ1@JfLHu2#Y6uG`fYaDhp`tFRem|w8v3d`XdD&CWd=A|U_F;R^avfb-}yQ5@q z#9c}R+?V*f;Pq@5qe+N*cJRY+-BU)+f9`1}67u$mFO%>~@8-geBE>H%3|^bV5&g>~ z`sbj9d}R+NS$`$@7_%#<1Xv8~LPg{Z{IkI^zzJDTYWX7;%msSIL7CJTu>MA0A1 zBCa1m*Ugl2A3HtE;F2tZOS1*IDGZ!&uVrvi$AZ0#%FG;Px}Zf+X*!)HpTG(&QK|(@ z_#V8vQHKI&d1woBj6^4EJ{~r)h<^VC5 zvsh0v9ukAXP)e~}1Xqe>_t|CP2306qwK8s_bj|W~(y$>!pE;fGY%HminL+FYEO1CL zY7N95Nn@wD)dZN0AZ>;sVa987$gE!ifu!T?A zzRR%vXbE-U5|fM|D3{Xr3**+Vl)j^k>>hBQ+(YazxgM9PN1bmvk6M&a>G%RvLbOU| z*;!s2Syjq)8*UbRl`=#WRcyH5E?DCs8uwdcj65V>#IbqJ%0DJcZ^x-jnqOSA6=BW% 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 From d595113f601db4dd101abc887712679a502c6ede Mon Sep 17 00:00:00 2001 From: Mike Manfredi Date: Fri, 20 Sep 2019 11:53:33 -0400 Subject: [PATCH 15/76] cleaned up dropdown menu --- src/assets/images/leave.svg | 15 +++++++++++++++ src/assets/images/money-bag.svg | 18 ++++++++++++++++++ src/assets/images/preview.svg | 13 +++++++++++++ src/assets/images/privacy.svg | 15 +++++++++++++++ src/components/navigation/UserDropdown.js | 10 +++++++--- src/components/navigation/UserDropdown.scss | 16 ++++++++++++++-- 6 files changed, 82 insertions(+), 5 deletions(-) create mode 100644 src/assets/images/leave.svg create mode 100644 src/assets/images/money-bag.svg create mode 100644 src/assets/images/preview.svg create mode 100644 src/assets/images/privacy.svg diff --git a/src/assets/images/leave.svg b/src/assets/images/leave.svg new file mode 100644 index 00000000..3e9033f8 --- /dev/null +++ b/src/assets/images/leave.svg @@ -0,0 +1,15 @@ + + + + 3DE8CDF3-095F-4AA3-A2A5-DD2FC0158FED@1.00x + Created with sketchtool. + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/images/money-bag.svg b/src/assets/images/money-bag.svg new file mode 100644 index 00000000..ebf9a32c --- /dev/null +++ b/src/assets/images/money-bag.svg @@ -0,0 +1,18 @@ + + + + 14536D85-CEDC-4C6C-8B03-BC3107F83C9F@1.00x + Created with sketchtool. + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/images/preview.svg b/src/assets/images/preview.svg new file mode 100644 index 00000000..2ec775c8 --- /dev/null +++ b/src/assets/images/preview.svg @@ -0,0 +1,13 @@ + + + + 514A6B0A-EACB-4F83-84E7-AF717BE0720B@1.00x + Created with sketchtool. + + + + + + + + \ No newline at end of file diff --git a/src/assets/images/privacy.svg b/src/assets/images/privacy.svg new file mode 100644 index 00000000..e9dac3a0 --- /dev/null +++ b/src/assets/images/privacy.svg @@ -0,0 +1,15 @@ + + + + 98DDC0C7-B6EC-435F-B2BD-E0E1A8452FB7@1.00x + Created with sketchtool. + + + + + + + + + + \ No newline at end of file diff --git a/src/components/navigation/UserDropdown.js b/src/components/navigation/UserDropdown.js index 9e9abddc..ad6a2913 100644 --- a/src/components/navigation/UserDropdown.js +++ b/src/components/navigation/UserDropdown.js @@ -3,6 +3,8 @@ import { func } from 'prop-types' // UAL context object that can be set via the contextType property on a class and can be referenced using this.context import { UALContext } from 'ual-reactjs-renderer' import './UserDropdown.scss' +import privacyIcon from 'assets/images/privacy.svg' +import logoutIcon from 'assets/images/leave.svg' import { onKeyUpEnter } from 'utils/keyPress' @@ -32,20 +34,22 @@ class UserDropdown extends React.Component { >
      { !enrolled - ?
    • onKeyUpEnter(event, doEnroll)} > - Enable WebAuthn 2FA + + Enable WebAuthn 2FA
    • :
    • WebAuthn 2FA Enabled!
    • } -
    • onKeyUpEnter(event, logout)} > + Logout
    diff --git a/src/components/navigation/UserDropdown.scss b/src/components/navigation/UserDropdown.scss index aff91847..a3565558 100644 --- a/src/components/navigation/UserDropdown.scss +++ b/src/components/navigation/UserDropdown.scss @@ -1,5 +1,9 @@ @import "src/assets/styles/constants.scss"; +.user-dropdown-container > ul > li.user-dropdown-item.menu-item-with-icon { + margin: 1rem 0 0 0.2rem; +} + .user-dropdown-container { position: relative; background-color: white; @@ -12,16 +16,24 @@ z-index: 1; cursor: pointer; + ul { + padding-inline-start: 0px; + } + li { &.user-dropdown-item { - display: inline-block; + display: block; margin: 0 0 0 0; font-weight: normal; color: black; } } - + .menu-item-icon-left { + height: 14px; + width: 14px; + margin: 0px 0.5rem; + } &:after { content: ''; From 36fb1748a92a6325ccaf79ad631380b8d406ad14 Mon Sep 17 00:00:00 2001 From: Mike Manfredi Date: Fri, 20 Sep 2019 15:15:03 -0400 Subject: [PATCH 16/76] added buttons, new property image, and button articulation --- src/App.scss | 14 +++++++++ src/assets/images/property.svg | 20 +++++++++++++ src/components/results/property/Property.js | 29 +++++++++++++++++-- src/components/results/property/Property.scss | 24 +++++++++++++-- .../results/property/PropertyImage.js | 6 ++-- src/index.scss | 1 + 6 files changed, 88 insertions(+), 6 deletions(-) create mode 100644 src/assets/images/property.svg diff --git a/src/App.scss b/src/App.scss index 51e5671e..5e549bc6 100644 --- a/src/App.scss +++ b/src/App.scss @@ -25,3 +25,17 @@ body { opacity: .5; cursor: not-allowed !important; } + +.button { + color: white; + font-weight: 600; + text-align: center; + height: 41px; + border-radius: 6px; + padding: 0.4rem; + img { + width: 22px; + height: 16px; + margin-right: 0.5rem; + } +} \ No newline at end of file diff --git a/src/assets/images/property.svg b/src/assets/images/property.svg new file mode 100644 index 00000000..0399b228 --- /dev/null +++ b/src/assets/images/property.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/components/results/property/Property.js b/src/components/results/property/Property.js index 2f414d53..a5b0b192 100644 --- a/src/components/results/property/Property.js +++ b/src/components/results/property/Property.js @@ -9,6 +9,9 @@ import { generateTransaction, generateRentTransaction, transactionConfig } from import { generateRentChallenge, signRentChallenge } from 'utils/webauthn' import { onKeyUpEnter } from 'utils/keyPress' +import likeSvg from 'assets/images/heart/heart.svg' +import rentSvg from 'assets/images/money-bag.svg' + class Property extends React.Component { static contextType = UALContext @@ -27,6 +30,7 @@ class Property extends React.Component { const { login, displayError } = this.props // Via static contextType = UALContext, access to the activeUser object on this.context is now available const { activeUser } = this.context + console.info('activeUser:', activeUser) if (activeUser) { this.setState({ loading: true }) try { @@ -68,7 +72,7 @@ class Property extends React.Component { } render() { - const { loading, liked } = this.state + const { loading, liked, rented } = this.state return (
    @@ -83,7 +87,28 @@ class Property extends React.Component {
    -
    +
    + onKeyUpEnter(event, this.onRent)} + > + rent + {rented && !loading ? 'Renting' : 'Rent'} + + onKeyUpEnter(event, this.onLike)} + > + like + {liked && !loading ? 'Liked' : 'Like'} + +
    ) } diff --git a/src/components/results/property/Property.scss b/src/components/results/property/Property.scss index 7808ce14..3612f784 100644 --- a/src/components/results/property/Property.scss +++ b/src/components/results/property/Property.scss @@ -30,8 +30,8 @@ } .property-info-3 { - background: $filler-light; - width: 85%; + // background: $filler-light; + width: 100%; } } @@ -40,3 +40,23 @@ float: right; } } + +.rent-button { + display: inline-block; + background-color: #2B455B; + width: 150px; + margin-right: 0.5rem; + &.active { + background-color: #46D564; + } +} + +.like-button { + display: inline-block; + background-color: #597084; + width: 110px; + // margin-left: 2rem; + &.active { + background-color: #FD5F82; + } +} \ No newline at end of file diff --git a/src/components/results/property/PropertyImage.js b/src/components/results/property/PropertyImage.js index 0299b39a..44279e0f 100644 --- a/src/components/results/property/PropertyImage.js +++ b/src/components/results/property/PropertyImage.js @@ -5,12 +5,14 @@ import './PropertyImage.scss' import heart from 'assets/images/heart/heart.svg' import likedHeart from 'assets/images/heart/liked-heart.svg' import loadingHeart from 'assets/images/heart/loading-heart.svg' +import propertySvg from 'assets/images/property.svg' const PropertyImage = ({ loading, liked }) => (
    - heart + property + {/* heart liked-heart - loading-heart + loading-heart */}
    ) diff --git a/src/index.scss b/src/index.scss index cee5f348..29fbd552 100644 --- a/src/index.scss +++ b/src/index.scss @@ -1,4 +1,5 @@ body { + background-color: white; margin: 0; padding: 0; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", From 8f1d827a55fe2c26591f59e9e81fae5395129531 Mon Sep 17 00:00:00 2001 From: Mike Manfredi Date: Fri, 20 Sep 2019 15:24:21 -0400 Subject: [PATCH 17/76] adding rent svg toggle --- src/assets/images/renting.svg | 11 +++++++++++ src/components/results/property/Property.js | 3 ++- 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 src/assets/images/renting.svg diff --git a/src/assets/images/renting.svg b/src/assets/images/renting.svg new file mode 100644 index 00000000..dbac9bac --- /dev/null +++ b/src/assets/images/renting.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/src/components/results/property/Property.js b/src/components/results/property/Property.js index a5b0b192..3e632772 100644 --- a/src/components/results/property/Property.js +++ b/src/components/results/property/Property.js @@ -11,6 +11,7 @@ import { onKeyUpEnter } from 'utils/keyPress' import likeSvg from 'assets/images/heart/heart.svg' import rentSvg from 'assets/images/money-bag.svg' +import rentingSvg from 'assets/images/renting.svg' class Property extends React.Component { static contextType = UALContext @@ -95,7 +96,7 @@ class Property extends React.Component { onClick={this.onRent} onKeyUp={event => onKeyUpEnter(event, this.onRent)} > - rent + rent {rented && !loading ? 'Renting' : 'Rent'} Date: Fri, 20 Sep 2019 15:51:52 -0400 Subject: [PATCH 18/76] removed unused code --- src/components/results/property/Property.scss | 2 -- src/components/results/property/PropertyImage.js | 8 +------- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/src/components/results/property/Property.scss b/src/components/results/property/Property.scss index 3612f784..ea50aac3 100644 --- a/src/components/results/property/Property.scss +++ b/src/components/results/property/Property.scss @@ -30,7 +30,6 @@ } .property-info-3 { - // background: $filler-light; width: 100%; } } @@ -55,7 +54,6 @@ display: inline-block; background-color: #597084; width: 110px; - // margin-left: 2rem; &.active { background-color: #FD5F82; } diff --git a/src/components/results/property/PropertyImage.js b/src/components/results/property/PropertyImage.js index 44279e0f..fd848114 100644 --- a/src/components/results/property/PropertyImage.js +++ b/src/components/results/property/PropertyImage.js @@ -2,17 +2,11 @@ import React from 'react' import { bool } from 'prop-types' import './PropertyImage.scss' -import heart from 'assets/images/heart/heart.svg' -import likedHeart from 'assets/images/heart/liked-heart.svg' -import loadingHeart from 'assets/images/heart/loading-heart.svg' import propertySvg from 'assets/images/property.svg' -const PropertyImage = ({ loading, liked }) => ( +const PropertyImage = () => (
    property - {/* heart - liked-heart - loading-heart */}
    ) From 8bcab840fed3a8d9d637a9c3a4a9beb2115105f8 Mon Sep 17 00:00:00 2001 From: Bart Wyatt Date: Fri, 27 Sep 2019 09:16:48 -0400 Subject: [PATCH 19/76] add eosjs resolutions for now; --- package.json | 3 + yarn.lock | 644 +++++++++++++++++++-------------------------------- 2 files changed, 242 insertions(+), 405 deletions(-) diff --git a/package.json b/package.json index 43faf0ff..58bc9b60 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,9 @@ "ual-scatter": "0.1.6", "ual-token-pocket": "0.1.2" }, + "resolutions": { + "eosjs": "^20.0.2-a53eecb.0" + }, "scripts": { "start": "node scripts/copyDefaultEnv.js && react-scripts start", "startInGitpod": "node scripts/copyDefaultEnv.js && REACT_APP_IS_GITPOD=true react-scripts start", diff --git a/yarn.lock b/yarn.lock index d15f97f0..863d45b2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -29,7 +29,7 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@7.6.0", "@babel/core@^7.1.0", "@babel/core@^7.4.5": +"@babel/core@7.6.0": version "7.6.0" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.6.0.tgz#9b00f73554edd67bebc86df8303ef678be3d7b48" integrity sha512-FuRhDRtsd6IptKpHXAa+4WPZYY2ZzgowkbLBecEDDSje1X/apG7jQM33or3NdOmjXBKWGOg4JmSiRfUfuTtHXw== @@ -49,7 +49,7 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.1.6": +"@babel/core@^7.1.0", "@babel/core@^7.1.6", "@babel/core@^7.4.5": version "7.6.4" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.6.4.tgz#6ebd9fe00925f6c3e177bb726a188b5f578088ff" integrity sha512-Rm0HGw101GY8FTzpWSyRbki/jzq+/PkNQJ+nSulrdY6gFGOsNseCqD6KHRYe2E+EdzuBdr2pxCp6s4Uk6eJ+XQ== @@ -69,7 +69,7 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.2.2", "@babel/generator@^7.6.3", "@babel/generator@^7.6.4": +"@babel/generator@^7.4.0", "@babel/generator@^7.6.0", "@babel/generator@^7.6.3", "@babel/generator@^7.6.4": version "7.6.4" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.6.4.tgz#a4f8437287bf9671b07f483b76e3bb731bc97671" integrity sha512-jsBuXkFoZxk0yWLyGI9llT9oiQ2FeTASmRFE32U+aaDTfoE92t78eroO7PTpU/OrYq38hlcDM6vbfLDaOLy+7w== @@ -79,17 +79,6 @@ lodash "^4.17.13" source-map "^0.5.0" -"@babel/generator@^7.4.0", "@babel/generator@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.6.0.tgz#e2c21efbfd3293ad819a2359b448f002bfdfda56" - integrity sha512-Ms8Mo7YBdMMn1BYuNtKuP/z0TgEIhbcyB8HVR6PPNYp4P61lMsABiS4A3VG1qznjXVCf3r+fVHhm4efTYVsySA== - dependencies: - "@babel/types" "^7.6.0" - jsesc "^2.5.1" - lodash "^4.17.13" - source-map "^0.5.0" - trim-right "^1.0.1" - "@babel/helper-annotate-as-pure@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" @@ -248,7 +237,7 @@ "@babel/template" "^7.1.0" "@babel/types" "^7.0.0" -"@babel/helper-split-export-declaration@^7.0.0", "@babel/helper-split-export-declaration@^7.4.4": +"@babel/helper-split-export-declaration@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q== @@ -265,7 +254,7 @@ "@babel/traverse" "^7.1.0" "@babel/types" "^7.2.0" -"@babel/helpers@^7.4.3", "@babel/helpers@^7.6.2": +"@babel/helpers@^7.4.3", "@babel/helpers@^7.6.0", "@babel/helpers@^7.6.2": version "7.6.2" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.6.2.tgz#681ffe489ea4dcc55f23ce469e58e59c1c045153" integrity sha512-3/bAUL8zZxYs1cdX2ilEE0WobqbCmKWr/889lf2SS0PpDcpEIY8pb1CCyz0pEcX3pEb+MCbks1jIokz2xLtGTA== @@ -274,15 +263,6 @@ "@babel/traverse" "^7.6.2" "@babel/types" "^7.6.0" -"@babel/helpers@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.6.0.tgz#21961d16c6a3c3ab597325c34c465c0887d31c6e" - integrity sha512-W9kao7OBleOjfXtFGgArGRX6eCP0UEcA2ZWEWNkJdRZnHhW4eEbeswbG3EwaRsnQUAEGWYgMq1HsIXuNNNy2eQ== - dependencies: - "@babel/template" "^7.6.0" - "@babel/traverse" "^7.6.0" - "@babel/types" "^7.6.0" - "@babel/highlight@^7.0.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540" @@ -292,12 +272,7 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.6.0.tgz#3e05d0647432a8326cb28d0de03895ae5a57f39b" - integrity sha512-+o2q111WEx4srBs7L9eJmcwi655eD8sXniLqMB93TBK9GrNzGrxDWSjiqz2hLU0Ha8MTXFIP0yd9fNdP+m43ZQ== - -"@babel/parser@^7.2.3", "@babel/parser@^7.6.3", "@babel/parser@^7.6.4": +"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.6.0", "@babel/parser@^7.6.3", "@babel/parser@^7.6.4": version "7.6.4" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.6.4.tgz#cb9b36a7482110282d5cb6dd424ec9262b473d81" integrity sha512-D8RHPW5qd0Vbyo3qb+YjO5nvUVRTXFLQ/FsDxJU2Nqz4uB5EnUN0ZQSEYpvTIbRuttig1XbHWU5oMeQwQSAA+A== @@ -344,7 +319,7 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-json-strings" "^7.2.0" -"@babel/plugin-proposal-object-rest-spread@7.5.5", "@babel/plugin-proposal-object-rest-spread@^7.5.5": +"@babel/plugin-proposal-object-rest-spread@7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.5.tgz#61939744f71ba76a3ae46b5eea18a54c16d22e58" integrity sha512-F2DxJJSQ7f64FyTVl5cw/9MWn6naXGdk3Q3UhDbFEEHv+EilCPoeRD3Zh/Utx1CJz4uyKlQ4uH+bJPbEhMV7Zw== @@ -352,7 +327,7 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-object-rest-spread" "^7.2.0" -"@babel/plugin-proposal-object-rest-spread@^7.4.3", "@babel/plugin-proposal-object-rest-spread@^7.6.2": +"@babel/plugin-proposal-object-rest-spread@^7.4.3", "@babel/plugin-proposal-object-rest-spread@^7.5.5", "@babel/plugin-proposal-object-rest-spread@^7.6.2": version "7.6.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.6.2.tgz#8ffccc8f3a6545e9f78988b6bf4fe881b88e8096" integrity sha512-LDBXlmADCsMZV1Y9OQwMc0MyGZ8Ta/zlD9N67BfQT8uYwkRswiu2hU6nJKrjrt/58aH/vqfQlR/9yId/7A2gWw== @@ -368,16 +343,7 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" -"@babel/plugin-proposal-unicode-property-regex@^7.4.0", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz#501ffd9826c0b91da22690720722ac7cb1ca9c78" - integrity sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.5.4" - -"@babel/plugin-proposal-unicode-property-regex@^7.6.2": +"@babel/plugin-proposal-unicode-property-regex@^7.4.0", "@babel/plugin-proposal-unicode-property-regex@^7.4.4", "@babel/plugin-proposal-unicode-property-regex@^7.6.2": version "7.6.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.6.2.tgz#05413762894f41bfe42b9a5e80919bd575dcc802" integrity sha512-NxHETdmpeSCtiatMRYWVJo7266rrvAC3DTeG5exQBIH/fMIUK7ejDNznBbn3HQl/o9peymRRg7Yqkx6PdUXmMw== @@ -472,23 +438,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-block-scoping@^7.4.0": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz#c13279fabf6b916661531841a23c4b7dae29646d" - integrity sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - lodash "^4.17.11" - -"@babel/plugin-transform-block-scoping@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.0.tgz#c49e21228c4bbd4068a35667e6d951c75439b1dc" - integrity sha512-tIt4E23+kw6TgL/edACZwP1OUKrjOTyMrFMLoT5IOFrfMRabCgekjqFd5o6PaAMildBu46oFkekIdMuGkkPEpA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - lodash "^4.17.13" - -"@babel/plugin-transform-block-scoping@^7.6.3": +"@babel/plugin-transform-block-scoping@^7.4.0", "@babel/plugin-transform-block-scoping@^7.6.0", "@babel/plugin-transform-block-scoping@^7.6.3": version "7.6.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.3.tgz#6e854e51fbbaa84351b15d4ddafe342f3a5d542a" integrity sha512-7hvrg75dubcO3ZI2rjYTzUrEuh1E9IyDEhhB6qfcooxhDA33xx2MasuLVgdxzcP6R/lipAC6n9ub9maNW6RKdw== @@ -524,16 +474,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-dotall-regex@^7.4.3", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz#361a148bc951444312c69446d76ed1ea8e4450c3" - integrity sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.5.4" - -"@babel/plugin-transform-dotall-regex@^7.6.2": +"@babel/plugin-transform-dotall-regex@^7.4.3", "@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.6.2": version "7.6.2" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.6.2.tgz#44abb948b88f0199a627024e1508acaf8dc9b2f9" integrity sha512-KGKT9aqKV+9YMZSkowzYoYEiHqgaDhGmPNZlZxX6UeHC4z30nC1J9IrZuGqbYFB1jaIGdv91ujpze0exiVK8bA== @@ -594,15 +535,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-modules-amd@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz#82a9bce45b95441f617a24011dc89d12da7f4ee6" - integrity sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw== - dependencies: - "@babel/helper-module-transforms" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-modules-amd@^7.5.0": +"@babel/plugin-transform-modules-amd@^7.2.0", "@babel/plugin-transform-modules-amd@^7.5.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz#ef00435d46da0a5961aa728a1d2ecff063e4fb91" integrity sha512-n20UsQMKnWrltocZZm24cRURxQnWIvsABPJlw/fvoy9c6AgHZzoelAIzajDHAQrDpuKFFPPcFGd7ChsYuIUMpg== @@ -621,15 +554,7 @@ "@babel/helper-simple-access" "^7.1.0" babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-systemjs@^7.4.0": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.4.tgz#dc83c5665b07d6c2a7b224c00ac63659ea36a405" - integrity sha512-MSiModfILQc3/oqnG7NrP1jHaSPryO6tA2kOMmAQApz5dayPxWiHqmq4sWH2xF5LcQK56LlbKByCd8Aah/OIkQ== - dependencies: - "@babel/helper-hoist-variables" "^7.4.4" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-modules-systemjs@^7.5.0": +"@babel/plugin-transform-modules-systemjs@^7.4.0", "@babel/plugin-transform-modules-systemjs@^7.5.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz#e75266a13ef94202db2a0620977756f51d52d249" integrity sha512-Q2m56tyoQWmuNGxEtUyeEkm6qJYFqs4c+XyXH5RAuYxObRNz9Zgj/1g2GMnjYp2EUyEy7YTrxliGCXzecl/vJg== @@ -646,21 +571,7 @@ "@babel/helper-module-transforms" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-named-capturing-groups-regex@^7.4.2": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.4.tgz#5611d96d987dfc4a3a81c4383bb173361037d68d" - integrity sha512-Ki+Y9nXBlKfhD+LXaRS7v95TtTGYRAf9Y1rTDiE75zf8YQz4GDaWRXosMfJBXxnk88mGFjWdCRIeqDbon7spYA== - dependencies: - regexp-tree "^0.1.0" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.6.0.tgz#1e6e663097813bb4f53d42df0750cf28ad3bb3f1" - integrity sha512-jem7uytlmrRl3iCAuQyw8BpB4c4LWvSpvIeXKpMb+7j84lkx4m4mYr5ErAcmN5KM7B6BqrAvRGjBIbbzqCczew== - dependencies: - regexp-tree "^0.1.13" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.6.3": +"@babel/plugin-transform-named-capturing-groups-regex@^7.4.2", "@babel/plugin-transform-named-capturing-groups-regex@^7.6.0", "@babel/plugin-transform-named-capturing-groups-regex@^7.6.3": version "7.6.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.6.3.tgz#aaa6e409dd4fb2e50b6e2a91f7e3a3149dbce0cf" integrity sha512-jTkk7/uE6H2s5w6VlMHeWuH+Pcy2lmdwFoeWCVnvIrDUnB5gQqTVI8WfmEAhF2CDEarGrknZcmSFg1+bkfCoSw== @@ -699,9 +610,9 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-react-constant-elements@^7.0.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.6.0.tgz#13b8434fb817d30feebd811256eb402c9a245c9e" - integrity sha512-np/nPuII8DHOZWB3u8u+NSeKlEz0eBrOlnVksIQog4C9NGVzXO+NLxMcXn4Eu4GMFzOw2W6Tyo6L3+Wv8z9Y5w== + version "7.6.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.6.3.tgz#9fc9ea060b983c7c035acbe481cbe1fb1245bfff" + integrity sha512-1/YogSSU7Tby9rq2VCmhuRg+6pxsHy2rI7w/oo8RKoBt6uBUFG+mk6x13kK+FY1/ggN92HAfg7ADd1v1+NCOKg== dependencies: "@babel/helper-annotate-as-pure" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" @@ -769,14 +680,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-spread@^7.2.0": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz#3103a9abe22f742b6d406ecd3cd49b774919b406" - integrity sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-spread@^7.6.2": +"@babel/plugin-transform-spread@^7.2.0", "@babel/plugin-transform-spread@^7.6.2": version "7.6.2" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.6.2.tgz#fc77cf798b24b10c46e1b51b1b88c2bf661bb8dd" integrity sha512-DpSvPFryKdK1x+EDJYCy28nmAaIMdxmhot62jAXF/o99iA33Zj2Lmcp3vDmz+MUh0LNYVPvfj5iC3feb3/+PFg== @@ -815,16 +719,7 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-typescript" "^7.2.0" -"@babel/plugin-transform-unicode-regex@^7.4.3", "@babel/plugin-transform-unicode-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz#ab4634bb4f14d36728bf5978322b35587787970f" - integrity sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.5.4" - -"@babel/plugin-transform-unicode-regex@^7.6.2": +"@babel/plugin-transform-unicode-regex@^7.4.3", "@babel/plugin-transform-unicode-regex@^7.4.4", "@babel/plugin-transform-unicode-regex@^7.6.2": version "7.6.2" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.6.2.tgz#b692aad888a7e8d8b1b214be6b9dc03d5031f698" integrity sha512-orZI6cWlR3nk2YmYdb0gImrgCUwb5cBUwjf6Ks6dvNVvXERkwtJWOQaEOjPiu0Gu1Tq6Yq/hruCZZOOi9F34Dw== @@ -999,7 +894,7 @@ js-levenshtein "^1.1.3" semver "^5.5.0" -"@babel/preset-react@7.0.0", "@babel/preset-react@^7.0.0": +"@babel/preset-react@7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.0.0.tgz#e86b4b3d99433c7b3e9e91747e2653958bc6b3c0" integrity sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w== @@ -1010,6 +905,17 @@ "@babel/plugin-transform-react-jsx-self" "^7.0.0" "@babel/plugin-transform-react-jsx-source" "^7.0.0" +"@babel/preset-react@^7.0.0": + version "7.6.3" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.6.3.tgz#d5242c828322520205ae4eda5d4f4f618964e2f6" + integrity sha512-07yQhmkZmRAfwREYIQgW0HEwMY9GBJVuPY4Q12UC72AbfaawuupVWa8zQs2tlL+yun45Nv/1KreII/0PLfEsgA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-react-jsx-self" "^7.0.0" + "@babel/plugin-transform-react-jsx-source" "^7.0.0" + "@babel/preset-typescript@7.6.0": version "7.6.0" resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.6.0.tgz#25768cb8830280baf47c45ab1a519a9977498c98" @@ -1030,13 +936,20 @@ pirates "^4.0.0" source-map-support "^0.5.9" -"@babel/runtime@7.6.0", "@babel/runtime@^7.0.0", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.2", "@babel/runtime@^7.4.5": +"@babel/runtime@7.6.0": version "7.6.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.6.0.tgz#4fc1d642a9fd0299754e8b5de62c631cf5568205" integrity sha512-89eSBLJsxNxOERC0Op4vd+0Bqm6wRMqMbFtV3i0/fbaWw/mJ8Q3eBvgX0G4SyrOOLCtbu98HspF8o09MRT+KzQ== dependencies: regenerator-runtime "^0.13.2" +"@babel/runtime@^7.0.0", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.2", "@babel/runtime@^7.4.5": + version "7.6.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.6.3.tgz#935122c74c73d2240cafd32ddb5fc2a6cd35cf1f" + integrity sha512-kq6anf9JGjW8Nt5rYfEuGRaEAaH1mkv3Bbu6rYvLOpPh/RusSJXuKPEAoZ7L7gybZkchE8+NV5g9vKF4AGAtsA== + dependencies: + regenerator-runtime "^0.13.2" + "@babel/template@^7.1.0", "@babel/template@^7.4.0", "@babel/template@^7.4.4", "@babel/template@^7.6.0": version "7.6.0" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.6.0.tgz#7f0159c7f5012230dad64cca42ec9bdb5c9536e6" @@ -1046,37 +959,7 @@ "@babel/parser" "^7.6.0" "@babel/types" "^7.6.0" -"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0": - version "7.2.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.2.3.tgz#7ff50cefa9c7c0bd2d81231fdac122f3957748d8" - integrity sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.2.2" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.0.0" - "@babel/parser" "^7.2.3" - "@babel/types" "^7.2.2" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.10" - -"@babel/traverse@^7.4.3", "@babel/traverse@^7.4.4", "@babel/traverse@^7.5.5", "@babel/traverse@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.6.0.tgz#389391d510f79be7ce2ddd6717be66d3fed4b516" - integrity sha512-93t52SaOBgml/xY74lsmt7xOR4ufYvhb5c5qiM6lu4J/dWGMAfAh6eKw4PjLes6DI6nQgearoxnFJk60YchpvQ== - dependencies: - "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.6.0" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.4.4" - "@babel/parser" "^7.6.0" - "@babel/types" "^7.6.0" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.13" - -"@babel/traverse@^7.6.2", "@babel/traverse@^7.6.3": +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.4", "@babel/traverse@^7.5.5", "@babel/traverse@^7.6.0", "@babel/traverse@^7.6.2", "@babel/traverse@^7.6.3": version "7.6.3" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.6.3.tgz#66d7dba146b086703c0fb10dd588b7364cec47f9" integrity sha512-unn7P4LGsijIxaAJo/wpoU11zN+2IaClkQAxcJWBNCMS6cmVh802IyLHNkAjQ0iYnRS3nnxk5O3fuXW28IMxTw== @@ -1091,16 +974,7 @@ globals "^11.1.0" lodash "^4.17.13" -"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.5.5", "@babel/types@^7.6.0": - version "7.6.1" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.6.1.tgz#53abf3308add3ac2a2884d539151c57c4b3ac648" - integrity sha512-X7gdiuaCmA0uRjCmRtYJNAVCc/q+5xSgsfKJHqMN4iNLILX39677fJE1O40arPMh0TTtS9ItH67yre6c7k6t0g== - dependencies: - esutils "^2.0.2" - lodash "^4.17.13" - to-fast-properties "^2.0.0" - -"@babel/types@^7.2.2", "@babel/types@^7.6.3": +"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.5.5", "@babel/types@^7.6.0", "@babel/types@^7.6.3": version "7.6.3" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.6.3.tgz#3f07d96f854f98e2fbd45c64b0cb942d11e8ba09" integrity sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA== @@ -1172,19 +1046,19 @@ integrity sha512-kBa+cDHOR9jpRJ+kcGMsysrls0leukrm68DmFQoMIWQcXdr2cZvyvypWuGYT7U+9kAExUE7+T7r6G3C3A6L8MQ== "@hapi/address@2.x.x": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.1.tgz#61395b5ed94c4cb19c2dc4c85969cff3d40d583f" - integrity sha512-DYuHzu978pP1XW1GD3HGvLnAFjbQTIgc2+V153FGkbS2pgo9haigCdwBnUDrbhaOkgiJlbZvoEqDrcxSLHpiWA== + version "2.1.2" + resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.2.tgz#1c794cd6dbf2354d1eb1ef10e0303f573e1c7222" + integrity sha512-O4QDrx+JoGKZc6aN64L04vqa7e41tIiLU+OvKdcYaEMP97UttL0f9GIi9/0A4WAMx0uBd6SidDIhktZhgOcN8Q== "@hapi/bourne@1.x.x": version "1.3.2" resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== -"@hapi/hoek@8.x.x": - version "8.2.4" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.2.4.tgz#684a14f4ca35d46f44abc87dfc696e5e4fe8a020" - integrity sha512-Ze5SDNt325yZvNO7s5C4fXDscjJ6dcqLFXJQ/M7dZRQCewuDj2iDUuBi6jLQt+APbW9RjjVEvLr35FXuOEqjow== +"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": + version "8.3.2" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.3.2.tgz#91e7188edebc5d876f0b91a860f555ff06f0782b" + integrity sha512-NP5SG4bzix+EtSMtcudp8TvI0lB46mXNo8uFpTDw6tqxGx4z5yx+giIunEFA0Z7oUO4DuWrOJV9xqR2tJVEdyA== "@hapi/joi@^15.0.0": version "15.1.1" @@ -1197,11 +1071,11 @@ "@hapi/topo" "3.x.x" "@hapi/topo@3.x.x": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.3.tgz#c7a02e0d936596d29f184e6d7fdc07e8b5efce11" - integrity sha512-JmS9/vQK6dcUYn7wc2YZTqzIKubAQcJKu2KCKAru6es482U5RT5fP1EXCPtlXpiK7PR0On/kpQKI4fRKkzpZBQ== + version "3.1.6" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" + integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== dependencies: - "@hapi/hoek" "8.x.x" + "@hapi/hoek" "^8.3.0" "@jest/console@^24.7.1", "@jest/console@^24.9.0": version "24.9.0" @@ -1479,9 +1353,9 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.0.2.tgz#d2112a6b21fad600d7674274293c85dce0cb47fc" - integrity sha512-NHcOfab3Zw4q5sEE2COkpfXjoE7o+PmqD9DQW4koUT3roNxwziUdXGnRndMat/LJNUtePwn1TlP4do3uoe3KZQ== + version "7.6.0" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.0.tgz#f1ec1c104d1bb463556ecb724018ab788d0c172a" + integrity sha512-c1mZUu4up5cp9KROs/QAw0gTeHrw/x7m52LcnvMxxOZ03DmLwPV0MlGmlgzV3cnSdjhJOZsj7E7FHeioai+egw== dependencies: "@babel/types" "^7.0.0" @@ -1508,9 +1382,9 @@ "@types/node" "*" "@types/elliptic@^6.4.6": - version "6.4.9" - resolved "https://registry.yarnpkg.com/@types/elliptic/-/elliptic-6.4.9.tgz#e24874622535dd022778cf56e7421799375108d8" - integrity sha512-Mn+OyENd6YHwJKgUSyCTUDunEDFMaFpCXt52JCA00sxtzEa1ji6H0doZHL3iXhqMTo1Ob53X+Dv0s4PAJ+IVlA== + version "6.4.10" + resolved "https://registry.yarnpkg.com/@types/elliptic/-/elliptic-6.4.10.tgz#352078ebc911484e30fc0d1eca3e3c865bf0e8f8" + integrity sha512-9h+Bw+aNiLzcq9DGstHccNxSsJ5iNId7mzruid7+kwm7F1IGvb4rBOOPo3+twt9ZPhI3y+JJ2m1UfgU8cOEJuQ== dependencies: "@types/bn.js" "*" @@ -1555,9 +1429,9 @@ integrity sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg== "@types/yargs@^13.0.0": - version "13.0.2" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.2.tgz#a64674fc0149574ecd90ba746e932b5a5f7b3653" - integrity sha512-lwwgizwk/bIIU+3ELORkyuOgDjCh7zuWDFqRtPPhhVgq9N1F7CvLNKg1TX4f2duwtKQ0p044Au9r1PLIXHrIzQ== + version "13.0.3" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.3.tgz#76482af3981d4412d65371a318f992d33464a380" + integrity sha512-K8/LfZq2duW33XW/tFwEAfnZlqIfVsoyRB3kfXdPXYhl0nfM8mmh7GS0jg7WrX2Dgq/0Ha/pR1PaR+BvmWwjiQ== dependencies: "@types/yargs-parser" "*" @@ -1745,9 +1619,9 @@ integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== abab@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.1.tgz#3fa17797032b71410ec372e11668f4b4ffc86a82" - integrity sha512-1zSbbCuoIjafKZ3mblY5ikvAb0ODUbqBnFuUb7f6uLeQhhGJ0vEV4ntmtxKLT2WgXCO94E07BjunsIw1jOMPZw== + version "2.0.2" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.2.tgz#a2fba1b122c69a85caa02d10f9270c7219709a9d" + integrity sha512-2scffjvioEmNz0OyDSLGWDfKCVwaKc6l9Pm9kOIREU13ClXZvHpg/nRL5xyjSSSLhOnXqft2HpsAzNEEA8cFFg== abbrev@1: version "1.1.1" @@ -1776,9 +1650,9 @@ acorn-globals@^4.1.0, acorn-globals@^4.3.0: acorn-walk "^6.0.1" acorn-jsx@^5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.2.tgz#84b68ea44b373c4f8686023a551f61a21b7c4a4f" - integrity sha512-tiNTrP1MP0QrChmD2DdupCr6HWSFeKVw5d/dHTu4Y7rkAkRhU/Dt7dphAfIUyxtHpl/eBVip5uTNSpQJHylpAw== + version "5.1.0" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.1.0.tgz#294adb71b57398b0680015f0a38c563ee1db5384" + integrity sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw== acorn-walk@^6.0.1: version "6.2.0" @@ -2037,10 +1911,12 @@ async-limiter@~1.0.0: resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== -async@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= +async@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" asynckit@^0.4.0: version "0.4.0" @@ -2334,9 +2210,9 @@ block-stream@*: inherits "~2.0.0" bluebird@^3.5.5: - version "3.5.5" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" - integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w== + version "3.7.1" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.1.tgz#df70e302b471d7473489acf26a93d63b53f874de" + integrity sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg== bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: version "4.11.8" @@ -2476,7 +2352,7 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@4.7.0, browserslist@^4.0.0, browserslist@^4.1.1, browserslist@^4.6.0, browserslist@^4.6.6: +browserslist@4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.7.0.tgz#9ee89225ffc07db03409f2fee524dc8227458a17" integrity sha512-9rGNDtnj+HaahxiVV38Gn8n8Lr8REKsel68v1sPFfIGEK6uSXTY3h9acgiT1dZVtOOUtifo/Dn8daDQ5dUgVsA== @@ -2485,7 +2361,7 @@ browserslist@4.7.0, browserslist@^4.0.0, browserslist@^4.1.1, browserslist@^4.6. electron-to-chromium "^1.3.247" node-releases "^1.1.29" -browserslist@^4.4.2, browserslist@^4.5.2, browserslist@^4.7.0, browserslist@^4.7.1: +browserslist@^4.0.0, browserslist@^4.1.1, browserslist@^4.4.2, browserslist@^4.5.2, browserslist@^4.6.0, browserslist@^4.7.0, browserslist@^4.7.1: version "4.7.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.7.1.tgz#bd400d1aea56538580e8c4d5f1c54ac11b5ab468" integrity sha512-QtULFqKIAtiyNx7NhZ/p4rB8m3xDozVo/pi5VgTlADLF2tNigz/QH+v0m5qhn7XfHT7u+607NcCNOnC0HZAlMg== @@ -2502,9 +2378,9 @@ bs58@4.0.1, bs58@^4.0.1: base-x "^3.0.2" bser@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.0.tgz#65fc784bf7f87c009b973c12db6546902fa9c7b5" - integrity sha512-8zsjWrQkkBoLK6uxASk1nJ2SKv97ltiGDo6A3wA0/yRPz+CwmEyDo0hUrhIuukG2JHpAl3bvFIixw2/3Hi0DOg== + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== dependencies: node-int64 "^0.4.0" @@ -2690,12 +2566,7 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000989: - version "1.0.30000989" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000989.tgz#b9193e293ccf7e4426c5245134b8f2a56c0ac4b9" - integrity sha512-vrMcvSuMz16YY6GSVZ0dWDTJP8jqk3iFQ/Aq5iqblPwxSVVZI+zxDyTX0VPqtQsDnfdrBDcsmhgTEOh5R8Lbpw== - -caniuse-lite@^1.0.30000939, caniuse-lite@^1.0.30000999: +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000939, caniuse-lite@^1.0.30000989, caniuse-lite@^1.0.30000999: version "1.0.30001002" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001002.tgz#ba999a737b1abd5bf0fd47efe43a09b9cadbe9b0" integrity sha512-pRuxPE8wdrWmVPKcDmJJiGBxr6lFJq4ivdSeo9FTmGj5Rb8NX3Mby2pARG57MXF15hYAhZ0nHV5XxT2ig4bz3g== @@ -2772,9 +2643,9 @@ chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.4: fsevents "^1.2.7" chownr@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.2.tgz#a18f1e0b269c8a6a5d3c86eb298beb14c3dd7bf6" - integrity sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A== + version "1.1.3" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142" + integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw== chrome-trace-event@^1.0.0: version "1.0.2" @@ -2950,21 +2821,16 @@ commander@2.17.x: resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== -commander@^2.11, commander@^2.20.0, commander@~2.20.0: - version "2.20.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" - integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== +commander@^2.11, commander@^2.11.0, commander@^2.19.0, commander@^2.20.0, commander@~2.20.3: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^2.11.0, commander@~2.19.0: +commander@~2.19.0: version "2.19.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== -commander@^2.19.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - common-tags@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" @@ -3015,12 +2881,7 @@ concat-stream@^1.5.0: readable-stream "^2.2.2" typedarray "^0.0.6" -confusing-browser-globals@^1.0.5: - version "1.0.8" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.8.tgz#93ffec1f82a6e2bf2bc36769cc3a92fa20e502f3" - integrity sha512-lI7asCibVJ6Qd3FGU7mu4sfG4try4LX3+GVS+Gv8UlrEf2AeW57piecapnog2UHZSbcX/P/1UDWVaTsblowlZg== - -confusing-browser-globals@^1.0.7: +confusing-browser-globals@^1.0.5, confusing-browser-globals@^1.0.7: version "1.0.9" resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw== @@ -3098,7 +2959,7 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js-compat@^3.0.0: +core-js-compat@^3.0.0, core-js-compat@^3.1.1: version "3.3.3" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.3.3.tgz#82642808cf484a35292b2f8e83ef9376884e760f" integrity sha512-GNZkENsx5pMnS7Inwv7ZO/s3B68a9WU5kIjxqrD/tkNR8mtfXJRk8fAKRlbvWZSGPc59/TkiOBDYl5Cb65pTVA== @@ -3106,23 +2967,15 @@ core-js-compat@^3.0.0: browserslist "^4.7.1" semver "^6.3.0" -core-js-compat@^3.1.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.2.1.tgz#0cbdbc2e386e8e00d3b85dc81c848effec5b8150" - integrity sha512-MwPZle5CF9dEaMYdDeWm73ao/IflDH+FjeJCWEADcEgFSE9TLimFKwJsfmkwzI8eC0Aj0mgvMDjeQjrElkz4/A== - dependencies: - browserslist "^4.6.6" - semver "^6.3.0" - core-js@3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.2.1.tgz#cd41f38534da6cc59f7db050fe67307de9868b09" integrity sha512-Qa5XSVefSVPRxy2XfUC13WbvqkxhkwB3ve+pgCQveNgYzbM/UxZeu1dcOX/xr4UmfUd+muuvsaxilQzCyUurMw== core-js@^2.4.0: - version "2.6.9" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2" - integrity sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A== + version "2.6.10" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.10.tgz#8a5b8391f8cc7013da703411ce5b585706300d7f" + integrity sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA== core-js@^3.0.0: version "3.3.3" @@ -3475,7 +3328,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.8, debug@^2.6. dependencies: ms "2.0.0" -debug@^3.0.0, debug@^3.2.5, debug@^3.2.6: +debug@^3.0.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -3815,12 +3668,7 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.3.247: - version "1.3.260" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.260.tgz#ffd686b4810bab0e1a428e7af5f08c21fe7c1fa2" - integrity sha512-wGt+OivF1C1MPwaSv3LJ96ebNbLAWlx3HndivDDWqwIVSQxmhL17Y/YmwUdEMtS/bPyommELt47Dct0/VZNQBQ== - -electron-to-chromium@^1.3.284: +electron-to-chromium@^1.3.247, electron-to-chromium@^1.3.284: version "1.3.292" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.292.tgz#7812fc5138619342f1dd5823df6e9cbb7d2820e9" integrity sha512-hqkem5ANpt6mxVXmhAmlbdG8iicuyM/jEYgmP1tiHPeOLyZoTyGUzrDmJS/xyrrZy9frkW1uQcubicu7f6DS5g== @@ -3854,19 +3702,19 @@ encodeurl@~1.0.2: integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= end-of-stream@^1.0.0, end-of-stream@^1.1.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" - integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" enhanced-resolve@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" - integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng== + version "4.1.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz#2937e2b8066cd0fe7ce0990a98f0d71a35189f66" + integrity sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA== dependencies: graceful-fs "^4.1.2" - memory-fs "^0.4.0" + memory-fs "^0.5.0" tapable "^1.0.0" entities@^1.1.1: @@ -3917,10 +3765,10 @@ eosjs-window-message-signature-provider-interface@0.1.3: dependencies: eosjs-signature-provider-interface "0.1.2" -eosjs@20.0.0: - version "20.0.0" - resolved "https://registry.yarnpkg.com/eosjs/-/eosjs-20.0.0.tgz#43940abfe15cd191ce4027d60294036e914613e9" - integrity sha512-Ak9CPtZgCFayUmq43X3Nsn4v67lkLfSzEdTUfMk1XAWA5s4HRn7lBTeTeDCzJ/rggi+dZ170VeJwc5T3gPk4HQ== +eosjs@20.0.0, eosjs@^20.0.2-a53eecb.0: + version "20.0.2-d85dbee.0" + resolved "https://registry.yarnpkg.com/eosjs/-/eosjs-20.0.2-d85dbee.0.tgz#a6db4def0bcb6a45aaf98b0cc656e006bb283bd9" + integrity sha512-EVFZfwBuvszlKnNeococEIyIoOMPFmcm53NZX06x+DywUjtW3SdEsx9VjTVddua0DIqDmEkRSSesSJzKhWoUTg== dependencies: babel-runtime "6.26.0" eosjs-ecc "4.0.4" @@ -3948,10 +3796,10 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.11.0, es-abstract@^1.12.0, es-abstract@^1.5.1, es-abstract@^1.7.0: - version "1.14.2" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.14.2.tgz#7ce108fad83068c8783c3cdf62e504e084d8c497" - integrity sha512-DgoQmbpFNOofkjJtKwr87Ma5EW4Dc8fWhD0R+ndq7Oc456ivUfGOOP6oAZTTKl5/CcNMP+EN+e3/iUzgE0veZg== +es-abstract@^1.12.0, es-abstract@^1.15.0, es-abstract@^1.5.1, es-abstract@^1.7.0: + version "1.16.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.16.0.tgz#d3a26dc9c3283ac9750dca569586e976d9dcc06d" + integrity sha512-xdQnfykZ9JMEiasTAJZJdMWCQ1Vm00NBw79/AWi7ELfZuuPCSOMDZbT9mkOfSctVtfhb+sAAzrm+j//GjjLHLg== dependencies: es-to-primitive "^1.2.0" function-bind "^1.1.1" @@ -3961,8 +3809,8 @@ es-abstract@^1.11.0, es-abstract@^1.12.0, es-abstract@^1.5.1, es-abstract@^1.7.0 is-regex "^1.0.4" object-inspect "^1.6.0" object-keys "^1.1.1" - string.prototype.trimleft "^2.0.0" - string.prototype.trimright "^2.0.0" + string.prototype.trimleft "^2.1.0" + string.prototype.trimright "^2.1.0" es-to-primitive@^1.1.1, es-to-primitive@^1.2.0: version "1.2.0" @@ -4145,19 +3993,19 @@ eslint-plugin-react@7.12.4: resolve "^1.9.0" eslint-plugin-react@^7.11.1: - version "7.14.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.14.3.tgz#911030dd7e98ba49e1b2208599571846a66bdf13" - integrity sha512-EzdyyBWC4Uz2hPYBiEJrKCUi2Fn+BJ9B/pJQcjw5X+x/H2Nm59S4MJIvL4O5NEE0+WbnQwEBxWY03oUk+Bc3FA== + version "7.16.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.16.0.tgz#9928e4f3e2122ed3ba6a5b56d0303ba3e41d8c09" + integrity sha512-GacBAATewhhptbK3/vTP09CbFrgUJmBSaaRcWdbQLFvUZy9yVcQxigBNHGPU/KE2AyHpzj3AWXpxoMTsIDiHug== dependencies: array-includes "^3.0.3" doctrine "^2.1.0" has "^1.0.3" - jsx-ast-utils "^2.1.0" + jsx-ast-utils "^2.2.1" object.entries "^1.1.0" object.fromentries "^2.0.0" object.values "^1.1.0" prop-types "^15.7.2" - resolve "^1.10.1" + resolve "^1.12.0" eslint-restricted-globals@^0.1.1: version "0.1.1" @@ -4181,13 +4029,13 @@ eslint-scope@^4.0.0, eslint-scope@^4.0.3: estraverse "^4.1.1" eslint-utils@^1.3.1: - version "1.4.2" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.2.tgz#166a5180ef6ab7eb462f162fd0e6f2463d7309ab" - integrity sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q== + version "1.4.3" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" + integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== dependencies: - eslint-visitor-keys "^1.0.0" + eslint-visitor-keys "^1.1.0" -eslint-visitor-keys@^1.0.0: +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== @@ -4282,10 +4130,10 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= -eventemitter3@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" - integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== +eventemitter3@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.0.tgz#d65176163887ee59f386d64c82610b696a4a74eb" + integrity sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg== events@^3.0.0: version "3.0.0" @@ -4727,11 +4575,11 @@ fs-extra@^4.0.2: universalify "^0.1.0" fs-minipass@^1.2.5: - version "1.2.6" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.6.tgz#2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07" - integrity sha512-crhvyXcMejjv3Z5d2Fa9sf5xLYVCF5O1c71QxbVnbLsmYMBEvDAftewesN/HhY03YRoA7zOMxjNGrF5svGaaeQ== + version "1.2.7" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== dependencies: - minipass "^2.2.1" + minipass "^2.6.0" fs-write-stream-atomic@^1.0.8: version "1.0.10" @@ -4813,9 +4661,9 @@ get-caller-file@^2.0.1: integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== get-own-enumerable-property-symbols@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz#b877b49a5c16aefac3655f2ed2ea5b684df8d203" - integrity sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg== + version "3.0.1" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.1.tgz#6f7764f88ea11e0b514bd9bd860a132259992ca4" + integrity sha512-09/VS4iek66Dh2bctjRkowueRJbY1JDGR1L/zRxO1Qk8Uxs6PnqaNSqalpizPT+CDjre3hnEsuzvhgomz9qYrA== get-random-values@^1.2.0: version "1.2.0" @@ -4862,9 +4710,9 @@ glob-to-regexp@^0.3.0: integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@~7.1.1: - version "7.1.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" - integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== + version "7.1.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.5.tgz#6714c69bee20f3c3e64c4dd905553e532b40cdc0" + integrity sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -4959,9 +4807,9 @@ handle-thing@^2.0.0: integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== handlebars@^4.1.2: - version "4.2.0" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.2.0.tgz#57ce8d2175b9bbb3d8b3cf3e4217b1aec8ddcb2e" - integrity sha512-Kb4xn5Qh1cxAKvQnzNWZ512DhABzyFNmsaJf3OAkWNa4NkaqWcNI8Tao8Tasi0/F4JD9oyG0YxuFyvyR57d+Gw== + version "4.4.5" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.4.5.tgz#1b1f94f9bfe7379adda86a8b73fb570265a0dddd" + integrity sha512-0Ce31oWVB7YidkaTq33ZxEbN+UDxMMgThvCe8ptgQViymL5DPis9uLdTA13MiRPhgvqyxIegugrP97iK3JeBHg== dependencies: neo-async "^2.6.0" optimist "^0.6.1" @@ -5083,9 +4931,9 @@ hmac-drbg@^1.0.0: minimalistic-crypto-utils "^1.0.1" hosted-git-info@^2.1.4: - version "2.8.4" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.4.tgz#44119abaf4bc64692a16ace34700fed9c03e2546" - integrity sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ== + version "2.8.5" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.5.tgz#759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c" + integrity sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg== hpack.js@^2.1.6: version "2.1.6" @@ -5214,11 +5062,11 @@ http-proxy-middleware@^0.19.1: micromatch "^3.1.10" http-proxy@^1.17.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" - integrity sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g== + version "1.18.0" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.0.tgz#dbe55f63e75a347db7f3d99974f2692a314a6a3a" + integrity sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ== dependencies: - eventemitter3 "^3.0.0" + eventemitter3 "^4.0.0" follow-redirects "^1.0.0" requires-port "^1.0.0" @@ -5283,9 +5131,9 @@ iferr@^0.1.5: integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= ignore-walk@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.2.tgz#99d83a246c196ea5c93ef9315ad7b0819c35069b" - integrity sha512-EXyErtpHbn75ZTsOADsfx6J/FPo6/5cjev46PXrcTpd8z3BoRkXgYu9/JVqrI7tusjmwCZutGeRJeU0Wo1e4Cw== + version "3.0.3" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" + integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== dependencies: minimatch "^3.0.4" @@ -6373,9 +6221,9 @@ json5@^1.0.1: minimist "^1.2.0" json5@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" - integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== + version "2.1.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.1.tgz#81b6cb04e9ba496f1c7005d07b4368a2638f90b6" + integrity sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ== dependencies: minimist "^1.2.0" @@ -6401,7 +6249,7 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -jsx-ast-utils@^2.0.1, jsx-ast-utils@^2.1.0, jsx-ast-utils@^2.2.1: +jsx-ast-utils@^2.0.1, jsx-ast-utils@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.1.tgz#4d4973ebf8b9d2837ee91a8208cc66f3a2776cfb" integrity sha512-v3FxCcAf20DayI+uxnCuw795+oOIkVu6EnJ1+kSzhqqTZHNkTZ7B66ZgLp4oLJ/gbA64cI0B7WRoHZMSRdyVRQ== @@ -6746,7 +6594,7 @@ memoize-one@^4.0.0: resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-4.1.0.tgz#a2387c58c03fff27ca390c31b764a79addf3f906" integrity sha512-2GApq0yI/b22J2j9rhbrAlsHb0Qcz+7yWxeLG8h+95sl1XPUgeLimQSOdur4Vw7cUhrBHwaUZxWFZueojqNRzA== -memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1: +memory-fs@^0.4.1, memory-fs@~0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= @@ -6754,6 +6602,14 @@ memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1: errno "^0.1.3" readable-stream "^2.0.1" +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + meow@^3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" @@ -6837,9 +6693,9 @@ mime-db@1.40.0: integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== "mime-db@>= 1.40.0 < 2": - version "1.41.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.41.0.tgz#9110408e1f6aa1b34aef51f2c9df3caddf46b6a0" - integrity sha512-B5gxBI+2K431XW8C2rcc/lhppbuji67nf9v39eH8pkWoZDxnAL0PxdpH32KYRScniF8qDHBDlI+ipgg5WrCUYw== + version "1.42.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.42.0.tgz#3e252907b4c7adb906597b4b65636272cf9e7bac" + integrity sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ== mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: version "2.1.24" @@ -6916,20 +6772,20 @@ minimist@~0.0.1: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= -minipass@^2.2.1, minipass@^2.3.5: - version "2.6.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.6.0.tgz#80a68c8a43257b7f744ce09733f6a9c6eef9f731" - integrity sha512-OuNZ0OHrrI+jswzmgivYBZ+fAAGHZA4293d5q0z631/I9QSw3yumKB92njxHIHiB1eAdGRsE+3CcOPkoEyV5FQ== +minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== dependencies: safe-buffer "^5.1.2" yallist "^3.0.0" minizlib@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.2.tgz#6f0ccc82fa53e1bf2ff145f220d2da9fa6e3a166" - integrity sha512-hR3At21uSrsjjDTWrbu0IMLTpnkpv8IIMFDFaoz43Tmu4LkmAXfH44vNNzpTnf+OAQQCHrb91y/wc2J4x5XgSQ== + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== dependencies: - minipass "^2.2.1" + minipass "^2.9.0" mississippi@^3.0.0: version "3.0.0" @@ -6963,7 +6819,7 @@ mixin-object@^2.0.1: for-in "^0.1.3" is-extendable "^0.1.1" -mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: +mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= @@ -7073,10 +6929,10 @@ no-case@^2.2.0: dependencies: lower-case "^1.1.1" -node-forge@0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.8.2.tgz#b4bcc59fb12ce77a8825fc6a783dfe3182499c5a" - integrity sha512-mXQ9GBq1N3uDCyV1pdSzgIguwgtVpM7f5/5J4ipz12PKWElmPpVWLDuWl8iXmhysr21+WmX/OJ5UKx82wjomgg== +node-forge@0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579" + integrity sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ== node-gyp@^3.8.0: version "3.8.0" @@ -7162,14 +7018,7 @@ node-pre-gyp@^0.12.0: semver "^5.3.0" tar "^4" -node-releases@^1.1.29: - version "1.1.32" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.32.tgz#485b35c1bf9b4d8baa105d782f8ca731e518276e" - integrity sha512-VhVknkitq8dqtWoluagsGPn3dxTvN9fwgR59fV3D7sLBHe0JfDramsMI8n8mY//ccq/Kkrf8ZRHRpsyVZ3qw1A== - dependencies: - semver "^5.3.0" - -node-releases@^1.1.36: +node-releases@^1.1.29, node-releases@^1.1.36: version "1.1.38" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.38.tgz#d81b365df2936654ba37f509ba2fbe91eff2578b" integrity sha512-/5NZAaOyTj134Oy5Cp/J8mso8OD/D9CSuL+6TOXXsTKO8yjc5e4up75SRPCganCjwFKMj2jbp5tR0dViVdox7g== @@ -7257,9 +7106,9 @@ npm-bundled@^1.0.1: integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== npm-packlist@^1.1.6: - version "1.4.4" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.4.tgz#866224233850ac534b63d1a6e76050092b5d2f44" - integrity sha512-zTLo8UcVYtDU3gdeaFu2Xu0n0EvelfHDGuqtNIn5RO7yQj4H1TqNdBc/yZjxnWA0PVB8D3Woyp0i5B43JwQ6Vw== + version "1.4.6" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.6.tgz#53ba3ed11f8523079f1457376dd379ee4ea42ff4" + integrity sha512-u65uQdb+qwtGvEJh/DgQgW1Xg7sqeNbmxYyrvlNznaVTjV3E5P6F/EFjM+BVHXl7JJlsdG8A64M0XI8FI/IOlg== dependencies: ignore-walk "^3.0.1" npm-bundled "^1.0.1" @@ -7370,14 +7219,14 @@ object.entries@^1.0.4, object.entries@^1.1.0: has "^1.0.3" object.fromentries@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.0.tgz#49a543d92151f8277b3ac9600f1e930b189d30ab" - integrity sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA== + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.1.tgz#050f077855c7af8ae6649f45c80b16ee2d31e704" + integrity sha512-PUQv8Hbg3j2QX0IQYv3iAGCbGcu4yY4KQ92/dhA4sFSixBmSmp13UpDLs6jGK8rBtbmhNNIK99LD2k293jpiGA== dependencies: - define-properties "^1.1.2" - es-abstract "^1.11.0" + define-properties "^1.1.3" + es-abstract "^1.15.0" function-bind "^1.1.1" - has "^1.0.1" + has "^1.0.3" object.getownpropertydescriptors@^2.0.3: version "2.0.3" @@ -7622,9 +7471,9 @@ parent-module@^1.0.0: callsites "^3.0.0" parse-asn1@^5.0.0: - version "5.1.4" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.4.tgz#37f6628f823fbdeb2273b4d540434a22f3ef1fcc" - integrity sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw== + version "5.1.5" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" + integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== dependencies: asn1.js "^4.0.0" browserify-aes "^1.0.0" @@ -7829,13 +7678,13 @@ pnp-webpack-plugin@1.2.1: ts-pnp "^1.0.0" portfinder@^1.0.9: - version "1.0.24" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.24.tgz#11efbc6865f12f37624b6531ead1d809ed965cfa" - integrity sha512-ekRl7zD2qxYndYflwiryJwMioBI7LI7rVXg3EnLK3sjkouT5eOuhS3gS255XxBksa30VG8UPZYZCdgfGOfkSUg== + version "1.0.25" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.25.tgz#254fd337ffba869f4b9d37edc298059cb4d35eca" + integrity sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg== dependencies: - async "^1.5.2" - debug "^2.2.0" - mkdirp "0.5.x" + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.1" posix-character-classes@^0.1.0: version "0.1.1" @@ -8664,9 +8513,9 @@ qs@6.7.0: integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== qs@^6.5.2: - version "6.8.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.8.0.tgz#87b763f0d37ca54200334cd57bb2ef8f68a1d081" - integrity sha512-tPSkj8y92PfZVbinY1n84i1Qdx75lZjMQYx9WZhnkofyxzw2r7Ho39G3/aEvSUdebxpnnM4LZJCtvE/Aq3+s9w== + version "6.9.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.0.tgz#d1297e2a049c53119cb49cca366adbbacc80b409" + integrity sha512-27RP4UotQORTpmNQDX8BHPukOnBP3p1uUJY5UnDhaJB+rMt9iMsok724XL+UHU23bEFOHRMQ2ZhI99qOWUMGFA== qs@~6.5.2: version "6.5.2" @@ -8809,9 +8658,9 @@ react-icons@3.4.0: integrity sha512-5cyYrl34KGovU/MH3YO+wN1k787vv3EKLeGDyaGOY92jSTQ/xRjkQ7iim5Ml9rgMLU1i0vszev80kWV4uRZ3Bw== react-is@^16.6.0, react-is@^16.8.1, react-is@^16.8.4: - version "16.9.0" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.9.0.tgz#21ca9561399aad0ff1a7701c01683e8ca981edcb" - integrity sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw== + version "16.10.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.10.2.tgz#984120fd4d16800e9a738208ab1fba422d23b5ab" + integrity sha512-INBT1QEgtcCCgvccr5/86CfD71fw9EPmDxgiJX4I2Ddr6ZsV6iFXsuby+qWJPtmNuMY0zByTsG4468P7nHuNWA== react-scripts@3.0.1: version "3.0.1" @@ -9042,16 +8891,6 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp-tree@^0.1.0: - version "0.1.14" - resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.14.tgz#1abca3675f6cc4b0dee5c959c6c4554ed172dfae" - integrity sha512-59v5A90TAh4cAMyDQEOzcnsu4q7Wb10RsyTjngEnJIZsWYM4siVGu+JmLT1WsxHvOWhiu4YS20XiTuxWMeVoHQ== - -regexp-tree@^0.1.13: - version "0.1.13" - resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.13.tgz#5b19ab9377edc68bc3679256840bb29afc158d7f" - integrity sha512-hwdV/GQY5F8ReLZWO+W1SRoN5YfpOKY6852+tBFcma72DKBIcHjPRIlIvQN35bCOljuAfP2G2iB0FC/w236mUw== - regexp.prototype.flags@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz#6b30724e306a27833eeb171b66ac8890ba37e41c" @@ -9064,7 +8903,7 @@ regexpp@^2.0.1: resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== -regexpu-core@^4.5.4, regexpu-core@^4.6.0: +regexpu-core@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.6.0.tgz#2037c18b327cfce8a6fea2a4ec441f2432afb8b6" integrity sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg== @@ -9077,9 +8916,9 @@ regexpu-core@^4.5.4, regexpu-core@^4.6.0: unicode-match-property-value-ecmascript "^1.1.0" regjsgen@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd" - integrity sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA== + version "0.5.1" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" + integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== regjsparser@^0.6.0: version "0.6.0" @@ -9227,7 +9066,7 @@ resolve@1.10.0: dependencies: path-parse "^1.0.6" -resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1, resolve@^1.9.0: +resolve@^1.10.0, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1, resolve@^1.9.0: version "1.12.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== @@ -9431,11 +9270,11 @@ select-hose@^2.0.0: integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= selfsigned@^1.9.1: - version "1.10.6" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.6.tgz#7b3cd37ed9c2034261a173af1a1aae27d8169b67" - integrity sha512-i3+CeqxL7DpAazgVpAGdKMwHuL63B5nhJMh9NQ7xmChGkA3jNFflq6Jyo1LLJYcr3idWiNOPWHCrm4zMayLG4w== + version "1.10.7" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.7.tgz#da5819fd049d5574f28e88a9bcc6dbc6e6f3906b" + integrity sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA== dependencies: - node-forge "0.8.2" + node-forge "0.9.0" "semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: version "5.7.1" @@ -9916,7 +9755,7 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string.prototype.trimleft@^2.0.0: +string.prototype.trimleft@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz#6cc47f0d7eb8d62b0f3701611715a3954591d634" integrity sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw== @@ -9924,7 +9763,7 @@ string.prototype.trimleft@^2.0.0: define-properties "^1.1.3" function-bind "^1.1.1" -string.prototype.trimright@^2.0.0: +string.prototype.trimright@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz#669d164be9df9b6f7559fa8e89945b168a5a6c58" integrity sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg== @@ -10130,13 +9969,13 @@ tar@^2.0.0: inherits "2" tar@^4: - version "4.4.10" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.10.tgz#946b2810b9a5e0b26140cf78bea6b0b0d689eba1" - integrity sha512-g2SVs5QIxvo6OLp0GudTqEf05maawKUxXru104iaayWA09551tFCTI8f1Asb4lPfkBr91k07iL4c11XO3/b0tA== + version "4.4.13" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" + integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== dependencies: chownr "^1.1.1" fs-minipass "^1.2.5" - minipass "^2.3.5" + minipass "^2.8.6" minizlib "^1.2.1" mkdirp "^0.5.0" safe-buffer "^5.1.2" @@ -10181,9 +10020,9 @@ terser@^3.16.1: source-map-support "~0.5.10" terser@^4.1.2: - version "4.3.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.3.1.tgz#09820bcb3398299c4b48d9a86aefc65127d0ed65" - integrity sha512-pnzH6dnFEsR2aa2SJaKb1uSCl3QmIsJ8dEkj0Fky+2AwMMcC9doMqLOQIH6wVTEKaVfKVvLSk5qxPBEZT9mywg== + version "4.3.9" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.3.9.tgz#e4be37f80553d02645668727777687dad26bbca8" + integrity sha512-NFGMpHjlzmyOtPL+fDw3G7+6Ueh/sz4mkaUYa4lJCxOPTNzd0Uj0aZJOmsDYoSQyfuVoWDMSWTPU3huyOm2zdA== dependencies: commander "^2.20.0" source-map "~0.6.1" @@ -10228,9 +10067,9 @@ through@^2.3.6: integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= thunky@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.3.tgz#f5df732453407b09191dae73e2a8cc73f381a826" - integrity sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow== + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== timers-browserify@^2.0.4: version "2.0.11" @@ -10331,11 +10170,6 @@ trim-newlines@^1.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= - "true-case-path@^1.0.2": version "1.0.3" resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.3.tgz#f813b5a8c86b40da59606722b144e3225799f47d" @@ -10467,11 +10301,11 @@ uglify-js@3.4.x: source-map "~0.6.1" uglify-js@^3.1.4: - version "3.6.0" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.0.tgz#704681345c53a8b2079fb6cec294b05ead242ff5" - integrity sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg== + version "3.6.3" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.3.tgz#1351533bbe22cc698f012589ed6bd4cbd971bff8" + integrity sha512-KfQUgOqTkLp2aZxrMbCuKCDGW9slFYu2A23A36Gs7sGzTLcRBDORdOi5E21KWHFIfkY8kzgi/Pr1cXCh0yIp5g== dependencies: - commander "~2.20.0" + commander "~2.20.3" source-map "~0.6.1" unicode-canonical-property-names-ecmascript@^1.0.4: @@ -10735,9 +10569,9 @@ webidl-conversions@^4.0.2: integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== webpack-dev-middleware@^3.5.1: - version "3.7.1" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.1.tgz#1167aea02afa034489869b8368fe9fed1aea7d09" - integrity sha512-5MWu9SH1z3hY7oHOV6Kbkz5x7hXbxK56mGHNqHTe6d+ewxOwKUxoUJBs7QIaJb33lPjl9bJZ3X0vCoooUzC36A== + version "3.7.2" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" + integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== dependencies: memory-fs "^0.4.1" mime "^2.4.4" @@ -10877,9 +10711,9 @@ whatwg-url@^6.4.1: webidl-conversions "^4.0.2" whatwg-url@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.0.0.tgz#fde926fa54a599f3adf82dff25a9f7be02dc6edd" - integrity sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ== + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== dependencies: lodash.sortby "^4.7.0" tr46 "^1.0.1" @@ -11156,9 +10990,9 @@ yallist@^2.1.2: integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" - integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== yargs-parser@^10.1.0: version "10.1.0" From dc2604ae15fa90cabc0147a8d1fefd215e424a71 Mon Sep 17 00:00:00 2001 From: Mike Manfredi Date: Tue, 24 Sep 2019 11:43:42 -0400 Subject: [PATCH 20/76] fixing dancing dropdown menu --- src/components/navigation/UserDropdown.js | 8 +++++--- src/components/navigation/UserDropdown.scss | 5 ++++- src/components/navigation/UserInfo.scss | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/components/navigation/UserDropdown.js b/src/components/navigation/UserDropdown.js index ad6a2913..96d01d79 100644 --- a/src/components/navigation/UserDropdown.js +++ b/src/components/navigation/UserDropdown.js @@ -24,7 +24,8 @@ class UserDropdown extends React.Component { const { logout, enroll } = this.props; const { enrolled } = this.state; const doEnroll = () => { - enroll(() => this.setState({enrolled: true})) + // enroll(() => this.setState({enrolled: true})) + this.setState({enrolled: true}) } return (
    onKeyUpEnter(event, doEnroll)} > - + privacy Enable WebAuthn 2FA - :
  • + :
  • + privacy WebAuthn 2FA Enabled!
  • } diff --git a/src/components/navigation/UserDropdown.scss b/src/components/navigation/UserDropdown.scss index a3565558..2f67870a 100644 --- a/src/components/navigation/UserDropdown.scss +++ b/src/components/navigation/UserDropdown.scss @@ -4,6 +4,10 @@ margin: 1rem 0 0 0.2rem; } +.user-info-dropdown-content .user-dropdown-container li.user-dropdown-item.menu-item-with-icon { + display: block; +} + .user-dropdown-container { position: relative; background-color: white; @@ -22,7 +26,6 @@ li { &.user-dropdown-item { - display: block; margin: 0 0 0 0; font-weight: normal; color: black; diff --git a/src/components/navigation/UserInfo.scss b/src/components/navigation/UserInfo.scss index 5fde36ac..f03e37b0 100644 --- a/src/components/navigation/UserInfo.scss +++ b/src/components/navigation/UserInfo.scss @@ -2,7 +2,7 @@ display: grid; align-items: center; grid-gap: 0 .5rem; - grid-template-columns: 5fr 1fr; + grid-template-columns: 270px 50px; grid-template-areas: 'prefix options' 'name options' From 94d84a3b45f078be49d5c929b6d32cb0f2a4ea9c Mon Sep 17 00:00:00 2001 From: Mike Manfredi Date: Tue, 24 Sep 2019 14:12:37 -0400 Subject: [PATCH 21/76] restoring original code for click event --- src/components/navigation/UserDropdown.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/navigation/UserDropdown.js b/src/components/navigation/UserDropdown.js index 96d01d79..53c1739d 100644 --- a/src/components/navigation/UserDropdown.js +++ b/src/components/navigation/UserDropdown.js @@ -24,8 +24,7 @@ class UserDropdown extends React.Component { const { logout, enroll } = this.props; const { enrolled } = this.state; const doEnroll = () => { - // enroll(() => this.setState({enrolled: true})) - this.setState({enrolled: true}) + enroll(() => this.setState({enrolled: true})) } return (
    Date: Tue, 24 Sep 2019 14:19:36 -0400 Subject: [PATCH 22/76] final menu tweak --- src/components/navigation/UserInfo.scss | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/components/navigation/UserInfo.scss b/src/components/navigation/UserInfo.scss index f03e37b0..496734ff 100644 --- a/src/components/navigation/UserInfo.scss +++ b/src/components/navigation/UserInfo.scss @@ -17,12 +17,14 @@ } .user-info-prefix { + text-align: right; grid-area: prefix; font-size: .75rem; font-weight: 500; } .user-info-name { + text-align: right; grid-area: name; font-size: 0.90rem; } From bf6cae7d6f0df8d2823637c3c35206fd0fe93976 Mon Sep 17 00:00:00 2001 From: Mike Manfredi Date: Fri, 27 Sep 2019 09:18:38 -0400 Subject: [PATCH 23/76] adding var --- default.env | 3 +++ 1 file changed, 3 insertions(+) diff --git a/default.env b/default.env index 3e5a2fa1..9a8a9a34 100644 --- a/default.env +++ b/default.env @@ -6,3 +6,6 @@ REACT_APP_CHAIN_ID=cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7d REACT_APP_RPC_PROTOCOL=http REACT_APP_RPC_HOST=localhost REACT_APP_RPC_PORT=8888 + +# Server +API_SERVER_PRIVATE_KEY=5Jh6jf9g1UzcWrMMsgqd5GrTCgzeKkh5yT7EUZbiU7wB7k4Ayx1 \ No newline at end of file From 947be0c8dbc729ee6dc528c6d2d29d6b3e949b9a Mon Sep 17 00:00:00 2001 From: Mike Manfredi Date: Tue, 15 Oct 2019 15:31:11 -0400 Subject: [PATCH 24/76] upgraded all deps and version locked them --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 58bc9b60..39f572b2 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "react-scripts": "3.0.1", "ual-eosio-reference-authenticator": "0.1.3", "ual-lynx": "0.2.2", - "ual-reactjs-renderer": "0.1.6", + "ual-reactjs-renderer": "0.1.7", "ual-scatter": "0.1.6", "ual-token-pocket": "0.1.2" }, diff --git a/yarn.lock b/yarn.lock index 863d45b2..fbbb19b8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10258,10 +10258,10 @@ ual-lynx@0.2.2: eosjs "20.0.0" universal-authenticator-library "0.1.4" -ual-reactjs-renderer@0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/ual-reactjs-renderer/-/ual-reactjs-renderer-0.1.6.tgz#e5cd19522aeaa890930d4bdcc95ecd66089c1ae7" - integrity sha512-CLqkNzOoo3s9bUPJRymxFzUQwoRdo4JbT0H0ctqJPGokZryOQ+RQIW4DKj7rLwVXRPo+2CXS6wEN+CvZH1E0GQ== +ual-reactjs-renderer@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/ual-reactjs-renderer/-/ual-reactjs-renderer-0.1.7.tgz#d01d3798482a508a2bbcf44b99a25e63271d773a" + integrity sha512-Kjs6G8r0hlo9Uu6IW0I0H4yA0grqxGr1c/wbk85S77eox54itaQOOm3e5iFuPyBYtgNy7rnpI0r5XYQEDexjKQ== dependencies: i18next "14.0.1" i18next-browser-languagedetector "2.2.4" From b190d4426d2c2ce155347d324b985467ae7cb6a1 Mon Sep 17 00:00:00 2001 From: Mike Manfredi Date: Tue, 15 Oct 2019 17:55:29 -0400 Subject: [PATCH 25/76] adding enrollment check before renting --- src/App.js | 4 +++- src/components/navigation/UserDropdown.js | 2 +- src/components/results/ResultsPage.js | 7 ++++--- src/components/results/ResultsProperties.js | 7 ++++--- src/components/results/property/Property.js | 7 ++++++- 5 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/App.js b/src/App.js index f625a725..c0a4aec1 100644 --- a/src/App.js +++ b/src/App.js @@ -32,6 +32,7 @@ class App extends React.Component { showResults: false, showNotificationBar: true, error: null, + enrolled: false, } componentDidUpdate(prevProps) { @@ -80,6 +81,7 @@ class App extends React.Component { const accountName = await activeUser.getAccountName() const pubkey = await generateWebauthnPubkey(accountName) await enrollWebauthnPubkey(accountName, pubkey) + this.setState({enrolled: true}) onSuccess(); } catch (err) { this.displayError(err) @@ -101,7 +103,7 @@ class App extends React.Component { { showNotificationBar && } { showResults - ? + ? : }
    diff --git a/src/components/navigation/UserDropdown.js b/src/components/navigation/UserDropdown.js index 53c1739d..b400e12c 100644 --- a/src/components/navigation/UserDropdown.js +++ b/src/components/navigation/UserDropdown.js @@ -13,7 +13,7 @@ class UserDropdown extends React.Component { static propTypes = { logout: func.isRequired, - enroll: func.isRequired + enroll: func.isRequired, } state = { diff --git a/src/components/results/ResultsPage.js b/src/components/results/ResultsPage.js index b91f948e..8a1b9f70 100644 --- a/src/components/results/ResultsPage.js +++ b/src/components/results/ResultsPage.js @@ -1,16 +1,16 @@ import React from 'react' -import { func } from 'prop-types' +import { func, bool } from 'prop-types' import './ResultsPage.scss' import ResultsHeader from 'components/results/ResultsHeader' import ResultsProperties from 'components/results/ResultsProperties' -const ResultsPage = ({ login, displayError }) => ( +const ResultsPage = ({ login, displayError, enrolled }) => (
    - +
    ) @@ -18,6 +18,7 @@ const ResultsPage = ({ login, displayError }) => ( ResultsPage.propTypes = { login: func.isRequired, displayError: func.isRequired, + enrolled: bool.isRequired, } export default ResultsPage diff --git a/src/components/results/ResultsProperties.js b/src/components/results/ResultsProperties.js index 035029c8..62e3c634 100644 --- a/src/components/results/ResultsProperties.js +++ b/src/components/results/ResultsProperties.js @@ -1,14 +1,14 @@ import React from 'react' -import { func } from 'prop-types' +import { func, bool } from 'prop-types' import './ResultsProperties.scss' import Property from 'components/results/property/Property' const NUM_PROPERTIES = 8 -const ResultsProperties = ({ login, displayError }) => ( +const ResultsProperties = ({ login, displayError, enrolled }) => (
    - { [...Array(NUM_PROPERTIES).keys()].map(e => ) + { [...Array(NUM_PROPERTIES).keys()].map(e => ) }
    ) @@ -16,6 +16,7 @@ const ResultsProperties = ({ login, displayError }) => ( ResultsProperties.propTypes = { login: func.isRequired, displayError: func.isRequired, + enrolled: bool.isRequired, } export default ResultsProperties diff --git a/src/components/results/property/Property.js b/src/components/results/property/Property.js index 3e632772..451638f6 100644 --- a/src/components/results/property/Property.js +++ b/src/components/results/property/Property.js @@ -1,5 +1,5 @@ import React from 'react' -import { func } from 'prop-types' +import { func, bool } from 'prop-types' // UAL context object that can be set via the contextType property on a class and can be referenced using this.context import { UALContext } from 'ual-reactjs-renderer' import './Property.scss' @@ -19,6 +19,7 @@ class Property extends React.Component { static propTypes = { login: func.isRequired, displayError: func.isRequired, + enrolled: bool.isRequired, } state = { @@ -53,6 +54,10 @@ class Property extends React.Component { const { login, displayError } = this.props const { activeUser } = this.context if ( activeUser ) { + if (!this.props.enrolled) { + displayError(new Error('No 2FA enrolled 2FA: Please enroll in 2FA (under Login/Profile menu at the top right) to Rent.')) + return; + } this.setState({ loading: true }) try { const accountName = await activeUser.getAccountName() From 40e07d589e0c3492af5a72390756a3073f4f8b31 Mon Sep 17 00:00:00 2001 From: Mike Manfredi Date: Mon, 21 Oct 2019 16:24:45 -0400 Subject: [PATCH 26/76] added to README and added UX team's requested tweaks --- README.md | 14 ++++++++++++-- src/App.scss | 4 ++++ src/components/navigation/LoginButton.scss | 3 +++ src/components/navigation/UserDropdown.scss | 5 +++-- src/components/results/property/Property.scss | 2 ++ 5 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 src/components/navigation/LoginButton.scss diff --git a/README.md b/README.md index f6f35dc9..039dc7f1 100644 --- a/README.md +++ b/README.md @@ -337,6 +337,16 @@ Tropical Example follows the Ricardian Specification by providing the following: _If you need information not covered in this guide, you can reference the Ricardian Specification [here](https://github.com/EOSIO/ricardian-spec)._ +## WebAuthn + +Tropical Example implements WebAuthn as a 2nd factor. + +After logging in, under the user menu, you'll find an option to "enroll" a 2FA device. Use this option in conjunction with your device's build-in biometric scanner, secure element, or external hardware key to enroll a key with the Tropical Example. + +Then, on the Properties Search Results page, you'll see a 'Rent' button. Where liking something is a relatively low-risk activity, the Rent button represents a real-world use case for commiting yourself to rent that property. In this case where money is on the line, the app will request you sign for the Rent action with the enrolled key. + +Read more about this example and technology [here -- REQUIRE LINK to blog or Release Notes of some kind](https://www.google.com) + ## Running Tropical Example ### Required Tools @@ -391,10 +401,10 @@ You can view the contract in the [eosio/contracts directory](https://github.com/ ### Running Frontend ```bash -yarn start +HTTPS=true yarn start ``` This command runs the app in the development mode. -Open [http://localhost:3000](http://localhost:3000) to view it in the browser. +Open [https://localhost:3000](https://localhost:3000) to view it in the browser. The page will reload if you make edits. diff --git a/src/App.scss b/src/App.scss index 5e549bc6..33848ea9 100644 --- a/src/App.scss +++ b/src/App.scss @@ -16,6 +16,10 @@ body { font-size: 16px; border: none; + *:focus { + outline: none; + } + @media screen and (min-width: $max-content-width) { font-size: 18px; } diff --git a/src/components/navigation/LoginButton.scss b/src/components/navigation/LoginButton.scss new file mode 100644 index 00000000..2a48a56b --- /dev/null +++ b/src/components/navigation/LoginButton.scss @@ -0,0 +1,3 @@ +login-button-container { + cursor: pointer; +} \ No newline at end of file diff --git a/src/components/navigation/UserDropdown.scss b/src/components/navigation/UserDropdown.scss index 2f67870a..4241c2fc 100644 --- a/src/components/navigation/UserDropdown.scss +++ b/src/components/navigation/UserDropdown.scss @@ -33,9 +33,10 @@ } .menu-item-icon-left { - height: 14px; - width: 14px; + height: 22px; + width: 22px; margin: 0px 0.5rem; + vertical-align: text-top; } &:after { diff --git a/src/components/results/property/Property.scss b/src/components/results/property/Property.scss index ea50aac3..030084d7 100644 --- a/src/components/results/property/Property.scss +++ b/src/components/results/property/Property.scss @@ -45,6 +45,7 @@ background-color: #2B455B; width: 150px; margin-right: 0.5rem; + cursor: pointer; &.active { background-color: #46D564; } @@ -54,6 +55,7 @@ display: inline-block; background-color: #597084; width: 110px; + cursor: pointer; &.active { background-color: #FD5F82; } From db393a63434f20103718e1c6c3a18c91b924af80 Mon Sep 17 00:00:00 2001 From: Mike Manfredi Date: Fri, 1 Nov 2019 14:38:52 -0400 Subject: [PATCH 27/76] removing console log linens --- src/components/results/property/Property.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/components/results/property/Property.js b/src/components/results/property/Property.js index 451638f6..54dcbbec 100644 --- a/src/components/results/property/Property.js +++ b/src/components/results/property/Property.js @@ -32,7 +32,6 @@ class Property extends React.Component { const { login, displayError } = this.props // Via static contextType = UALContext, access to the activeUser object on this.context is now available const { activeUser } = this.context - console.info('activeUser:', activeUser) if (activeUser) { this.setState({ loading: true }) try { @@ -64,7 +63,6 @@ class Property extends React.Component { const rentChallenge = await generateRentChallenge(accountName, "aproperty") const userAuth = await signRentChallenge(accountName, "aproperty", rentChallenge) const transaction = generateRentTransaction(accountName, "aproperty", rentChallenge.serverKey, rentChallenge.userKey, rentChallenge.serverAuth, userAuth) - console.log(JSON.stringify(transaction, null, ' ')) // The activeUser.signTransaction will propose the passed in transaction to the logged in Authenticator await activeUser.signTransaction(transaction, transactionConfig) this.setState({rented: true}) From e8ac7b6a97aa6bc4a2abd94f1d2ccbaac26162aa Mon Sep 17 00:00:00 2001 From: Mike Manfredi Date: Tue, 5 Nov 2019 13:58:07 -0500 Subject: [PATCH 28/76] making startup a bit more transparent --- scripts/copyDefaultEnv.js | 2 ++ src/api/index.js | 2 ++ 2 files changed, 4 insertions(+) diff --git a/scripts/copyDefaultEnv.js b/scripts/copyDefaultEnv.js index 2a7aa37b..09fefc92 100644 --- a/scripts/copyDefaultEnv.js +++ b/scripts/copyDefaultEnv.js @@ -5,4 +5,6 @@ var root = __dirname.replace('scripts', ''); if (!fs.existsSync(path.join(root + '.env'))) { fs.copyFileSync(path.join(root + 'default.env'), path.join(root + '.env')); console.info('.env NOT found; copying ./default.env to ./.env'); +} else { + console.info('.env already exists; NOT overwriting...'); } \ No newline at end of file diff --git a/src/api/index.js b/src/api/index.js index 290862b7..168e42f9 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -62,7 +62,9 @@ export default () => { type: Numeric.KeyType.wa, data: users[name].eosioPubkey.slice(1), }) + console.info('private_key_wif:', private_key_wif) const serverKey = ecc.privateToPublic(private_key_wif) + console.info('serverKey:', serverKey) const credentialIDStr = base64url.encode(users[name].credentialID) resp.json({ From fdaea5f2860fb88683e3fe9814cd29a8cfa44187 Mon Sep 17 00:00:00 2001 From: Mike Manfredi Date: Wed, 6 Nov 2019 16:45:56 -0500 Subject: [PATCH 29/76] adding console statements --- src/App.js | 3 +++ src/components/results/property/Property.js | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/src/App.js b/src/App.js index c0a4aec1..5135c681 100644 --- a/src/App.js +++ b/src/App.js @@ -74,12 +74,15 @@ class App extends React.Component { } enroll = async ( onSuccess ) => { + console.info('enroll().top') // Via static contextType = UALContext, access to the activeUser object on this.context is now available const { ual: { activeUser } } = this.props if (activeUser) { try { const accountName = await activeUser.getAccountName() const pubkey = await generateWebauthnPubkey(accountName) + console.info('accountName:', accountName) + console.info('pubkey:', pubkey) await enrollWebauthnPubkey(accountName, pubkey) this.setState({enrolled: true}) onSuccess(); diff --git a/src/components/results/property/Property.js b/src/components/results/property/Property.js index 54dcbbec..cf209055 100644 --- a/src/components/results/property/Property.js +++ b/src/components/results/property/Property.js @@ -50,6 +50,7 @@ class Property extends React.Component { } onRent = async () => { + console.info('onRent().top') const { login, displayError } = this.props const { activeUser } = this.context if ( activeUser ) { @@ -60,9 +61,13 @@ class Property extends React.Component { this.setState({ loading: true }) try { const accountName = await activeUser.getAccountName() + console.info('accountName:', accountName) const rentChallenge = await generateRentChallenge(accountName, "aproperty") + console.info('rentChallenge:', rentChallenge) const userAuth = await signRentChallenge(accountName, "aproperty", rentChallenge) + console.info('userAuth:', userAuth) const transaction = generateRentTransaction(accountName, "aproperty", rentChallenge.serverKey, rentChallenge.userKey, rentChallenge.serverAuth, userAuth) + console.info('transactionn:', transaction) // The activeUser.signTransaction will propose the passed in transaction to the logged in Authenticator await activeUser.signTransaction(transaction, transactionConfig) this.setState({rented: true}) From 937039183e4011a07b22e90e11f7eb616613b270 Mon Sep 17 00:00:00 2001 From: Mike Manfredi Date: Thu, 7 Nov 2019 08:26:41 -0500 Subject: [PATCH 30/76] stuff --- src/api/index.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/api/index.js b/src/api/index.js index 168e42f9..cff38b32 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -50,6 +50,8 @@ export default () => { const users = {} api.post( '/generateRentChallenge', json(), (req, resp) => { + console.info('generateRentChallenge().top') + console.info('req:', req.body) const name = req.body.accountName const propertyName = req.body.propertyName const namePairBuffer = new Serialize.SerialBuffer({textEncoder: new util.TextEncoder(), textDecoder: new util.TextDecoder()}) @@ -62,11 +64,16 @@ export default () => { type: Numeric.KeyType.wa, data: users[name].eosioPubkey.slice(1), }) - console.info('private_key_wif:', private_key_wif) const serverKey = ecc.privateToPublic(private_key_wif) - console.info('serverKey:', serverKey) const credentialIDStr = base64url.encode(users[name].credentialID) + console.info('result:', { + 'status': 'ok', + 'userKey' : userKey, + 'serverKey' : serverKey, + 'serverAuth': challenge, + 'credentialID': credentialIDStr + }) resp.json({ 'status': 'ok', 'userKey' : userKey, @@ -80,9 +87,12 @@ export default () => { // Note there is no verfication of this data as it is out of scope for this demo // const name = req.body.accountName + console.info('name:', name) const webauthnPublicKey = req.body.webauthnPublicKey + console.info('webauthnPublicKey:', webauthnPublicKey) users[name] = decodeWebauthnPublicKey(webauthnPublicKey) + console.info('publicKey:', users[name].eosioPubkey.join(',')) resp.json({ 'status': 'ok' }) }) From 39c9ef5f71782c9b1269be092a13d07241db5f47 Mon Sep 17 00:00:00 2001 From: Mike Manfredi Date: Thu, 7 Nov 2019 08:43:08 -0500 Subject: [PATCH 31/76] adding debbugging gstatemtns to sigDigest code --- src/api/index.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/api/index.js b/src/api/index.js index cff38b32..4338f94d 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -57,9 +57,15 @@ export default () => { const namePairBuffer = new Serialize.SerialBuffer({textEncoder: new util.TextEncoder(), textDecoder: new util.TextDecoder()}) namePairBuffer.pushName(name) namePairBuffer.pushName(propertyName) - const sigData = Buffer.concat( [ namePairBuffer.asUint8Array(), users[name].eosioPubkey ] ) + console.info('////////////-----------') + console.info('eosioPubkey:', users[name].eosioPubkey) + const sigData = Buffer.concat( [ namePairBuffer.asUint8Array(), users[name].eosioPubkey ] )a + console.info('sigData:', sigData) const sigDigest = Buffer.from(ecc.sha256(sigData), 'hex') + console.info('sigDigest:', sigDigest) const challenge = ecc.signHash(sigDigest, private_key_wif).toString() + console.info('challenge:', challenge) + console.info('\\\\\\\\\\\\-----------') const userKey = Numeric.publicKeyToString({ type: Numeric.KeyType.wa, data: users[name].eosioPubkey.slice(1), From c22f74f898291b7cea5608cde427399e091b860e Mon Sep 17 00:00:00 2001 From: Mike Manfredi Date: Thu, 7 Nov 2019 08:47:30 -0500 Subject: [PATCH 32/76] polish --- src/api/index.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/api/index.js b/src/api/index.js index 4338f94d..1dba16c8 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -58,8 +58,8 @@ export default () => { namePairBuffer.pushName(name) namePairBuffer.pushName(propertyName) console.info('////////////-----------') - console.info('eosioPubkey:', users[name].eosioPubkey) - const sigData = Buffer.concat( [ namePairBuffer.asUint8Array(), users[name].eosioPubkey ] )a + console.info('eosioPubkey:', users[name].eosioPubkey.join(',')) + const sigData = Buffer.concat( [ namePairBuffer.asUint8Array(), users[name].eosioPubkey ] ) console.info('sigData:', sigData) const sigDigest = Buffer.from(ecc.sha256(sigData), 'hex') console.info('sigDigest:', sigDigest) @@ -90,6 +90,7 @@ export default () => { }) api.post( '/enroll', json(), (req, resp) => { + console.info('enroll().top') // Note there is no verfication of this data as it is out of scope for this demo // const name = req.body.accountName From 84ac148f0ea17f1db5e1e8a6731da9358e443008 Mon Sep 17 00:00:00 2001 From: Mike Manfredi Date: Wed, 13 Nov 2019 09:54:59 -0500 Subject: [PATCH 33/76] index, priv->pub works --- package.json | 3 ++- src/api/index.js | 36 +++++++++++++++++++++--------------- yarn.lock | 10 +++++----- 3 files changed, 28 insertions(+), 21 deletions(-) diff --git a/package.json b/package.json index 39f572b2..916d3eba 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,8 @@ "@babel/register": "7.4.4", "base64url": "2.0.0", "cbor": "3.0.3", - "eosjs": "20.0.2-a53eecb.0", + "elliptic": "^6.5.1", + "eosjs": "20.0.3-cd2fb09.0", "eosjs-ecc": "4.0.4", "focus-visible": "4.1.5", "prop-types": "15.7.2", diff --git a/src/api/index.js b/src/api/index.js index 1dba16c8..f8653d96 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -1,11 +1,14 @@ import { Router, json } from 'express' import ecc from 'eosjs-ecc' +import { ec as EC } from 'elliptic' import {Serialize, Numeric} from 'eosjs' +import { JsSignatureProvider } from 'eosjs/dist/eosjs-jssig' import base64url from 'base64url' import cbor from 'cbor' import util from 'util'; export default () => { + const ec = new EC('secp256k1') const private_key_wif = process.env.API_SERVER_PRIVATE_KEY const api = Router() @@ -70,22 +73,25 @@ export default () => { type: Numeric.KeyType.wa, data: users[name].eosioPubkey.slice(1), }) - const serverKey = ecc.privateToPublic(private_key_wif) - const credentialIDStr = base64url.encode(users[name].credentialID) + const sigProvider = new JsSignatureProvider([private_key_wif]) + const serverKey = sigProvider.getAvailableKeys().then((pubKeys) => { + const serverKey = pubKeys[0] + const credentialIDStr = base64url.encode(users[name].credentialID) - console.info('result:', { - 'status': 'ok', - 'userKey' : userKey, - 'serverKey' : serverKey, - 'serverAuth': challenge, - 'credentialID': credentialIDStr - }) - resp.json({ - 'status': 'ok', - 'userKey' : userKey, - 'serverKey' : serverKey, - 'serverAuth': challenge, - 'credentialID': credentialIDStr + console.info('result:', { + 'status': 'ok', + 'userKey' : userKey, + 'serverKey' : serverKey, + 'serverAuth': challenge, + 'credentialID': credentialIDStr + }) + resp.json({ + 'status': 'ok', + 'userKey' : userKey, + 'serverKey' : serverKey, + 'serverAuth': challenge, + 'credentialID': credentialIDStr + }) }) }) diff --git a/yarn.lock b/yarn.lock index fbbb19b8..e7e87727 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3673,7 +3673,7 @@ electron-to-chromium@^1.3.247, electron-to-chromium@^1.3.284: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.292.tgz#7812fc5138619342f1dd5823df6e9cbb7d2820e9" integrity sha512-hqkem5ANpt6mxVXmhAmlbdG8iicuyM/jEYgmP1tiHPeOLyZoTyGUzrDmJS/xyrrZy9frkW1uQcubicu7f6DS5g== -elliptic@^6.0.0: +elliptic@^6.0.0, elliptic@^6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.1.tgz#c380f5f909bf1b9b4428d028cd18d3b0efd6b52b" integrity sha512-xvJINNLbTeWQjrl6X+7eQCrIy/YPv5XCpKW6kB5mKvtnGILoLDcySuwomfdzt0BMdLNVnuRNTuzKNHj0bva1Cg== @@ -3774,10 +3774,10 @@ eosjs@20.0.0, eosjs@^20.0.2-a53eecb.0: eosjs-ecc "4.0.4" text-encoding "0.7.0" -eosjs@20.0.2-a53eecb.0: - version "20.0.2-a53eecb.0" - resolved "https://registry.yarnpkg.com/eosjs/-/eosjs-20.0.2-a53eecb.0.tgz#1a131bd8fb7c98a2dee178885dc47c9899f7e4a3" - integrity sha512-VGirrkYKy3LrBMkMH+C5ncnj0ZZ/9QaL+5RhWFtxBsOsgH+IiGwFtweBGOo0aSXlOJNJ9Mt+kR01tYhm3QkTDQ== +eosjs@20.0.3-cd2fb09.0: + version "20.0.3-cd2fb09.0" + resolved "https://registry.yarnpkg.com/eosjs/-/eosjs-20.0.3-cd2fb09.0.tgz#d6281fe6cd849ed4531e3029a2f55fc7a907817d" + integrity sha512-FuMr/4THF3nIXXOBf5EniGCipQta7amdXv4efpGTXJZRR6vJ3QJAXu8kaSy1mmyKbUAPo56rudrjggTNY35OJQ== dependencies: babel-runtime "6.26.0" text-encoding "0.7.0" From 59441559d8a77b2e7033a4ad0fd56e02f456864c Mon Sep 17 00:00:00 2001 From: Mike Manfredi Date: Wed, 13 Nov 2019 10:32:35 -0500 Subject: [PATCH 34/76] api/index hash replaced; works --- src/api/index.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/api/index.js b/src/api/index.js index f8653d96..34769b27 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -63,9 +63,8 @@ export default () => { console.info('////////////-----------') console.info('eosioPubkey:', users[name].eosioPubkey.join(',')) const sigData = Buffer.concat( [ namePairBuffer.asUint8Array(), users[name].eosioPubkey ] ) - console.info('sigData:', sigData) - const sigDigest = Buffer.from(ecc.sha256(sigData), 'hex') - console.info('sigDigest:', sigDigest) + const sigDigestOrig = Buffer.from(ecc.sha256(sigData), 'hex') + const sigDigest = Buffer.from(ec.hash().update(sigData).digest()) const challenge = ecc.signHash(sigDigest, private_key_wif).toString() console.info('challenge:', challenge) console.info('\\\\\\\\\\\\-----------') From e06cd175f7c855c4b3013243475c0667366c2b04 Mon Sep 17 00:00:00 2001 From: Mike Manfredi Date: Wed, 13 Nov 2019 10:40:16 -0500 Subject: [PATCH 35/76] all ecc references except signHash now replaced and code working --- src/api/index.js | 1 - src/utils/webauthn.js | 11 ++++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/api/index.js b/src/api/index.js index 34769b27..37078b0f 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -63,7 +63,6 @@ export default () => { console.info('////////////-----------') console.info('eosioPubkey:', users[name].eosioPubkey.join(',')) const sigData = Buffer.concat( [ namePairBuffer.asUint8Array(), users[name].eosioPubkey ] ) - const sigDigestOrig = Buffer.from(ecc.sha256(sigData), 'hex') const sigDigest = Buffer.from(ec.hash().update(sigData).digest()) const challenge = ecc.signHash(sigDigest, private_key_wif).toString() console.info('challenge:', challenge) diff --git a/src/utils/webauthn.js b/src/utils/webauthn.js index 5c501fcd..9f2c6024 100644 --- a/src/utils/webauthn.js +++ b/src/utils/webauthn.js @@ -1,6 +1,5 @@ import base64url from 'base64url' import {Serialize, Numeric} from 'eosjs' -import ecc from 'eosjs-ecc' import { ec } from 'elliptic' // taken from the @@ -13,6 +12,7 @@ const formatWebauthnPubkey = (pubkey) => { } const decodeWebauthnSignature = (assertion, key) => { + const e = new ec('p256'); const fixup = (x) => { const a = Array.from(x) while (a.length < 32) @@ -36,10 +36,9 @@ const decodeWebauthnSignature = (assertion, key) => { const s = fixup(der.getUint8Array(der.get())) const pubkeyData = Numeric.stringToPublicKey(key).data.subarray(0, 33) - const e = new ec('p256'); const pubKey = e.keyFromPublic(pubkeyData).getPublic(); - const signedData = Buffer.concat([Buffer.from(assertion.authenticatorData), Buffer.from(ecc.sha256(Buffer.from(assertion.clientDataJSON)), 'hex')]) - const hash = Buffer.from(ecc.sha256(signedData), 'hex') + const signedData = Buffer.concat([Buffer.from(assertion.authenticatorData), Buffer.from(e.hash().update(Buffer.from(assertion.clientDataJSON)).digest())]) + const hash = Buffer.from(e.hash().update(signedData).digest()) const recid = e.getKeyRecoveryParam(hash, Buffer.from(assertion.signature), pubKey) const sigData = new Serialize.SerialBuffer() @@ -131,12 +130,14 @@ export const generateRentChallenge = async(accountName, propertyName) => { } export const signRentChallenge = async(accountName, propertyName, challenge) => { + const e = new ec('p256'); const challengeBuffer = new Serialize.SerialBuffer() challengeBuffer.pushName(accountName) challengeBuffer.pushName(propertyName) challengeBuffer.pushPublicKey(challenge.userKey) const sigData = challengeBuffer.asUint8Array() - const sigDigest = Buffer.from(ecc.sha256(sigData), 'hex') + // const sigDigest = Buffer.from(ecc.sha256(sigData), 'hex') + const sigDigest = Buffer.from(e.hash().update(sigData).digest()) const getCredentialOptions = { publicKey: { timeout: 60000, From 1a6417ec5682c3cbbef3cb8a98befdfa32c31735 Mon Sep 17 00:00:00 2001 From: Mike Manfredi Date: Wed, 13 Nov 2019 10:59:36 -0500 Subject: [PATCH 36/76] imported tons of eosjsEcc, but it does work --- package.json | 7 + src/api/eosjsEccReplacement.js | 5 + src/api/eosjsEccSupport/ecdsa.js | 218 ++++++++++++++++ src/api/eosjsEccSupport/ecsignature.js | 124 +++++++++ src/api/eosjsEccSupport/enforce_types.js | 40 +++ src/api/eosjsEccSupport/hash.js | 64 +++++ src/api/eosjsEccSupport/key_private.js | 315 +++++++++++++++++++++++ src/api/eosjsEccSupport/key_public.js | 172 +++++++++++++ src/api/eosjsEccSupport/key_utils.js | 225 ++++++++++++++++ src/api/eosjsEccSupport/promise-async.js | 23 ++ src/api/eosjsEccSupport/signature.js | 80 ++++++ src/api/index.js | 4 +- yarn.lock | 46 +++- 13 files changed, 1317 insertions(+), 6 deletions(-) create mode 100644 src/api/eosjsEccReplacement.js create mode 100644 src/api/eosjsEccSupport/ecdsa.js create mode 100644 src/api/eosjsEccSupport/ecsignature.js create mode 100644 src/api/eosjsEccSupport/enforce_types.js create mode 100644 src/api/eosjsEccSupport/hash.js create mode 100644 src/api/eosjsEccSupport/key_private.js create mode 100644 src/api/eosjsEccSupport/key_public.js create mode 100644 src/api/eosjsEccSupport/key_utils.js create mode 100644 src/api/eosjsEccSupport/promise-async.js create mode 100644 src/api/eosjsEccSupport/signature.js diff --git a/package.json b/package.json index 916d3eba..d0ddc1b3 100644 --- a/package.json +++ b/package.json @@ -20,13 +20,20 @@ "@babel/core": "7.4.3", "@babel/preset-env": "7.4.3", "@babel/register": "7.4.4", + "assert": "^2.0.0", "base64url": "2.0.0", + "bigi": "^1.4.2", + "bs58": "^4.0.1", "cbor": "3.0.3", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "ecurve": "^1.0.6", "elliptic": "^6.5.1", "eosjs": "20.0.3-cd2fb09.0", "eosjs-ecc": "4.0.4", "focus-visible": "4.1.5", "prop-types": "15.7.2", + "randombytes": "^2.1.0", "react": "16.8.6", "react-dom": "16.8.6", "react-scripts": "3.0.1", diff --git a/src/api/eosjsEccReplacement.js b/src/api/eosjsEccReplacement.js new file mode 100644 index 00000000..b2226a20 --- /dev/null +++ b/src/api/eosjsEccReplacement.js @@ -0,0 +1,5 @@ +const Signature = require("./eosjsEccSupport/signature") + +export const eccSignHash = (dataSha256, privateKey, encoding = 'hex') => { + return Signature.signHash(dataSha256, privateKey, encoding).toString() +} \ No newline at end of file diff --git a/src/api/eosjsEccSupport/ecdsa.js b/src/api/eosjsEccSupport/ecdsa.js new file mode 100644 index 00000000..84453ef2 --- /dev/null +++ b/src/api/eosjsEccSupport/ecdsa.js @@ -0,0 +1,218 @@ +var assert = require('assert') // from github.com/bitcoinjs/bitcoinjs-lib from github.com/cryptocoinjs/ecdsa +var crypto = require('./hash') +var enforceType = require('./enforce_types') + +var BigInteger = require('bigi') +var ECSignature = require('./ecsignature') + +// https://tools.ietf.org/html/rfc6979#section-3.2 +function deterministicGenerateK(curve, hash, d, checkSig, nonce) { + + enforceType('Buffer', hash) + enforceType(BigInteger, d) + + if (nonce) { + hash = crypto.sha256(Buffer.concat([hash, new Buffer(nonce)])) + } + + // sanity check + assert.equal(hash.length, 32, 'Hash must be 256 bit') + + var x = d.toBuffer(32) + var k = new Buffer(32) + var v = new Buffer(32) + + // Step B + v.fill(1) + + // Step C + k.fill(0) + + // Step D + k = crypto.HmacSHA256(Buffer.concat([v, new Buffer([0]), x, hash]), k) + + // Step E + v = crypto.HmacSHA256(v, k) + + // Step F + k = crypto.HmacSHA256(Buffer.concat([v, new Buffer([1]), x, hash]), k) + + // Step G + v = crypto.HmacSHA256(v, k) + + // Step H1/H2a, ignored as tlen === qlen (256 bit) + // Step H2b + v = crypto.HmacSHA256(v, k) + + var T = BigInteger.fromBuffer(v) + + // Step H3, repeat until T is within the interval [1, n - 1] + while ((T.signum() <= 0) || (T.compareTo(curve.n) >= 0) || !checkSig(T)) { + k = crypto.HmacSHA256(Buffer.concat([v, new Buffer([0])]), k) + v = crypto.HmacSHA256(v, k) + + // Step H1/H2a, again, ignored as tlen === qlen (256 bit) + // Step H2b again + v = crypto.HmacSHA256(v, k) + + T = BigInteger.fromBuffer(v) + } + + return T + +} + +function sign(curve, hash, d, nonce) { + + var e = BigInteger.fromBuffer(hash) + var n = curve.n + var G = curve.G + + var r, s + var k = deterministicGenerateK(curve, hash, d, function (k) { + // find canonically valid signature + var Q = G.multiply(k) + + if (curve.isInfinity(Q)) return false + + r = Q.affineX.mod(n) + if (r.signum() === 0) return false + + s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n) + if (s.signum() === 0) return false + + return true + }, nonce) + + var N_OVER_TWO = n.shiftRight(1) + + // enforce low S values, see bip62: 'low s values in signatures' + if (s.compareTo(N_OVER_TWO) > 0) { + s = n.subtract(s) + } + + return ECSignature(r, s) +} + +function verifyRaw(curve, e, signature, Q) { + var n = curve.n + var G = curve.G + + var r = signature.r + var s = signature.s + + // 1.4.1 Enforce r and s are both integers in the interval [1, n − 1] + if (r.signum() <= 0 || r.compareTo(n) >= 0) return false + if (s.signum() <= 0 || s.compareTo(n) >= 0) return false + + // c = s^-1 mod n + var c = s.modInverse(n) + + // 1.4.4 Compute u1 = es^−1 mod n + // u2 = rs^−1 mod n + var u1 = e.multiply(c).mod(n) + var u2 = r.multiply(c).mod(n) + + // 1.4.5 Compute R = (xR, yR) = u1G + u2Q + var R = G.multiplyTwo(u1, Q, u2) + + // 1.4.5 (cont.) Enforce R is not at infinity + if (curve.isInfinity(R)) return false + + // 1.4.6 Convert the field element R.x to an integer + var xR = R.affineX + + // 1.4.7 Set v = xR mod n + var v = xR.mod(n) + + // 1.4.8 If v = r, output "valid", and if v != r, output "invalid" + return v.equals(r) +} + +function verify(curve, hash, signature, Q) { + // 1.4.2 H = Hash(M), already done by the user + // 1.4.3 e = H + var e = BigInteger.fromBuffer(hash) + return verifyRaw(curve, e, signature, Q) +} + +/** + * Recover a public key from a signature. + * + * See SEC 1: Elliptic Curve Cryptography, section 4.1.6, "Public + * Key Recovery Operation". + * + * http://www.secg.org/download/aid-780/sec1-v2.pdf + */ +function recoverPubKey(curve, e, signature, i) { + assert.strictEqual(i & 3, i, 'Recovery param is more than two bits') + + var n = curve.n + var G = curve.G + + var r = signature.r + var s = signature.s + + assert(r.signum() > 0 && r.compareTo(n) < 0, 'Invalid r value') + assert(s.signum() > 0 && s.compareTo(n) < 0, 'Invalid s value') + + // A set LSB signifies that the y-coordinate is odd + var isYOdd = i & 1 + + // The more significant bit specifies whether we should use the + // first or second candidate key. + var isSecondKey = i >> 1 + + // 1.1 Let x = r + jn + var x = isSecondKey ? r.add(n) : r + var R = curve.pointFromX(isYOdd, x) + + // 1.4 Check that nR is at infinity + var nR = R.multiply(n) + assert(curve.isInfinity(nR), 'nR is not a valid curve point') + + // Compute -e from e + var eNeg = e.negate().mod(n) + + // 1.6.1 Compute Q = r^-1 (sR - eG) + // Q = r^-1 (sR + -eG) + var rInv = r.modInverse(n) + + var Q = R.multiplyTwo(s, G, eNeg).multiply(rInv) + curve.validate(Q) + + return Q +} + +/** + * Calculate pubkey extraction parameter. + * + * When extracting a pubkey from a signature, we have to + * distinguish four different cases. Rather than putting this + * burden on the verifier, Bitcoin includes a 2-bit value with the + * signature. + * + * This function simply tries all four cases and returns the value + * that resulted in a successful pubkey recovery. + */ +function calcPubKeyRecoveryParam(curve, e, signature, Q) { + for (var i = 0; i < 4; i++) { + var Qprime = recoverPubKey(curve, e, signature, i) + + // 1.6.2 Verify Q + if (Qprime.equals(Q)) { + return i + } + } + + throw new Error('Unable to find valid recovery factor') +} + +module.exports = { + calcPubKeyRecoveryParam: calcPubKeyRecoveryParam, + deterministicGenerateK: deterministicGenerateK, + recoverPubKey: recoverPubKey, + sign: sign, + verify: verify, + verifyRaw: verifyRaw +} diff --git a/src/api/eosjsEccSupport/ecsignature.js b/src/api/eosjsEccSupport/ecsignature.js new file mode 100644 index 00000000..53ec280d --- /dev/null +++ b/src/api/eosjsEccSupport/ecsignature.js @@ -0,0 +1,124 @@ +var assert = require('assert') // from https://github.com/bitcoinjs/bitcoinjs-lib +var enforceType = require('./enforce_types') + +var BigInteger = require('bigi') + +function ECSignature(r, s) { + enforceType(BigInteger, r) + enforceType(BigInteger, s) + + function toCompact(i, compressed) { + if (compressed) i += 4 + i += 27 + + var buffer = new Buffer(65) + buffer.writeUInt8(i, 0) + + r.toBuffer(32).copy(buffer, 1) + s.toBuffer(32).copy(buffer, 33) + + return buffer + } + + function toDER() { + var rBa = r.toDERInteger() + var sBa = s.toDERInteger() + + var sequence = [] + + // INTEGER + sequence.push(0x02, rBa.length) + sequence = sequence.concat(rBa) + + // INTEGER + sequence.push(0x02, sBa.length) + sequence = sequence.concat(sBa) + + // SEQUENCE + sequence.unshift(0x30, sequence.length) + + return new Buffer(sequence) + } + + function toScriptSignature(hashType) { + var hashTypeBuffer = new Buffer(1) + hashTypeBuffer.writeUInt8(hashType, 0) + + return Buffer.concat([toDER(), hashTypeBuffer]) + } + + return {r, s, toCompact, toDER, toScriptSignature} +} + +// Import operations +ECSignature.parseCompact = function(buffer) { + assert.equal(buffer.length, 65, 'Invalid signature length') + var i = buffer.readUInt8(0) - 27 + + // At most 3 bits + assert.equal(i, i & 7, 'Invalid signature parameter') + var compressed = !!(i & 4) + + // Recovery param only + i = i & 3 + + var r = BigInteger.fromBuffer(buffer.slice(1, 33)) + var s = BigInteger.fromBuffer(buffer.slice(33)) + + return { + compressed: compressed, + i: i, + signature: ECSignature(r, s) + } +} + +ECSignature.fromDER = function(buffer) { + assert.equal(buffer.readUInt8(0), 0x30, 'Not a DER sequence') + assert.equal(buffer.readUInt8(1), buffer.length - 2, 'Invalid sequence length') + assert.equal(buffer.readUInt8(2), 0x02, 'Expected a DER integer') + + var rLen = buffer.readUInt8(3) + assert(rLen > 0, 'R length is zero') + + var offset = 4 + rLen + assert.equal(buffer.readUInt8(offset), 0x02, 'Expected a DER integer (2)') + + var sLen = buffer.readUInt8(offset + 1) + assert(sLen > 0, 'S length is zero') + + var rB = buffer.slice(4, offset) + var sB = buffer.slice(offset + 2) + offset += 2 + sLen + + if (rLen > 1 && rB.readUInt8(0) === 0x00) { + assert(rB.readUInt8(1) & 0x80, 'R value excessively padded') + } + + if (sLen > 1 && sB.readUInt8(0) === 0x00) { + assert(sB.readUInt8(1) & 0x80, 'S value excessively padded') + } + + assert.equal(offset, buffer.length, 'Invalid DER encoding') + var r = BigInteger.fromDERInteger(rB) + var s = BigInteger.fromDERInteger(sB) + + assert(r.signum() >= 0, 'R value is negative') + assert(s.signum() >= 0, 'S value is negative') + + return ECSignature(r, s) +} + +// FIXME: 0x00, 0x04, 0x80 are SIGHASH_* boundary constants, importing Transaction causes a circular dependency +ECSignature.parseScriptSignature = function(buffer) { + var hashType = buffer.readUInt8(buffer.length - 1) + var hashTypeMod = hashType & ~0x80 + + assert(hashTypeMod > 0x00 && hashTypeMod < 0x04, 'Invalid hashType') + + return { + signature: ECSignature.fromDER(buffer.slice(0, -1)), + hashType: hashType + } +} + +module.exports = ECSignature diff --git a/src/api/eosjsEccSupport/enforce_types.js b/src/api/eosjsEccSupport/enforce_types.js new file mode 100644 index 00000000..f4e507b0 --- /dev/null +++ b/src/api/eosjsEccSupport/enforce_types.js @@ -0,0 +1,40 @@ +module.exports = function enforce(type, value) { // Copied from https://github.com/bitcoinjs/bitcoinjs-lib + switch (type) { + case 'Array': { + if (Array.isArray(value)) return + break + } + + case 'Boolean': { + if (typeof value === 'boolean') return + break + } + + case 'Buffer': { + if (Buffer.isBuffer(value)) return + break + } + + case 'Number': { + if (typeof value === 'number') return + break + } + + case 'String': { + if (typeof value === 'string') return + break + } + + default: { + if (getName(value.constructor) === getName(type)) return + } + } + + throw new TypeError('Expected ' + (getName(type) || type) + ', got ' + value) +} + +function getName(fn) { + // Why not fn.name: https://kangax.github.io/compat-table/es6/#function_name_property + var match = fn.toString().match(/function (.*?)\(/) + return match ? match[1] : null +} diff --git a/src/api/eosjsEccSupport/hash.js b/src/api/eosjsEccSupport/hash.js new file mode 100644 index 00000000..8ae2e6c7 --- /dev/null +++ b/src/api/eosjsEccSupport/hash.js @@ -0,0 +1,64 @@ +const createHash = require('create-hash') +const createHmac = require('create-hmac') + +/** @namespace hash */ + +/** @arg {string|Buffer} data + @arg {string} [resultEncoding = null] - 'hex', 'binary' or 'base64' + @return {string|Buffer} - Buffer when resultEncoding is null, or string +*/ +function sha1(data, resultEncoding) { + return createHash('sha1').update(data).digest(resultEncoding) +} + +/** @arg {string|Buffer} data + @arg {string} [resultEncoding = null] - 'hex', 'binary' or 'base64' + @return {string|Buffer} - Buffer when resultEncoding is null, or string +*/ +function sha256(data, resultEncoding) { + return createHash('sha256').update(data).digest(resultEncoding) +} + +/** @arg {string|Buffer} data + @arg {string} [resultEncoding = null] - 'hex', 'binary' or 'base64' + @return {string|Buffer} - Buffer when resultEncoding is null, or string +*/ +function sha512(data, resultEncoding) { + return createHash('sha512').update(data).digest(resultEncoding) +} + +function HmacSHA256(buffer, secret) { + return createHmac('sha256', secret).update(buffer).digest() +} + +function ripemd160(data) { + try{ + return createHash('rmd160').update(data).digest(); + } catch(e){ + return createHash('ripemd160').update(data).digest(); + } +} + +// function hash160(buffer) { +// return ripemd160(sha256(buffer)) +// } +// +// function hash256(buffer) { +// return sha256(sha256(buffer)) +// } + +// +// function HmacSHA512(buffer, secret) { +// return crypto.createHmac('sha512', secret).update(buffer).digest() +// } + +module.exports = { + sha1: sha1, + sha256: sha256, + sha512: sha512, + HmacSHA256: HmacSHA256, + ripemd160: ripemd160 + // hash160: hash160, + // hash256: hash256, + // HmacSHA512: HmacSHA512 +} diff --git a/src/api/eosjsEccSupport/key_private.js b/src/api/eosjsEccSupport/key_private.js new file mode 100644 index 00000000..1ca8c71e --- /dev/null +++ b/src/api/eosjsEccSupport/key_private.js @@ -0,0 +1,315 @@ +const ecurve = require('ecurve'); +const Point = ecurve.Point; +const secp256k1 = ecurve.getCurveByName('secp256k1'); +const BigInteger = require('bigi'); +const assert = require('assert'); + +const hash = require('./hash'); +const PublicKey = require('./key_public'); +const keyUtils = require('./key_utils'); +const createHash = require('create-hash') +const promiseAsync = require('./promise-async') + +const G = secp256k1.G +const n = secp256k1.n + +module.exports = PrivateKey; + +/** + @typedef {string} wif - https://en.bitcoin.it/wiki/Wallet_import_format + @typedef {string} pubkey - EOSKey.. + @typedef {ecurve.Point} Point +*/ + +/** + @param {BigInteger} d +*/ +function PrivateKey(d) { + if(typeof d === 'string') { + return PrivateKey.fromString(d) + } else if(Buffer.isBuffer(d)) { + return PrivateKey.fromBuffer(d) + } else if(typeof d === 'object' && BigInteger.isBigInteger(d.d)) { + return PrivateKey(d.d) + } + + if(!BigInteger.isBigInteger(d)) { + throw new TypeError('Invalid private key') + } + + /** @return {string} private key like PVT_K1_base58privatekey.. */ + function toString() { + // todo, use PVT_K1_ + // return 'PVT_K1_' + keyUtils.checkEncode(toBuffer(), 'K1') + return toWif() + } + + /** + @return {wif} + */ + function toWif() { + var private_key = toBuffer(); + // checksum includes the version + private_key = Buffer.concat([new Buffer([0x80]), private_key]); + return keyUtils.checkEncode(private_key, 'sha256x2') + } + + let public_key; + + /** + @return {Point} + */ + function toPublic() { + if (public_key) { + // cache + // S L O W in the browser + return public_key + } + const Q = secp256k1.G.multiply(d); + return public_key = PublicKey.fromPoint(Q); + } + + function toBuffer() { + return d.toBuffer(32); + } + + /** + ECIES + @arg {string|Object} pubkey wif, PublicKey object + @return {Buffer} 64 byte shared secret + */ + function getSharedSecret(public_key) { + public_key = PublicKey(public_key) + let KB = public_key.toUncompressed().toBuffer() + let KBP = Point.fromAffine( + secp256k1, + BigInteger.fromBuffer( KB.slice( 1,33 )), // x + BigInteger.fromBuffer( KB.slice( 33,65 )) // y + ) + let r = toBuffer() + let P = KBP.multiply(BigInteger.fromBuffer(r)) + let S = P.affineX.toBuffer({size: 32}) + // SHA512 used in ECIES + return hash.sha512(S) + } + + // /** ECIES TODO unit test + // @arg {string|Object} pubkey wif, PublicKey object + // @return {Buffer} 64 byte shared secret + // */ + // function getSharedSecret(public_key) { + // public_key = PublicKey(public_key).toUncompressed() + // var P = public_key.Q.multiply( d ); + // var S = P.affineX.toBuffer({size: 32}); + // // ECIES, adds an extra sha512 + // return hash.sha512(S); + // } + + /** + @arg {string} name - child key name. + @return {PrivateKey} + + @example activePrivate = masterPrivate.getChildKey('owner').getChildKey('active') + @example activePrivate.getChildKey('mycontract').getChildKey('myperm') + */ + function getChildKey(name) { + // console.error('WARNING: getChildKey untested against eosd'); // no eosd impl yet + const index = createHash('sha256').update(toBuffer()).update(name).digest() + return PrivateKey(index) + } + + function toHex() { + return toBuffer().toString('hex'); + } + + return { + d, + toWif, + toString, + toPublic, + toBuffer, + getSharedSecret, + getChildKey + } +} + +/** @private */ +function parseKey(privateStr) { + assert.equal(typeof privateStr, 'string', 'privateStr') + const match = privateStr.match(/^PVT_([A-Za-z0-9]+)_([A-Za-z0-9]+)$/) + + if(match === null) { + // legacy WIF - checksum includes the version + const versionKey = keyUtils.checkDecode(privateStr, 'sha256x2') + const version = versionKey.readUInt8(0); + assert.equal(0x80, version, `Expected version ${0x80}, instead got ${version}`) + const privateKey = PrivateKey.fromBuffer(versionKey.slice(1)) + const keyType = 'K1' + const format = 'WIF' + return {privateKey, format, keyType} + } + + assert(match.length === 3, 'Expecting private key like: PVT_K1_base58privateKey..') + const [, keyType, keyString] = match + assert.equal(keyType, 'K1', 'K1 private key expected') + const privateKey = PrivateKey.fromBuffer(keyUtils.checkDecode(keyString, keyType)) + return {privateKey, format: 'PVT', keyType} +} + +PrivateKey.fromHex = function(hex) { + return PrivateKey.fromBuffer(new Buffer(hex, 'hex')); +} + +PrivateKey.fromBuffer = function(buf) { + if (!Buffer.isBuffer(buf)) { + throw new Error("Expecting parameter to be a Buffer type"); + } + if(buf.length === 33 && buf[32] === 1) { + // remove compression flag + buf = buf.slice(0, -1) + } + if (32 !== buf.length) { + throw new Error(`Expecting 32 bytes, instead got ${buf.length}`); + } + return PrivateKey(BigInteger.fromBuffer(buf)); +} + +/** + @arg {string} seed - any length string. This is private, the same seed + produces the same private key every time. + + @return {PrivateKey} +*/ +PrivateKey.fromSeed = function(seed) { // generate_private_key + if (!(typeof seed === 'string')) { + throw new Error('seed must be of type string'); + } + return PrivateKey.fromBuffer(hash.sha256(seed)); +} + +/** + @arg {wif} key + @return {boolean} true if key is in the Wallet Import Format +*/ +PrivateKey.isWif = function(text) { + try { + assert(parseKey(text).format === 'WIF') + return true + } catch(e) { + return false + } +} + +/** + @arg {wif|Buffer|PrivateKey} key + @return {boolean} true if key is convertable to a private key object. +*/ +PrivateKey.isValid = function(key) { + try { + PrivateKey(key) + return true + } catch(e) { + return false + } +} + +/** @deprecated */ +PrivateKey.fromWif = function(str) { + console.log('PrivateKey.fromWif is deprecated, please use PrivateKey.fromString'); + return PrivateKey.fromString(str) +} + +/** + @throws {AssertError|Error} parsing key + @arg {string} privateStr Eosio or Wallet Import Format (wif) -- a secret +*/ +PrivateKey.fromString = function(privateStr) { + return parseKey(privateStr).privateKey +} + +/** + Create a new random private key. + + Call initialize() first to run some self-checking code and gather some CPU + entropy. + + @arg {number} [cpuEntropyBits = 0] - additional CPU entropy, this already + happens once so it should not be needed again. + + @return {Promise} - random private key +*/ +PrivateKey.randomKey = function(cpuEntropyBits = 0) { + return PrivateKey.initialize().then(() => ( + PrivateKey.fromBuffer(keyUtils.random32ByteBuffer({cpuEntropyBits})) + )) +} + +/** + @return {Promise} for testing, does not require initialize(). +*/ +PrivateKey.unsafeRandomKey = function() { + return Promise.resolve( + PrivateKey.fromBuffer(keyUtils.random32ByteBuffer({safe: false})) + ) +} + + +let initialized = false, unitTested = false + +/** + Run self-checking code and gather CPU entropy. + + Initialization happens once even if called multiple times. + + @return {Promise} +*/ +function initialize() { + if(initialized) { + return + } + + unitTest() + keyUtils.addEntropy(...keyUtils.cpuEntropy()) + assert(keyUtils.entropyCount() >= 128, 'insufficient entropy') + + initialized = true +} + +PrivateKey.initialize = promiseAsync(initialize) + +/** + Unit test basic private and public key functionality. + + @throws {AssertError} +*/ +function unitTest() { + const pvt = PrivateKey(hash.sha256('')) + + const pvtError = 'key comparison test failed on a known private key' + assert.equal(pvt.toWif(), '5KYZdUEo39z3FPrtuX2QbbwGnNP5zTd7yyr2SC1j299sBCnWjss', pvtError) + assert.equal(pvt.toString(), '5KYZdUEo39z3FPrtuX2QbbwGnNP5zTd7yyr2SC1j299sBCnWjss', pvtError) + // assert.equal(pvt.toString(), 'PVT_K1_2jH3nnhxhR3zPUcsKaWWZC9ZmZAnKm3GAnFD1xynGJE1Znuvjd', pvtError) + + const pub = pvt.toPublic() + const pubError = 'pubkey string comparison test failed on a known public key' + assert.equal(pub.toString(), 'EOS859gxfnXyUriMgUeThh1fWv3oqcpLFyHa3TfFYC4PK2HqhToVM', pubError) + // assert.equal(pub.toString(), 'PUB_K1_859gxfnXyUriMgUeThh1fWv3oqcpLFyHa3TfFYC4PK2Ht7beeX', pubError) + // assert.equal(pub.toStringLegacy(), 'EOS859gxfnXyUriMgUeThh1fWv3oqcpLFyHa3TfFYC4PK2HqhToVM', pubError) + + doesNotThrow(() => PrivateKey.fromString(pvt.toWif()), 'converting known wif from string') + doesNotThrow(() => PrivateKey.fromString(pvt.toString()), 'converting known pvt from string') + doesNotThrow(() => PublicKey.fromString(pub.toString()), 'converting known public key from string') + // doesNotThrow(() => PublicKey.fromString(pub.toStringLegacy()), 'converting known public key from string') + + unitTested = true +} + +/** @private */ +const doesNotThrow = (cb, msg) => { + try { + cb() + } catch(error) { + error.message = `${msg} ==> ${error.message}` + throw error + } +} diff --git a/src/api/eosjsEccSupport/key_public.js b/src/api/eosjsEccSupport/key_public.js new file mode 100644 index 00000000..c87e7bd0 --- /dev/null +++ b/src/api/eosjsEccSupport/key_public.js @@ -0,0 +1,172 @@ +const assert = require('assert'); +const ecurve = require('ecurve'); +const BigInteger = require('bigi'); +const secp256k1 = ecurve.getCurveByName('secp256k1'); + +const hash = require('./hash'); +const keyUtils = require('./key_utils'); + +var G = secp256k1.G +var n = secp256k1.n + +module.exports = PublicKey + +/** + @param {string|Buffer|PublicKey|ecurve.Point} public key + @param {string} [pubkey_prefix = 'EOS'] +*/ +function PublicKey(Q, pubkey_prefix = 'EOS') { + if(typeof Q === 'string') { + const publicKey = PublicKey.fromString(Q, pubkey_prefix) + assert(publicKey != null, 'Invalid public key') + return publicKey + } else if(Buffer.isBuffer(Q)) { + return PublicKey.fromBuffer(Q) + } else if(typeof Q === 'object' && Q.Q) { + return PublicKey(Q.Q) + } + + assert.equal(typeof Q, 'object', 'Invalid public key') + assert.equal(typeof Q.compressed, 'boolean', 'Invalid public key') + + function toBuffer(compressed = Q.compressed) { + return Q.getEncoded(compressed); + } + + let pubdata // cache + + // /** + // @todo secp224r1 + // @return {string} PUB_K1_base58pubkey.. + // */ + // function toString() { + // if(pubdata) { + // return pubdata + // } + // pubdata = `PUB_K1_` + keyUtils.checkEncode(toBuffer(), 'K1') + // return pubdata; + // } + + /** @todo rename to toStringLegacy + * @arg {string} [pubkey_prefix = 'EOS'] - public key prefix + */ + function toString(pubkey_prefix = 'EOS') { + return pubkey_prefix + keyUtils.checkEncode(toBuffer()) + } + + function toUncompressed() { + var buf = Q.getEncoded(false); + var point = ecurve.Point.decodeFrom(secp256k1, buf); + return PublicKey.fromPoint(point); + } + + /** @deprecated */ + function child( offset ) { + console.error('Deprecated warning: PublicKey.child') + + assert(Buffer.isBuffer(offset), "Buffer required: offset") + assert.equal(offset.length, 32, "offset length") + + offset = Buffer.concat([ toBuffer(), offset ]) + offset = hash.sha256( offset ) + + let c = BigInteger.fromBuffer( offset ) + + if (c.compareTo(n) >= 0) + throw new Error("Child offset went out of bounds, try again") + + + let cG = G.multiply(c) + let Qprime = Q.add(cG) + + if( secp256k1.isInfinity(Qprime) ) + throw new Error("Child offset derived to an invalid key, try again") + + return PublicKey.fromPoint(Qprime) + } + + function toHex() { + return toBuffer().toString('hex'); + } + + return { + Q, + toString, + // toStringLegacy, + toUncompressed, + toBuffer, + child, + toHex + } +} + +/** + @param {string|Buffer|PublicKey|ecurve.Point} pubkey - public key + @param {string} [pubkey_prefix = 'EOS'] +*/ +PublicKey.isValid = function(pubkey, pubkey_prefix = 'EOS') { + try { + PublicKey(pubkey, pubkey_prefix) + return true + } catch(e) { + return false + } +} + +PublicKey.fromBinary = function(bin) { + return PublicKey.fromBuffer(new Buffer(bin, 'binary')); +} + +PublicKey.fromBuffer = function(buffer) { + return PublicKey(ecurve.Point.decodeFrom(secp256k1, buffer)); +} + +PublicKey.fromPoint = function(point) { + return PublicKey(point); +} + +/** + @arg {string} public_key - like PUB_K1_base58pubkey.. + @arg {string} [pubkey_prefix = 'EOS'] - public key prefix + @return PublicKey or `null` (invalid) +*/ +PublicKey.fromString = function(public_key, pubkey_prefix = 'EOS') { + try { + return PublicKey.fromStringOrThrow(public_key, pubkey_prefix) + } catch (e) { + return null; + } +} + +/** + @arg {string} public_key - like PUB_K1_base58pubkey.. + @arg {string} [pubkey_prefix = 'EOS'] - public key prefix + + @throws {Error} if public key is invalid + + @return PublicKey +*/ +PublicKey.fromStringOrThrow = function(public_key, pubkey_prefix = 'EOS') { + assert.equal(typeof public_key, 'string', 'public_key') + const match = public_key.match(/^PUB_([A-Za-z0-9]+)_([A-Za-z0-9]+)$/) + if(match === null) { + // legacy + var prefix_match = new RegExp("^" + pubkey_prefix); + if(prefix_match.test(public_key)) { + public_key = public_key.substring(pubkey_prefix.length) + } + return PublicKey.fromBuffer(keyUtils.checkDecode(public_key)) + } + assert(match.length === 3, 'Expecting public key like: PUB_K1_base58pubkey..') + const [, keyType, keyString] = match + assert.equal(keyType, 'K1', 'K1 private key expected') + return PublicKey.fromBuffer(keyUtils.checkDecode(keyString, keyType)) +} + +PublicKey.fromHex = function(hex) { + return PublicKey.fromBuffer(new Buffer(hex, 'hex')); +} + +PublicKey.fromStringHex = function(hex) { + return PublicKey.fromString(new Buffer(hex, 'hex')); +} diff --git a/src/api/eosjsEccSupport/key_utils.js b/src/api/eosjsEccSupport/key_utils.js new file mode 100644 index 00000000..82ac5ff9 --- /dev/null +++ b/src/api/eosjsEccSupport/key_utils.js @@ -0,0 +1,225 @@ +const base58 = require('bs58') +const assert = require('assert') +const randomBytes = require('randombytes'); + +const hash = require('./hash'); + +module.exports = { + random32ByteBuffer, + addEntropy, + cpuEntropy, + entropyCount: () => entropyCount, + checkDecode, + checkEncode +} + +let entropyPos = 0, entropyCount = 0 + +const externalEntropyArray = randomBytes(101) + + +/** + Additional forms of entropy are used. A week random number generator can run out of entropy. This should ensure even the worst random number implementation will be reasonably safe. + + @arg {number} [cpuEntropyBits = 0] generate entropy on the fly. This is + not required, entropy can be added in advanced via addEntropy or initialize(). + + @arg {boolean} [safe = true] false for testing, otherwise this will be + true to ensure initialize() was called. + + @return a random buffer obtained from the secure random number generator. Additional entropy is used. +*/ +function random32ByteBuffer({cpuEntropyBits = 0, safe = true} = {}) { + assert.equal(typeof cpuEntropyBits, 'number', 'cpuEntropyBits') + assert.equal(typeof safe, 'boolean', 'boolean') + + if(safe) { + assert(entropyCount >= 128, 'Call initialize() to add entropy') + } + + // if(entropyCount > 0) { + // console.log(`Additional private key entropy: ${entropyCount} events`) + // } + + const hash_array = [] + hash_array.push(randomBytes(32)) + hash_array.push(Buffer.from(cpuEntropy(cpuEntropyBits))) + hash_array.push(externalEntropyArray) + hash_array.push(browserEntropy()) + return hash.sha256(Buffer.concat(hash_array)) +} + +/** + Adds entropy. This may be called many times while the amount of data saved + is accumulatively reduced to 101 integers. Data is retained in RAM for the + life of this module. + + @example React + componentDidMount() { + this.refs.MyComponent.addEventListener("mousemove", this.onEntropyEvent, {capture: false, passive: true}) + } + componentWillUnmount() { + this.refs.MyComponent.removeEventListener("mousemove", this.onEntropyEvent); + } + onEntropyEvent = (e) => { + if(e.type === 'mousemove') + key_utils.addEntropy(e.pageX, e.pageY, e.screenX, e.screenY) + else + console.log('onEntropyEvent Unknown', e.type, e) + } + +*/ +function addEntropy(...ints) { + assert.equal(externalEntropyArray.length, 101, 'externalEntropyArray') + + entropyCount += ints.length + for(const i of ints) { + const pos = entropyPos++ % 101 + const i2 = externalEntropyArray[pos] += i + if(i2 > 9007199254740991) + externalEntropyArray[pos] = 0 + } +} + +/** + This runs in just under 1 second and ensures a minimum of cpuEntropyBits + bits of entropy are gathered. + + Based on more-entropy. @see https://github.com/keybase/more-entropy/blob/master/src/generator.iced + + @arg {number} [cpuEntropyBits = 128] + @return {array} counts gathered by measuring variations in the CPU speed during floating point operations. +*/ +function cpuEntropy(cpuEntropyBits = 128) { + let collected = [] + let lastCount = null + let lowEntropySamples = 0 + while(collected.length < cpuEntropyBits) { + const count = floatingPointCount() + if(lastCount != null) { + const delta = count - lastCount + if(Math.abs(delta) < 1) { + lowEntropySamples++ + continue + } + // how many bits of entropy were in this sample + const bits = Math.floor(log2(Math.abs(delta)) + 1) + if(bits < 4) { + if(bits < 2) { + lowEntropySamples++ + } + continue + } + collected.push(delta) + } + lastCount = count + } + if(lowEntropySamples > 10) { + const pct = Number(lowEntropySamples / cpuEntropyBits * 100).toFixed(2) + // Is this algorithm getting inefficient? + console.warn(`WARN: ${pct}% low CPU entropy re-sampled`); + } + return collected +} + +/** + @private + Count while performing floating point operations during a fixed time + (7 ms for example). Using a fixed time makes this algorithm + predictable in runtime. +*/ +function floatingPointCount() { + const workMinMs = 7 + const d = Date.now() + let i = 0, x = 0 + while (Date.now() < d + workMinMs + 1) { + x = Math.sin(Math.sqrt(Math.log(++i + x))) + } + return i +} + +const log2 = x => Math.log(x) / Math.LN2 + +/** + @private + Attempt to gather and hash information from the browser's window, history, and supported mime types. For non-browser environments this simply includes secure random data. In any event, the information is re-hashed in a loop for 25 milliseconds seconds. + + @return {Buffer} 32 bytes +*/ +function browserEntropy() { + let entropyStr = Array(randomBytes(101)).join() + try { + entropyStr += (new Date()).toString() + " " + window.screen.height + " " + window.screen.width + " " + + window.screen.colorDepth + " " + " " + window.screen.availHeight + " " + window.screen.availWidth + " " + + window.screen.pixelDepth + navigator.language + " " + window.location + " " + window.history.length; + + for (let i = 0, mimeType; i < navigator.mimeTypes.length; i++) { + mimeType = navigator.mimeTypes[i]; + entropyStr += mimeType.description + " " + mimeType.type + " " + mimeType.suffixes + " "; + } + } catch(error) { + //nodejs:ReferenceError: window is not defined + entropyStr += hash.sha256((new Date()).toString()) + } + + const b = new Buffer(entropyStr); + entropyStr += b.toString('binary') + " " + (new Date()).toString(); + + let entropy = entropyStr; + const start_t = Date.now(); + while (Date.now() - start_t < 25) + entropy = hash.sha256(entropy); + + return entropy; +} + +/** + @arg {Buffer} keyBuffer data + @arg {string} keyType = sha256x2, K1, etc + @return {string} checksum encoded base58 string +*/ +function checkEncode(keyBuffer, keyType = null) { + assert(Buffer.isBuffer(keyBuffer), 'expecting keyBuffer') + if(keyType === 'sha256x2') { // legacy + const checksum = hash.sha256(hash.sha256(keyBuffer)).slice(0, 4) + return base58.encode(Buffer.concat([keyBuffer, checksum])) + } else { + const check = [keyBuffer] + if(keyType) { + check.push(Buffer.from(keyType)) + } + const checksum = hash.ripemd160(Buffer.concat(check)).slice(0, 4) + return base58.encode(Buffer.concat([keyBuffer, checksum])) + } +} + +/** + @arg {Buffer} keyString data + @arg {string} keyType = sha256x2, K1, etc + @return {string} checksum encoded base58 string +*/ +function checkDecode(keyString, keyType = null) { + assert(keyString != null, 'private key expected') + const buffer = new Buffer(base58.decode(keyString)) + const checksum = buffer.slice(-4) + const key = buffer.slice(0, -4) + + let newCheck + if(keyType === 'sha256x2') { // legacy + newCheck = hash.sha256(hash.sha256(key)).slice(0, 4) // WIF (legacy) + } else { + const check = [key] + if(keyType) { + check.push(Buffer.from(keyType)) + } + newCheck = hash.ripemd160(Buffer.concat(check)).slice(0, 4) //PVT + } + + if (checksum.toString('hex') !== newCheck.toString('hex')) { + throw new Error('Invalid checksum, ' + + `${checksum.toString('hex')} != ${newCheck.toString('hex')}` + ) + } + + return key +} diff --git a/src/api/eosjsEccSupport/promise-async.js b/src/api/eosjsEccSupport/promise-async.js new file mode 100644 index 00000000..cd7b622e --- /dev/null +++ b/src/api/eosjsEccSupport/promise-async.js @@ -0,0 +1,23 @@ + +/** + Convert a synchronous function into a asynchronous one (via setTimeout) + wrapping it in a promise. This does not expect the function to have a + callback paramter. + + @arg {function} func - non-callback function + + @example promiseAsync(myfunction) +*/ +module.exports = func => ( + (...args) => ( + new Promise((resolve, reject) => { + setTimeout(() => { + try { + resolve(func(...args)) + } catch(err) { + reject(err) + } + }) + }) + ) +) diff --git a/src/api/eosjsEccSupport/signature.js b/src/api/eosjsEccSupport/signature.js new file mode 100644 index 00000000..50456a2c --- /dev/null +++ b/src/api/eosjsEccSupport/signature.js @@ -0,0 +1,80 @@ +const ecdsa = require('./ecdsa'); +const curve = require('ecurve').getCurveByName('secp256k1'); +const assert = require('assert'); +const BigInteger = require('bigi'); +const keyUtils = require('./key_utils'); +const PrivateKey = require('./key_private'); + +module.exports = Signature + +function Signature(r, s, i) { + assert.equal(r != null, true, 'Missing parameter'); + assert.equal(s != null, true, 'Missing parameter'); + assert.equal(i != null, true, 'Missing parameter'); + + let signatureCache + + function toBuffer() { + var buf; + buf = new Buffer(65); + buf.writeUInt8(i, 0); + r.toBuffer(32).copy(buf, 1); + s.toBuffer(32).copy(buf, 33); + return buf; + }; + + function toString() { + if(signatureCache) { + return signatureCache + } + signatureCache = 'SIG_K1_' + keyUtils.checkEncode(toBuffer(), 'K1') + return signatureCache + } + + return { + r, s, i, + toString, + toBuffer, + } +} + +/** + Sign a buffer of exactally 32 bytes in size (sha256(text)) + + @arg {string|Buffer} dataSha256 - 32 byte buffer or string + @arg {wif|PrivateKey} privateKey + @arg {String} [encoding = 'hex'] - dataSha256 encoding (if string) + + @return {Signature} +*/ +Signature.signHash = function(dataSha256, privateKey, encoding = 'hex') { + if(typeof dataSha256 === 'string') { + dataSha256 = Buffer.from(dataSha256, encoding) + } + if( dataSha256.length !== 32 || ! Buffer.isBuffer(dataSha256) ) + throw new Error("dataSha256: 32 byte buffer requred") + + privateKey = PrivateKey(privateKey) + assert(privateKey, 'privateKey required') + + var der, e, ecsignature, i, lenR, lenS, nonce; + i = null; + nonce = 0; + e = BigInteger.fromBuffer(dataSha256); + while (true) { + ecsignature = ecdsa.sign(curve, dataSha256, privateKey.d, nonce++); + der = ecsignature.toDER(); + lenR = der[3]; + lenS = der[5 + lenR]; + if (lenR === 32 && lenS === 32) { + i = ecdsa.calcPubKeyRecoveryParam(curve, e, ecsignature, privateKey.toPublic().Q); + i += 4; // compressed + i += 27; // compact // 24 or 27 :( forcing odd-y 2nd key candidate) + break; + } + if (nonce % 10 === 0) { + console.log("WARN: " + nonce + " attempts to find canonical signature"); + } + } + return Signature(ecsignature.r, ecsignature.s, i); +}; diff --git a/src/api/index.js b/src/api/index.js index 37078b0f..f84cc330 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -1,5 +1,5 @@ import { Router, json } from 'express' -import ecc from 'eosjs-ecc' +import { eccSignHash } from './eosjsEccReplacement' import { ec as EC } from 'elliptic' import {Serialize, Numeric} from 'eosjs' import { JsSignatureProvider } from 'eosjs/dist/eosjs-jssig' @@ -64,7 +64,7 @@ export default () => { console.info('eosioPubkey:', users[name].eosioPubkey.join(',')) const sigData = Buffer.concat( [ namePairBuffer.asUint8Array(), users[name].eosioPubkey ] ) const sigDigest = Buffer.from(ec.hash().update(sigData).digest()) - const challenge = ecc.signHash(sigDigest, private_key_wif).toString() + const challenge = eccSignHash(sigDigest, private_key_wif).toString() console.info('challenge:', challenge) console.info('\\\\\\\\\\\\-----------') const userKey = Numeric.publicKeyToString({ diff --git a/yarn.lock b/yarn.lock index e7e87727..43df1b34 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1881,6 +1881,16 @@ assert@^1.1.1: object-assign "^4.1.1" util "0.10.3" +assert@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-2.0.0.tgz#95fc1c616d48713510680f2eaf2d10dd22e02d32" + integrity sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A== + dependencies: + es6-object-assign "^1.1.0" + is-nan "^1.2.1" + object-is "^1.0.1" + util "^0.12.0" + assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" @@ -3016,7 +3026,7 @@ create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.1.3, create-hash@^1.2.0: ripemd160 "^2.0.1" sha.js "^2.4.0" -create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4, create-hmac@^1.1.6: +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4, create-hmac@^1.1.6, create-hmac@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== @@ -3389,7 +3399,7 @@ default-gateway@^4.2.0: execa "^1.0.0" ip-regex "^2.1.0" -define-properties@^1.1.2, define-properties@^1.1.3: +define-properties@^1.1.1, define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== @@ -3655,7 +3665,7 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" -ecurve@^1.0.5: +ecurve@^1.0.5, ecurve@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/ecurve/-/ecurve-1.0.6.tgz#dfdabbb7149f8d8b78816be5a7d5b83fcf6de797" integrity sha512-/BzEjNfiSuB7jIWKcS/z8FK9jNjmEWvUV2YZ4RLSmcDtP7Lq0m6FvDuSnJpBlDpGRpfRQeTLGLBI8H+kEv0r+w== @@ -3821,6 +3831,11 @@ es-to-primitive@^1.1.1, es-to-primitive@^1.2.0: is-date-object "^1.0.1" is-symbol "^1.0.2" +es6-object-assign@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" + integrity sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw= + es6-promise@^4.2.4: version "4.2.8" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" @@ -5481,6 +5496,11 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== +is-generator-function@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.7.tgz#d2132e529bb0000a7f80794d4bdf5cd5e5813522" + integrity sha512-YZc5EwyO4f2kWCax7oegfuSr9mFz1ZvieNYBEjmukLxgXfBUbxAWGVF7GZf0zidYtoBl3WvC07YK0wT76a+Rtw== + is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -5495,6 +5515,13 @@ is-glob@^4.0.0: dependencies: is-extglob "^2.1.1" +is-nan@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.2.1.tgz#9faf65b6fb6db24b7f5c0628475ea71f988401e2" + integrity sha1-n69ltvttskt/XAYoR16nH5iEAeI= + dependencies: + define-properties "^1.1.1" + is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -8544,7 +8571,7 @@ raf@3.4.1: dependencies: performance-now "^2.1.0" -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== @@ -10472,6 +10499,17 @@ util@^0.11.0: dependencies: inherits "2.0.3" +util@^0.12.0: + version "0.12.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.1.tgz#f908e7b633e7396c764e694dd14e716256ce8ade" + integrity sha512-MREAtYOp+GTt9/+kwf00IYoHZyjM8VU4aVrkzUlejyqaIjd2GztVl5V9hGXKlvBKE3gENn/FMfHE5v6hElXGcQ== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + object.entries "^1.1.0" + safe-buffer "^5.1.2" + utila@^0.4.0, utila@~0.4: version "0.4.0" resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" From 9d2c81ce5a0bbb3626c29bdd694039a59502a6ad Mon Sep 17 00:00:00 2001 From: Mike Manfredi Date: Wed, 13 Nov 2019 14:23:22 -0500 Subject: [PATCH 37/76] NOT working; trying to get the last calls out; much harder... --- src/api/eosjsEccSupport/signature.js | 39 +++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/src/api/eosjsEccSupport/signature.js b/src/api/eosjsEccSupport/signature.js index 50456a2c..d7b15145 100644 --- a/src/api/eosjsEccSupport/signature.js +++ b/src/api/eosjsEccSupport/signature.js @@ -4,6 +4,13 @@ const assert = require('assert'); const BigInteger = require('bigi'); const keyUtils = require('./key_utils'); const PrivateKey = require('./key_private'); +const { + PrivateKey: EllipticPrivateKey, + PublicKey: EllipticPublicKey, + Signature: EllipticSignature +} = require('eosjs/dist/eosjs-jssig') +import { JsSignatureProvider } from 'eosjs/dist/eosjs-jssig' +import { ec as ellipticEc } from 'elliptic' module.exports = Signature @@ -54,20 +61,50 @@ Signature.signHash = function(dataSha256, privateKey, encoding = 'hex') { if( dataSha256.length !== 32 || ! Buffer.isBuffer(dataSha256) ) throw new Error("dataSha256: 32 byte buffer requred") + const ellipticKPriv = EllipticPrivateKey.fromString(privateKey).toElliptic() + const KPrivAsString = EllipticPrivateKey.fromString(privateKey).toString() + console.info('KPrivAsString:', KPrivAsString) + // console.info('KPrivAsString.toString:', KPrivAsString.toString()) + // console.info('ellipticKPriv:', ellipticKPriv) + // console.info('ellipticKPriv:', ellipticKPriv.priv) + const ellipticKPrivAsBuffer = ellipticKPriv.priv.toBuffer() + console.info('ellipticKPriv.toBuffer:', ellipticKPrivAsBuffer) + const ellipticKPrivDAsBuffer = ellipticKPriv.priv.toBuffer() + // console.info('ellipticKPriv:', Buffer.from(ellipticKPriv)) privateKey = PrivateKey(privateKey) + // console.info('privateKey:', privateKey) + // console.info('privateKey.d:', privateKey.d) + console.info('privateKey.d.toBuffer :', ellipticKPrivDAsBuffer) assert(privateKey, 'privateKey required') + // console.info('privateKey as it goes into JsSignatureProvider', privateKey) + const publicKey = new JsSignatureProvider([KPrivAsString]).availableKeys[0] + console.info('pubicKey:', publicKey) + const ellipticPrivateKeyAsBigInteger = BigInteger.fromBuffer(ellipticKPrivDAsBuffer) + // console.info('\n\nellipticPrivateKeyAsBigInteger:', ellipticPrivateKeyAsBigInteger) + // console.info('privateKey.d :', privateKey.d) + // console.info('ecc.privKey.Q:') + // console.info(privateKey.toPublic().Q) + // console.info('ellipticPubKey:') + // console.info(EllipticPublicKey.fromString(publicKey).toElliptic()) + + const ec = new ellipticEc('secp256k1') var der, e, ecsignature, i, lenR, lenS, nonce; i = null; nonce = 0; e = BigInteger.fromBuffer(dataSha256); while (true) { - ecsignature = ecdsa.sign(curve, dataSha256, privateKey.d, nonce++); + ecsignature = ecdsa.sign(curve, dataSha256, ellipticPrivateKeyAsBigInteger, nonce++); der = ecsignature.toDER(); lenR = der[3]; lenS = der[5 + lenR]; if (lenR === 32 && lenS === 32) { i = ecdsa.calcPubKeyRecoveryParam(curve, e, ecsignature, privateKey.toPublic().Q); + console.info('ecsignature:', ecsignature) + console.info('ellipticSig.constructor:', EllipticSignature.fromBuffer(ecsignature.toDER())) + const iAlt = ec.getKeyRecoveryParam(dataSha256, Buffer.from(ecsignature.toDER()), publicKey) + console.info('i, iAlt:') + console.info(i, iAlt) i += 4; // compressed i += 27; // compact // 24 or 27 :( forcing odd-y 2nd key candidate) break; From 21fff2756791304e86098d08928bcb151863240f Mon Sep 17 00:00:00 2001 From: Mike Manfredi Date: Thu, 14 Nov 2019 09:11:25 -0500 Subject: [PATCH 38/76] restored to WORKING state --- src/api/eosjsEccSupport/signature.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/api/eosjsEccSupport/signature.js b/src/api/eosjsEccSupport/signature.js index d7b15145..d090ab77 100644 --- a/src/api/eosjsEccSupport/signature.js +++ b/src/api/eosjsEccSupport/signature.js @@ -101,10 +101,10 @@ Signature.signHash = function(dataSha256, privateKey, encoding = 'hex') { if (lenR === 32 && lenS === 32) { i = ecdsa.calcPubKeyRecoveryParam(curve, e, ecsignature, privateKey.toPublic().Q); console.info('ecsignature:', ecsignature) - console.info('ellipticSig.constructor:', EllipticSignature.fromBuffer(ecsignature.toDER())) - const iAlt = ec.getKeyRecoveryParam(dataSha256, Buffer.from(ecsignature.toDER()), publicKey) - console.info('i, iAlt:') - console.info(i, iAlt) + // console.info('ellipticSig.constructor:', EllipticSignature.fromBuffer(ecsignature.toDER())) + // const iAlt = ec.getKeyRecoveryParam(dataSha256, Buffer.from(ecsignature.toDER()), publicKey) + // console.info('i, iAlt:') + // console.info(i, iAlt) i += 4; // compressed i += 27; // compact // 24 or 27 :( forcing odd-y 2nd key candidate) break; From c71305071d352d3abff23c5d32d776a8cb91f81c Mon Sep 17 00:00:00 2001 From: sakelle Date: Sun, 17 Nov 2019 19:40:30 -0800 Subject: [PATCH 39/76] adding the documentation directory outline --- docs/00_introduction.md | 15 +++++++++++++++ docs/01_technical-overview.md | 0 docs/02_installation.md | 0 docs/component-overview/00_index.md | 0 docs/component-overview/01_app.md | 0 docs/component-overview/100_service-worker.md | 0 docs/component-overview/101_setup-proxy.md | 0 .../component-overview/landing/00_landing-page.md | 0 .../landing/01_popular-locations.md | 0 .../navigation/00_navigation-bar.md | 0 .../component-overview/navigation/01_user-info.md | 0 .../navigation/02_user-dropdown.md | 0 .../notification/notification-bar.md | 0 .../component-overview/results/00_results-page.md | 0 .../results/01_results-properties.md | 0 .../results/property/property.md | 0 docs/component-overview/search/search-bar.md | 0 docs/component-overview/search/search-box.md | 0 18 files changed, 15 insertions(+) create mode 100644 docs/00_introduction.md create mode 100644 docs/01_technical-overview.md create mode 100644 docs/02_installation.md create mode 100644 docs/component-overview/00_index.md create mode 100644 docs/component-overview/01_app.md create mode 100644 docs/component-overview/100_service-worker.md create mode 100644 docs/component-overview/101_setup-proxy.md create mode 100644 docs/component-overview/landing/00_landing-page.md create mode 100644 docs/component-overview/landing/01_popular-locations.md create mode 100644 docs/component-overview/navigation/00_navigation-bar.md create mode 100644 docs/component-overview/navigation/01_user-info.md create mode 100644 docs/component-overview/navigation/02_user-dropdown.md create mode 100644 docs/component-overview/notification/notification-bar.md create mode 100644 docs/component-overview/results/00_results-page.md create mode 100644 docs/component-overview/results/01_results-properties.md create mode 100644 docs/component-overview/results/property/property.md create mode 100644 docs/component-overview/search/search-bar.md create mode 100644 docs/component-overview/search/search-box.md diff --git a/docs/00_introduction.md b/docs/00_introduction.md new file mode 100644 index 00000000..b82becf6 --- /dev/null +++ b/docs/00_introduction.md @@ -0,0 +1,15 @@ +`Tropical Stay` is a [**React**](https://reactjs.org/) application which provides examples for various **EOSIO** functionality to include: + +* Using the [`ual-reactjs-renderer`](https://github.com/EOSIO/ual-reactjs-renderer) in an application. +* Using various community built authenticators with `ual-reactjs-renderer`. +* Maintaining the user state and signing transactions for a user with `ual-reactjs-renderer`. +* Using `WebAuthn` to sign higher risk transactions when authenticator based authentication is insufficient. + + +The documentation for `Tropical Stay` is structured in the following way: + +* [Installation](02_installation.md) explains how to install dependencies and run the application for local development, or alternatively, use [`Gitpod`](https://www.gitpod.io/). +* [Technical Overview](01_technical-overview.md) provides a high-level overview of the `Tropical Stay` app, the various components it interacts with, and how these interactions are carried out. +* [Component Overview](component-overview/) provides information related to each of the specific **React** components present in `Tropical Stay` and how these components interact with one another. +* [FAQ](faq/) provides answers to frequently asked questions surrounding the `Tropical Stay` app. +* [Troubleshooting](troubleshooting/) provides possible exceptions encountered when using `Tropical Stay` and their most common causes. \ No newline at end of file diff --git a/docs/01_technical-overview.md b/docs/01_technical-overview.md new file mode 100644 index 00000000..e69de29b diff --git a/docs/02_installation.md b/docs/02_installation.md new file mode 100644 index 00000000..e69de29b diff --git a/docs/component-overview/00_index.md b/docs/component-overview/00_index.md new file mode 100644 index 00000000..e69de29b diff --git a/docs/component-overview/01_app.md b/docs/component-overview/01_app.md new file mode 100644 index 00000000..e69de29b diff --git a/docs/component-overview/100_service-worker.md b/docs/component-overview/100_service-worker.md new file mode 100644 index 00000000..e69de29b diff --git a/docs/component-overview/101_setup-proxy.md b/docs/component-overview/101_setup-proxy.md new file mode 100644 index 00000000..e69de29b diff --git a/docs/component-overview/landing/00_landing-page.md b/docs/component-overview/landing/00_landing-page.md new file mode 100644 index 00000000..e69de29b diff --git a/docs/component-overview/landing/01_popular-locations.md b/docs/component-overview/landing/01_popular-locations.md new file mode 100644 index 00000000..e69de29b diff --git a/docs/component-overview/navigation/00_navigation-bar.md b/docs/component-overview/navigation/00_navigation-bar.md new file mode 100644 index 00000000..e69de29b diff --git a/docs/component-overview/navigation/01_user-info.md b/docs/component-overview/navigation/01_user-info.md new file mode 100644 index 00000000..e69de29b diff --git a/docs/component-overview/navigation/02_user-dropdown.md b/docs/component-overview/navigation/02_user-dropdown.md new file mode 100644 index 00000000..e69de29b diff --git a/docs/component-overview/notification/notification-bar.md b/docs/component-overview/notification/notification-bar.md new file mode 100644 index 00000000..e69de29b diff --git a/docs/component-overview/results/00_results-page.md b/docs/component-overview/results/00_results-page.md new file mode 100644 index 00000000..e69de29b diff --git a/docs/component-overview/results/01_results-properties.md b/docs/component-overview/results/01_results-properties.md new file mode 100644 index 00000000..e69de29b diff --git a/docs/component-overview/results/property/property.md b/docs/component-overview/results/property/property.md new file mode 100644 index 00000000..e69de29b diff --git a/docs/component-overview/search/search-bar.md b/docs/component-overview/search/search-bar.md new file mode 100644 index 00000000..e69de29b diff --git a/docs/component-overview/search/search-box.md b/docs/component-overview/search/search-box.md new file mode 100644 index 00000000..e69de29b From 526d3df99288f08ec39d43cd2b7e2fff66bbd917 Mon Sep 17 00:00:00 2001 From: Bradley Hart Date: Wed, 18 Dec 2019 16:42:20 -0500 Subject: [PATCH 40/76] r1 key/signature generation for webauthn --- package.json | 2 +- src/api/index.js | 13 ++++++++----- yarn.lock | 8 ++++---- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index d0ddc1b3..03ccbe06 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "create-hmac": "^1.1.7", "ecurve": "^1.0.6", "elliptic": "^6.5.1", - "eosjs": "20.0.3-cd2fb09.0", + "eosjs": "20.0.4-e2c667e.0", "eosjs-ecc": "4.0.4", "focus-visible": "4.1.5", "prop-types": "15.7.2", diff --git a/src/api/index.js b/src/api/index.js index f84cc330..67ff6d57 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -2,13 +2,14 @@ import { Router, json } from 'express' import { eccSignHash } from './eosjsEccReplacement' import { ec as EC } from 'elliptic' import {Serialize, Numeric} from 'eosjs' -import { JsSignatureProvider } from 'eosjs/dist/eosjs-jssig' +import {JsSignatureProvider, PrivateKey, Signature} from 'eosjs/dist/eosjs-jssig' +import { KeyType } from "eosjs/dist/eosjs-numeric"; import base64url from 'base64url' import cbor from 'cbor' import util from 'util'; export default () => { - const ec = new EC('secp256k1') + const ec = new EC('p256') const private_key_wif = process.env.API_SERVER_PRIVATE_KEY const api = Router() @@ -61,17 +62,19 @@ export default () => { namePairBuffer.pushName(name) namePairBuffer.pushName(propertyName) console.info('////////////-----------') - console.info('eosioPubkey:', users[name].eosioPubkey.join(',')) + //console.info('eosioPubkey:', users[name].eosioPubkey.join(',')) const sigData = Buffer.concat( [ namePairBuffer.asUint8Array(), users[name].eosioPubkey ] ) const sigDigest = Buffer.from(ec.hash().update(sigData).digest()) - const challenge = eccSignHash(sigDigest, private_key_wif).toString() + //const challenge = eccSignHash(sigDigest, private_key_wif).toString() + const eosioChallenge = ec.sign(sigDigest, PrivateKey.fromString(private_key_wif).toElliptic(ec)) + const challenge = Signature.fromElliptic(eosioChallenge, KeyType.r1).toString() console.info('challenge:', challenge) console.info('\\\\\\\\\\\\-----------') const userKey = Numeric.publicKeyToString({ type: Numeric.KeyType.wa, data: users[name].eosioPubkey.slice(1), }) - const sigProvider = new JsSignatureProvider([private_key_wif]) + const sigProvider = new JsSignatureProvider([private_key_wif], KeyType.r1, ec) const serverKey = sigProvider.getAvailableKeys().then((pubKeys) => { const serverKey = pubKeys[0] const credentialIDStr = base64url.encode(users[name].credentialID) diff --git a/yarn.lock b/yarn.lock index 43df1b34..57f62874 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3784,10 +3784,10 @@ eosjs@20.0.0, eosjs@^20.0.2-a53eecb.0: eosjs-ecc "4.0.4" text-encoding "0.7.0" -eosjs@20.0.3-cd2fb09.0: - version "20.0.3-cd2fb09.0" - resolved "https://registry.yarnpkg.com/eosjs/-/eosjs-20.0.3-cd2fb09.0.tgz#d6281fe6cd849ed4531e3029a2f55fc7a907817d" - integrity sha512-FuMr/4THF3nIXXOBf5EniGCipQta7amdXv4efpGTXJZRR6vJ3QJAXu8kaSy1mmyKbUAPo56rudrjggTNY35OJQ== +eosjs@^20.0.4-e2c667e.0: + version "20.0.4-e2c667e.0" + resolved "https://registry.yarnpkg.com/eosjs/-/eosjs-20.0.4-e2c667e.0.tgz#8815a8d2ae476aac4dc3502d976c0b20cb931c3a" + integrity sha512-pL2fudVFvYv24VIX7QIWjFKFcXV+xzKrzmyyCr5UFpaDwKdxhg/Q/jtq6BSDraEapyctNnVS1sl6XLBTXr85KQ== dependencies: babel-runtime "6.26.0" text-encoding "0.7.0" From e94f35b28cb7578424c4dc8bdb827e7209ec6360 Mon Sep 17 00:00:00 2001 From: Bradley Hart Date: Fri, 20 Dec 2019 13:34:29 -0500 Subject: [PATCH 41/76] eosio v2.0 installation and working api code, fails on nodeos --- eosio/Dockerfile | 26 +++++++++++++++----------- eosio/scripts/deploy_contracts.sh | 10 ++++++++++ src/api/index.js | 30 +++++++++++++++++++++++------- 3 files changed, 48 insertions(+), 18 deletions(-) diff --git a/eosio/Dockerfile b/eosio/Dockerfile index bd8a2275..4f6adb8f 100644 --- a/eosio/Dockerfile +++ b/eosio/Dockerfile @@ -2,21 +2,25 @@ FROM ubuntu:18.04 RUN echo "INSTALLING EOSIO AND CDT" RUN apt-get update && apt-get install -y wget sudo curl -RUN wget https://github.com/EOSIO/eosio.cdt/releases/download/v1.6.1/eosio.cdt_1.6.1-1_amd64.deb -RUN apt-get update && sudo apt install -y ./eosio.cdt_1.6.1-1_amd64.deb -#RUN wget https://github.com/EOSIO/eos/releases/download/v1.8.3/eosio_1.8.3-1-ubuntu-18.04_amd64.deb -#RUN apt-get update && sudo apt install -y ./eosio_1.8.3-1-ubuntu-18.04_amd64.deb -COPY ./eosio_1.9.0-develop_amd64.deb ./ -RUN apt-get update && sudo apt install -y ./eosio_1.9.0-develop_amd64.deb +RUN wget https://github.com/EOSIO/eosio.cdt/releases/download/v1.6.3/eosio.cdt_1.6.3-1-ubuntu-18.04_amd64.deb +RUN apt-get update && sudo apt install -y ./eosio.cdt_1.6.3-1-ubuntu-18.04_amd64.deb +RUN wget https://github.com/EOSIO/eos/releases/download/v2.0.0-rc2/eosio_2.0.0-rc2-ubuntu-18.04_amd64.deb +RUN apt-get update && sudo apt install -y ./eosio_2.0.0-rc2-ubuntu-18.04_amd64.deb RUN echo "INSTALLING CONTRACTS" RUN mkdir -p "/opt/eosio/bin/contracts" -RUN echo "INSTALLING EOSIO.CONTRACTS" -RUN wget https://github.com/EOSIO/eosio.contracts/archive/v1.7.0.tar.gz +RUN echo "INSTALLING EOSIO.CONTRACTS v1.8.3" +RUN wget https://github.com/EOSIO/eosio.contracts/archive/v1.8.3.tar.gz +RUN mkdir -p /eosio.contracts-1.8.3 +RUN tar xvzf ./v1.8.3.tar.gz -C /eosio.contracts-1.8.3 +RUN mv /eosio.contracts-1.8.3/eosio.contracts-1.8.3 /opt/eosio/bin/contracts + +RUN echo "INSTALLING EOSIO.CONTRACTS v1.9.0-rc4" +RUN wget https://github.com/EOSIO/eosio.contracts/archive/v1.9.0-rc4.tar.gz RUN mkdir -p /eosio.contracts -RUN tar xvzf ./v1.7.0.tar.gz -C /eosio.contracts -RUN mv /eosio.contracts/eosio.contracts-1.7.0 /opt/eosio/bin/contracts -RUN mv /opt/eosio/bin/contracts/eosio.contracts-1.7.0 /opt/eosio/bin/contracts/eosio.contracts +RUN tar xvzf ./v1.9.0-rc4.tar.gz -C /eosio.contracts +RUN mv /eosio.contracts/eosio.contracts-1.9.0-rc4 /opt/eosio/bin/contracts +RUN mv /opt/eosio/bin/contracts/eosio.contracts-1.9.0-rc4 /opt/eosio/bin/contracts/eosio.contracts RUN echo "INSTALLING EOSIO.ASSERT CONTRACT" RUN wget https://github.com/EOSIO/eosio.assert/archive/v0.1.0.tar.gz diff --git a/eosio/scripts/deploy_contracts.sh b/eosio/scripts/deploy_contracts.sh index 1084d0e3..97b3235c 100755 --- a/eosio/scripts/deploy_contracts.sh +++ b/eosio/scripts/deploy_contracts.sh @@ -37,6 +37,8 @@ GITPOD_WORKSPACE_ROOT="/workspace/tropical-example-web-app" WALLET_DIR="$ROOT_DIR/wallet/" CONFIG_DIR="$ROOT_DIR/bin/config-dir" +echo "{\"includes\": [],\"appenders\": [{\"name\": \"consoleout\",\"type\": \"console\",\"args\": {\"stream\": \"std_out\",\"level_colors\": [{\"level\": \"debug\",\"color\": \"green\"},{\"level\": \"warn\",\"color\": \"brown\"},{\"level\": \"error\",\"color\": \"red\"}]},\"enabled\": true}],\"loggers\": [{\"name\": \"default\",\"level\": \"debug\",\"enabled\": true,\"additivity\": false,\"appenders\": [\"consoleout\"]}]}" > /opt/eosio/bin/config-dir/logging.json + function start_wallet { echo "Starting the wallet" rm -rf $WALLET_DIR @@ -186,6 +188,7 @@ if [ -z "$NODEOS_RUNNING" ]; then nodeos -e -p eosio \ --data-dir $BLOCKCHAIN_DATA_DIR \ --config-dir $BLOCKCHAIN_CONFIG_DIR \ + --logconf $BLOCKCHAIN_CONFIG_DIR/logging.json \ --http-validate-host=false \ --plugin eosio::producer_api_plugin \ --plugin eosio::chain_api_plugin \ @@ -253,6 +256,13 @@ create_account eosio.assert $SYSTEM_ACCOUNT_PUBLIC_KEY $SYSTEM_ACCOUNT_PRIVATE_K deploy_system_contract eosio.assert eosio.assert eosio.assert # eosio.bios +deploy_system_contract eosio.contracts-1.8.3/contracts eosio.bios eosio + +activate_feature "299dcb6af692324b899b39f16d5a530a33062804e41f09dc97e9f156b4476707" + +wget https://github.com/EOSIO/eosio.cdt/releases/download/v1.7.0-rc1/eosio.cdt_1.7.0-rc1-ubuntu-18.04_amd64.deb +apt-get update && sudo apt install -y ./eosio.cdt_1.7.0-rc1-ubuntu-18.04_amd64.deb + deploy_system_contract eosio.contracts/contracts eosio.bios eosio # eosio.token diff --git a/src/api/index.js b/src/api/index.js index 67ff6d57..d6176591 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -2,7 +2,7 @@ import { Router, json } from 'express' import { eccSignHash } from './eosjsEccReplacement' import { ec as EC } from 'elliptic' import {Serialize, Numeric} from 'eosjs' -import {JsSignatureProvider, PrivateKey, Signature} from 'eosjs/dist/eosjs-jssig' +import {JsSignatureProvider, PrivateKey, PublicKey, Signature} from 'eosjs/dist/eosjs-jssig' import { KeyType } from "eosjs/dist/eosjs-numeric"; import base64url from 'base64url' import cbor from 'cbor' @@ -65,10 +65,11 @@ export default () => { //console.info('eosioPubkey:', users[name].eosioPubkey.join(',')) const sigData = Buffer.concat( [ namePairBuffer.asUint8Array(), users[name].eosioPubkey ] ) const sigDigest = Buffer.from(ec.hash().update(sigData).digest()) - //const challenge = eccSignHash(sigDigest, private_key_wif).toString() - const eosioChallenge = ec.sign(sigDigest, PrivateKey.fromString(private_key_wif).toElliptic(ec)) - const challenge = Signature.fromElliptic(eosioChallenge, KeyType.r1).toString() - console.info('challenge:', challenge) + + const kPrivElliptic = PrivateKey.fromString(private_key_wif).toElliptic(ec) + const ellipticSignature = kPrivElliptic.sign(sigDigest) + const signature = Signature.fromElliptic(ellipticSignature, KeyType.r1).toString() + console.info('signature:', signature) console.info('\\\\\\\\\\\\-----------') const userKey = Numeric.publicKeyToString({ type: Numeric.KeyType.wa, @@ -79,18 +80,33 @@ export default () => { const serverKey = pubKeys[0] const credentialIDStr = base64url.encode(users[name].credentialID) + // TEST + console.log('/////////////------- TEST') + const ellipticSignature = Signature.fromString(signature).toElliptic(KeyType.r1); + const ellipticHashedStringAsBuffer = Buffer.from(ec.hash().update(sigData).digest()) + const ellipticRecoveredPublicKey = + ec.recoverPubKey( + ellipticHashedStringAsBuffer, + ellipticSignature, + ellipticSignature.recoveryParam); + const ellipticPublicKey = ec.keyFromPublic(ellipticRecoveredPublicKey); + const publicKeyStr = PublicKey.fromElliptic(ellipticPublicKey, KeyType.r1).toString(); + console.log('From Signature Public Key Matches?', publicKeyStr === serverKey); + console.log('\\\\\\\\-----------') + // End of Test + console.info('result:', { 'status': 'ok', 'userKey' : userKey, 'serverKey' : serverKey, - 'serverAuth': challenge, + 'serverAuth': signature, 'credentialID': credentialIDStr }) resp.json({ 'status': 'ok', 'userKey' : userKey, 'serverKey' : serverKey, - 'serverAuth': challenge, + 'serverAuth': signature, 'credentialID': credentialIDStr }) }) From 98216a8a0bbbd0bd418d7339dd8deff72329a4b1 Mon Sep 17 00:00:00 2001 From: Bradley Hart Date: Fri, 20 Dec 2019 13:58:51 -0500 Subject: [PATCH 42/76] Removing need for JsSignatureProvider --- src/api/index.js | 63 +++++++++++++++++++++++------------------------- 1 file changed, 30 insertions(+), 33 deletions(-) diff --git a/src/api/index.js b/src/api/index.js index d6176591..f494e87c 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -3,7 +3,7 @@ import { eccSignHash } from './eosjsEccReplacement' import { ec as EC } from 'elliptic' import {Serialize, Numeric} from 'eosjs' import {JsSignatureProvider, PrivateKey, PublicKey, Signature} from 'eosjs/dist/eosjs-jssig' -import { KeyType } from "eosjs/dist/eosjs-numeric"; +import { KeyType } from "eosjs/dist/eosjs-numeric" import base64url from 'base64url' import cbor from 'cbor' import util from 'util'; @@ -75,40 +75,37 @@ export default () => { type: Numeric.KeyType.wa, data: users[name].eosioPubkey.slice(1), }) - const sigProvider = new JsSignatureProvider([private_key_wif], KeyType.r1, ec) - const serverKey = sigProvider.getAvailableKeys().then((pubKeys) => { - const serverKey = pubKeys[0] - const credentialIDStr = base64url.encode(users[name].credentialID) + const serverKey = PublicKey.fromElliptic(kPrivElliptic, KeyType.r1).toString() + const credentialIDStr = base64url.encode(users[name].credentialID) - // TEST - console.log('/////////////------- TEST') - const ellipticSignature = Signature.fromString(signature).toElliptic(KeyType.r1); - const ellipticHashedStringAsBuffer = Buffer.from(ec.hash().update(sigData).digest()) - const ellipticRecoveredPublicKey = - ec.recoverPubKey( - ellipticHashedStringAsBuffer, - ellipticSignature, - ellipticSignature.recoveryParam); - const ellipticPublicKey = ec.keyFromPublic(ellipticRecoveredPublicKey); - const publicKeyStr = PublicKey.fromElliptic(ellipticPublicKey, KeyType.r1).toString(); - console.log('From Signature Public Key Matches?', publicKeyStr === serverKey); - console.log('\\\\\\\\-----------') - // End of Test + // TEST + console.log('/////////////------- TEST') + const ellipticSign = Signature.fromString(signature).toElliptic(KeyType.r1) + const ellipticHashedStringAsBuffer = Buffer.from(ec.hash().update(sigData).digest()) + const ellipticRecoveredPublicKey = + ec.recoverPubKey( + ellipticHashedStringAsBuffer, + ellipticSign, + ellipticSign.recoveryParam) + const ellipticPublicKey = ec.keyFromPublic(ellipticRecoveredPublicKey) + const publicKeyStr = PublicKey.fromElliptic(ellipticPublicKey, KeyType.r1).toString() + console.log('From Signature Public Key Matches?', publicKeyStr === serverKey) + console.log('\\\\\\\\-----------') + // End of Test - console.info('result:', { - 'status': 'ok', - 'userKey' : userKey, - 'serverKey' : serverKey, - 'serverAuth': signature, - 'credentialID': credentialIDStr - }) - resp.json({ - 'status': 'ok', - 'userKey' : userKey, - 'serverKey' : serverKey, - 'serverAuth': signature, - 'credentialID': credentialIDStr - }) + console.info('result:', { + 'status': 'ok', + 'userKey' : userKey, + 'serverKey' : serverKey, + 'serverAuth': signature, + 'credentialID': credentialIDStr + }) + resp.json({ + 'status': 'ok', + 'userKey' : userKey, + 'serverKey' : serverKey, + 'serverAuth': signature, + 'credentialID': credentialIDStr }) }) From cffa210a3ef0dc3bcf9d51dd6ae7d54993a68aa9 Mon Sep 17 00:00:00 2001 From: Bradley Hart Date: Thu, 26 Dec 2019 14:15:22 -0500 Subject: [PATCH 43/76] Removing ecc --- eosio/Dockerfile | 6 +- package.json | 2 +- src/api/eosjsEccReplacement.js | 5 - src/api/eosjsEccSupport/ecdsa.js | 218 ---------------- src/api/eosjsEccSupport/ecsignature.js | 124 --------- src/api/eosjsEccSupport/enforce_types.js | 40 --- src/api/eosjsEccSupport/hash.js | 64 ----- src/api/eosjsEccSupport/key_private.js | 315 ----------------------- src/api/eosjsEccSupport/key_public.js | 172 ------------- src/api/eosjsEccSupport/key_utils.js | 225 ---------------- src/api/eosjsEccSupport/promise-async.js | 23 -- src/api/eosjsEccSupport/signature.js | 117 --------- src/api/index.js | 45 ++-- yarn.lock | 8 +- 14 files changed, 29 insertions(+), 1335 deletions(-) delete mode 100644 src/api/eosjsEccReplacement.js delete mode 100644 src/api/eosjsEccSupport/ecdsa.js delete mode 100644 src/api/eosjsEccSupport/ecsignature.js delete mode 100644 src/api/eosjsEccSupport/enforce_types.js delete mode 100644 src/api/eosjsEccSupport/hash.js delete mode 100644 src/api/eosjsEccSupport/key_private.js delete mode 100644 src/api/eosjsEccSupport/key_public.js delete mode 100644 src/api/eosjsEccSupport/key_utils.js delete mode 100644 src/api/eosjsEccSupport/promise-async.js delete mode 100644 src/api/eosjsEccSupport/signature.js diff --git a/eosio/Dockerfile b/eosio/Dockerfile index bd8a2275..b809a5cb 100644 --- a/eosio/Dockerfile +++ b/eosio/Dockerfile @@ -4,10 +4,8 @@ RUN echo "INSTALLING EOSIO AND CDT" RUN apt-get update && apt-get install -y wget sudo curl RUN wget https://github.com/EOSIO/eosio.cdt/releases/download/v1.6.1/eosio.cdt_1.6.1-1_amd64.deb RUN apt-get update && sudo apt install -y ./eosio.cdt_1.6.1-1_amd64.deb -#RUN wget https://github.com/EOSIO/eos/releases/download/v1.8.3/eosio_1.8.3-1-ubuntu-18.04_amd64.deb -#RUN apt-get update && sudo apt install -y ./eosio_1.8.3-1-ubuntu-18.04_amd64.deb -COPY ./eosio_1.9.0-develop_amd64.deb ./ -RUN apt-get update && sudo apt install -y ./eosio_1.9.0-develop_amd64.deb +RUN wget https://github.com/EOSIO/eos/releases/download/v2.0.0-rc2/eosio_2.0.0-rc2-ubuntu-18.04_amd64.deb +RUN apt-get update && sudo apt install -y ./eosio_2.0.0-rc2-ubuntu-18.04_amd64.deb RUN echo "INSTALLING CONTRACTS" RUN mkdir -p "/opt/eosio/bin/contracts" diff --git a/package.json b/package.json index d0ddc1b3..03ccbe06 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "create-hmac": "^1.1.7", "ecurve": "^1.0.6", "elliptic": "^6.5.1", - "eosjs": "20.0.3-cd2fb09.0", + "eosjs": "20.0.4-e2c667e.0", "eosjs-ecc": "4.0.4", "focus-visible": "4.1.5", "prop-types": "15.7.2", diff --git a/src/api/eosjsEccReplacement.js b/src/api/eosjsEccReplacement.js deleted file mode 100644 index b2226a20..00000000 --- a/src/api/eosjsEccReplacement.js +++ /dev/null @@ -1,5 +0,0 @@ -const Signature = require("./eosjsEccSupport/signature") - -export const eccSignHash = (dataSha256, privateKey, encoding = 'hex') => { - return Signature.signHash(dataSha256, privateKey, encoding).toString() -} \ No newline at end of file diff --git a/src/api/eosjsEccSupport/ecdsa.js b/src/api/eosjsEccSupport/ecdsa.js deleted file mode 100644 index 84453ef2..00000000 --- a/src/api/eosjsEccSupport/ecdsa.js +++ /dev/null @@ -1,218 +0,0 @@ -var assert = require('assert') // from github.com/bitcoinjs/bitcoinjs-lib from github.com/cryptocoinjs/ecdsa -var crypto = require('./hash') -var enforceType = require('./enforce_types') - -var BigInteger = require('bigi') -var ECSignature = require('./ecsignature') - -// https://tools.ietf.org/html/rfc6979#section-3.2 -function deterministicGenerateK(curve, hash, d, checkSig, nonce) { - - enforceType('Buffer', hash) - enforceType(BigInteger, d) - - if (nonce) { - hash = crypto.sha256(Buffer.concat([hash, new Buffer(nonce)])) - } - - // sanity check - assert.equal(hash.length, 32, 'Hash must be 256 bit') - - var x = d.toBuffer(32) - var k = new Buffer(32) - var v = new Buffer(32) - - // Step B - v.fill(1) - - // Step C - k.fill(0) - - // Step D - k = crypto.HmacSHA256(Buffer.concat([v, new Buffer([0]), x, hash]), k) - - // Step E - v = crypto.HmacSHA256(v, k) - - // Step F - k = crypto.HmacSHA256(Buffer.concat([v, new Buffer([1]), x, hash]), k) - - // Step G - v = crypto.HmacSHA256(v, k) - - // Step H1/H2a, ignored as tlen === qlen (256 bit) - // Step H2b - v = crypto.HmacSHA256(v, k) - - var T = BigInteger.fromBuffer(v) - - // Step H3, repeat until T is within the interval [1, n - 1] - while ((T.signum() <= 0) || (T.compareTo(curve.n) >= 0) || !checkSig(T)) { - k = crypto.HmacSHA256(Buffer.concat([v, new Buffer([0])]), k) - v = crypto.HmacSHA256(v, k) - - // Step H1/H2a, again, ignored as tlen === qlen (256 bit) - // Step H2b again - v = crypto.HmacSHA256(v, k) - - T = BigInteger.fromBuffer(v) - } - - return T - -} - -function sign(curve, hash, d, nonce) { - - var e = BigInteger.fromBuffer(hash) - var n = curve.n - var G = curve.G - - var r, s - var k = deterministicGenerateK(curve, hash, d, function (k) { - // find canonically valid signature - var Q = G.multiply(k) - - if (curve.isInfinity(Q)) return false - - r = Q.affineX.mod(n) - if (r.signum() === 0) return false - - s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n) - if (s.signum() === 0) return false - - return true - }, nonce) - - var N_OVER_TWO = n.shiftRight(1) - - // enforce low S values, see bip62: 'low s values in signatures' - if (s.compareTo(N_OVER_TWO) > 0) { - s = n.subtract(s) - } - - return ECSignature(r, s) -} - -function verifyRaw(curve, e, signature, Q) { - var n = curve.n - var G = curve.G - - var r = signature.r - var s = signature.s - - // 1.4.1 Enforce r and s are both integers in the interval [1, n − 1] - if (r.signum() <= 0 || r.compareTo(n) >= 0) return false - if (s.signum() <= 0 || s.compareTo(n) >= 0) return false - - // c = s^-1 mod n - var c = s.modInverse(n) - - // 1.4.4 Compute u1 = es^−1 mod n - // u2 = rs^−1 mod n - var u1 = e.multiply(c).mod(n) - var u2 = r.multiply(c).mod(n) - - // 1.4.5 Compute R = (xR, yR) = u1G + u2Q - var R = G.multiplyTwo(u1, Q, u2) - - // 1.4.5 (cont.) Enforce R is not at infinity - if (curve.isInfinity(R)) return false - - // 1.4.6 Convert the field element R.x to an integer - var xR = R.affineX - - // 1.4.7 Set v = xR mod n - var v = xR.mod(n) - - // 1.4.8 If v = r, output "valid", and if v != r, output "invalid" - return v.equals(r) -} - -function verify(curve, hash, signature, Q) { - // 1.4.2 H = Hash(M), already done by the user - // 1.4.3 e = H - var e = BigInteger.fromBuffer(hash) - return verifyRaw(curve, e, signature, Q) -} - -/** - * Recover a public key from a signature. - * - * See SEC 1: Elliptic Curve Cryptography, section 4.1.6, "Public - * Key Recovery Operation". - * - * http://www.secg.org/download/aid-780/sec1-v2.pdf - */ -function recoverPubKey(curve, e, signature, i) { - assert.strictEqual(i & 3, i, 'Recovery param is more than two bits') - - var n = curve.n - var G = curve.G - - var r = signature.r - var s = signature.s - - assert(r.signum() > 0 && r.compareTo(n) < 0, 'Invalid r value') - assert(s.signum() > 0 && s.compareTo(n) < 0, 'Invalid s value') - - // A set LSB signifies that the y-coordinate is odd - var isYOdd = i & 1 - - // The more significant bit specifies whether we should use the - // first or second candidate key. - var isSecondKey = i >> 1 - - // 1.1 Let x = r + jn - var x = isSecondKey ? r.add(n) : r - var R = curve.pointFromX(isYOdd, x) - - // 1.4 Check that nR is at infinity - var nR = R.multiply(n) - assert(curve.isInfinity(nR), 'nR is not a valid curve point') - - // Compute -e from e - var eNeg = e.negate().mod(n) - - // 1.6.1 Compute Q = r^-1 (sR - eG) - // Q = r^-1 (sR + -eG) - var rInv = r.modInverse(n) - - var Q = R.multiplyTwo(s, G, eNeg).multiply(rInv) - curve.validate(Q) - - return Q -} - -/** - * Calculate pubkey extraction parameter. - * - * When extracting a pubkey from a signature, we have to - * distinguish four different cases. Rather than putting this - * burden on the verifier, Bitcoin includes a 2-bit value with the - * signature. - * - * This function simply tries all four cases and returns the value - * that resulted in a successful pubkey recovery. - */ -function calcPubKeyRecoveryParam(curve, e, signature, Q) { - for (var i = 0; i < 4; i++) { - var Qprime = recoverPubKey(curve, e, signature, i) - - // 1.6.2 Verify Q - if (Qprime.equals(Q)) { - return i - } - } - - throw new Error('Unable to find valid recovery factor') -} - -module.exports = { - calcPubKeyRecoveryParam: calcPubKeyRecoveryParam, - deterministicGenerateK: deterministicGenerateK, - recoverPubKey: recoverPubKey, - sign: sign, - verify: verify, - verifyRaw: verifyRaw -} diff --git a/src/api/eosjsEccSupport/ecsignature.js b/src/api/eosjsEccSupport/ecsignature.js deleted file mode 100644 index 53ec280d..00000000 --- a/src/api/eosjsEccSupport/ecsignature.js +++ /dev/null @@ -1,124 +0,0 @@ -var assert = require('assert') // from https://github.com/bitcoinjs/bitcoinjs-lib -var enforceType = require('./enforce_types') - -var BigInteger = require('bigi') - -function ECSignature(r, s) { - enforceType(BigInteger, r) - enforceType(BigInteger, s) - - function toCompact(i, compressed) { - if (compressed) i += 4 - i += 27 - - var buffer = new Buffer(65) - buffer.writeUInt8(i, 0) - - r.toBuffer(32).copy(buffer, 1) - s.toBuffer(32).copy(buffer, 33) - - return buffer - } - - function toDER() { - var rBa = r.toDERInteger() - var sBa = s.toDERInteger() - - var sequence = [] - - // INTEGER - sequence.push(0x02, rBa.length) - sequence = sequence.concat(rBa) - - // INTEGER - sequence.push(0x02, sBa.length) - sequence = sequence.concat(sBa) - - // SEQUENCE - sequence.unshift(0x30, sequence.length) - - return new Buffer(sequence) - } - - function toScriptSignature(hashType) { - var hashTypeBuffer = new Buffer(1) - hashTypeBuffer.writeUInt8(hashType, 0) - - return Buffer.concat([toDER(), hashTypeBuffer]) - } - - return {r, s, toCompact, toDER, toScriptSignature} -} - -// Import operations -ECSignature.parseCompact = function(buffer) { - assert.equal(buffer.length, 65, 'Invalid signature length') - var i = buffer.readUInt8(0) - 27 - - // At most 3 bits - assert.equal(i, i & 7, 'Invalid signature parameter') - var compressed = !!(i & 4) - - // Recovery param only - i = i & 3 - - var r = BigInteger.fromBuffer(buffer.slice(1, 33)) - var s = BigInteger.fromBuffer(buffer.slice(33)) - - return { - compressed: compressed, - i: i, - signature: ECSignature(r, s) - } -} - -ECSignature.fromDER = function(buffer) { - assert.equal(buffer.readUInt8(0), 0x30, 'Not a DER sequence') - assert.equal(buffer.readUInt8(1), buffer.length - 2, 'Invalid sequence length') - assert.equal(buffer.readUInt8(2), 0x02, 'Expected a DER integer') - - var rLen = buffer.readUInt8(3) - assert(rLen > 0, 'R length is zero') - - var offset = 4 + rLen - assert.equal(buffer.readUInt8(offset), 0x02, 'Expected a DER integer (2)') - - var sLen = buffer.readUInt8(offset + 1) - assert(sLen > 0, 'S length is zero') - - var rB = buffer.slice(4, offset) - var sB = buffer.slice(offset + 2) - offset += 2 + sLen - - if (rLen > 1 && rB.readUInt8(0) === 0x00) { - assert(rB.readUInt8(1) & 0x80, 'R value excessively padded') - } - - if (sLen > 1 && sB.readUInt8(0) === 0x00) { - assert(sB.readUInt8(1) & 0x80, 'S value excessively padded') - } - - assert.equal(offset, buffer.length, 'Invalid DER encoding') - var r = BigInteger.fromDERInteger(rB) - var s = BigInteger.fromDERInteger(sB) - - assert(r.signum() >= 0, 'R value is negative') - assert(s.signum() >= 0, 'S value is negative') - - return ECSignature(r, s) -} - -// FIXME: 0x00, 0x04, 0x80 are SIGHASH_* boundary constants, importing Transaction causes a circular dependency -ECSignature.parseScriptSignature = function(buffer) { - var hashType = buffer.readUInt8(buffer.length - 1) - var hashTypeMod = hashType & ~0x80 - - assert(hashTypeMod > 0x00 && hashTypeMod < 0x04, 'Invalid hashType') - - return { - signature: ECSignature.fromDER(buffer.slice(0, -1)), - hashType: hashType - } -} - -module.exports = ECSignature diff --git a/src/api/eosjsEccSupport/enforce_types.js b/src/api/eosjsEccSupport/enforce_types.js deleted file mode 100644 index f4e507b0..00000000 --- a/src/api/eosjsEccSupport/enforce_types.js +++ /dev/null @@ -1,40 +0,0 @@ -module.exports = function enforce(type, value) { // Copied from https://github.com/bitcoinjs/bitcoinjs-lib - switch (type) { - case 'Array': { - if (Array.isArray(value)) return - break - } - - case 'Boolean': { - if (typeof value === 'boolean') return - break - } - - case 'Buffer': { - if (Buffer.isBuffer(value)) return - break - } - - case 'Number': { - if (typeof value === 'number') return - break - } - - case 'String': { - if (typeof value === 'string') return - break - } - - default: { - if (getName(value.constructor) === getName(type)) return - } - } - - throw new TypeError('Expected ' + (getName(type) || type) + ', got ' + value) -} - -function getName(fn) { - // Why not fn.name: https://kangax.github.io/compat-table/es6/#function_name_property - var match = fn.toString().match(/function (.*?)\(/) - return match ? match[1] : null -} diff --git a/src/api/eosjsEccSupport/hash.js b/src/api/eosjsEccSupport/hash.js deleted file mode 100644 index 8ae2e6c7..00000000 --- a/src/api/eosjsEccSupport/hash.js +++ /dev/null @@ -1,64 +0,0 @@ -const createHash = require('create-hash') -const createHmac = require('create-hmac') - -/** @namespace hash */ - -/** @arg {string|Buffer} data - @arg {string} [resultEncoding = null] - 'hex', 'binary' or 'base64' - @return {string|Buffer} - Buffer when resultEncoding is null, or string -*/ -function sha1(data, resultEncoding) { - return createHash('sha1').update(data).digest(resultEncoding) -} - -/** @arg {string|Buffer} data - @arg {string} [resultEncoding = null] - 'hex', 'binary' or 'base64' - @return {string|Buffer} - Buffer when resultEncoding is null, or string -*/ -function sha256(data, resultEncoding) { - return createHash('sha256').update(data).digest(resultEncoding) -} - -/** @arg {string|Buffer} data - @arg {string} [resultEncoding = null] - 'hex', 'binary' or 'base64' - @return {string|Buffer} - Buffer when resultEncoding is null, or string -*/ -function sha512(data, resultEncoding) { - return createHash('sha512').update(data).digest(resultEncoding) -} - -function HmacSHA256(buffer, secret) { - return createHmac('sha256', secret).update(buffer).digest() -} - -function ripemd160(data) { - try{ - return createHash('rmd160').update(data).digest(); - } catch(e){ - return createHash('ripemd160').update(data).digest(); - } -} - -// function hash160(buffer) { -// return ripemd160(sha256(buffer)) -// } -// -// function hash256(buffer) { -// return sha256(sha256(buffer)) -// } - -// -// function HmacSHA512(buffer, secret) { -// return crypto.createHmac('sha512', secret).update(buffer).digest() -// } - -module.exports = { - sha1: sha1, - sha256: sha256, - sha512: sha512, - HmacSHA256: HmacSHA256, - ripemd160: ripemd160 - // hash160: hash160, - // hash256: hash256, - // HmacSHA512: HmacSHA512 -} diff --git a/src/api/eosjsEccSupport/key_private.js b/src/api/eosjsEccSupport/key_private.js deleted file mode 100644 index 1ca8c71e..00000000 --- a/src/api/eosjsEccSupport/key_private.js +++ /dev/null @@ -1,315 +0,0 @@ -const ecurve = require('ecurve'); -const Point = ecurve.Point; -const secp256k1 = ecurve.getCurveByName('secp256k1'); -const BigInteger = require('bigi'); -const assert = require('assert'); - -const hash = require('./hash'); -const PublicKey = require('./key_public'); -const keyUtils = require('./key_utils'); -const createHash = require('create-hash') -const promiseAsync = require('./promise-async') - -const G = secp256k1.G -const n = secp256k1.n - -module.exports = PrivateKey; - -/** - @typedef {string} wif - https://en.bitcoin.it/wiki/Wallet_import_format - @typedef {string} pubkey - EOSKey.. - @typedef {ecurve.Point} Point -*/ - -/** - @param {BigInteger} d -*/ -function PrivateKey(d) { - if(typeof d === 'string') { - return PrivateKey.fromString(d) - } else if(Buffer.isBuffer(d)) { - return PrivateKey.fromBuffer(d) - } else if(typeof d === 'object' && BigInteger.isBigInteger(d.d)) { - return PrivateKey(d.d) - } - - if(!BigInteger.isBigInteger(d)) { - throw new TypeError('Invalid private key') - } - - /** @return {string} private key like PVT_K1_base58privatekey.. */ - function toString() { - // todo, use PVT_K1_ - // return 'PVT_K1_' + keyUtils.checkEncode(toBuffer(), 'K1') - return toWif() - } - - /** - @return {wif} - */ - function toWif() { - var private_key = toBuffer(); - // checksum includes the version - private_key = Buffer.concat([new Buffer([0x80]), private_key]); - return keyUtils.checkEncode(private_key, 'sha256x2') - } - - let public_key; - - /** - @return {Point} - */ - function toPublic() { - if (public_key) { - // cache - // S L O W in the browser - return public_key - } - const Q = secp256k1.G.multiply(d); - return public_key = PublicKey.fromPoint(Q); - } - - function toBuffer() { - return d.toBuffer(32); - } - - /** - ECIES - @arg {string|Object} pubkey wif, PublicKey object - @return {Buffer} 64 byte shared secret - */ - function getSharedSecret(public_key) { - public_key = PublicKey(public_key) - let KB = public_key.toUncompressed().toBuffer() - let KBP = Point.fromAffine( - secp256k1, - BigInteger.fromBuffer( KB.slice( 1,33 )), // x - BigInteger.fromBuffer( KB.slice( 33,65 )) // y - ) - let r = toBuffer() - let P = KBP.multiply(BigInteger.fromBuffer(r)) - let S = P.affineX.toBuffer({size: 32}) - // SHA512 used in ECIES - return hash.sha512(S) - } - - // /** ECIES TODO unit test - // @arg {string|Object} pubkey wif, PublicKey object - // @return {Buffer} 64 byte shared secret - // */ - // function getSharedSecret(public_key) { - // public_key = PublicKey(public_key).toUncompressed() - // var P = public_key.Q.multiply( d ); - // var S = P.affineX.toBuffer({size: 32}); - // // ECIES, adds an extra sha512 - // return hash.sha512(S); - // } - - /** - @arg {string} name - child key name. - @return {PrivateKey} - - @example activePrivate = masterPrivate.getChildKey('owner').getChildKey('active') - @example activePrivate.getChildKey('mycontract').getChildKey('myperm') - */ - function getChildKey(name) { - // console.error('WARNING: getChildKey untested against eosd'); // no eosd impl yet - const index = createHash('sha256').update(toBuffer()).update(name).digest() - return PrivateKey(index) - } - - function toHex() { - return toBuffer().toString('hex'); - } - - return { - d, - toWif, - toString, - toPublic, - toBuffer, - getSharedSecret, - getChildKey - } -} - -/** @private */ -function parseKey(privateStr) { - assert.equal(typeof privateStr, 'string', 'privateStr') - const match = privateStr.match(/^PVT_([A-Za-z0-9]+)_([A-Za-z0-9]+)$/) - - if(match === null) { - // legacy WIF - checksum includes the version - const versionKey = keyUtils.checkDecode(privateStr, 'sha256x2') - const version = versionKey.readUInt8(0); - assert.equal(0x80, version, `Expected version ${0x80}, instead got ${version}`) - const privateKey = PrivateKey.fromBuffer(versionKey.slice(1)) - const keyType = 'K1' - const format = 'WIF' - return {privateKey, format, keyType} - } - - assert(match.length === 3, 'Expecting private key like: PVT_K1_base58privateKey..') - const [, keyType, keyString] = match - assert.equal(keyType, 'K1', 'K1 private key expected') - const privateKey = PrivateKey.fromBuffer(keyUtils.checkDecode(keyString, keyType)) - return {privateKey, format: 'PVT', keyType} -} - -PrivateKey.fromHex = function(hex) { - return PrivateKey.fromBuffer(new Buffer(hex, 'hex')); -} - -PrivateKey.fromBuffer = function(buf) { - if (!Buffer.isBuffer(buf)) { - throw new Error("Expecting parameter to be a Buffer type"); - } - if(buf.length === 33 && buf[32] === 1) { - // remove compression flag - buf = buf.slice(0, -1) - } - if (32 !== buf.length) { - throw new Error(`Expecting 32 bytes, instead got ${buf.length}`); - } - return PrivateKey(BigInteger.fromBuffer(buf)); -} - -/** - @arg {string} seed - any length string. This is private, the same seed - produces the same private key every time. - - @return {PrivateKey} -*/ -PrivateKey.fromSeed = function(seed) { // generate_private_key - if (!(typeof seed === 'string')) { - throw new Error('seed must be of type string'); - } - return PrivateKey.fromBuffer(hash.sha256(seed)); -} - -/** - @arg {wif} key - @return {boolean} true if key is in the Wallet Import Format -*/ -PrivateKey.isWif = function(text) { - try { - assert(parseKey(text).format === 'WIF') - return true - } catch(e) { - return false - } -} - -/** - @arg {wif|Buffer|PrivateKey} key - @return {boolean} true if key is convertable to a private key object. -*/ -PrivateKey.isValid = function(key) { - try { - PrivateKey(key) - return true - } catch(e) { - return false - } -} - -/** @deprecated */ -PrivateKey.fromWif = function(str) { - console.log('PrivateKey.fromWif is deprecated, please use PrivateKey.fromString'); - return PrivateKey.fromString(str) -} - -/** - @throws {AssertError|Error} parsing key - @arg {string} privateStr Eosio or Wallet Import Format (wif) -- a secret -*/ -PrivateKey.fromString = function(privateStr) { - return parseKey(privateStr).privateKey -} - -/** - Create a new random private key. - - Call initialize() first to run some self-checking code and gather some CPU - entropy. - - @arg {number} [cpuEntropyBits = 0] - additional CPU entropy, this already - happens once so it should not be needed again. - - @return {Promise} - random private key -*/ -PrivateKey.randomKey = function(cpuEntropyBits = 0) { - return PrivateKey.initialize().then(() => ( - PrivateKey.fromBuffer(keyUtils.random32ByteBuffer({cpuEntropyBits})) - )) -} - -/** - @return {Promise} for testing, does not require initialize(). -*/ -PrivateKey.unsafeRandomKey = function() { - return Promise.resolve( - PrivateKey.fromBuffer(keyUtils.random32ByteBuffer({safe: false})) - ) -} - - -let initialized = false, unitTested = false - -/** - Run self-checking code and gather CPU entropy. - - Initialization happens once even if called multiple times. - - @return {Promise} -*/ -function initialize() { - if(initialized) { - return - } - - unitTest() - keyUtils.addEntropy(...keyUtils.cpuEntropy()) - assert(keyUtils.entropyCount() >= 128, 'insufficient entropy') - - initialized = true -} - -PrivateKey.initialize = promiseAsync(initialize) - -/** - Unit test basic private and public key functionality. - - @throws {AssertError} -*/ -function unitTest() { - const pvt = PrivateKey(hash.sha256('')) - - const pvtError = 'key comparison test failed on a known private key' - assert.equal(pvt.toWif(), '5KYZdUEo39z3FPrtuX2QbbwGnNP5zTd7yyr2SC1j299sBCnWjss', pvtError) - assert.equal(pvt.toString(), '5KYZdUEo39z3FPrtuX2QbbwGnNP5zTd7yyr2SC1j299sBCnWjss', pvtError) - // assert.equal(pvt.toString(), 'PVT_K1_2jH3nnhxhR3zPUcsKaWWZC9ZmZAnKm3GAnFD1xynGJE1Znuvjd', pvtError) - - const pub = pvt.toPublic() - const pubError = 'pubkey string comparison test failed on a known public key' - assert.equal(pub.toString(), 'EOS859gxfnXyUriMgUeThh1fWv3oqcpLFyHa3TfFYC4PK2HqhToVM', pubError) - // assert.equal(pub.toString(), 'PUB_K1_859gxfnXyUriMgUeThh1fWv3oqcpLFyHa3TfFYC4PK2Ht7beeX', pubError) - // assert.equal(pub.toStringLegacy(), 'EOS859gxfnXyUriMgUeThh1fWv3oqcpLFyHa3TfFYC4PK2HqhToVM', pubError) - - doesNotThrow(() => PrivateKey.fromString(pvt.toWif()), 'converting known wif from string') - doesNotThrow(() => PrivateKey.fromString(pvt.toString()), 'converting known pvt from string') - doesNotThrow(() => PublicKey.fromString(pub.toString()), 'converting known public key from string') - // doesNotThrow(() => PublicKey.fromString(pub.toStringLegacy()), 'converting known public key from string') - - unitTested = true -} - -/** @private */ -const doesNotThrow = (cb, msg) => { - try { - cb() - } catch(error) { - error.message = `${msg} ==> ${error.message}` - throw error - } -} diff --git a/src/api/eosjsEccSupport/key_public.js b/src/api/eosjsEccSupport/key_public.js deleted file mode 100644 index c87e7bd0..00000000 --- a/src/api/eosjsEccSupport/key_public.js +++ /dev/null @@ -1,172 +0,0 @@ -const assert = require('assert'); -const ecurve = require('ecurve'); -const BigInteger = require('bigi'); -const secp256k1 = ecurve.getCurveByName('secp256k1'); - -const hash = require('./hash'); -const keyUtils = require('./key_utils'); - -var G = secp256k1.G -var n = secp256k1.n - -module.exports = PublicKey - -/** - @param {string|Buffer|PublicKey|ecurve.Point} public key - @param {string} [pubkey_prefix = 'EOS'] -*/ -function PublicKey(Q, pubkey_prefix = 'EOS') { - if(typeof Q === 'string') { - const publicKey = PublicKey.fromString(Q, pubkey_prefix) - assert(publicKey != null, 'Invalid public key') - return publicKey - } else if(Buffer.isBuffer(Q)) { - return PublicKey.fromBuffer(Q) - } else if(typeof Q === 'object' && Q.Q) { - return PublicKey(Q.Q) - } - - assert.equal(typeof Q, 'object', 'Invalid public key') - assert.equal(typeof Q.compressed, 'boolean', 'Invalid public key') - - function toBuffer(compressed = Q.compressed) { - return Q.getEncoded(compressed); - } - - let pubdata // cache - - // /** - // @todo secp224r1 - // @return {string} PUB_K1_base58pubkey.. - // */ - // function toString() { - // if(pubdata) { - // return pubdata - // } - // pubdata = `PUB_K1_` + keyUtils.checkEncode(toBuffer(), 'K1') - // return pubdata; - // } - - /** @todo rename to toStringLegacy - * @arg {string} [pubkey_prefix = 'EOS'] - public key prefix - */ - function toString(pubkey_prefix = 'EOS') { - return pubkey_prefix + keyUtils.checkEncode(toBuffer()) - } - - function toUncompressed() { - var buf = Q.getEncoded(false); - var point = ecurve.Point.decodeFrom(secp256k1, buf); - return PublicKey.fromPoint(point); - } - - /** @deprecated */ - function child( offset ) { - console.error('Deprecated warning: PublicKey.child') - - assert(Buffer.isBuffer(offset), "Buffer required: offset") - assert.equal(offset.length, 32, "offset length") - - offset = Buffer.concat([ toBuffer(), offset ]) - offset = hash.sha256( offset ) - - let c = BigInteger.fromBuffer( offset ) - - if (c.compareTo(n) >= 0) - throw new Error("Child offset went out of bounds, try again") - - - let cG = G.multiply(c) - let Qprime = Q.add(cG) - - if( secp256k1.isInfinity(Qprime) ) - throw new Error("Child offset derived to an invalid key, try again") - - return PublicKey.fromPoint(Qprime) - } - - function toHex() { - return toBuffer().toString('hex'); - } - - return { - Q, - toString, - // toStringLegacy, - toUncompressed, - toBuffer, - child, - toHex - } -} - -/** - @param {string|Buffer|PublicKey|ecurve.Point} pubkey - public key - @param {string} [pubkey_prefix = 'EOS'] -*/ -PublicKey.isValid = function(pubkey, pubkey_prefix = 'EOS') { - try { - PublicKey(pubkey, pubkey_prefix) - return true - } catch(e) { - return false - } -} - -PublicKey.fromBinary = function(bin) { - return PublicKey.fromBuffer(new Buffer(bin, 'binary')); -} - -PublicKey.fromBuffer = function(buffer) { - return PublicKey(ecurve.Point.decodeFrom(secp256k1, buffer)); -} - -PublicKey.fromPoint = function(point) { - return PublicKey(point); -} - -/** - @arg {string} public_key - like PUB_K1_base58pubkey.. - @arg {string} [pubkey_prefix = 'EOS'] - public key prefix - @return PublicKey or `null` (invalid) -*/ -PublicKey.fromString = function(public_key, pubkey_prefix = 'EOS') { - try { - return PublicKey.fromStringOrThrow(public_key, pubkey_prefix) - } catch (e) { - return null; - } -} - -/** - @arg {string} public_key - like PUB_K1_base58pubkey.. - @arg {string} [pubkey_prefix = 'EOS'] - public key prefix - - @throws {Error} if public key is invalid - - @return PublicKey -*/ -PublicKey.fromStringOrThrow = function(public_key, pubkey_prefix = 'EOS') { - assert.equal(typeof public_key, 'string', 'public_key') - const match = public_key.match(/^PUB_([A-Za-z0-9]+)_([A-Za-z0-9]+)$/) - if(match === null) { - // legacy - var prefix_match = new RegExp("^" + pubkey_prefix); - if(prefix_match.test(public_key)) { - public_key = public_key.substring(pubkey_prefix.length) - } - return PublicKey.fromBuffer(keyUtils.checkDecode(public_key)) - } - assert(match.length === 3, 'Expecting public key like: PUB_K1_base58pubkey..') - const [, keyType, keyString] = match - assert.equal(keyType, 'K1', 'K1 private key expected') - return PublicKey.fromBuffer(keyUtils.checkDecode(keyString, keyType)) -} - -PublicKey.fromHex = function(hex) { - return PublicKey.fromBuffer(new Buffer(hex, 'hex')); -} - -PublicKey.fromStringHex = function(hex) { - return PublicKey.fromString(new Buffer(hex, 'hex')); -} diff --git a/src/api/eosjsEccSupport/key_utils.js b/src/api/eosjsEccSupport/key_utils.js deleted file mode 100644 index 82ac5ff9..00000000 --- a/src/api/eosjsEccSupport/key_utils.js +++ /dev/null @@ -1,225 +0,0 @@ -const base58 = require('bs58') -const assert = require('assert') -const randomBytes = require('randombytes'); - -const hash = require('./hash'); - -module.exports = { - random32ByteBuffer, - addEntropy, - cpuEntropy, - entropyCount: () => entropyCount, - checkDecode, - checkEncode -} - -let entropyPos = 0, entropyCount = 0 - -const externalEntropyArray = randomBytes(101) - - -/** - Additional forms of entropy are used. A week random number generator can run out of entropy. This should ensure even the worst random number implementation will be reasonably safe. - - @arg {number} [cpuEntropyBits = 0] generate entropy on the fly. This is - not required, entropy can be added in advanced via addEntropy or initialize(). - - @arg {boolean} [safe = true] false for testing, otherwise this will be - true to ensure initialize() was called. - - @return a random buffer obtained from the secure random number generator. Additional entropy is used. -*/ -function random32ByteBuffer({cpuEntropyBits = 0, safe = true} = {}) { - assert.equal(typeof cpuEntropyBits, 'number', 'cpuEntropyBits') - assert.equal(typeof safe, 'boolean', 'boolean') - - if(safe) { - assert(entropyCount >= 128, 'Call initialize() to add entropy') - } - - // if(entropyCount > 0) { - // console.log(`Additional private key entropy: ${entropyCount} events`) - // } - - const hash_array = [] - hash_array.push(randomBytes(32)) - hash_array.push(Buffer.from(cpuEntropy(cpuEntropyBits))) - hash_array.push(externalEntropyArray) - hash_array.push(browserEntropy()) - return hash.sha256(Buffer.concat(hash_array)) -} - -/** - Adds entropy. This may be called many times while the amount of data saved - is accumulatively reduced to 101 integers. Data is retained in RAM for the - life of this module. - - @example React - componentDidMount() { - this.refs.MyComponent.addEventListener("mousemove", this.onEntropyEvent, {capture: false, passive: true}) - } - componentWillUnmount() { - this.refs.MyComponent.removeEventListener("mousemove", this.onEntropyEvent); - } - onEntropyEvent = (e) => { - if(e.type === 'mousemove') - key_utils.addEntropy(e.pageX, e.pageY, e.screenX, e.screenY) - else - console.log('onEntropyEvent Unknown', e.type, e) - } - -*/ -function addEntropy(...ints) { - assert.equal(externalEntropyArray.length, 101, 'externalEntropyArray') - - entropyCount += ints.length - for(const i of ints) { - const pos = entropyPos++ % 101 - const i2 = externalEntropyArray[pos] += i - if(i2 > 9007199254740991) - externalEntropyArray[pos] = 0 - } -} - -/** - This runs in just under 1 second and ensures a minimum of cpuEntropyBits - bits of entropy are gathered. - - Based on more-entropy. @see https://github.com/keybase/more-entropy/blob/master/src/generator.iced - - @arg {number} [cpuEntropyBits = 128] - @return {array} counts gathered by measuring variations in the CPU speed during floating point operations. -*/ -function cpuEntropy(cpuEntropyBits = 128) { - let collected = [] - let lastCount = null - let lowEntropySamples = 0 - while(collected.length < cpuEntropyBits) { - const count = floatingPointCount() - if(lastCount != null) { - const delta = count - lastCount - if(Math.abs(delta) < 1) { - lowEntropySamples++ - continue - } - // how many bits of entropy were in this sample - const bits = Math.floor(log2(Math.abs(delta)) + 1) - if(bits < 4) { - if(bits < 2) { - lowEntropySamples++ - } - continue - } - collected.push(delta) - } - lastCount = count - } - if(lowEntropySamples > 10) { - const pct = Number(lowEntropySamples / cpuEntropyBits * 100).toFixed(2) - // Is this algorithm getting inefficient? - console.warn(`WARN: ${pct}% low CPU entropy re-sampled`); - } - return collected -} - -/** - @private - Count while performing floating point operations during a fixed time - (7 ms for example). Using a fixed time makes this algorithm - predictable in runtime. -*/ -function floatingPointCount() { - const workMinMs = 7 - const d = Date.now() - let i = 0, x = 0 - while (Date.now() < d + workMinMs + 1) { - x = Math.sin(Math.sqrt(Math.log(++i + x))) - } - return i -} - -const log2 = x => Math.log(x) / Math.LN2 - -/** - @private - Attempt to gather and hash information from the browser's window, history, and supported mime types. For non-browser environments this simply includes secure random data. In any event, the information is re-hashed in a loop for 25 milliseconds seconds. - - @return {Buffer} 32 bytes -*/ -function browserEntropy() { - let entropyStr = Array(randomBytes(101)).join() - try { - entropyStr += (new Date()).toString() + " " + window.screen.height + " " + window.screen.width + " " + - window.screen.colorDepth + " " + " " + window.screen.availHeight + " " + window.screen.availWidth + " " + - window.screen.pixelDepth + navigator.language + " " + window.location + " " + window.history.length; - - for (let i = 0, mimeType; i < navigator.mimeTypes.length; i++) { - mimeType = navigator.mimeTypes[i]; - entropyStr += mimeType.description + " " + mimeType.type + " " + mimeType.suffixes + " "; - } - } catch(error) { - //nodejs:ReferenceError: window is not defined - entropyStr += hash.sha256((new Date()).toString()) - } - - const b = new Buffer(entropyStr); - entropyStr += b.toString('binary') + " " + (new Date()).toString(); - - let entropy = entropyStr; - const start_t = Date.now(); - while (Date.now() - start_t < 25) - entropy = hash.sha256(entropy); - - return entropy; -} - -/** - @arg {Buffer} keyBuffer data - @arg {string} keyType = sha256x2, K1, etc - @return {string} checksum encoded base58 string -*/ -function checkEncode(keyBuffer, keyType = null) { - assert(Buffer.isBuffer(keyBuffer), 'expecting keyBuffer') - if(keyType === 'sha256x2') { // legacy - const checksum = hash.sha256(hash.sha256(keyBuffer)).slice(0, 4) - return base58.encode(Buffer.concat([keyBuffer, checksum])) - } else { - const check = [keyBuffer] - if(keyType) { - check.push(Buffer.from(keyType)) - } - const checksum = hash.ripemd160(Buffer.concat(check)).slice(0, 4) - return base58.encode(Buffer.concat([keyBuffer, checksum])) - } -} - -/** - @arg {Buffer} keyString data - @arg {string} keyType = sha256x2, K1, etc - @return {string} checksum encoded base58 string -*/ -function checkDecode(keyString, keyType = null) { - assert(keyString != null, 'private key expected') - const buffer = new Buffer(base58.decode(keyString)) - const checksum = buffer.slice(-4) - const key = buffer.slice(0, -4) - - let newCheck - if(keyType === 'sha256x2') { // legacy - newCheck = hash.sha256(hash.sha256(key)).slice(0, 4) // WIF (legacy) - } else { - const check = [key] - if(keyType) { - check.push(Buffer.from(keyType)) - } - newCheck = hash.ripemd160(Buffer.concat(check)).slice(0, 4) //PVT - } - - if (checksum.toString('hex') !== newCheck.toString('hex')) { - throw new Error('Invalid checksum, ' + - `${checksum.toString('hex')} != ${newCheck.toString('hex')}` - ) - } - - return key -} diff --git a/src/api/eosjsEccSupport/promise-async.js b/src/api/eosjsEccSupport/promise-async.js deleted file mode 100644 index cd7b622e..00000000 --- a/src/api/eosjsEccSupport/promise-async.js +++ /dev/null @@ -1,23 +0,0 @@ - -/** - Convert a synchronous function into a asynchronous one (via setTimeout) - wrapping it in a promise. This does not expect the function to have a - callback paramter. - - @arg {function} func - non-callback function - - @example promiseAsync(myfunction) -*/ -module.exports = func => ( - (...args) => ( - new Promise((resolve, reject) => { - setTimeout(() => { - try { - resolve(func(...args)) - } catch(err) { - reject(err) - } - }) - }) - ) -) diff --git a/src/api/eosjsEccSupport/signature.js b/src/api/eosjsEccSupport/signature.js deleted file mode 100644 index d090ab77..00000000 --- a/src/api/eosjsEccSupport/signature.js +++ /dev/null @@ -1,117 +0,0 @@ -const ecdsa = require('./ecdsa'); -const curve = require('ecurve').getCurveByName('secp256k1'); -const assert = require('assert'); -const BigInteger = require('bigi'); -const keyUtils = require('./key_utils'); -const PrivateKey = require('./key_private'); -const { - PrivateKey: EllipticPrivateKey, - PublicKey: EllipticPublicKey, - Signature: EllipticSignature -} = require('eosjs/dist/eosjs-jssig') -import { JsSignatureProvider } from 'eosjs/dist/eosjs-jssig' -import { ec as ellipticEc } from 'elliptic' - -module.exports = Signature - -function Signature(r, s, i) { - assert.equal(r != null, true, 'Missing parameter'); - assert.equal(s != null, true, 'Missing parameter'); - assert.equal(i != null, true, 'Missing parameter'); - - let signatureCache - - function toBuffer() { - var buf; - buf = new Buffer(65); - buf.writeUInt8(i, 0); - r.toBuffer(32).copy(buf, 1); - s.toBuffer(32).copy(buf, 33); - return buf; - }; - - function toString() { - if(signatureCache) { - return signatureCache - } - signatureCache = 'SIG_K1_' + keyUtils.checkEncode(toBuffer(), 'K1') - return signatureCache - } - - return { - r, s, i, - toString, - toBuffer, - } -} - -/** - Sign a buffer of exactally 32 bytes in size (sha256(text)) - - @arg {string|Buffer} dataSha256 - 32 byte buffer or string - @arg {wif|PrivateKey} privateKey - @arg {String} [encoding = 'hex'] - dataSha256 encoding (if string) - - @return {Signature} -*/ -Signature.signHash = function(dataSha256, privateKey, encoding = 'hex') { - if(typeof dataSha256 === 'string') { - dataSha256 = Buffer.from(dataSha256, encoding) - } - if( dataSha256.length !== 32 || ! Buffer.isBuffer(dataSha256) ) - throw new Error("dataSha256: 32 byte buffer requred") - - const ellipticKPriv = EllipticPrivateKey.fromString(privateKey).toElliptic() - const KPrivAsString = EllipticPrivateKey.fromString(privateKey).toString() - console.info('KPrivAsString:', KPrivAsString) - // console.info('KPrivAsString.toString:', KPrivAsString.toString()) - // console.info('ellipticKPriv:', ellipticKPriv) - // console.info('ellipticKPriv:', ellipticKPriv.priv) - const ellipticKPrivAsBuffer = ellipticKPriv.priv.toBuffer() - console.info('ellipticKPriv.toBuffer:', ellipticKPrivAsBuffer) - const ellipticKPrivDAsBuffer = ellipticKPriv.priv.toBuffer() - // console.info('ellipticKPriv:', Buffer.from(ellipticKPriv)) - privateKey = PrivateKey(privateKey) - // console.info('privateKey:', privateKey) - // console.info('privateKey.d:', privateKey.d) - console.info('privateKey.d.toBuffer :', ellipticKPrivDAsBuffer) - assert(privateKey, 'privateKey required') - // console.info('privateKey as it goes into JsSignatureProvider', privateKey) - const publicKey = new JsSignatureProvider([KPrivAsString]).availableKeys[0] - console.info('pubicKey:', publicKey) - const ellipticPrivateKeyAsBigInteger = BigInteger.fromBuffer(ellipticKPrivDAsBuffer) - // console.info('\n\nellipticPrivateKeyAsBigInteger:', ellipticPrivateKeyAsBigInteger) - // console.info('privateKey.d :', privateKey.d) - - // console.info('ecc.privKey.Q:') - // console.info(privateKey.toPublic().Q) - // console.info('ellipticPubKey:') - // console.info(EllipticPublicKey.fromString(publicKey).toElliptic()) - - const ec = new ellipticEc('secp256k1') - var der, e, ecsignature, i, lenR, lenS, nonce; - i = null; - nonce = 0; - e = BigInteger.fromBuffer(dataSha256); - while (true) { - ecsignature = ecdsa.sign(curve, dataSha256, ellipticPrivateKeyAsBigInteger, nonce++); - der = ecsignature.toDER(); - lenR = der[3]; - lenS = der[5 + lenR]; - if (lenR === 32 && lenS === 32) { - i = ecdsa.calcPubKeyRecoveryParam(curve, e, ecsignature, privateKey.toPublic().Q); - console.info('ecsignature:', ecsignature) - // console.info('ellipticSig.constructor:', EllipticSignature.fromBuffer(ecsignature.toDER())) - // const iAlt = ec.getKeyRecoveryParam(dataSha256, Buffer.from(ecsignature.toDER()), publicKey) - // console.info('i, iAlt:') - // console.info(i, iAlt) - i += 4; // compressed - i += 27; // compact // 24 or 27 :( forcing odd-y 2nd key candidate) - break; - } - if (nonce % 10 === 0) { - console.log("WARN: " + nonce + " attempts to find canonical signature"); - } - } - return Signature(ecsignature.r, ecsignature.s, i); -}; diff --git a/src/api/index.js b/src/api/index.js index f84cc330..d7c4ce5d 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -1,8 +1,7 @@ import { Router, json } from 'express' -import { eccSignHash } from './eosjsEccReplacement' import { ec as EC } from 'elliptic' import {Serialize, Numeric} from 'eosjs' -import { JsSignatureProvider } from 'eosjs/dist/eosjs-jssig' +import { JsSignatureProvider, PrivateKey, PublicKey, Signature } from 'eosjs/dist/eosjs-jssig' import base64url from 'base64url' import cbor from 'cbor' import util from 'util'; @@ -61,35 +60,35 @@ export default () => { namePairBuffer.pushName(name) namePairBuffer.pushName(propertyName) console.info('////////////-----------') - console.info('eosioPubkey:', users[name].eosioPubkey.join(',')) + //console.info('eosioPubkey:', users[name].eosioPubkey.join(',')) const sigData = Buffer.concat( [ namePairBuffer.asUint8Array(), users[name].eosioPubkey ] ) const sigDigest = Buffer.from(ec.hash().update(sigData).digest()) - const challenge = eccSignHash(sigDigest, private_key_wif).toString() - console.info('challenge:', challenge) + + const kPrivElliptic = PrivateKey.fromString(private_key_wif).toElliptic(ec) + const ellipticSignature = kPrivElliptic.sign(sigDigest) + const signature = Signature.fromElliptic(ellipticSignature).toString() + console.info('signature:', signature) console.info('\\\\\\\\\\\\-----------') const userKey = Numeric.publicKeyToString({ type: Numeric.KeyType.wa, data: users[name].eosioPubkey.slice(1), }) - const sigProvider = new JsSignatureProvider([private_key_wif]) - const serverKey = sigProvider.getAvailableKeys().then((pubKeys) => { - const serverKey = pubKeys[0] - const credentialIDStr = base64url.encode(users[name].credentialID) + const serverKey = PublicKey.fromElliptic(kPrivElliptic).toString() + const credentialIDStr = base64url.encode(users[name].credentialID) - console.info('result:', { - 'status': 'ok', - 'userKey' : userKey, - 'serverKey' : serverKey, - 'serverAuth': challenge, - 'credentialID': credentialIDStr - }) - resp.json({ - 'status': 'ok', - 'userKey' : userKey, - 'serverKey' : serverKey, - 'serverAuth': challenge, - 'credentialID': credentialIDStr - }) + console.info('result:', { + 'status': 'ok', + 'userKey' : userKey, + 'serverKey' : serverKey, + 'serverAuth': signature, + 'credentialID': credentialIDStr + }) + resp.json({ + 'status': 'ok', + 'userKey' : userKey, + 'serverKey' : serverKey, + 'serverAuth': signature, + 'credentialID': credentialIDStr }) }) diff --git a/yarn.lock b/yarn.lock index 43df1b34..57f62874 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3784,10 +3784,10 @@ eosjs@20.0.0, eosjs@^20.0.2-a53eecb.0: eosjs-ecc "4.0.4" text-encoding "0.7.0" -eosjs@20.0.3-cd2fb09.0: - version "20.0.3-cd2fb09.0" - resolved "https://registry.yarnpkg.com/eosjs/-/eosjs-20.0.3-cd2fb09.0.tgz#d6281fe6cd849ed4531e3029a2f55fc7a907817d" - integrity sha512-FuMr/4THF3nIXXOBf5EniGCipQta7amdXv4efpGTXJZRR6vJ3QJAXu8kaSy1mmyKbUAPo56rudrjggTNY35OJQ== +eosjs@^20.0.4-e2c667e.0: + version "20.0.4-e2c667e.0" + resolved "https://registry.yarnpkg.com/eosjs/-/eosjs-20.0.4-e2c667e.0.tgz#8815a8d2ae476aac4dc3502d976c0b20cb931c3a" + integrity sha512-pL2fudVFvYv24VIX7QIWjFKFcXV+xzKrzmyyCr5UFpaDwKdxhg/Q/jtq6BSDraEapyctNnVS1sl6XLBTXr85KQ== dependencies: babel-runtime "6.26.0" text-encoding "0.7.0" From 73e89fe2739bd478537c0d44381b7eb4c41a469e Mon Sep 17 00:00:00 2001 From: Jon La Marr Date: Thu, 26 Dec 2019 14:59:59 -0500 Subject: [PATCH 44/76] remove ecc --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index 03ccbe06..5dbb3e57 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,6 @@ "ecurve": "^1.0.6", "elliptic": "^6.5.1", "eosjs": "20.0.4-e2c667e.0", - "eosjs-ecc": "4.0.4", "focus-visible": "4.1.5", "prop-types": "15.7.2", "randombytes": "^2.1.0", From 2019e3db25318f4c2f3e72534ec5adcb6232d63d Mon Sep 17 00:00:00 2001 From: Jon La Marr Date: Thu, 26 Dec 2019 15:21:21 -0500 Subject: [PATCH 45/76] Remove comments --- default.env | 4 +-- package.json | 2 +- src/api/index.js | 31 ++++----------------- src/components/results/property/Property.js | 5 ---- src/utils/transaction.js | 3 +- src/utils/webauthn.js | 10 +++---- yarn.lock | 11 +------- 7 files changed, 15 insertions(+), 51 deletions(-) diff --git a/default.env b/default.env index 9a8a9a34..9a11a12a 100644 --- a/default.env +++ b/default.env @@ -3,9 +3,9 @@ NODE_PATH=src # Chain REACT_APP_CHAIN_ID=cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f -REACT_APP_RPC_PROTOCOL=http +REACT_APP_RPC_PROTOCOL=https REACT_APP_RPC_HOST=localhost REACT_APP_RPC_PORT=8888 # Server -API_SERVER_PRIVATE_KEY=5Jh6jf9g1UzcWrMMsgqd5GrTCgzeKkh5yT7EUZbiU7wB7k4Ayx1 \ No newline at end of file +API_SERVER_PRIVATE_KEY=5Jh6jf9g1UzcWrMMsgqd5GrTCgzeKkh5yT7EUZbiU7wB7k4Ayx1 diff --git a/package.json b/package.json index 5dbb3e57..a1e90414 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "ual-token-pocket": "0.1.2" }, "resolutions": { - "eosjs": "^20.0.2-a53eecb.0" + "eosjs": "20.0.4-e2c667e.0" }, "scripts": { "start": "node scripts/copyDefaultEnv.js && react-scripts start", diff --git a/src/api/index.js b/src/api/index.js index 4498f955..37efd5e7 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -7,7 +7,7 @@ import cbor from 'cbor' import util from 'util'; export default () => { - const ec = new EC('p256') + const ec = new EC('secp256k1') const private_key_wif = process.env.API_SERVER_PRIVATE_KEY const api = Router() @@ -21,11 +21,8 @@ export default () => { const COSEPublicKeyBuffer = authdata.slice( 55 + credentialIDLength ) const COSEPublicKey = cbor.decodeFirstSync(COSEPublicKeyBuffer) - console.log(COSEPublicKey); const x = COSEPublicKey.get(-2) const y = COSEPublicKey.get(-3) - console.log(Buffer.from(x).toString('hex')) - console.log(Buffer.from(y).toString('hex')) const rpId = 'localhost' const presence = ((flags)=>{ @@ -45,30 +42,25 @@ export default () => { ser.pushString(rpId) const eosioPubkey = ser.asUint8Array() - console.log(Buffer.from(eosioPubkey).toString('hex')) return {eosioPubkey, credentialID} } const users = {} api.post( '/generateRentChallenge', json(), (req, resp) => { - console.info('generateRentChallenge().top') - console.info('req:', req.body) const name = req.body.accountName const propertyName = req.body.propertyName const namePairBuffer = new Serialize.SerialBuffer({textEncoder: new util.TextEncoder(), textDecoder: new util.TextDecoder()}) namePairBuffer.pushName(name) namePairBuffer.pushName(propertyName) - console.info('////////////-----------') - //console.info('eosioPubkey:', users[name].eosioPubkey.join(',')) + const sigData = Buffer.concat( [ namePairBuffer.asUint8Array(), users[name].eosioPubkey ] ) const sigDigest = Buffer.from(ec.hash().update(sigData).digest()) - const kPrivElliptic = PrivateKey.fromString(private_key_wif).toElliptic(ec) + const kPrivElliptic = PrivateKey.fromString(private_key_wif).toElliptic(ec); const ellipticSignature = kPrivElliptic.sign(sigDigest) const signature = Signature.fromElliptic(ellipticSignature).toString() - console.info('signature:', signature) - console.info('\\\\\\\\\\\\-----------') + const userKey = Numeric.publicKeyToString({ type: Numeric.KeyType.wa, data: users[name].eosioPubkey.slice(1), @@ -76,13 +68,6 @@ export default () => { const serverKey = PublicKey.fromElliptic(kPrivElliptic).toString() const credentialIDStr = base64url.encode(users[name].credentialID) - console.info('result:', { - 'status': 'ok', - 'userKey' : userKey, - 'serverKey' : serverKey, - 'serverAuth': signature, - 'credentialID': credentialIDStr - }) resp.json({ 'status': 'ok', 'userKey' : userKey, @@ -93,18 +78,12 @@ export default () => { }) api.post( '/enroll', json(), (req, resp) => { - console.info('enroll().top') - // Note there is no verfication of this data as it is out of scope for this demo - // const name = req.body.accountName - console.info('name:', name) const webauthnPublicKey = req.body.webauthnPublicKey - console.info('webauthnPublicKey:', webauthnPublicKey) users[name] = decodeWebauthnPublicKey(webauthnPublicKey) - console.info('publicKey:', users[name].eosioPubkey.join(',')) resp.json({ 'status': 'ok' }) }) return api -} \ No newline at end of file +} diff --git a/src/components/results/property/Property.js b/src/components/results/property/Property.js index cf209055..54dcbbec 100644 --- a/src/components/results/property/Property.js +++ b/src/components/results/property/Property.js @@ -50,7 +50,6 @@ class Property extends React.Component { } onRent = async () => { - console.info('onRent().top') const { login, displayError } = this.props const { activeUser } = this.context if ( activeUser ) { @@ -61,13 +60,9 @@ class Property extends React.Component { this.setState({ loading: true }) try { const accountName = await activeUser.getAccountName() - console.info('accountName:', accountName) const rentChallenge = await generateRentChallenge(accountName, "aproperty") - console.info('rentChallenge:', rentChallenge) const userAuth = await signRentChallenge(accountName, "aproperty", rentChallenge) - console.info('userAuth:', userAuth) const transaction = generateRentTransaction(accountName, "aproperty", rentChallenge.serverKey, rentChallenge.userKey, rentChallenge.serverAuth, userAuth) - console.info('transactionn:', transaction) // The activeUser.signTransaction will propose the passed in transaction to the logged in Authenticator await activeUser.signTransaction(transaction, transactionConfig) this.setState({rented: true}) diff --git a/src/utils/transaction.js b/src/utils/transaction.js index 8efe2450..4b74a171 100644 --- a/src/utils/transaction.js +++ b/src/utils/transaction.js @@ -33,8 +33,7 @@ export const generateRentTransaction = (accountName, propertyName, serverKey, us authorization: [{ actor: accountName, permission: 'active' - } - ], + }], data: { user: accountName, property: propertyName, diff --git a/src/utils/webauthn.js b/src/utils/webauthn.js index 9f2c6024..21b12613 100644 --- a/src/utils/webauthn.js +++ b/src/utils/webauthn.js @@ -22,7 +22,7 @@ const decodeWebauthnSignature = (assertion, key) => { throw new Error('Signature has an r or s that is too big') return new Uint8Array(a) } - + const der = new Serialize.SerialBuffer({ array: new Uint8Array(assertion.signature) }) if (der.get() !== 0x30) throw new Error('Signature missing DER prefix') @@ -40,19 +40,19 @@ const decodeWebauthnSignature = (assertion, key) => { const signedData = Buffer.concat([Buffer.from(assertion.authenticatorData), Buffer.from(e.hash().update(Buffer.from(assertion.clientDataJSON)).digest())]) const hash = Buffer.from(e.hash().update(signedData).digest()) const recid = e.getKeyRecoveryParam(hash, Buffer.from(assertion.signature), pubKey) - + const sigData = new Serialize.SerialBuffer() sigData.push(recid + 27 + 4) sigData.pushArray(r) sigData.pushArray(s) sigData.pushBytes(new Uint8Array(assertion.authenticatorData)) sigData.pushBytes(new Uint8Array(assertion.clientDataJSON)) - + const sig = Numeric.signatureToString({ type: Numeric.KeyType.wa, data: sigData.asUint8Array().slice(), }) - console.log(sig) + return sig; } @@ -151,4 +151,4 @@ export const signRentChallenge = async(accountName, propertyName, challenge) => const webauthnResp = await navigator.credentials.get(getCredentialOptions) return decodeWebauthnSignature(webauthnResp.response, challenge.userKey) -} \ No newline at end of file +} diff --git a/yarn.lock b/yarn.lock index 57f62874..78a7786a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3775,16 +3775,7 @@ eosjs-window-message-signature-provider-interface@0.1.3: dependencies: eosjs-signature-provider-interface "0.1.2" -eosjs@20.0.0, eosjs@^20.0.2-a53eecb.0: - version "20.0.2-d85dbee.0" - resolved "https://registry.yarnpkg.com/eosjs/-/eosjs-20.0.2-d85dbee.0.tgz#a6db4def0bcb6a45aaf98b0cc656e006bb283bd9" - integrity sha512-EVFZfwBuvszlKnNeococEIyIoOMPFmcm53NZX06x+DywUjtW3SdEsx9VjTVddua0DIqDmEkRSSesSJzKhWoUTg== - dependencies: - babel-runtime "6.26.0" - eosjs-ecc "4.0.4" - text-encoding "0.7.0" - -eosjs@^20.0.4-e2c667e.0: +eosjs@20.0.0, eosjs@20.0.4-e2c667e.0: version "20.0.4-e2c667e.0" resolved "https://registry.yarnpkg.com/eosjs/-/eosjs-20.0.4-e2c667e.0.tgz#8815a8d2ae476aac4dc3502d976c0b20cb931c3a" integrity sha512-pL2fudVFvYv24VIX7QIWjFKFcXV+xzKrzmyyCr5UFpaDwKdxhg/Q/jtq6BSDraEapyctNnVS1sl6XLBTXr85KQ== From beaff38b174ff708efb2e10e793d22d20ab3947d Mon Sep 17 00:00:00 2001 From: Bradley Hart Date: Thu, 26 Dec 2019 15:23:01 -0500 Subject: [PATCH 46/76] gitpod eosio v2.0.0-rc2 --- .gitpod.dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitpod.dockerfile b/.gitpod.dockerfile index c9bdfed4..c6363d2c 100644 --- a/.gitpod.dockerfile +++ b/.gitpod.dockerfile @@ -8,7 +8,7 @@ RUN echo "INSTALLING EOSIO AND CDT" \ && apt-get install -y wget sudo curl \ && wget https://github.com/EOSIO/eosio.cdt/releases/download/v1.6.1/eosio.cdt_1.6.1-1_amd64.deb \ && apt-get update && sudo apt install -y --allow-downgrades ./eosio.cdt_1.6.1-1_amd64.deb \ - && wget https://github.com/EOSIO/eos/releases/download/v1.7.3/eosio_1.7.3-1-ubuntu-18.04_amd64.deb \ - && apt-get update && sudo apt install -y ./eosio_1.7.3-1-ubuntu-18.04_amd64.deb \ - && rm ./eosio_1.7.3-1-ubuntu-18.04_amd64.deb \ + && wget https://github.com/EOSIO/eos/releases/download/v2.0.0-rc2/eosio_2.0.0-rc2-ubuntu-18.04_amd64.deb \ + && apt-get update && sudo apt install -y ./eosio_2.0.0-rc2-ubuntu-18.04_amd64.deb \ + && rm ./eosio_2.0.0-rc2-ubuntu-18.04_amd64.deb \ && rm ./eosio.cdt_1.6.1-1_amd64.deb From ec5f32ecd5952f17196203a2a93adb88f4c5821a Mon Sep 17 00:00:00 2001 From: Bradley Hart Date: Thu, 26 Dec 2019 15:43:07 -0500 Subject: [PATCH 47/76] contracts version upgrade --- eosio/scripts/deploy_contracts.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/eosio/scripts/deploy_contracts.sh b/eosio/scripts/deploy_contracts.sh index 1084d0e3..3de3ca5b 100755 --- a/eosio/scripts/deploy_contracts.sh +++ b/eosio/scripts/deploy_contracts.sh @@ -220,13 +220,13 @@ if [ ! -z "$RUNNING_IN_GITPOD" ]; then mkdir -p $ROOT_DIR/downloads echo "INSTALLING EOSIO.CONTRACTS" - wget https://github.com/EOSIO/eosio.contracts/archive/v1.6.0.tar.gz + wget https://github.com/EOSIO/eosio.contracts/archive/v1.7.0.tar.gz mkdir -p $ROOT_DIR/downloads/eosio.contracts mkdir -p $CONTRACTS_DIR/eosio.contracts - tar xvzf ./v1.6.0.tar.gz -C $ROOT_DIR/downloads/eosio.contracts - mv $ROOT_DIR/downloads/eosio.contracts/eosio.contracts-1.6.0/* $CONTRACTS_DIR/eosio.contracts + tar xvzf ./v1.7.0.tar.gz -C $ROOT_DIR/downloads/eosio.contracts + mv $ROOT_DIR/downloads/eosio.contracts/eosio.contracts-1.7.0/* $CONTRACTS_DIR/eosio.contracts rm -rf $ROOT_DIR/downloads/eosio.contracts - rm ./v1.6.0.tar.gz + rm ./v1.7.0.tar.gz echo "INSTALLING EOSIO.ASSERT CONTRACT" wget https://github.com/EOSIO/eosio.assert/archive/v0.1.0.tar.gz From 3e58bab4d59afc5e0cfb4d3fb729a652c4ef3d87 Mon Sep 17 00:00:00 2001 From: Jon La Marr Date: Thu, 26 Dec 2019 15:45:10 -0500 Subject: [PATCH 48/76] Add https script for now --- README.md | 11 ++++++++--- package.json | 1 + 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 039dc7f1..f2d21aaf 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # 🌴 Tropical Example -Tropical Example is a mock application for renting properties. It will be referenced throughout this guide as an example for application developers to start building secure applications with a good user experience on the EOSIO blockchain. +Tropical Example is a mock application for renting properties. It will be referenced throughout this guide as an example for application developers to start building secure applications with a good user experience on the EOSIO blockchain. ![EOSIO Labs](https://img.shields.io/badge/EOSIO-Labs-5cb3ff.svg) @@ -12,7 +12,7 @@ EOSIO Labs repositories are experimental. Developers in the community are encour ### Try it out in Gitpod ### Gitpod [launches the app](https://gitpod.io/#https://github.com/EOSIO/tropical-example-web-app) for you. It starts the required blockchain in the background, launches the web server, and opens a preview window. -NOTES: +NOTES: 1) There are several times during startup it might look like startup hangs, namely... near the end of the docker build, once the IDE comes up, and then once the preview shows. 2) Sometimes when Gitpod launches the webapp preview, it does so prematurely. Just click the small refresh circular arrow icon in the top left of the preview window. 3) Gitpod generates a dynamic URL for the browser to access the app from. This URL is needed in numerous parts of the app, so note that there is code in this repo specifically meant for Gitpod compatibility. A comment has been added in those locations to point it out. @@ -33,7 +33,7 @@ The following open source repositories are utilized in Tropical Example: * Using the [Universal Authenticator Library (UAL)](https://github.com/EOSIO/universal-authenticator-library/) for quick and easy integration with multiple authentication providers (wallets). * Increasing the security and transparency of your application by following the [Manifest Specification](https://github.com/EOSIO/manifest-spec). * Displaying human readable Ricardian Contracts of your proposed EOSIO actions by following the [Ricardian Specification](https://github.com/EOSIO/ricardian-spec). - + ## Table of Contents - [Universal Authenticator Library (UAL)](#universal-authenticator-library-ual) - [Installation](#installation) @@ -431,6 +431,11 @@ docker-compose down eosio docker-compose exec eosio /bin/bash ``` +# Add other info somewhere in here +## How to use WebAuthn +### Need for SSL ++ +### Need for enabling chrome://flags/#allow-insecure-localhost + ## Links - [Universal Authenticator Library (UAL)](https://github.com/EOSIO/universal-authenticator-library) - [Manifest Specification](https://github.com/EOSIO/manifest-spec) diff --git a/package.json b/package.json index a1e90414..2f097cb2 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ }, "scripts": { "start": "node scripts/copyDefaultEnv.js && react-scripts start", + "start-https": "node scripts/copyDefaultEnv.js && HTTPS=true react-scripts start", "startInGitpod": "node scripts/copyDefaultEnv.js && REACT_APP_IS_GITPOD=true react-scripts start", "build": "react-scripts build", "up": "docker-compose up", From 01d26656cdcb769827b1831447fba905d55299bf Mon Sep 17 00:00:00 2001 From: Jon La Marr Date: Thu, 26 Dec 2019 16:37:47 -0500 Subject: [PATCH 49/76] Add error message when trying to rent, but on http --- README.md | 3 +-- default.env | 1 - src/components/results/property/Property.js | 9 +++++++-- src/index.js | 2 +- src/utils/webauthn.js | 6 +++++- 5 files changed, 14 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index f2d21aaf..b1e57fa5 100644 --- a/README.md +++ b/README.md @@ -114,7 +114,7 @@ const chain = { chainId: process.env.REACT_APP_CHAIN_ID, rpcEndpoints: [ { - protocol: process.env.REACT_APP_RPC_PROTOCOL, + protocol: window.location.protocol.replace(/:$/, ''), host: process.env.REACT_APP_RPC_HOST, port: process.env.REACT_APP_RPC_PORT, }, @@ -373,7 +373,6 @@ Tropical Example uses an environment configuration for the Chain and RPC endpoin ``` REACT_APP_CHAIN_ID=cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f -REACT_APP_RPC_PROTOCOL=http REACT_APP_RPC_HOST=localhost REACT_APP_RPC_PORT=8888 ``` diff --git a/default.env b/default.env index 9a11a12a..ec66b6a0 100644 --- a/default.env +++ b/default.env @@ -3,7 +3,6 @@ NODE_PATH=src # Chain REACT_APP_CHAIN_ID=cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f -REACT_APP_RPC_PROTOCOL=https REACT_APP_RPC_HOST=localhost REACT_APP_RPC_PORT=8888 diff --git a/src/components/results/property/Property.js b/src/components/results/property/Property.js index 54dcbbec..1018ffd4 100644 --- a/src/components/results/property/Property.js +++ b/src/components/results/property/Property.js @@ -6,7 +6,7 @@ import './Property.scss' import PropertyImage from 'components/results/property/PropertyImage' import { generateTransaction, generateRentTransaction, transactionConfig } from 'utils/transaction' -import { generateRentChallenge, signRentChallenge } from 'utils/webauthn' +import { generateRentChallenge, signRentChallenge, canUseWebAuthN } from 'utils/webauthn' import { onKeyUpEnter } from 'utils/keyPress' import likeSvg from 'assets/images/heart/heart.svg' @@ -26,6 +26,7 @@ class Property extends React.Component { loading: false, liked: false, rented: false, + canRent: canUseWebAuthN() } onLike = async () => { @@ -53,7 +54,10 @@ class Property extends React.Component { const { login, displayError } = this.props const { activeUser } = this.context if ( activeUser ) { - if (!this.props.enrolled) { + if (!this.state.canRent) { + displayError(new Error('You need to use HTTPS in order to rent.')) + return; + } else if (!this.props.enrolled) { displayError(new Error('No 2FA enrolled 2FA: Please enroll in 2FA (under Login/Profile menu at the top right) to Rent.')) return; } @@ -98,6 +102,7 @@ class Property extends React.Component { role='button' onClick={this.onRent} onKeyUp={event => onKeyUpEnter(event, this.onRent)} + disabled={!this.state.canRent} > rent {rented && !loading ? 'Renting' : 'Rent'} diff --git a/src/index.js b/src/index.js index f2183f95..94f14361 100644 --- a/src/index.js +++ b/src/index.js @@ -29,7 +29,7 @@ const chain = { host: window.location.host, port: '', } : { - protocol: process.env.REACT_APP_RPC_PROTOCOL, + protocol: window.location.protocol.replace(/:$/, ''), host: process.env.REACT_APP_RPC_HOST, port: process.env.REACT_APP_RPC_PORT, }, diff --git a/src/utils/webauthn.js b/src/utils/webauthn.js index 21b12613..0ca59d6c 100644 --- a/src/utils/webauthn.js +++ b/src/utils/webauthn.js @@ -52,7 +52,7 @@ const decodeWebauthnSignature = (assertion, key) => { type: Numeric.KeyType.wa, data: sigData.asUint8Array().slice(), }) - + return sig; } @@ -152,3 +152,7 @@ export const signRentChallenge = async(accountName, propertyName, challenge) => const webauthnResp = await navigator.credentials.get(getCredentialOptions) return decodeWebauthnSignature(webauthnResp.response, challenge.userKey) } + +export const canUseWebAuthN = () => { + return window.location.protocol.replace(/:$/, '') === 'https' +} From 464d1e43153e5a2c5e4daf2537375f4ce88de3e6 Mon Sep 17 00:00:00 2001 From: Jon La Marr Date: Thu, 26 Dec 2019 16:38:24 -0500 Subject: [PATCH 50/76] New error message --- src/components/results/property/Property.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/results/property/Property.js b/src/components/results/property/Property.js index 1018ffd4..c516c0b9 100644 --- a/src/components/results/property/Property.js +++ b/src/components/results/property/Property.js @@ -55,7 +55,7 @@ class Property extends React.Component { const { activeUser } = this.context if ( activeUser ) { if (!this.state.canRent) { - displayError(new Error('You need to use HTTPS in order to rent.')) + displayError(new Error('HTTPS is required to use 2FA.')) return; } else if (!this.props.enrolled) { displayError(new Error('No 2FA enrolled 2FA: Please enroll in 2FA (under Login/Profile menu at the top right) to Rent.')) From 7432b23e4e178458d8771a13e051420fa1b9fe53 Mon Sep 17 00:00:00 2001 From: Jon La Marr Date: Thu, 26 Dec 2019 16:59:18 -0500 Subject: [PATCH 51/76] Revert to use --- README.md | 3 ++- src/index.js | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b1e57fa5..f2d21aaf 100644 --- a/README.md +++ b/README.md @@ -114,7 +114,7 @@ const chain = { chainId: process.env.REACT_APP_CHAIN_ID, rpcEndpoints: [ { - protocol: window.location.protocol.replace(/:$/, ''), + protocol: process.env.REACT_APP_RPC_PROTOCOL, host: process.env.REACT_APP_RPC_HOST, port: process.env.REACT_APP_RPC_PORT, }, @@ -373,6 +373,7 @@ Tropical Example uses an environment configuration for the Chain and RPC endpoin ``` REACT_APP_CHAIN_ID=cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f +REACT_APP_RPC_PROTOCOL=http REACT_APP_RPC_HOST=localhost REACT_APP_RPC_PORT=8888 ``` diff --git a/src/index.js b/src/index.js index 94f14361..f2183f95 100644 --- a/src/index.js +++ b/src/index.js @@ -29,7 +29,7 @@ const chain = { host: window.location.host, port: '', } : { - protocol: window.location.protocol.replace(/:$/, ''), + protocol: process.env.REACT_APP_RPC_PROTOCOL, host: process.env.REACT_APP_RPC_HOST, port: process.env.REACT_APP_RPC_PORT, }, From 33f2b3a73d00728308d64e09f070e3d82d0e8895 Mon Sep 17 00:00:00 2001 From: Jon La Marr Date: Thu, 26 Dec 2019 16:59:24 -0500 Subject: [PATCH 52/76] revert default file --- default.env | 1 + 1 file changed, 1 insertion(+) diff --git a/default.env b/default.env index ec66b6a0..ecbe54ea 100644 --- a/default.env +++ b/default.env @@ -3,6 +3,7 @@ NODE_PATH=src # Chain REACT_APP_CHAIN_ID=cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f +REACT_APP_RPC_PROTOCOL=http REACT_APP_RPC_HOST=localhost REACT_APP_RPC_PORT=8888 From 1d110da72987fa182d65ed64339ec26afd8a137a Mon Sep 17 00:00:00 2001 From: Jon La Marr Date: Thu, 26 Dec 2019 17:06:09 -0500 Subject: [PATCH 53/76] REvert --- eosio/scripts/deploy_contracts.sh | 12 +----------- src/api/index.js | 2 +- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/eosio/scripts/deploy_contracts.sh b/eosio/scripts/deploy_contracts.sh index 97b3235c..98506bfc 100755 --- a/eosio/scripts/deploy_contracts.sh +++ b/eosio/scripts/deploy_contracts.sh @@ -37,8 +37,6 @@ GITPOD_WORKSPACE_ROOT="/workspace/tropical-example-web-app" WALLET_DIR="$ROOT_DIR/wallet/" CONFIG_DIR="$ROOT_DIR/bin/config-dir" -echo "{\"includes\": [],\"appenders\": [{\"name\": \"consoleout\",\"type\": \"console\",\"args\": {\"stream\": \"std_out\",\"level_colors\": [{\"level\": \"debug\",\"color\": \"green\"},{\"level\": \"warn\",\"color\": \"brown\"},{\"level\": \"error\",\"color\": \"red\"}]},\"enabled\": true}],\"loggers\": [{\"name\": \"default\",\"level\": \"debug\",\"enabled\": true,\"additivity\": false,\"appenders\": [\"consoleout\"]}]}" > /opt/eosio/bin/config-dir/logging.json - function start_wallet { echo "Starting the wallet" rm -rf $WALLET_DIR @@ -188,7 +186,6 @@ if [ -z "$NODEOS_RUNNING" ]; then nodeos -e -p eosio \ --data-dir $BLOCKCHAIN_DATA_DIR \ --config-dir $BLOCKCHAIN_CONFIG_DIR \ - --logconf $BLOCKCHAIN_CONFIG_DIR/logging.json \ --http-validate-host=false \ --plugin eosio::producer_api_plugin \ --plugin eosio::chain_api_plugin \ @@ -256,13 +253,6 @@ create_account eosio.assert $SYSTEM_ACCOUNT_PUBLIC_KEY $SYSTEM_ACCOUNT_PRIVATE_K deploy_system_contract eosio.assert eosio.assert eosio.assert # eosio.bios -deploy_system_contract eosio.contracts-1.8.3/contracts eosio.bios eosio - -activate_feature "299dcb6af692324b899b39f16d5a530a33062804e41f09dc97e9f156b4476707" - -wget https://github.com/EOSIO/eosio.cdt/releases/download/v1.7.0-rc1/eosio.cdt_1.7.0-rc1-ubuntu-18.04_amd64.deb -apt-get update && sudo apt install -y ./eosio.cdt_1.7.0-rc1-ubuntu-18.04_amd64.deb - deploy_system_contract eosio.contracts/contracts eosio.bios eosio # eosio.token @@ -310,4 +300,4 @@ if [ -z "$RUNNING_IN_GITPOD" ]; then kill %1 fg %1 fi -fi \ No newline at end of file +fi diff --git a/src/api/index.js b/src/api/index.js index 37efd5e7..d1fe7414 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -57,7 +57,7 @@ export default () => { const sigData = Buffer.concat( [ namePairBuffer.asUint8Array(), users[name].eosioPubkey ] ) const sigDigest = Buffer.from(ec.hash().update(sigData).digest()) - const kPrivElliptic = PrivateKey.fromString(private_key_wif).toElliptic(ec); + const kPrivElliptic = PrivateKey.fromString(private_key_wif).toElliptic(ec) const ellipticSignature = kPrivElliptic.sign(sigDigest) const signature = Signature.fromElliptic(ellipticSignature).toString() From 7189d048ef832d74b4b7fd483535ccf27d971c24 Mon Sep 17 00:00:00 2001 From: Jon La Marr Date: Fri, 27 Dec 2019 11:13:21 -0500 Subject: [PATCH 54/76] Updates --- eosio/Dockerfile | 16 +++++----------- package.json | 2 +- src/components/results/property/Property.js | 1 - yarn.lock | 10 +++++++++- 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/eosio/Dockerfile b/eosio/Dockerfile index d73dc589..b809a5cb 100644 --- a/eosio/Dockerfile +++ b/eosio/Dockerfile @@ -9,18 +9,12 @@ RUN apt-get update && sudo apt install -y ./eosio_2.0.0-rc2-ubuntu-18.04_amd64.d RUN echo "INSTALLING CONTRACTS" RUN mkdir -p "/opt/eosio/bin/contracts" -RUN echo "INSTALLING EOSIO.CONTRACTS v1.8.3" -RUN wget https://github.com/EOSIO/eosio.contracts/archive/v1.8.3.tar.gz -RUN mkdir -p /eosio.contracts-1.8.3 -RUN tar xvzf ./v1.8.3.tar.gz -C /eosio.contracts-1.8.3 -RUN mv /eosio.contracts-1.8.3/eosio.contracts-1.8.3 /opt/eosio/bin/contracts - -RUN echo "INSTALLING EOSIO.CONTRACTS v1.9.0-rc4" -RUN wget https://github.com/EOSIO/eosio.contracts/archive/v1.9.0-rc4.tar.gz +RUN echo "INSTALLING EOSIO.CONTRACTS" +RUN wget https://github.com/EOSIO/eosio.contracts/archive/v1.7.0.tar.gz RUN mkdir -p /eosio.contracts -RUN tar xvzf ./v1.9.0-rc4.tar.gz -C /eosio.contracts -RUN mv /eosio.contracts/eosio.contracts-1.9.0-rc4 /opt/eosio/bin/contracts -RUN mv /opt/eosio/bin/contracts/eosio.contracts-1.9.0-rc4 /opt/eosio/bin/contracts/eosio.contracts +RUN tar xvzf ./v1.7.0.tar.gz -C /eosio.contracts +RUN mv /eosio.contracts/eosio.contracts-1.7.0 /opt/eosio/bin/contracts +RUN mv /opt/eosio/bin/contracts/eosio.contracts-1.7.0 /opt/eosio/bin/contracts/eosio.contracts RUN echo "INSTALLING EOSIO.ASSERT CONTRACT" RUN wget https://github.com/EOSIO/eosio.assert/archive/v0.1.0.tar.gz diff --git a/package.json b/package.json index 2f097cb2..3d449332 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "ual-token-pocket": "0.1.2" }, "resolutions": { - "eosjs": "20.0.4-e2c667e.0" + "eosjs": "^20.0.2-a53eecb.0" }, "scripts": { "start": "node scripts/copyDefaultEnv.js && react-scripts start", diff --git a/src/components/results/property/Property.js b/src/components/results/property/Property.js index c516c0b9..c10e0f08 100644 --- a/src/components/results/property/Property.js +++ b/src/components/results/property/Property.js @@ -102,7 +102,6 @@ class Property extends React.Component { role='button' onClick={this.onRent} onKeyUp={event => onKeyUpEnter(event, this.onRent)} - disabled={!this.state.canRent} > rent {rented && !loading ? 'Renting' : 'Rent'} diff --git a/yarn.lock b/yarn.lock index 78a7786a..b921be07 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3775,7 +3775,15 @@ eosjs-window-message-signature-provider-interface@0.1.3: dependencies: eosjs-signature-provider-interface "0.1.2" -eosjs@20.0.0, eosjs@20.0.4-e2c667e.0: +eosjs@20.0.0, eosjs@^20.0.2-a53eecb.0: + version "20.0.2" + resolved "https://registry.yarnpkg.com/eosjs/-/eosjs-20.0.2.tgz#89f8b802703bfc7ee75027cfc2464bfc5ee7f0e1" + integrity sha512-rDITnI4lVGqCFWbjum9Y3wBomFX8tPZjI3ustssECkTHVz72qByq53GnPAtjTMUZqjYwyYj0Q8+CZLWJe4+LmQ== + dependencies: + babel-runtime "6.26.0" + text-encoding "0.7.0" + +eosjs@20.0.4-e2c667e.0: version "20.0.4-e2c667e.0" resolved "https://registry.yarnpkg.com/eosjs/-/eosjs-20.0.4-e2c667e.0.tgz#8815a8d2ae476aac4dc3502d976c0b20cb931c3a" integrity sha512-pL2fudVFvYv24VIX7QIWjFKFcXV+xzKrzmyyCr5UFpaDwKdxhg/Q/jtq6BSDraEapyctNnVS1sl6XLBTXr85KQ== From 7a17e3d348cce310453f7fcab2d2dc38d7a1b2e4 Mon Sep 17 00:00:00 2001 From: Jon La Marr Date: Fri, 27 Dec 2019 11:17:06 -0500 Subject: [PATCH 55/76] Add helpful images --- docs/images/enable-webauthn.png | Bin 0 -> 144117 bytes docs/images/liked-property.png | Bin 0 -> 25431 bytes docs/images/rented-property.png | Bin 0 -> 26544 bytes docs/images/scatter-like-property.png | Bin 0 -> 171640 bytes docs/images/scatter-rent-property.png | Bin 0 -> 182168 bytes docs/images/webauthn-selection.png | Bin 0 -> 57463 bytes 6 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/images/enable-webauthn.png create mode 100644 docs/images/liked-property.png create mode 100644 docs/images/rented-property.png create mode 100644 docs/images/scatter-like-property.png create mode 100644 docs/images/scatter-rent-property.png create mode 100644 docs/images/webauthn-selection.png diff --git a/docs/images/enable-webauthn.png b/docs/images/enable-webauthn.png new file mode 100644 index 0000000000000000000000000000000000000000..71b9d4bced180e8d3c3c1d501898cddc11e5aa80 GIT binary patch literal 144117 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℘&UfEyq^J4PQJJ;{*eZn$* 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 literal 0 HcmV?d00001 diff --git a/docs/images/rented-property.png b/docs/images/rented-property.png new file mode 100644 index 0000000000000000000000000000000000000000..d5270a95f2e9da1b157c59107b2193d414d192b4 GIT binary patch literal 26544 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 literal 0 HcmV?d00001 diff --git a/docs/images/scatter-like-property.png b/docs/images/scatter-like-property.png new file mode 100644 index 0000000000000000000000000000000000000000..1242a5ab138c41694770d24852ed5f2bb452e188 GIT binary patch literal 171640 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 Dv{bh8 literal 0 HcmV?d00001 diff --git a/docs/images/scatter-rent-property.png b/docs/images/scatter-rent-property.png new file mode 100644 index 0000000000000000000000000000000000000000..5c1208aa7b684bf884bdb2a5c953e615749d44a8 GIT binary patch literal 182168 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

    =pOF9F2wf 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

    HG~RNg>1hTlfId%xvr;|MWW-*edXwe=syXW00S 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 Date: Fri, 27 Dec 2019 11:32:50 -0500 Subject: [PATCH 56/76] README changes --- README.md | 29 +++++++++++++++++++++-------- package.json | 2 +- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index f2d21aaf..0963f462 100644 --- a/README.md +++ b/README.md @@ -400,10 +400,9 @@ You can view the contract in the [eosio/contracts directory](https://github.com/ ### Running Frontend -```bash -HTTPS=true yarn start +```yarn startSecure ``` -This command runs the app in the development mode. +This command runs the app in development mode over SSL. You can also run `yarn start` to run the app without SSL. You will need to install a self-signed SSL certificate or enable [allow-insecure-localhost](chrome://flags/#allow-insecure-localhost) if running over SSL in chrome. Open [https://localhost:3000](https://localhost:3000) to view it in the browser. The page will reload if you make edits. @@ -420,6 +419,25 @@ EOS6TWM95TUqpgcjYnvXSK5kBsi6LryWRxmcBaULVTvf5zxkaMYWf 5KkXYBUb7oXrq9cvEYT3HXsoHvaC2957VKVftVRuCy7Z7LyUcQB ``` +### WebAuthn + +After setting up the application and logging in, you can enable WebAuthn if you want to be able to `rent` a property. +![Enabling WebAuthn](docs/images/enable-webauthn.png) + +Once you enable WebAuthn with your choice of hardware, you can browse to the list of properties and select `rent`. Scatter will prompt you to allow this action by authenticating with your hardware. +![Renting A Property](docs/images/scatter-rent-property.png) + +After confirming the transaction, you should now see an indicator that your property has been rented successfully. +![Rented Property](docs/images/rented-property.png) + +#### Other Available Actions + +You can like a property (WebAuthn not required). After browsing to the list of properties and selecting `like`, scatter will prompty you to allow this action. +![Liking A Property](docs/images/scatter-like-property.png) + +After confirming the transaction, you should now see an indicator that your property has been liked successfully. +![Liked Property](docs/images/liked-property.png) + ### Docker Compose Command Reference ```bash @@ -431,11 +449,6 @@ docker-compose down eosio docker-compose exec eosio /bin/bash ``` -# Add other info somewhere in here -## How to use WebAuthn -### Need for SSL ++ -### Need for enabling chrome://flags/#allow-insecure-localhost - ## Links - [Universal Authenticator Library (UAL)](https://github.com/EOSIO/universal-authenticator-library) - [Manifest Specification](https://github.com/EOSIO/manifest-spec) diff --git a/package.json b/package.json index 3d449332..f0f9a6dc 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ }, "scripts": { "start": "node scripts/copyDefaultEnv.js && react-scripts start", - "start-https": "node scripts/copyDefaultEnv.js && HTTPS=true react-scripts start", + "startSecure": "node scripts/copyDefaultEnv.js && HTTPS=true react-scripts start", "startInGitpod": "node scripts/copyDefaultEnv.js && REACT_APP_IS_GITPOD=true react-scripts start", "build": "react-scripts build", "up": "docker-compose up", From c9f465fb1407647f5ae5c26d2fb2d530a4a7c455 Mon Sep 17 00:00:00 2001 From: Jon La Marr Date: Fri, 27 Dec 2019 11:35:36 -0500 Subject: [PATCH 57/76] Update --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0963f462..ac8a8887 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,7 @@ The following open source repositories are utilized in Tropical Example: - [Transactions Errors](#transactions-errors) - [Manifest Specification](#manifest-specification) - [Ricardian Specification](#ricardian-specification) +- [WebAuthn](#web-authn) - [Running Tropical Example](#running-tropical-example) - [Required Tools](#required-tools) - [Setup](#setup-1) @@ -57,6 +58,8 @@ The following open source repositories are utilized in Tropical Example: - [Running Nodeos](#running-nodeos) - [Running Frontend](#running-frontend) - [Login](#login-1) + - [Using WebAuthn](#using-web-authn) + - [Other Available Actions](#other-available-actions) - [Docker Compose Command Reference](#docker-compose-command-reference) - [Links](#links) - [Contributing](#contributing) @@ -419,7 +422,7 @@ EOS6TWM95TUqpgcjYnvXSK5kBsi6LryWRxmcBaULVTvf5zxkaMYWf 5KkXYBUb7oXrq9cvEYT3HXsoHvaC2957VKVftVRuCy7Z7LyUcQB ``` -### WebAuthn +### Using WebAuthn After setting up the application and logging in, you can enable WebAuthn if you want to be able to `rent` a property. ![Enabling WebAuthn](docs/images/enable-webauthn.png) From 0a5bb18d34c3134684707d32e279603fa82927dd Mon Sep 17 00:00:00 2001 From: Jon La Marr Date: Fri, 27 Dec 2019 11:38:28 -0500 Subject: [PATCH 58/76] Update README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ac8a8887..a3abdb0f 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ The following open source repositories are utilized in Tropical Example: - [Running Nodeos](#running-nodeos) - [Running Frontend](#running-frontend) - [Login](#login-1) - - [Using WebAuthn](#using-web-authn) + - [Using WebAuthn](#using-webauthn) - [Other Available Actions](#other-available-actions) - [Docker Compose Command Reference](#docker-compose-command-reference) - [Links](#links) From 7ae3874cbe3d2e94def4809e01396a3dc5ae93fa Mon Sep 17 00:00:00 2001 From: Bradley Hart Date: Fri, 27 Dec 2019 12:59:04 -0500 Subject: [PATCH 59/76] WebAuthn working within GitPod --- .gitpod.yml | 2 +- src/api/index.js | 7 ++++--- src/utils/webauthn.js | 5 +++-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/.gitpod.yml b/.gitpod.yml index f32b3efa..b5d45ba1 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -10,7 +10,7 @@ ports: onOpen: ignore # We open this port because it's the port that nginx is serving and which is federating the other services (web app and chain in this case) - port: 8000 - onOpen: open-preview + onOpen: open-browser - port: 8900 onOpen: ignore - port: 8080 diff --git a/src/api/index.js b/src/api/index.js index d1fe7414..79e77f26 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -11,7 +11,7 @@ export default () => { const private_key_wif = process.env.API_SERVER_PRIVATE_KEY const api = Router() - const decodeWebauthnPublicKey = (webauthnPublicKey) => { + const decodeWebauthnPublicKey = (webauthnPublicKey, hostname) => { const attestationBuffer = base64url.toBuffer(webauthnPublicKey.attestationObject) const attestation = cbor.decodeFirstSync(attestationBuffer) const authdata = attestation.authData @@ -24,7 +24,7 @@ export default () => { const x = COSEPublicKey.get(-2) const y = COSEPublicKey.get(-3) - const rpId = 'localhost' + const rpId = hostname const presence = ((flags)=>{ if (flags & 0x04) return 2 @@ -80,8 +80,9 @@ export default () => { api.post( '/enroll', json(), (req, resp) => { const name = req.body.accountName const webauthnPublicKey = req.body.webauthnPublicKey + const hostname = req.body.hostname - users[name] = decodeWebauthnPublicKey(webauthnPublicKey) + users[name] = decodeWebauthnPublicKey(webauthnPublicKey, hostname) resp.json({ 'status': 'ok' }) }) diff --git a/src/utils/webauthn.js b/src/utils/webauthn.js index 0ca59d6c..b60d9166 100644 --- a/src/utils/webauthn.js +++ b/src/utils/webauthn.js @@ -63,7 +63,7 @@ export const generateWebauthnPubkey = async ( accountName ) => { // Relying Party rp: { name: "Tropical Stay", - id: "localhost" + id: window.location.hostname }, // Cryptographic challenge from the server challenge: new Uint8Array(26), @@ -90,7 +90,8 @@ export const generateWebauthnPubkey = async ( accountName ) => { export const enrollWebauthnPubkey = async (accountName, webauthnPublicKey) => { const payload = { accountName, - webauthnPublicKey + webauthnPublicKey, + hostname: window.location.hostname } const enrollResponse = await fetch('/api/enroll', { From 5a8a97dfa2417e9eb5594984feb12f2e9d3dbf05 Mon Sep 17 00:00:00 2001 From: Jon La Marr Date: Mon, 30 Dec 2019 10:15:34 -0500 Subject: [PATCH 60/76] Remove security issues --- package.json | 6 ++-- yarn.lock | 83 +++++++++++++--------------------------------------- 2 files changed, 24 insertions(+), 65 deletions(-) diff --git a/package.json b/package.json index f0f9a6dc..30d588b9 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "@babel/preset-env": "7.4.3", "@babel/register": "7.4.4", "assert": "^2.0.0", - "base64url": "2.0.0", + "base64url": "^3.0.1", "bigi": "^1.4.2", "bs58": "^4.0.1", "cbor": "3.0.3", @@ -43,7 +43,9 @@ "ual-token-pocket": "0.1.2" }, "resolutions": { - "eosjs": "^20.0.2-a53eecb.0" + "eosjs": "^20.0.2-a53eecb.0", + "handlebars": "4.5.3", + "terser-webpack-plugin": "1.4.3" }, "scripts": { "start": "node scripts/copyDefaultEnv.js && react-scripts start", diff --git a/yarn.lock b/yarn.lock index b921be07..2762aaf0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2162,10 +2162,10 @@ base64-js@^1.0.2: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== -base64url@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/base64url/-/base64url-2.0.0.tgz#eac16e03ea1438eff9423d69baa36262ed1f70bb" - integrity sha1-6sFuA+oUOO/5Qj1puqNiYu0fcLs= +base64url@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/base64url/-/base64url-3.0.1.tgz#6399d572e2bc3f90a9a8b22d5dbb0a32d33f788d" + integrity sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A== base@^0.11.1: version "0.11.2" @@ -2440,26 +2440,6 @@ bytes@3.1.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== -cacache@^11.0.2: - version "11.3.3" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.3.tgz#8bd29df8c6a718a6ebd2d010da4d7972ae3bbadc" - integrity sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - cacache@^12.0.2: version "12.0.3" resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390" @@ -2831,7 +2811,7 @@ commander@2.17.x: resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== -commander@^2.11, commander@^2.11.0, commander@^2.19.0, commander@^2.20.0, commander@~2.20.3: +commander@^2.11, commander@^2.11.0, commander@^2.20.0, commander@~2.20.3: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -4820,10 +4800,10 @@ handle-thing@^2.0.0: resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== -handlebars@^4.1.2: - version "4.4.5" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.4.5.tgz#1b1f94f9bfe7379adda86a8b73fb570265a0dddd" - integrity sha512-0Ce31oWVB7YidkaTq33ZxEbN+UDxMMgThvCe8ptgQViymL5DPis9uLdTA13MiRPhgvqyxIegugrP97iK3JeBHg== +handlebars@4.5.3, handlebars@^4.1.2: + version "4.5.3" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.5.3.tgz#5cf75bd8714f7605713511a56be7c349becb0482" + integrity sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA== dependencies: neo-async "^2.6.0" optimist "^0.6.1" @@ -9346,10 +9326,10 @@ send@0.17.1: range-parser "~1.2.1" statuses "~1.5.0" -serialize-javascript@^1.4.0, serialize-javascript@^1.7.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.9.1.tgz#cfc200aef77b600c47da9bb8149c943e798c2fdb" - integrity sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A== +serialize-javascript@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" + integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== serve-index@^1.7.2: version "1.9.1" @@ -9567,7 +9547,7 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.5.6, source-map-support@^0.5.9, source-map-support@~0.5.10, source-map-support@~0.5.12: +source-map-support@^0.5.6, source-map-support@^0.5.9, source-map-support@~0.5.12: version "0.5.13" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== @@ -10007,44 +9987,21 @@ tar@^4: safe-buffer "^5.1.2" yallist "^3.0.3" -terser-webpack-plugin@1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.2.3.tgz#3f98bc902fac3e5d0de730869f50668561262ec8" - integrity sha512-GOK7q85oAb/5kE12fMuLdn2btOS9OBZn4VsecpHDywoUC/jLhSAKOiYo0ezx7ss2EXPMzyEWFoE0s1WLE+4+oA== - dependencies: - cacache "^11.0.2" - find-cache-dir "^2.0.0" - schema-utils "^1.0.0" - serialize-javascript "^1.4.0" - source-map "^0.6.1" - terser "^3.16.1" - webpack-sources "^1.1.0" - worker-farm "^1.5.2" - -terser-webpack-plugin@^1.1.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.1.tgz#61b18e40eaee5be97e771cdbb10ed1280888c2b4" - integrity sha512-ZXmmfiwtCLfz8WKZyYUuuHf3dMYEjg8NrjHMb0JqHVHVOSkzp3cW2/XG1fP3tRhqEqSzMwzzRQGtAPbs4Cncxg== +terser-webpack-plugin@1.2.3, terser-webpack-plugin@1.4.3, terser-webpack-plugin@^1.1.0: + version "1.4.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" + integrity sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA== dependencies: cacache "^12.0.2" find-cache-dir "^2.1.0" is-wsl "^1.1.0" schema-utils "^1.0.0" - serialize-javascript "^1.7.0" + serialize-javascript "^2.1.2" source-map "^0.6.1" terser "^4.1.2" webpack-sources "^1.4.0" worker-farm "^1.7.0" -terser@^3.16.1: - version "3.17.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-3.17.0.tgz#f88ffbeda0deb5637f9d24b0da66f4e15ab10cb2" - integrity sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ== - dependencies: - commander "^2.19.0" - source-map "~0.6.1" - source-map-support "~0.5.10" - terser@^4.1.2: version "4.3.9" resolved "https://registry.yarnpkg.com/terser/-/terser-4.3.9.tgz#e4be37f80553d02645668727777687dad26bbca8" @@ -10925,7 +10882,7 @@ workbox-window@^4.3.1: dependencies: workbox-core "^4.3.1" -worker-farm@^1.5.2, worker-farm@^1.7.0: +worker-farm@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== From 46a9334ec1512aeca288b46756afad80a50ed6a2 Mon Sep 17 00:00:00 2001 From: Jon La Marr Date: Mon, 30 Dec 2019 10:19:45 -0500 Subject: [PATCH 61/76] Remove security warnings by bumping react-scripts instead --- package.json | 6 +- yarn.lock | 3089 +++++++++++++++++++++++++++++++++++--------------- 2 files changed, 2202 insertions(+), 893 deletions(-) diff --git a/package.json b/package.json index 30d588b9..112f2174 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "randombytes": "^2.1.0", "react": "16.8.6", "react-dom": "16.8.6", - "react-scripts": "3.0.1", + "react-scripts": "3.3.0", "ual-eosio-reference-authenticator": "0.1.3", "ual-lynx": "0.2.2", "ual-reactjs-renderer": "0.1.7", @@ -43,9 +43,7 @@ "ual-token-pocket": "0.1.2" }, "resolutions": { - "eosjs": "^20.0.2-a53eecb.0", - "handlebars": "4.5.3", - "terser-webpack-plugin": "1.4.3" + "eosjs": "^20.0.2-a53eecb.0" }, "scripts": { "start": "node scripts/copyDefaultEnv.js && react-scripts start", diff --git a/yarn.lock b/yarn.lock index 2762aaf0..6e5e5c08 100644 --- a/yarn.lock +++ b/yarn.lock @@ -29,19 +29,19 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.6.0.tgz#9b00f73554edd67bebc86df8303ef678be3d7b48" - integrity sha512-FuRhDRtsd6IptKpHXAa+4WPZYY2ZzgowkbLBecEDDSje1X/apG7jQM33or3NdOmjXBKWGOg4JmSiRfUfuTtHXw== +"@babel/core@7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.7.4.tgz#37e864532200cb6b50ee9a4045f5f817840166ab" + integrity sha512-+bYbx56j4nYBmpsWtnPUsKW3NdnYxbqyfrP2w9wILBuHzdfIKz9prieZK0DFPyIzkjYVUe4QkusGL07r5pXznQ== dependencies: "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.6.0" - "@babel/helpers" "^7.6.0" - "@babel/parser" "^7.6.0" - "@babel/template" "^7.6.0" - "@babel/traverse" "^7.6.0" - "@babel/types" "^7.6.0" - convert-source-map "^1.1.0" + "@babel/generator" "^7.7.4" + "@babel/helpers" "^7.7.4" + "@babel/parser" "^7.7.4" + "@babel/template" "^7.7.4" + "@babel/traverse" "^7.7.4" + "@babel/types" "^7.7.4" + convert-source-map "^1.7.0" debug "^4.1.0" json5 "^2.1.0" lodash "^4.17.13" @@ -49,7 +49,7 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.1.0", "@babel/core@^7.1.6", "@babel/core@^7.4.5": +"@babel/core@^7.1.0", "@babel/core@^7.4.5": version "7.6.4" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.6.4.tgz#6ebd9fe00925f6c3e177bb726a188b5f578088ff" integrity sha512-Rm0HGw101GY8FTzpWSyRbki/jzq+/PkNQJ+nSulrdY6gFGOsNseCqD6KHRYe2E+EdzuBdr2pxCp6s4Uk6eJ+XQ== @@ -69,7 +69,7 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.4.0", "@babel/generator@^7.6.0", "@babel/generator@^7.6.3", "@babel/generator@^7.6.4": +"@babel/generator@^7.4.0", "@babel/generator@^7.6.3", "@babel/generator@^7.6.4": version "7.6.4" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.6.4.tgz#a4f8437287bf9671b07f483b76e3bb731bc97671" integrity sha512-jsBuXkFoZxk0yWLyGI9llT9oiQ2FeTASmRFE32U+aaDTfoE92t78eroO7PTpU/OrYq38hlcDM6vbfLDaOLy+7w== @@ -79,6 +79,16 @@ lodash "^4.17.13" source-map "^0.5.0" +"@babel/generator@^7.7.4": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.7.7.tgz#859ac733c44c74148e1a72980a64ec84b85f4f45" + integrity sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ== + dependencies: + "@babel/types" "^7.7.4" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + "@babel/helper-annotate-as-pure@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" @@ -86,6 +96,13 @@ dependencies: "@babel/types" "^7.0.0" +"@babel/helper-annotate-as-pure@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.7.4.tgz#bb3faf1e74b74bd547e867e48f551fa6b098b6ce" + integrity sha512-2BQmQgECKzYKFPpiycoF9tlb5HA4lrVyAmLLVK177EcQAqjVLciUb2/R+n1boQ9y5ENV3uz2ZqiNw7QMBBw1Og== + dependencies: + "@babel/types" "^7.7.4" + "@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f" @@ -94,6 +111,14 @@ "@babel/helper-explode-assignable-expression" "^7.1.0" "@babel/types" "^7.0.0" +"@babel/helper-builder-binary-assignment-operator-visitor@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.7.4.tgz#5f73f2b28580e224b5b9bd03146a4015d6217f5f" + integrity sha512-Biq/d/WtvfftWZ9Uf39hbPBYDUo986m5Bb4zhkeYDGUllF43D+nUe5M6Vuo6/8JDK/0YX/uBdeoQpyaNhNugZQ== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.7.4" + "@babel/types" "^7.7.4" + "@babel/helper-builder-react-jsx@^7.3.0": version "7.3.0" resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.3.0.tgz#a1ac95a5d2b3e88ae5e54846bf462eeb81b318a4" @@ -102,6 +127,14 @@ "@babel/types" "^7.3.0" esutils "^2.0.0" +"@babel/helper-builder-react-jsx@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.7.4.tgz#da188d247508b65375b2c30cf59de187be6b0c66" + integrity sha512-kvbfHJNN9dg4rkEM4xn1s8d1/h6TYNvajy9L1wx4qLn9HFg0IkTsQi4rfBe92nxrPUFcMsHoMV+8rU7MJb3fCA== + dependencies: + "@babel/types" "^7.7.4" + esutils "^2.0.0" + "@babel/helper-call-delegate@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz#87c1f8ca19ad552a736a7a27b1c1fcf8b1ff1f43" @@ -111,17 +144,34 @@ "@babel/traverse" "^7.4.4" "@babel/types" "^7.4.4" -"@babel/helper-create-class-features-plugin@^7.5.5", "@babel/helper-create-class-features-plugin@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.6.0.tgz#769711acca889be371e9bc2eb68641d55218021f" - integrity sha512-O1QWBko4fzGju6VoVvrZg0RROCVifcLxiApnGP3OWfWzvxRZFCoBD81K5ur5e3bVY2Vf/5rIJm8cqPKn8HUJng== +"@babel/helper-call-delegate@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.7.4.tgz#621b83e596722b50c0066f9dc37d3232e461b801" + integrity sha512-8JH9/B7J7tCYJ2PpWVpw9JhPuEVHztagNVuQAFBVFYluRMlpG7F1CgKEgGeL6KFqcsIa92ZYVj6DSc0XwmN1ZA== dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-member-expression-to-functions" "^7.5.5" - "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-hoist-variables" "^7.7.4" + "@babel/traverse" "^7.7.4" + "@babel/types" "^7.7.4" + +"@babel/helper-create-class-features-plugin@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.7.4.tgz#fce60939fd50618610942320a8d951b3b639da2d" + integrity sha512-l+OnKACG4uiDHQ/aJT8dwpR+LhCJALxL0mJ6nzjB25e5IPwqV1VOsY7ah6UB1DG+VOXAIMtuC54rFJGiHkxjgA== + dependencies: + "@babel/helper-function-name" "^7.7.4" + "@babel/helper-member-expression-to-functions" "^7.7.4" + "@babel/helper-optimise-call-expression" "^7.7.4" "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.5.5" - "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/helper-replace-supers" "^7.7.4" + "@babel/helper-split-export-declaration" "^7.7.4" + +"@babel/helper-create-regexp-features-plugin@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.7.4.tgz#6d5762359fd34f4da1500e4cff9955b5299aaf59" + integrity sha512-Mt+jBKaxL0zfOIWrfQpnfYCN7/rS6GKx6CCCfuoqVVd+17R8zNDlzVYmIi9qyb2wOk002NsmSTDymkIygDUH7A== + dependencies: + "@babel/helper-regex" "^7.4.4" + regexpu-core "^4.6.0" "@babel/helper-define-map@^7.5.5": version "7.5.5" @@ -132,6 +182,15 @@ "@babel/types" "^7.5.5" lodash "^4.17.13" +"@babel/helper-define-map@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.7.4.tgz#2841bf92eb8bd9c906851546fe6b9d45e162f176" + integrity sha512-v5LorqOa0nVQUvAUTUF3KPastvUt/HzByXNamKQ6RdJRTV7j8rLL+WB5C/MzzWAwOomxDhYFb1wLLxHqox86lg== + dependencies: + "@babel/helper-function-name" "^7.7.4" + "@babel/types" "^7.7.4" + lodash "^4.17.13" + "@babel/helper-explode-assignable-expression@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6" @@ -140,6 +199,14 @@ "@babel/traverse" "^7.1.0" "@babel/types" "^7.0.0" +"@babel/helper-explode-assignable-expression@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.7.4.tgz#fa700878e008d85dc51ba43e9fb835cddfe05c84" + integrity sha512-2/SicuFrNSXsZNBxe5UGdLr+HZg+raWBLE9vC98bdYOKX/U6PY0mdGlYUJdtTDPSU0Lw0PNbKKDpwYHJLn2jLg== + dependencies: + "@babel/traverse" "^7.7.4" + "@babel/types" "^7.7.4" + "@babel/helper-function-name@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" @@ -149,6 +216,15 @@ "@babel/template" "^7.1.0" "@babel/types" "^7.0.0" +"@babel/helper-function-name@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz#ab6e041e7135d436d8f0a3eca15de5b67a341a2e" + integrity sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ== + dependencies: + "@babel/helper-get-function-arity" "^7.7.4" + "@babel/template" "^7.7.4" + "@babel/types" "^7.7.4" + "@babel/helper-get-function-arity@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" @@ -156,6 +232,13 @@ dependencies: "@babel/types" "^7.0.0" +"@babel/helper-get-function-arity@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz#cb46348d2f8808e632f0ab048172130e636005f0" + integrity sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA== + dependencies: + "@babel/types" "^7.7.4" + "@babel/helper-hoist-variables@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz#0298b5f25c8c09c53102d52ac4a98f773eb2850a" @@ -163,6 +246,13 @@ dependencies: "@babel/types" "^7.4.4" +"@babel/helper-hoist-variables@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.7.4.tgz#612384e3d823fdfaaf9fce31550fe5d4db0f3d12" + integrity sha512-wQC4xyvc1Jo/FnLirL6CEgPgPCa8M74tOdjWpRhQYapz5JC7u3NYU1zCVoVAGCE3EaIP9T1A3iW0WLJ+reZlpQ== + dependencies: + "@babel/types" "^7.7.4" + "@babel/helper-member-expression-to-functions@^7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.5.5.tgz#1fb5b8ec4453a93c439ee9fe3aeea4a84b76b590" @@ -170,6 +260,13 @@ dependencies: "@babel/types" "^7.5.5" +"@babel/helper-member-expression-to-functions@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.7.4.tgz#356438e2569df7321a8326644d4b790d2122cb74" + integrity sha512-9KcA1X2E3OjXl/ykfMMInBK+uVdfIVakVe7W7Lg3wfXUNyS3Q1HWLFRwZIjhqiCGbslummPDnmb7vIekS0C1vw== + dependencies: + "@babel/types" "^7.7.4" + "@babel/helper-module-imports@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" @@ -177,6 +274,13 @@ dependencies: "@babel/types" "^7.0.0" +"@babel/helper-module-imports@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.7.4.tgz#e5a92529f8888bf319a6376abfbd1cebc491ad91" + integrity sha512-dGcrX6K9l8258WFjyDLJwuVKxR4XZfU0/vTUgOQYWEnRD8mgr+p4d6fCUMq/ys0h4CCt/S5JhbvtyErjWouAUQ== + dependencies: + "@babel/types" "^7.7.4" + "@babel/helper-module-transforms@^7.1.0", "@babel/helper-module-transforms@^7.4.4": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.5.5.tgz#f84ff8a09038dcbca1fd4355661a500937165b4a" @@ -189,6 +293,18 @@ "@babel/types" "^7.5.5" lodash "^4.17.13" +"@babel/helper-module-transforms@^7.7.4", "@babel/helper-module-transforms@^7.7.5": + version "7.7.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.7.5.tgz#d044da7ffd91ec967db25cd6748f704b6b244835" + integrity sha512-A7pSxyJf1gN5qXVcidwLWydjftUN878VkalhXX5iQDuGyiGK3sOrrKKHF4/A4fwHtnsotv/NipwAeLzY4KQPvw== + dependencies: + "@babel/helper-module-imports" "^7.7.4" + "@babel/helper-simple-access" "^7.7.4" + "@babel/helper-split-export-declaration" "^7.7.4" + "@babel/template" "^7.7.4" + "@babel/types" "^7.7.4" + lodash "^4.17.13" + "@babel/helper-optimise-call-expression@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" @@ -196,6 +312,13 @@ dependencies: "@babel/types" "^7.0.0" +"@babel/helper-optimise-call-expression@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.7.4.tgz#034af31370d2995242aa4df402c3b7794b2dcdf2" + integrity sha512-VB7gWZ2fDkSuqW6b1AKXkJWO5NyNI3bFL/kK79/30moK57blr6NbH8xcl2XcKCwOmJosftWunZqfO84IGq3ZZg== + dependencies: + "@babel/types" "^7.7.4" + "@babel/helper-plugin-utils@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" @@ -219,6 +342,17 @@ "@babel/traverse" "^7.1.0" "@babel/types" "^7.0.0" +"@babel/helper-remap-async-to-generator@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.7.4.tgz#c68c2407350d9af0e061ed6726afb4fff16d0234" + integrity sha512-Sk4xmtVdM9sA/jCI80f+KS+Md+ZHIpjuqmYPk1M7F/upHou5e4ReYmExAiu6PVe65BhJPZA2CY9x9k4BqE5klw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.7.4" + "@babel/helper-wrap-function" "^7.7.4" + "@babel/template" "^7.7.4" + "@babel/traverse" "^7.7.4" + "@babel/types" "^7.7.4" + "@babel/helper-replace-supers@^7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.5.5.tgz#f84ce43df031222d2bad068d2626cb5799c34bc2" @@ -229,6 +363,16 @@ "@babel/traverse" "^7.5.5" "@babel/types" "^7.5.5" +"@babel/helper-replace-supers@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.7.4.tgz#3c881a6a6a7571275a72d82e6107126ec9e2cdd2" + integrity sha512-pP0tfgg9hsZWo5ZboYGuBn/bbYT/hdLPVSS4NMmiRJdwWhP0IznPwN9AE1JwyGsjSPLC364I0Qh5p+EPkGPNpg== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.7.4" + "@babel/helper-optimise-call-expression" "^7.7.4" + "@babel/traverse" "^7.7.4" + "@babel/types" "^7.7.4" + "@babel/helper-simple-access@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c" @@ -237,6 +381,14 @@ "@babel/template" "^7.1.0" "@babel/types" "^7.0.0" +"@babel/helper-simple-access@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.7.4.tgz#a169a0adb1b5f418cfc19f22586b2ebf58a9a294" + integrity sha512-zK7THeEXfan7UlWsG2A6CI/L9jVnI5+xxKZOdej39Y0YtDYKx9raHk5F2EtK9K8DHRTihYwg20ADt9S36GR78A== + dependencies: + "@babel/template" "^7.7.4" + "@babel/types" "^7.7.4" + "@babel/helper-split-export-declaration@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" @@ -244,6 +396,13 @@ dependencies: "@babel/types" "^7.4.4" +"@babel/helper-split-export-declaration@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz#57292af60443c4a3622cf74040ddc28e68336fd8" + integrity sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug== + dependencies: + "@babel/types" "^7.7.4" + "@babel/helper-wrap-function@^7.1.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa" @@ -254,7 +413,17 @@ "@babel/traverse" "^7.1.0" "@babel/types" "^7.2.0" -"@babel/helpers@^7.4.3", "@babel/helpers@^7.6.0", "@babel/helpers@^7.6.2": +"@babel/helper-wrap-function@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.7.4.tgz#37ab7fed5150e22d9d7266e830072c0cdd8baace" + integrity sha512-VsfzZt6wmsocOaVU0OokwrIytHND55yvyT4BPB9AIIgwr8+x7617hetdJTsuGwygN5RC6mxA9EJztTjuwm2ofg== + dependencies: + "@babel/helper-function-name" "^7.7.4" + "@babel/template" "^7.7.4" + "@babel/traverse" "^7.7.4" + "@babel/types" "^7.7.4" + +"@babel/helpers@^7.4.3", "@babel/helpers@^7.6.2": version "7.6.2" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.6.2.tgz#681ffe489ea4dcc55f23ce469e58e59c1c045153" integrity sha512-3/bAUL8zZxYs1cdX2ilEE0WobqbCmKWr/889lf2SS0PpDcpEIY8pb1CCyz0pEcX3pEb+MCbks1jIokz2xLtGTA== @@ -263,6 +432,15 @@ "@babel/traverse" "^7.6.2" "@babel/types" "^7.6.0" +"@babel/helpers@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.7.4.tgz#62c215b9e6c712dadc15a9a0dcab76c92a940302" + integrity sha512-ak5NGZGJ6LV85Q1Zc9gn2n+ayXOizryhjSUBTdu5ih1tlVCJeuQENzc4ItyCVhINVXvIT/ZQ4mheGIsfBkpskg== + dependencies: + "@babel/template" "^7.7.4" + "@babel/traverse" "^7.7.4" + "@babel/types" "^7.7.4" + "@babel/highlight@^7.0.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540" @@ -277,6 +455,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.6.4.tgz#cb9b36a7482110282d5cb6dd424ec9262b473d81" integrity sha512-D8RHPW5qd0Vbyo3qb+YjO5nvUVRTXFLQ/FsDxJU2Nqz4uB5EnUN0ZQSEYpvTIbRuttig1XbHWU5oMeQwQSAA+A== +"@babel/parser@^7.7.4": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.7.7.tgz#1b886595419cf92d811316d5b715a53ff38b4937" + integrity sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw== + "@babel/plugin-proposal-async-generator-functions@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e" @@ -286,30 +469,39 @@ "@babel/helper-remap-async-to-generator" "^7.1.0" "@babel/plugin-syntax-async-generators" "^7.2.0" -"@babel/plugin-proposal-class-properties@7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.5.5.tgz#a974cfae1e37c3110e71f3c6a2e48b8e71958cd4" - integrity sha512-AF79FsnWFxjlaosgdi421vmYG6/jg79bVD0dpD44QdgobzHKuLZ6S3vl8la9qIeSwGi8i1fS0O1mfuDAAdo1/A== +"@babel/plugin-proposal-async-generator-functions@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.7.4.tgz#0351c5ac0a9e927845fffd5b82af476947b7ce6d" + integrity sha512-1ypyZvGRXriY/QP668+s8sFr2mqinhkRDMPSQLNghCQE+GAkFtp+wkHVvg2+Hdki8gwP+NFzJBJ/N1BfzCCDEw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.5.5" "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.7.4" + "@babel/plugin-syntax-async-generators" "^7.7.4" -"@babel/plugin-proposal-decorators@7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.6.0.tgz#6659d2572a17d70abd68123e89a12a43d90aa30c" - integrity sha512-ZSyYw9trQI50sES6YxREXKu+4b7MAg6Qx2cvyDDYjP2Hpzd3FleOUwC9cqn1+za8d0A2ZU8SHujxFao956efUg== +"@babel/plugin-proposal-class-properties@7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.7.4.tgz#2f964f0cb18b948450362742e33e15211e77c2ba" + integrity sha512-EcuXeV4Hv1X3+Q1TsuOmyyxeTRiSqurGJ26+I/FW1WbymmRRapVORm6x1Zl3iDIHyRxEs+VXWp6qnlcfcJSbbw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.6.0" + "@babel/helper-create-class-features-plugin" "^7.7.4" "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-decorators" "^7.2.0" -"@babel/plugin-proposal-dynamic-import@^7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.5.0.tgz#e532202db4838723691b10a67b8ce509e397c506" - integrity sha512-x/iMjggsKTFHYC6g11PL7Qy58IK8H5zqfm9e6hu4z1iH2IRyAp9u9dL80zA6R76yFovETFLKz2VJIC2iIPBuFw== +"@babel/plugin-proposal-decorators@7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.7.4.tgz#58c1e21d21ea12f9f5f0a757e46e687b94a7ab2b" + integrity sha512-GftcVDcLCwVdzKmwOBDjATd548+IE+mBo7ttgatqNDR7VG7GqIuZPtRWlMLHbhTXhcnFZiGER8iIYl1n/imtsg== dependencies: + "@babel/helper-create-class-features-plugin" "^7.7.4" "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-dynamic-import" "^7.2.0" + "@babel/plugin-syntax-decorators" "^7.7.4" + +"@babel/plugin-proposal-dynamic-import@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.7.4.tgz#dde64a7f127691758cbfed6cf70de0fa5879d52d" + integrity sha512-StH+nGAdO6qDB1l8sZ5UBV8AC3F2VW2I8Vfld73TMKyptMU9DY5YsJAS8U81+vEtxcH3Y/La0wG0btDrhpnhjQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-dynamic-import" "^7.7.4" "@babel/plugin-proposal-json-strings@^7.2.0": version "7.2.0" @@ -319,15 +511,39 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-json-strings" "^7.2.0" -"@babel/plugin-proposal-object-rest-spread@7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.5.tgz#61939744f71ba76a3ae46b5eea18a54c16d22e58" - integrity sha512-F2DxJJSQ7f64FyTVl5cw/9MWn6naXGdk3Q3UhDbFEEHv+EilCPoeRD3Zh/Utx1CJz4uyKlQ4uH+bJPbEhMV7Zw== +"@babel/plugin-proposal-json-strings@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.7.4.tgz#7700a6bfda771d8dc81973249eac416c6b4c697d" + integrity sha512-wQvt3akcBTfLU/wYoqm/ws7YOAQKu8EVJEvHip/mzkNtjaclQoCCIqKXFP5/eyfnfbQCDV3OLRIK3mIVyXuZlw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + "@babel/plugin-syntax-json-strings" "^7.7.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.7.4.tgz#7db302c83bc30caa89e38fee935635ef6bd11c28" + integrity sha512-TbYHmr1Gl1UC7Vo2HVuj/Naci5BEGNZ0AJhzqD2Vpr6QPFWpUmBRLrIDjedzx7/CShq0bRDS2gI4FIs77VHLVQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.7.4" + +"@babel/plugin-proposal-numeric-separator@7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.7.4.tgz#7819a17445f4197bb9575e5750ed349776da858a" + integrity sha512-CG605v7lLpVgVldSY6kxsN9ui1DxFOyepBfuX2AzU2TNriMAYApoU55mrGw9Jr4TlrTzPCG10CL8YXyi+E/iPw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-numeric-separator" "^7.7.4" + +"@babel/plugin-proposal-object-rest-spread@7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.7.4.tgz#cc57849894a5c774214178c8ab64f6334ec8af71" + integrity sha512-rnpnZR3/iWKmiQyJ3LKJpSwLDcX/nSXhdLk4Aq/tXOApIvyu7qoabrige0ylsAJffaUC51WiBu209Q0U+86OWQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.7.4" -"@babel/plugin-proposal-object-rest-spread@^7.4.3", "@babel/plugin-proposal-object-rest-spread@^7.5.5", "@babel/plugin-proposal-object-rest-spread@^7.6.2": +"@babel/plugin-proposal-object-rest-spread@^7.4.3": version "7.6.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.6.2.tgz#8ffccc8f3a6545e9f78988b6bf4fe881b88e8096" integrity sha512-LDBXlmADCsMZV1Y9OQwMc0MyGZ8Ta/zlD9N67BfQT8uYwkRswiu2hU6nJKrjrt/58aH/vqfQlR/9yId/7A2gWw== @@ -335,6 +551,14 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-object-rest-spread" "^7.2.0" +"@babel/plugin-proposal-object-rest-spread@^7.7.4", "@babel/plugin-proposal-object-rest-spread@^7.7.7": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.7.7.tgz#9f27075004ab99be08c5c1bd653a2985813cb370" + integrity sha512-3qp9I8lelgzNedI3hrhkvhaEYree6+WHnyA/q4Dza9z7iEIs1eyhWyJnetk3jJ69RT0AT4G0UhEGwyGFJ7GUuQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.7.4" + "@babel/plugin-proposal-optional-catch-binding@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5" @@ -343,7 +567,23 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" -"@babel/plugin-proposal-unicode-property-regex@^7.4.0", "@babel/plugin-proposal-unicode-property-regex@^7.4.4", "@babel/plugin-proposal-unicode-property-regex@^7.6.2": +"@babel/plugin-proposal-optional-catch-binding@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.7.4.tgz#ec21e8aeb09ec6711bc0a39ca49520abee1de379" + integrity sha512-DyM7U2bnsQerCQ+sejcTNZh8KQEUuC3ufzdnVnSiUv/qoGJp2Z3hanKL18KDhsBT5Wj6a7CMT5mdyCNJsEaA9w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.7.4" + +"@babel/plugin-proposal-optional-chaining@7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.7.4.tgz#3f04c2de1a942cbd3008324df8144b9cbc0ca0ba" + integrity sha512-JmgaS+ygAWDR/STPe3/7y0lNlHgS+19qZ9aC06nYLwQ/XB7c0q5Xs+ksFU3EDnp9EiEsO0dnRAOKeyLHTZuW3A== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-optional-chaining" "^7.7.4" + +"@babel/plugin-proposal-unicode-property-regex@^7.4.0": version "7.6.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.6.2.tgz#05413762894f41bfe42b9a5e80919bd575dcc802" integrity sha512-NxHETdmpeSCtiatMRYWVJo7266rrvAC3DTeG5exQBIH/fMIUK7ejDNznBbn3HQl/o9peymRRg7Yqkx6PdUXmMw== @@ -352,6 +592,14 @@ "@babel/helper-regex" "^7.4.4" regexpu-core "^4.6.0" +"@babel/plugin-proposal-unicode-property-regex@^7.7.4", "@babel/plugin-proposal-unicode-property-regex@^7.7.7": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.7.7.tgz#433fa9dac64f953c12578b29633f456b68831c4e" + integrity sha512-80PbkKyORBUVm1fbTLrHpYdJxMThzM1UqFGh0ALEhO9TYbG86Ah9zQYAB/84axz2vcxefDLdZwWwZNlYARlu9w== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-async-generators@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f" @@ -359,24 +607,31 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-decorators@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.2.0.tgz#c50b1b957dcc69e4b1127b65e1c33eef61570c1b" - integrity sha512-38QdqVoXdHUQfTpZo3rQwqQdWtCn5tMv4uV6r2RMfTqNBuv4ZBhz79SfaQWKTVmxHjeFv/DnXVC/+agHCklYWA== +"@babel/plugin-syntax-async-generators@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.7.4.tgz#331aaf310a10c80c44a66b238b6e49132bd3c889" + integrity sha512-Li4+EjSpBgxcsmeEF8IFcfV/+yJGxHXDirDkEoyFjumuwbmfCVHUt0HuowD/iGM7OhIRyXJH9YXxqiH6N815+g== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-dynamic-import@7.2.0", "@babel/plugin-syntax-dynamic-import@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz#69c159ffaf4998122161ad8ebc5e6d1f55df8612" - integrity sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w== +"@babel/plugin-syntax-decorators@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.7.4.tgz#3c91cfee2a111663ff3ac21b851140f5a52a4e0b" + integrity sha512-0oNLWNH4k5ZbBVfAwiTU53rKFWIeTh6ZlaWOXWJc4ywxs0tjz5fc3uZ6jKAnZSxN98eXVgg7bJIuzjX+3SXY+A== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-flow@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.2.0.tgz#a765f061f803bc48f240c26f8747faf97c26bf7c" - integrity sha512-r6YMuZDWLtLlu0kqIim5o/3TNRAlWb073HwT3e2nKf9I8IIvOggPrnILYPsrrKilmn/mYEMCf/Z07w3yQJF6dg== +"@babel/plugin-syntax-dynamic-import@7.7.4", "@babel/plugin-syntax-dynamic-import@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.7.4.tgz#29ca3b4415abfe4a5ec381e903862ad1a54c3aec" + integrity sha512-jHQW0vbRGvwQNgyVxwDh4yuXu4bH1f5/EICJLAhl1SblLs2CDhrsmCk+v5XLdE9wxtAFRyxx+P//Iw+a5L/tTg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-flow@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.7.4.tgz#6d91b59e1a0e4c17f36af2e10dd64ef220919d7b" + integrity sha512-2AMAWl5PsmM5KPkB22cvOkUyWk6MjUaqhHNU5nSPUl/ns3j5qLfw2SuYP5RbVZ0tfLvePr4zUScbICtDP2CUNw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -387,6 +642,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-syntax-json-strings@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.7.4.tgz#86e63f7d2e22f9e27129ac4e83ea989a382e86cc" + integrity sha512-QpGupahTQW1mHRXddMG5srgpHWqRLwJnJZKXTigB9RPFCCGbDGCgBeM/iC82ICXp414WeYx/tD54w7M2qRqTMg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz#0b85a3b4bc7cdf4cc4b8bf236335b907ca22e7c7" @@ -394,6 +656,27 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-syntax-jsx@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.7.4.tgz#dab2b56a36fb6c3c222a1fbc71f7bf97f327a9ec" + integrity sha512-wuy6fiMe9y7HeZBWXYCGt2RGxZOj0BImZ9EyXJVnVGBKO/Br592rbR3rtIQn0eQhAk9vqaKP5n8tVqEFBQMfLg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.7.4.tgz#e53b751d0c3061b1ba3089242524b65a7a9da12b" + integrity sha512-XKh/yIRPiQTOeBg0QJjEus5qiSKucKAiApNtO1psqG7D17xmE+X2i5ZqBEuSvo0HRuyPaKaSN/Gy+Ha9KFQolw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-numeric-separator@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.7.4.tgz#39818f8042a09d4c6248d85d82555369da4da5c4" + integrity sha512-vmlUUBlLuFnbpaR+1kKIdo62xQEN+THWbtAHSEilo+0rHl2dKKCn6GLUVKpI848wL/T0ZPQgAy8asRJ9yYEjog== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" @@ -401,6 +684,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-syntax-object-rest-spread@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.7.4.tgz#47cf220d19d6d0d7b154304701f468fc1cc6ff46" + integrity sha512-mObR+r+KZq0XhRVS2BrBKBpr5jqrqzlPvS9C9vuOf5ilSwzloAl7RPWLrgKdWS6IreaVrjHxTjtyqFiOisaCwg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-optional-catch-binding@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c" @@ -408,10 +698,31 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-typescript@^7.2.0": - version "7.3.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.3.3.tgz#a7cc3f66119a9f7ebe2de5383cce193473d65991" - integrity sha512-dGwbSMA1YhVS8+31CnPR7LB4pcbrzcV99wQzby4uAfrkZPYZlQ7ImwdpzLqi6Z6IL02b8IAL379CaMwo0x5Lag== +"@babel/plugin-syntax-optional-catch-binding@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.7.4.tgz#a3e38f59f4b6233867b4a92dcb0ee05b2c334aa6" + integrity sha512-4ZSuzWgFxqHRE31Glu+fEr/MirNZOMYmD/0BhBWyLyOOQz/gTAl7QmWm2hX1QxEIXsr2vkdlwxIzTyiYRC4xcQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-optional-chaining@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.7.4.tgz#c91fdde6de85d2eb8906daea7b21944c3610c901" + integrity sha512-2MqYD5WjZSbJdUagnJvIdSfkb/ucOC9/1fRJxm7GAxY6YQLWlUvkfxoNbUPcPLHJyetKUDQ4+yyuUyAoc0HriA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-top-level-await@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.7.4.tgz#bd7d8fa7b9fee793a36e4027fd6dd1aa32f946da" + integrity sha512-wdsOw0MvkL1UIgiQ/IFr3ETcfv1xb8RMM0H9wbiDyLaJFyiDg5oZvDLCXosIXmFeIlweML5iOBXAkqddkYNizg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-typescript@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.7.4.tgz#5d037ffa10f3b25a16f32570ebbe7a8c2efa304b" + integrity sha512-77blgY18Hud4NM1ggTA8xVT/dBENQf17OpiToSa2jSmEY3fWXD2jwrdVlO4kq5yzUTeF15WSQ6b4fByNvJcjpQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -422,7 +733,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-async-to-generator@^7.4.0", "@babel/plugin-transform-async-to-generator@^7.5.0": +"@babel/plugin-transform-arrow-functions@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.7.4.tgz#76309bd578addd8aee3b379d809c802305a98a12" + integrity sha512-zUXy3e8jBNPiffmqkHRNDdZM2r8DWhCB7HhcoyZjiK1TxYEluLHAvQuYnTT+ARqRpabWqy/NHkO6e3MsYB5YfA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-async-to-generator@^7.4.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.5.0.tgz#89a3848a0166623b5bc481164b5936ab947e887e" integrity sha512-mqvkzwIGkq0bEF1zLRRiTdjfomZJDV33AH3oQzHVGkI2VzEmXLpKKOBvEVaFZBJdN0XTyH38s9j/Kiqr68dggg== @@ -431,6 +749,15 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-remap-async-to-generator" "^7.1.0" +"@babel/plugin-transform-async-to-generator@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.7.4.tgz#694cbeae6d613a34ef0292713fa42fb45c4470ba" + integrity sha512-zpUTZphp5nHokuy8yLlyafxCJ0rSlFoSHypTUWgpdwoDXWQcseaect7cJ8Ppk6nunOM6+5rPMkod4OYKPR5MUg== + dependencies: + "@babel/helper-module-imports" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.7.4" + "@babel/plugin-transform-block-scoped-functions@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190" @@ -438,7 +765,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-block-scoping@^7.4.0", "@babel/plugin-transform-block-scoping@^7.6.0", "@babel/plugin-transform-block-scoping@^7.6.3": +"@babel/plugin-transform-block-scoped-functions@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.7.4.tgz#d0d9d5c269c78eaea76227ace214b8d01e4d837b" + integrity sha512-kqtQzwtKcpPclHYjLK//3lH8OFsCDuDJBaFhVwf8kqdnF6MN4l618UDlcA7TfRs3FayrHj+svYnSX8MC9zmUyQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-block-scoping@^7.4.0": version "7.6.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.3.tgz#6e854e51fbbaa84351b15d4ddafe342f3a5d542a" integrity sha512-7hvrg75dubcO3ZI2rjYTzUrEuh1E9IyDEhhB6qfcooxhDA33xx2MasuLVgdxzcP6R/lipAC6n9ub9maNW6RKdw== @@ -446,7 +780,15 @@ "@babel/helper-plugin-utils" "^7.0.0" lodash "^4.17.13" -"@babel/plugin-transform-classes@^7.4.3", "@babel/plugin-transform-classes@^7.5.5": +"@babel/plugin-transform-block-scoping@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.7.4.tgz#200aad0dcd6bb80372f94d9e628ea062c58bf224" + integrity sha512-2VBe9u0G+fDt9B5OV5DQH4KBf5DoiNkwFKOz0TCvBWvdAN2rOykCTkrL+jTLxfCAm76l9Qo5OqL7HBOx2dWggg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + lodash "^4.17.13" + +"@babel/plugin-transform-classes@^7.4.3": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.5.5.tgz#d094299d9bd680a14a2a0edae38305ad60fb4de9" integrity sha512-U2htCNK/6e9K7jGyJ++1p5XRU+LJjrwtoiVn9SzRlDT2KubcZ11OOwy3s24TjHxPgxNwonCYP7U2K51uVYCMDg== @@ -460,6 +802,20 @@ "@babel/helper-split-export-declaration" "^7.4.4" globals "^11.1.0" +"@babel/plugin-transform-classes@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.7.4.tgz#c92c14be0a1399e15df72667067a8f510c9400ec" + integrity sha512-sK1mjWat7K+buWRuImEzjNf68qrKcrddtpQo3swi9j7dUcG6y6R6+Di039QN2bD1dykeswlagupEmpOatFHHUg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.7.4" + "@babel/helper-define-map" "^7.7.4" + "@babel/helper-function-name" "^7.7.4" + "@babel/helper-optimise-call-expression" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.7.4" + "@babel/helper-split-export-declaration" "^7.7.4" + globals "^11.1.0" + "@babel/plugin-transform-computed-properties@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da" @@ -467,14 +823,28 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-destructuring@7.6.0", "@babel/plugin-transform-destructuring@^7.4.3", "@babel/plugin-transform-destructuring@^7.6.0": +"@babel/plugin-transform-computed-properties@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.7.4.tgz#e856c1628d3238ffe12d668eb42559f79a81910d" + integrity sha512-bSNsOsZnlpLLyQew35rl4Fma3yKWqK3ImWMSC/Nc+6nGjC9s5NFWAer1YQ899/6s9HxO2zQC1WoFNfkOqRkqRQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-destructuring@7.7.4", "@babel/plugin-transform-destructuring@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.7.4.tgz#2b713729e5054a1135097b6a67da1b6fe8789267" + integrity sha512-4jFMXI1Cu2aXbcXXl8Lr6YubCn6Oc7k9lLsu8v61TZh+1jny2BWmdtvY9zSUlLdGUvcy9DMAWyZEOqjsbeg/wA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-destructuring@^7.4.3": version "7.6.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.6.0.tgz#44bbe08b57f4480094d57d9ffbcd96d309075ba6" integrity sha512-2bGIS5P1v4+sWTCnKNDZDxbGvEqi0ijeqM/YqHtVGrvG2y0ySgnEEhXErvE9dA0bnIzY9bIzdFK0jFA46ASIIQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-dotall-regex@^7.4.3", "@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.6.2": +"@babel/plugin-transform-dotall-regex@^7.4.3": version "7.6.2" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.6.2.tgz#44abb948b88f0199a627024e1508acaf8dc9b2f9" integrity sha512-KGKT9aqKV+9YMZSkowzYoYEiHqgaDhGmPNZlZxX6UeHC4z30nC1J9IrZuGqbYFB1jaIGdv91ujpze0exiVK8bA== @@ -483,13 +853,28 @@ "@babel/helper-regex" "^7.4.4" regexpu-core "^4.6.0" -"@babel/plugin-transform-duplicate-keys@^7.2.0", "@babel/plugin-transform-duplicate-keys@^7.5.0": +"@babel/plugin-transform-dotall-regex@^7.7.4", "@babel/plugin-transform-dotall-regex@^7.7.7": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.7.7.tgz#3e9713f1b69f339e87fa796b097d73ded16b937b" + integrity sha512-b4in+YlTeE/QmTgrllnb3bHA0HntYvjz8O3Mcbx75UBPJA2xhb5A8nle498VhxSXJHQefjtQxpnLPehDJ4TRlg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-duplicate-keys@^7.2.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz#c5dbf5106bf84cdf691222c0974c12b1df931853" integrity sha512-igcziksHizyQPlX9gfSjHkE2wmoCH3evvD2qR5w29/Dk0SMKE/eOI7f1HhBdNhR/zxJDqrgpoDTq5YSLH/XMsQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-duplicate-keys@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.7.4.tgz#3d21731a42e3f598a73835299dd0169c3b90ac91" + integrity sha512-g1y4/G6xGWMD85Tlft5XedGaZBCIVN+/P0bs6eabmcPP9egFleMAo65OOjlhcz1njpwagyY3t0nsQC9oTFegJA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-exponentiation-operator@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008" @@ -498,22 +883,37 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-flow-strip-types@7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.4.4.tgz#d267a081f49a8705fc9146de0768c6b58dccd8f7" - integrity sha512-WyVedfeEIILYEaWGAUWzVNyqG4sfsNooMhXWsu/YzOvVGcsnPb5PguysjJqI3t3qiaYj0BR8T2f5njdjTGe44Q== +"@babel/plugin-transform-exponentiation-operator@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.7.4.tgz#dd30c0191e3a1ba19bcc7e389bdfddc0729d5db9" + integrity sha512-MCqiLfCKm6KEA1dglf6Uqq1ElDIZwFuzz1WH5mTf8k2uQSxEJMbOIEh7IZv7uichr7PMfi5YVSrr1vz+ipp7AQ== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-flow-strip-types@7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.7.4.tgz#cc73f85944782df1d77d80977bc097920a8bf31a" + integrity sha512-w9dRNlHY5ElNimyMYy0oQowvQpwt/PRHI0QS98ZJCTZU2bvSnKXo5zEiD5u76FBPigTm8TkqzmnUTg16T7qbkA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-flow" "^7.2.0" + "@babel/plugin-syntax-flow" "^7.7.4" -"@babel/plugin-transform-for-of@^7.4.3", "@babel/plugin-transform-for-of@^7.4.4": +"@babel/plugin-transform-for-of@^7.4.3": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz#0267fc735e24c808ba173866c6c4d1440fc3c556" integrity sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-function-name@^7.4.3", "@babel/plugin-transform-function-name@^7.4.4": +"@babel/plugin-transform-for-of@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.7.4.tgz#248800e3a5e507b1f103d8b4ca998e77c63932bc" + integrity sha512-zZ1fD1B8keYtEcKF+M1TROfeHTKnijcVQm0yO/Yu1f7qoDoxEIc/+GX6Go430Bg84eM/xwPFp0+h4EbZg7epAA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-function-name@^7.4.3": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz#e1436116abb0610c2259094848754ac5230922ad" integrity sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA== @@ -521,6 +921,14 @@ "@babel/helper-function-name" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-function-name@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.7.4.tgz#75a6d3303d50db638ff8b5385d12451c865025b1" + integrity sha512-E/x09TvjHNhsULs2IusN+aJNRV5zKwxu1cpirZyRPw+FyyIKEHPXTsadj48bVpc1R5Qq1B5ZkzumuFLytnbT6g== + dependencies: + "@babel/helper-function-name" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-literals@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1" @@ -528,6 +936,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-literals@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.7.4.tgz#27fe87d2b5017a2a5a34d1c41a6b9f6a6262643e" + integrity sha512-X2MSV7LfJFm4aZfxd0yLVFrEXAgPqYoDG53Br/tCKiKYfX0MjVjQeWPIhPHHsCqzwQANq+FLN786fF5rgLS+gw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-member-expression-literals@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz#fa10aa5c58a2cb6afcf2c9ffa8cb4d8b3d489a2d" @@ -535,7 +950,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-modules-amd@^7.2.0", "@babel/plugin-transform-modules-amd@^7.5.0": +"@babel/plugin-transform-member-expression-literals@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.7.4.tgz#aee127f2f3339fc34ce5e3055d7ffbf7aa26f19a" + integrity sha512-9VMwMO7i69LHTesL0RdGy93JU6a+qOPuvB4F4d0kR0zyVjJRVJRaoaGjhtki6SzQUu8yen/vxPKN6CWnCUw6bA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-amd@^7.2.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz#ef00435d46da0a5961aa728a1d2ecff063e4fb91" integrity sha512-n20UsQMKnWrltocZZm24cRURxQnWIvsABPJlw/fvoy9c6AgHZzoelAIzajDHAQrDpuKFFPPcFGd7ChsYuIUMpg== @@ -544,7 +966,16 @@ "@babel/helper-plugin-utils" "^7.0.0" babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-commonjs@^7.4.3", "@babel/plugin-transform-modules-commonjs@^7.6.0": +"@babel/plugin-transform-modules-amd@^7.7.4", "@babel/plugin-transform-modules-amd@^7.7.5": + version "7.7.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.7.5.tgz#39e0fb717224b59475b306402bb8eedab01e729c" + integrity sha512-CT57FG4A2ZUNU1v+HdvDSDrjNWBrtCmSH6YbbgN3Lrf0Di/q/lWRxZrE72p3+HCCz9UjfZOEBdphgC0nzOS6DQ== + dependencies: + "@babel/helper-module-transforms" "^7.7.5" + "@babel/helper-plugin-utils" "^7.0.0" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-commonjs@^7.4.3": version "7.6.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.6.0.tgz#39dfe957de4420445f1fcf88b68a2e4aa4515486" integrity sha512-Ma93Ix95PNSEngqomy5LSBMAQvYKVe3dy+JlVJSHEXZR5ASL9lQBedMiCyVtmTLraIDVRE3ZjTZvmXXD2Ozw3g== @@ -554,7 +985,17 @@ "@babel/helper-simple-access" "^7.1.0" babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-systemjs@^7.4.0", "@babel/plugin-transform-modules-systemjs@^7.5.0": +"@babel/plugin-transform-modules-commonjs@^7.7.4", "@babel/plugin-transform-modules-commonjs@^7.7.5": + version "7.7.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.7.5.tgz#1d27f5eb0bcf7543e774950e5b2fa782e637b345" + integrity sha512-9Cq4zTFExwFhQI6MT1aFxgqhIsMWQWDVwOgLzl7PTWJHsNaqFvklAU+Oz6AQLAS0dJKTwZSOCo20INwktxpi3Q== + dependencies: + "@babel/helper-module-transforms" "^7.7.5" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-simple-access" "^7.7.4" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-systemjs@^7.4.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz#e75266a13ef94202db2a0620977756f51d52d249" integrity sha512-Q2m56tyoQWmuNGxEtUyeEkm6qJYFqs4c+XyXH5RAuYxObRNz9Zgj/1g2GMnjYp2EUyEy7YTrxliGCXzecl/vJg== @@ -563,6 +1004,15 @@ "@babel/helper-plugin-utils" "^7.0.0" babel-plugin-dynamic-import-node "^2.3.0" +"@babel/plugin-transform-modules-systemjs@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.7.4.tgz#cd98152339d3e763dfe838b7d4273edaf520bb30" + integrity sha512-y2c96hmcsUi6LrMqvmNDPBBiGCiQu0aYqpHatVVu6kD4mFEXKjyNxd/drc18XXAf9dv7UXjrZwBVmTTGaGP8iw== + dependencies: + "@babel/helper-hoist-variables" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + babel-plugin-dynamic-import-node "^2.3.0" + "@babel/plugin-transform-modules-umd@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz#7678ce75169f0877b8eb2235538c074268dd01ae" @@ -571,21 +1021,43 @@ "@babel/helper-module-transforms" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-named-capturing-groups-regex@^7.4.2", "@babel/plugin-transform-named-capturing-groups-regex@^7.6.0", "@babel/plugin-transform-named-capturing-groups-regex@^7.6.3": +"@babel/plugin-transform-modules-umd@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.7.4.tgz#1027c355a118de0aae9fee00ad7813c584d9061f" + integrity sha512-u2B8TIi0qZI4j8q4C51ktfO7E3cQ0qnaXFI1/OXITordD40tt17g/sXqgNNCcMTcBFKrUPcGDx+TBJuZxLx7tw== + dependencies: + "@babel/helper-module-transforms" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.4.2": version "7.6.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.6.3.tgz#aaa6e409dd4fb2e50b6e2a91f7e3a3149dbce0cf" integrity sha512-jTkk7/uE6H2s5w6VlMHeWuH+Pcy2lmdwFoeWCVnvIrDUnB5gQqTVI8WfmEAhF2CDEarGrknZcmSFg1+bkfCoSw== dependencies: regexpu-core "^4.6.0" -"@babel/plugin-transform-new-target@^7.4.0", "@babel/plugin-transform-new-target@^7.4.4": +"@babel/plugin-transform-named-capturing-groups-regex@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.7.4.tgz#fb3bcc4ee4198e7385805007373d6b6f42c98220" + integrity sha512-jBUkiqLKvUWpv9GLSuHUFYdmHg0ujC1JEYoZUfeOOfNydZXp1sXObgyPatpcwjWgsdBGsagWW0cdJpX/DO2jMw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.7.4" + +"@babel/plugin-transform-new-target@^7.4.0": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz#18d120438b0cc9ee95a47f2c72bc9768fbed60a5" integrity sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-object-super@^7.2.0", "@babel/plugin-transform-object-super@^7.5.5": +"@babel/plugin-transform-new-target@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.7.4.tgz#4a0753d2d60639437be07b592a9e58ee00720167" + integrity sha512-CnPRiNtOG1vRodnsyGX37bHQleHE14B9dnnlgSeEs3ek3fHN1A1SScglTCg1sfbe7sRQ2BUcpgpTpWSfMKz3gg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-object-super@^7.2.0": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.5.5.tgz#c70021df834073c65eb613b8679cc4a381d1a9f9" integrity sha512-un1zJQAhSosGFBduPgN/YFNvWVpRuHKU7IHBglLoLZsGmruJPOo6pbInneflUdmq7YvSVqhpPs5zdBvLnteltQ== @@ -593,7 +1065,15 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-replace-supers" "^7.5.5" -"@babel/plugin-transform-parameters@^7.4.3", "@babel/plugin-transform-parameters@^7.4.4": +"@babel/plugin-transform-object-super@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.7.4.tgz#48488937a2d586c0148451bf51af9d7dda567262" + integrity sha512-ho+dAEhC2aRnff2JCA0SAK7V2R62zJd/7dmtoe7MHcso4C2mS+vZjn1Pb1pCVZvJs1mgsvv5+7sT+m3Bysb6eg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.7.4" + +"@babel/plugin-transform-parameters@^7.4.3": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz#7556cf03f318bd2719fe4c922d2d808be5571e16" integrity sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw== @@ -602,6 +1082,15 @@ "@babel/helper-get-function-arity" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-parameters@^7.7.4", "@babel/plugin-transform-parameters@^7.7.7": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.7.7.tgz#7a884b2460164dc5f194f668332736584c760007" + integrity sha512-OhGSrf9ZBrr1fw84oFXj5hgi8Nmg+E2w5L7NhnG0lPvpDtqd7dbyilM2/vR8CKbJ907RyxPh2kj6sBCSSfI9Ew== + dependencies: + "@babel/helper-call-delegate" "^7.7.4" + "@babel/helper-get-function-arity" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-property-literals@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz#03e33f653f5b25c4eb572c98b9485055b389e905" @@ -609,6 +1098,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-property-literals@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.7.4.tgz#2388d6505ef89b266103f450f9167e6bd73f98c2" + integrity sha512-MatJhlC4iHsIskWYyawl53KuHrt+kALSADLQQ/HkhTjX954fkxIEh4q5slL4oRAnsm/eDoZ4q0CIZpcqBuxhJQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-react-constant-elements@^7.0.0": version "7.6.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.6.3.tgz#9fc9ea060b983c7c035acbe481cbe1fb1245bfff" @@ -617,7 +1113,14 @@ "@babel/helper-annotate-as-pure" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-react-display-name@7.2.0", "@babel/plugin-transform-react-display-name@^7.0.0": +"@babel/plugin-transform-react-display-name@7.7.4", "@babel/plugin-transform-react-display-name@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.7.4.tgz#9f2b80b14ebc97eef4a9b29b612c58ed9c0d10dd" + integrity sha512-sBbIvqYkthai0X0vkD2xsAwluBp+LtNHH+/V4a5ydifmTtb8KOVOlrMIk/MYmIc4uTYDnjZUHQildYNo36SRJw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-react-display-name@^7.0.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz#ebfaed87834ce8dc4279609a4f0c324c156e3eb0" integrity sha512-Htf/tPa5haZvRMiNSQSFifK12gtr/8vwfr+A9y69uF0QcU77AVu4K7MiHEkTxF7lQoHOL0F9ErqgfNEAKgXj7A== @@ -632,6 +1135,14 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-jsx" "^7.2.0" +"@babel/plugin-transform-react-jsx-self@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.7.4.tgz#81b8fbfd14b2215e8f1c2c3adfba266127b0231c" + integrity sha512-PWYjSfqrO273mc1pKCRTIJXyqfc9vWYBax88yIhQb+bpw3XChVC7VWS4VwRVs63wFHKxizvGSd00XEr+YB9Q2A== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.7.4" + "@babel/plugin-transform-react-jsx-source@^7.0.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.5.0.tgz#583b10c49cf057e237085bcbd8cc960bd83bd96b" @@ -640,6 +1151,14 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-jsx" "^7.2.0" +"@babel/plugin-transform-react-jsx-source@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.7.4.tgz#8994b1bf6014b133f5a46d3b7d1ee5f5e3e72c10" + integrity sha512-5ZU9FnPhqtHsOXxutRtXZAzoEJwDaP32QcobbMP1/qt7NYcsCNK8XgzJcJfoEr/ZnzVvUNInNjIW22Z6I8p9mg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.7.4" + "@babel/plugin-transform-react-jsx@^7.0.0": version "7.3.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz#f2cab99026631c767e2745a5368b331cfe8f5290" @@ -649,13 +1168,29 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-jsx" "^7.2.0" -"@babel/plugin-transform-regenerator@^7.4.3", "@babel/plugin-transform-regenerator@^7.4.5": +"@babel/plugin-transform-react-jsx@^7.7.4": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.7.7.tgz#5cbaa7445b4a09f774029f3cc7bb448ff3122a5d" + integrity sha512-SlPjWPbva2+7/ZJbGcoqjl4LsQaLpKEzxW9hcxU7675s24JmdotJOSJ4cgAbV82W3FcZpHIGmRZIlUL8ayMvjw== + dependencies: + "@babel/helper-builder-react-jsx" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.7.4" + +"@babel/plugin-transform-regenerator@^7.4.3": version "7.4.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz#629dc82512c55cee01341fb27bdfcb210354680f" integrity sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA== dependencies: regenerator-transform "^0.14.0" +"@babel/plugin-transform-regenerator@^7.7.4", "@babel/plugin-transform-regenerator@^7.7.5": + version "7.7.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.7.5.tgz#3a8757ee1a2780f390e89f246065ecf59c26fce9" + integrity sha512-/8I8tPvX2FkuEyWbjRCt4qTAgZK0DVy8QRguhA524UH48RfGJy94On2ri+dCuwOpcerPRl9O4ebQkRcVzIaGBw== + dependencies: + regenerator-transform "^0.14.0" + "@babel/plugin-transform-reserved-words@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz#4792af87c998a49367597d07fedf02636d2e1634" @@ -663,12 +1198,19 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-runtime@7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.6.0.tgz#85a3cce402b28586138e368fce20ab3019b9713e" - integrity sha512-Da8tMf7uClzwUm/pnJ1S93m/aRXmoYNDD7TkHua8xBDdaAs54uZpTWvEt6NGwmoVMb9mZbntfTqmG2oSzN/7Vg== +"@babel/plugin-transform-reserved-words@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.7.4.tgz#6a7cf123ad175bb5c69aec8f6f0770387ed3f1eb" + integrity sha512-OrPiUB5s5XvkCO1lS7D8ZtHcswIC57j62acAnJZKqGGnHP+TIc/ljQSrgdX/QyOTdEK5COAhuc820Hi1q2UgLQ== dependencies: - "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-runtime@7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.7.4.tgz#51fe458c1c1fa98a8b07934f4ed38b6cd62177a6" + integrity sha512-O8kSkS5fP74Ad/8pfsCMGa8sBRdLxYoSReaARRNSz3FbFQj3z/QUvoUmJ28gn9BO93YfnXc3j+Xyaqe8cKDNBQ== + dependencies: + "@babel/helper-module-imports" "^7.7.4" "@babel/helper-plugin-utils" "^7.0.0" resolve "^1.8.1" semver "^5.5.1" @@ -680,13 +1222,27 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-spread@^7.2.0", "@babel/plugin-transform-spread@^7.6.2": +"@babel/plugin-transform-shorthand-properties@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.7.4.tgz#74a0a9b2f6d67a684c6fbfd5f0458eb7ba99891e" + integrity sha512-q+suddWRfIcnyG5YiDP58sT65AJDZSUhXQDZE3r04AuqD6d/XLaQPPXSBzP2zGerkgBivqtQm9XKGLuHqBID6Q== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-spread@^7.2.0": version "7.6.2" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.6.2.tgz#fc77cf798b24b10c46e1b51b1b88c2bf661bb8dd" integrity sha512-DpSvPFryKdK1x+EDJYCy28nmAaIMdxmhot62jAXF/o99iA33Zj2Lmcp3vDmz+MUh0LNYVPvfj5iC3feb3/+PFg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-spread@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.7.4.tgz#aa673b356fe6b7e70d69b6e33a17fef641008578" + integrity sha512-8OSs0FLe5/80cndziPlg4R0K6HcWSM0zyNhHhLsmw/Nc5MaA49cAsnoJ/t/YZf8qkG7fD+UjTRaApVDB526d7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-sticky-regex@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1" @@ -695,7 +1251,15 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-regex" "^7.0.0" -"@babel/plugin-transform-template-literals@^7.2.0", "@babel/plugin-transform-template-literals@^7.4.4": +"@babel/plugin-transform-sticky-regex@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.7.4.tgz#ffb68c05090c30732076b1285dc1401b404a123c" + integrity sha512-Ls2NASyL6qtVe1H1hXts9yuEeONV2TJZmplLONkMPUG158CtmnrzW5Q5teibM5UVOFjG0D3IC5mzXR6pPpUY7A== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + +"@babel/plugin-transform-template-literals@^7.2.0": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz#9d28fea7bbce637fb7612a0750989d8321d4bcb0" integrity sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g== @@ -703,6 +1267,14 @@ "@babel/helper-annotate-as-pure" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-template-literals@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.7.4.tgz#1eb6411736dd3fe87dbd20cc6668e5121c17d604" + integrity sha512-sA+KxLwF3QwGj5abMHkHgshp9+rRz+oY9uoRil4CyLtgEuE/88dpkeWgNk5qKVsJE9iSfly3nvHapdRiIS2wnQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-typeof-symbol@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz#117d2bcec2fbf64b4b59d1f9819894682d29f2b2" @@ -710,16 +1282,23 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-typescript@^7.6.0": - version "7.6.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.6.3.tgz#dddb50cf3b8b2ef70b22e5326e9a91f05a1db13b" - integrity sha512-aiWINBrPMSC3xTXRNM/dfmyYuPNKY/aexYqBgh0HBI5Y+WO5oRAqW/oROYeYHrF4Zw12r9rK4fMk/ZlAmqx/FQ== +"@babel/plugin-transform-typeof-symbol@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.7.4.tgz#3174626214f2d6de322882e498a38e8371b2140e" + integrity sha512-KQPUQ/7mqe2m0B8VecdyaW5XcQYaePyl9R7IsKd+irzj6jvbhoGnRE+M0aNkyAzI07VfUQ9266L5xMARitV3wg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-typescript@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.7.4.tgz#2974fd05f4e85c695acaf497f432342de9fc0636" + integrity sha512-X8e3tcPEKnwwPVG+vP/vSqEShkwODOEeyQGod82qrIuidwIrfnsGn11qPM1jBLF4MqguTXXYzm58d0dY+/wdpg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.6.0" + "@babel/helper-create-class-features-plugin" "^7.7.4" "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-typescript" "^7.2.0" + "@babel/plugin-syntax-typescript" "^7.7.4" -"@babel/plugin-transform-unicode-regex@^7.4.3", "@babel/plugin-transform-unicode-regex@^7.4.4", "@babel/plugin-transform-unicode-regex@^7.6.2": +"@babel/plugin-transform-unicode-regex@^7.4.3": version "7.6.2" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.6.2.tgz#b692aad888a7e8d8b1b214be6b9dc03d5031f698" integrity sha512-orZI6cWlR3nk2YmYdb0gImrgCUwb5cBUwjf6Ks6dvNVvXERkwtJWOQaEOjPiu0Gu1Tq6Yq/hruCZZOOi9F34Dw== @@ -728,6 +1307,14 @@ "@babel/helper-regex" "^7.4.4" regexpu-core "^4.6.0" +"@babel/plugin-transform-unicode-regex@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.7.4.tgz#a3c0f65b117c4c81c5b6484f2a5e7b95346b83ae" + integrity sha512-N77UUIV+WCvE+5yHw+oks3m18/umd7y392Zv7mYTpFqHtkpcc+QUz+gLJNTWVlWROIWeLqY0f3OjZxV5TcXnRw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/preset-env@7.4.3": version "7.4.3" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.4.3.tgz#e71e16e123dc0fbf65a52cbcbcefd072fbd02880" @@ -782,128 +1369,130 @@ js-levenshtein "^1.1.3" semver "^5.5.0" -"@babel/preset-env@7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.6.0.tgz#aae4141c506100bb2bfaa4ac2a5c12b395619e50" - integrity sha512-1efzxFv/TcPsNXlRhMzRnkBFMeIqBBgzwmZwlFDw5Ubj0AGLeufxugirwZmkkX/ayi3owsSqoQ4fw8LkfK9SYg== +"@babel/preset-env@7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.7.4.tgz#ccaf309ae8d1ee2409c85a4e2b5e280ceee830f8" + integrity sha512-Dg+ciGJjwvC1NIe/DGblMbcGq1HOtKbw8RLl4nIjlfcILKEOkWT/vRqPpumswABEBVudii6dnVwrBtzD7ibm4g== dependencies: - "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-module-imports" "^7.7.4" "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-async-generator-functions" "^7.2.0" - "@babel/plugin-proposal-dynamic-import" "^7.5.0" - "@babel/plugin-proposal-json-strings" "^7.2.0" - "@babel/plugin-proposal-object-rest-spread" "^7.5.5" - "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-syntax-async-generators" "^7.2.0" - "@babel/plugin-syntax-dynamic-import" "^7.2.0" - "@babel/plugin-syntax-json-strings" "^7.2.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" - "@babel/plugin-transform-arrow-functions" "^7.2.0" - "@babel/plugin-transform-async-to-generator" "^7.5.0" - "@babel/plugin-transform-block-scoped-functions" "^7.2.0" - "@babel/plugin-transform-block-scoping" "^7.6.0" - "@babel/plugin-transform-classes" "^7.5.5" - "@babel/plugin-transform-computed-properties" "^7.2.0" - "@babel/plugin-transform-destructuring" "^7.6.0" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/plugin-transform-duplicate-keys" "^7.5.0" - "@babel/plugin-transform-exponentiation-operator" "^7.2.0" - "@babel/plugin-transform-for-of" "^7.4.4" - "@babel/plugin-transform-function-name" "^7.4.4" - "@babel/plugin-transform-literals" "^7.2.0" - "@babel/plugin-transform-member-expression-literals" "^7.2.0" - "@babel/plugin-transform-modules-amd" "^7.5.0" - "@babel/plugin-transform-modules-commonjs" "^7.6.0" - "@babel/plugin-transform-modules-systemjs" "^7.5.0" - "@babel/plugin-transform-modules-umd" "^7.2.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.6.0" - "@babel/plugin-transform-new-target" "^7.4.4" - "@babel/plugin-transform-object-super" "^7.5.5" - "@babel/plugin-transform-parameters" "^7.4.4" - "@babel/plugin-transform-property-literals" "^7.2.0" - "@babel/plugin-transform-regenerator" "^7.4.5" - "@babel/plugin-transform-reserved-words" "^7.2.0" - "@babel/plugin-transform-shorthand-properties" "^7.2.0" - "@babel/plugin-transform-spread" "^7.2.0" - "@babel/plugin-transform-sticky-regex" "^7.2.0" - "@babel/plugin-transform-template-literals" "^7.4.4" - "@babel/plugin-transform-typeof-symbol" "^7.2.0" - "@babel/plugin-transform-unicode-regex" "^7.4.4" - "@babel/types" "^7.6.0" + "@babel/plugin-proposal-async-generator-functions" "^7.7.4" + "@babel/plugin-proposal-dynamic-import" "^7.7.4" + "@babel/plugin-proposal-json-strings" "^7.7.4" + "@babel/plugin-proposal-object-rest-spread" "^7.7.4" + "@babel/plugin-proposal-optional-catch-binding" "^7.7.4" + "@babel/plugin-proposal-unicode-property-regex" "^7.7.4" + "@babel/plugin-syntax-async-generators" "^7.7.4" + "@babel/plugin-syntax-dynamic-import" "^7.7.4" + "@babel/plugin-syntax-json-strings" "^7.7.4" + "@babel/plugin-syntax-object-rest-spread" "^7.7.4" + "@babel/plugin-syntax-optional-catch-binding" "^7.7.4" + "@babel/plugin-syntax-top-level-await" "^7.7.4" + "@babel/plugin-transform-arrow-functions" "^7.7.4" + "@babel/plugin-transform-async-to-generator" "^7.7.4" + "@babel/plugin-transform-block-scoped-functions" "^7.7.4" + "@babel/plugin-transform-block-scoping" "^7.7.4" + "@babel/plugin-transform-classes" "^7.7.4" + "@babel/plugin-transform-computed-properties" "^7.7.4" + "@babel/plugin-transform-destructuring" "^7.7.4" + "@babel/plugin-transform-dotall-regex" "^7.7.4" + "@babel/plugin-transform-duplicate-keys" "^7.7.4" + "@babel/plugin-transform-exponentiation-operator" "^7.7.4" + "@babel/plugin-transform-for-of" "^7.7.4" + "@babel/plugin-transform-function-name" "^7.7.4" + "@babel/plugin-transform-literals" "^7.7.4" + "@babel/plugin-transform-member-expression-literals" "^7.7.4" + "@babel/plugin-transform-modules-amd" "^7.7.4" + "@babel/plugin-transform-modules-commonjs" "^7.7.4" + "@babel/plugin-transform-modules-systemjs" "^7.7.4" + "@babel/plugin-transform-modules-umd" "^7.7.4" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.7.4" + "@babel/plugin-transform-new-target" "^7.7.4" + "@babel/plugin-transform-object-super" "^7.7.4" + "@babel/plugin-transform-parameters" "^7.7.4" + "@babel/plugin-transform-property-literals" "^7.7.4" + "@babel/plugin-transform-regenerator" "^7.7.4" + "@babel/plugin-transform-reserved-words" "^7.7.4" + "@babel/plugin-transform-shorthand-properties" "^7.7.4" + "@babel/plugin-transform-spread" "^7.7.4" + "@babel/plugin-transform-sticky-regex" "^7.7.4" + "@babel/plugin-transform-template-literals" "^7.7.4" + "@babel/plugin-transform-typeof-symbol" "^7.7.4" + "@babel/plugin-transform-unicode-regex" "^7.7.4" + "@babel/types" "^7.7.4" browserslist "^4.6.0" core-js-compat "^3.1.1" invariant "^2.2.2" js-levenshtein "^1.1.3" semver "^5.5.0" -"@babel/preset-env@^7.1.6": - version "7.6.3" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.6.3.tgz#9e1bf05a2e2d687036d24c40e4639dc46cef2271" - integrity sha512-CWQkn7EVnwzlOdR5NOm2+pfgSNEZmvGjOhlCHBDq0J8/EStr+G+FvPEiz9B56dR6MoiUFjXhfE4hjLoAKKJtIQ== +"@babel/preset-env@^7.4.5": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.7.7.tgz#c294167b91e53e7e36d820e943ece8d0c7fe46ac" + integrity sha512-pCu0hrSSDVI7kCVUOdcMNQEbOPJ52E+LrQ14sN8uL2ALfSqePZQlKrOy+tM4uhEdYlCHi4imr8Zz2cZe9oSdIg== dependencies: - "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-module-imports" "^7.7.4" "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-async-generator-functions" "^7.2.0" - "@babel/plugin-proposal-dynamic-import" "^7.5.0" - "@babel/plugin-proposal-json-strings" "^7.2.0" - "@babel/plugin-proposal-object-rest-spread" "^7.6.2" - "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.6.2" - "@babel/plugin-syntax-async-generators" "^7.2.0" - "@babel/plugin-syntax-dynamic-import" "^7.2.0" - "@babel/plugin-syntax-json-strings" "^7.2.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" - "@babel/plugin-transform-arrow-functions" "^7.2.0" - "@babel/plugin-transform-async-to-generator" "^7.5.0" - "@babel/plugin-transform-block-scoped-functions" "^7.2.0" - "@babel/plugin-transform-block-scoping" "^7.6.3" - "@babel/plugin-transform-classes" "^7.5.5" - "@babel/plugin-transform-computed-properties" "^7.2.0" - "@babel/plugin-transform-destructuring" "^7.6.0" - "@babel/plugin-transform-dotall-regex" "^7.6.2" - "@babel/plugin-transform-duplicate-keys" "^7.5.0" - "@babel/plugin-transform-exponentiation-operator" "^7.2.0" - "@babel/plugin-transform-for-of" "^7.4.4" - "@babel/plugin-transform-function-name" "^7.4.4" - "@babel/plugin-transform-literals" "^7.2.0" - "@babel/plugin-transform-member-expression-literals" "^7.2.0" - "@babel/plugin-transform-modules-amd" "^7.5.0" - "@babel/plugin-transform-modules-commonjs" "^7.6.0" - "@babel/plugin-transform-modules-systemjs" "^7.5.0" - "@babel/plugin-transform-modules-umd" "^7.2.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.6.3" - "@babel/plugin-transform-new-target" "^7.4.4" - "@babel/plugin-transform-object-super" "^7.5.5" - "@babel/plugin-transform-parameters" "^7.4.4" - "@babel/plugin-transform-property-literals" "^7.2.0" - "@babel/plugin-transform-regenerator" "^7.4.5" - "@babel/plugin-transform-reserved-words" "^7.2.0" - "@babel/plugin-transform-shorthand-properties" "^7.2.0" - "@babel/plugin-transform-spread" "^7.6.2" - "@babel/plugin-transform-sticky-regex" "^7.2.0" - "@babel/plugin-transform-template-literals" "^7.4.4" - "@babel/plugin-transform-typeof-symbol" "^7.2.0" - "@babel/plugin-transform-unicode-regex" "^7.6.2" - "@babel/types" "^7.6.3" + "@babel/plugin-proposal-async-generator-functions" "^7.7.4" + "@babel/plugin-proposal-dynamic-import" "^7.7.4" + "@babel/plugin-proposal-json-strings" "^7.7.4" + "@babel/plugin-proposal-object-rest-spread" "^7.7.7" + "@babel/plugin-proposal-optional-catch-binding" "^7.7.4" + "@babel/plugin-proposal-unicode-property-regex" "^7.7.7" + "@babel/plugin-syntax-async-generators" "^7.7.4" + "@babel/plugin-syntax-dynamic-import" "^7.7.4" + "@babel/plugin-syntax-json-strings" "^7.7.4" + "@babel/plugin-syntax-object-rest-spread" "^7.7.4" + "@babel/plugin-syntax-optional-catch-binding" "^7.7.4" + "@babel/plugin-syntax-top-level-await" "^7.7.4" + "@babel/plugin-transform-arrow-functions" "^7.7.4" + "@babel/plugin-transform-async-to-generator" "^7.7.4" + "@babel/plugin-transform-block-scoped-functions" "^7.7.4" + "@babel/plugin-transform-block-scoping" "^7.7.4" + "@babel/plugin-transform-classes" "^7.7.4" + "@babel/plugin-transform-computed-properties" "^7.7.4" + "@babel/plugin-transform-destructuring" "^7.7.4" + "@babel/plugin-transform-dotall-regex" "^7.7.7" + "@babel/plugin-transform-duplicate-keys" "^7.7.4" + "@babel/plugin-transform-exponentiation-operator" "^7.7.4" + "@babel/plugin-transform-for-of" "^7.7.4" + "@babel/plugin-transform-function-name" "^7.7.4" + "@babel/plugin-transform-literals" "^7.7.4" + "@babel/plugin-transform-member-expression-literals" "^7.7.4" + "@babel/plugin-transform-modules-amd" "^7.7.5" + "@babel/plugin-transform-modules-commonjs" "^7.7.5" + "@babel/plugin-transform-modules-systemjs" "^7.7.4" + "@babel/plugin-transform-modules-umd" "^7.7.4" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.7.4" + "@babel/plugin-transform-new-target" "^7.7.4" + "@babel/plugin-transform-object-super" "^7.7.4" + "@babel/plugin-transform-parameters" "^7.7.7" + "@babel/plugin-transform-property-literals" "^7.7.4" + "@babel/plugin-transform-regenerator" "^7.7.5" + "@babel/plugin-transform-reserved-words" "^7.7.4" + "@babel/plugin-transform-shorthand-properties" "^7.7.4" + "@babel/plugin-transform-spread" "^7.7.4" + "@babel/plugin-transform-sticky-regex" "^7.7.4" + "@babel/plugin-transform-template-literals" "^7.7.4" + "@babel/plugin-transform-typeof-symbol" "^7.7.4" + "@babel/plugin-transform-unicode-regex" "^7.7.4" + "@babel/types" "^7.7.4" browserslist "^4.6.0" - core-js-compat "^3.1.1" + core-js-compat "^3.6.0" invariant "^2.2.2" js-levenshtein "^1.1.3" semver "^5.5.0" -"@babel/preset-react@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.0.0.tgz#e86b4b3d99433c7b3e9e91747e2653958bc6b3c0" - integrity sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w== +"@babel/preset-react@7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.7.4.tgz#3fe2ea698d8fb536d8e7881a592c3c1ee8bf5707" + integrity sha512-j+vZtg0/8pQr1H8wKoaJyGL2IEk3rG/GIvua7Sec7meXVIvGycihlGMx5xcU00kqCJbwzHs18xTu3YfREOqQ+g== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-transform-react-display-name" "^7.0.0" - "@babel/plugin-transform-react-jsx" "^7.0.0" - "@babel/plugin-transform-react-jsx-self" "^7.0.0" - "@babel/plugin-transform-react-jsx-source" "^7.0.0" + "@babel/plugin-transform-react-display-name" "^7.7.4" + "@babel/plugin-transform-react-jsx" "^7.7.4" + "@babel/plugin-transform-react-jsx-self" "^7.7.4" + "@babel/plugin-transform-react-jsx-source" "^7.7.4" "@babel/preset-react@^7.0.0": version "7.6.3" @@ -916,13 +1505,13 @@ "@babel/plugin-transform-react-jsx-self" "^7.0.0" "@babel/plugin-transform-react-jsx-source" "^7.0.0" -"@babel/preset-typescript@7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.6.0.tgz#25768cb8830280baf47c45ab1a519a9977498c98" - integrity sha512-4xKw3tTcCm0qApyT6PqM9qniseCE79xGHiUnNdKGdxNsGUc2X7WwZybqIpnTmoukg3nhPceI5KPNzNqLNeIJww== +"@babel/preset-typescript@7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.7.4.tgz#780059a78e6fa7f7a4c87f027292a86b31ce080a" + integrity sha512-rqrjxfdiHPsnuPur0jKrIIGQCIgoTWMTjlbWE69G4QJ6TIOVnnRnIJhUxNTL/VwDmEAVX08Tq3B1nirer5341w== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-transform-typescript" "^7.6.0" + "@babel/plugin-transform-typescript" "^7.7.4" "@babel/register@7.4.4": version "7.4.4" @@ -936,20 +1525,27 @@ pirates "^4.0.0" source-map-support "^0.5.9" -"@babel/runtime@7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.6.0.tgz#4fc1d642a9fd0299754e8b5de62c631cf5568205" - integrity sha512-89eSBLJsxNxOERC0Op4vd+0Bqm6wRMqMbFtV3i0/fbaWw/mJ8Q3eBvgX0G4SyrOOLCtbu98HspF8o09MRT+KzQ== +"@babel/runtime@7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.4.tgz#b23a856751e4bf099262f867767889c0e3fe175b" + integrity sha512-r24eVUUr0QqNZa+qrImUk8fn5SPhHq+IfYvIoIMg0do3GdK9sMdiLKP3GYVVaxpPKORgm8KRKaNTEhAjgIpLMw== dependencies: regenerator-runtime "^0.13.2" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.2", "@babel/runtime@^7.4.5": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.5": version "7.6.3" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.6.3.tgz#935122c74c73d2240cafd32ddb5fc2a6cd35cf1f" integrity sha512-kq6anf9JGjW8Nt5rYfEuGRaEAaH1mkv3Bbu6rYvLOpPh/RusSJXuKPEAoZ7L7gybZkchE8+NV5g9vKF4AGAtsA== dependencies: regenerator-runtime "^0.13.2" +"@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.7.tgz#194769ca8d6d7790ec23605af9ee3e42a0aa79cf" + integrity sha512-uCnC2JEVAu8AKB5do1WRIsvrdJ0flYx/A/9f/6chdacnEZ7LmavjdsDXr5ksYBegxtuTPR5Va9/+13QF/kFkCA== + dependencies: + regenerator-runtime "^0.13.2" + "@babel/template@^7.1.0", "@babel/template@^7.4.0", "@babel/template@^7.4.4", "@babel/template@^7.6.0": version "7.6.0" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.6.0.tgz#7f0159c7f5012230dad64cca42ec9bdb5c9536e6" @@ -959,7 +1555,16 @@ "@babel/parser" "^7.6.0" "@babel/types" "^7.6.0" -"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.4", "@babel/traverse@^7.5.5", "@babel/traverse@^7.6.0", "@babel/traverse@^7.6.2", "@babel/traverse@^7.6.3": +"@babel/template@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.7.4.tgz#428a7d9eecffe27deac0a98e23bf8e3675d2a77b" + integrity sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.7.4" + "@babel/types" "^7.7.4" + +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.4", "@babel/traverse@^7.5.5", "@babel/traverse@^7.6.2", "@babel/traverse@^7.6.3": version "7.6.3" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.6.3.tgz#66d7dba146b086703c0fb10dd588b7364cec47f9" integrity sha512-unn7P4LGsijIxaAJo/wpoU11zN+2IaClkQAxcJWBNCMS6cmVh802IyLHNkAjQ0iYnRS3nnxk5O3fuXW28IMxTw== @@ -974,6 +1579,21 @@ globals "^11.1.0" lodash "^4.17.13" +"@babel/traverse@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.7.4.tgz#9c1e7c60fb679fe4fcfaa42500833333c2058558" + integrity sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw== + dependencies: + "@babel/code-frame" "^7.5.5" + "@babel/generator" "^7.7.4" + "@babel/helper-function-name" "^7.7.4" + "@babel/helper-split-export-declaration" "^7.7.4" + "@babel/parser" "^7.7.4" + "@babel/types" "^7.7.4" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + "@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.5.5", "@babel/types@^7.6.0", "@babel/types@^7.6.3": version "7.6.3" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.6.3.tgz#3f07d96f854f98e2fbd45c64b0cb942d11e8ba09" @@ -983,6 +1603,15 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" +"@babel/types@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.7.4.tgz#516570d539e44ddf308c07569c258ff94fde9193" + integrity sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA== + dependencies: + esutils "^2.0.2" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + "@blockone/eslint-config-blockone@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@blockone/eslint-config-blockone/-/eslint-config-blockone-1.1.1.tgz#44f81571c0051bdb356d10fb3676d866ddc18fc9" @@ -1023,10 +1652,10 @@ resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== -"@csstools/normalize.css@^9.0.1": - version "9.0.1" - resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-9.0.1.tgz#c27b391d8457d1e893f1eddeaf5e5412d12ffbb5" - integrity sha512-6It2EVfGskxZCQhuykrfnALg7oVeiI6KclWSmGDqB0AiInVrTGB9Jp9i4/Ad21u9Jde/voVQz6eFX/eSg/UsPA== +"@csstools/normalize.css@^10.1.0": + version "10.1.0" + resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18" + integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== "@emotion/is-prop-valid@^0.7.3": version "0.7.3" @@ -1216,7 +1845,7 @@ source-map "^0.6.1" write-file-atomic "2.4.1" -"@jest/types@^24.7.0", "@jest/types@^24.9.0": +"@jest/types@^24.9.0": version "24.9.0" resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== @@ -1292,7 +1921,7 @@ "@svgr/babel-plugin-transform-react-native-svg" "^4.2.0" "@svgr/babel-plugin-transform-svg-component" "^4.2.0" -"@svgr/core@^4.1.0": +"@svgr/core@^4.3.3": version "4.3.3" resolved "https://registry.yarnpkg.com/@svgr/core/-/core-4.3.3.tgz#b37b89d5b757dc66e8c74156d00c368338d24293" integrity sha512-qNuGF1QON1626UCaZamWt5yedpgOytvLj5BQZe2j1k1B8DUG4OyugZyfEwBeXozCUwhLEpsrgPrE+eCu4fY17w== @@ -1308,7 +1937,7 @@ dependencies: "@babel/types" "^7.4.4" -"@svgr/plugin-jsx@^4.1.0", "@svgr/plugin-jsx@^4.3.3": +"@svgr/plugin-jsx@^4.3.3": version "4.3.3" resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-4.3.3.tgz#e2ba913dbdfbe85252a34db101abc7ebd50992fa" integrity sha512-cLOCSpNWQnDB1/v+SUENHH7a0XY09bfuMKdq9+gYvtuwzC2rU4I0wKGFEp1i24holdQdwodCtDQdFtJiTCWc+w== @@ -1318,7 +1947,7 @@ "@svgr/hast-util-to-babel-ast" "^4.3.2" svg-parser "^2.0.0" -"@svgr/plugin-svgo@^4.0.3": +"@svgr/plugin-svgo@^4.3.1": version "4.3.1" resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-4.3.1.tgz#daac0a3d872e3f55935c6588dd370336865e9e32" integrity sha512-PrMtEDUWjX3Ea65JsVCwTIXuSqa3CG9px+DluF1/eo9mlDrgrtFE7NE/DjdhjJgSM9wenlVBzkzneSIUgfUI/w== @@ -1327,19 +1956,19 @@ merge-deep "^3.0.2" svgo "^1.2.2" -"@svgr/webpack@4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-4.1.0.tgz#20c88f32f731c7b1d4711045b2b993887d731c28" - integrity sha512-d09ehQWqLMywP/PT/5JvXwPskPK9QCXUjiSkAHehreB381qExXf5JFCBWhfEyNonRbkIneCeYM99w+Ud48YIQQ== +"@svgr/webpack@4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-4.3.3.tgz#13cc2423bf3dff2d494f16b17eb7eacb86895017" + integrity sha512-bjnWolZ6KVsHhgyCoYRFmbd26p8XVbulCzSG53BDQqAr+JOAderYK7CuYrB3bDjHJuF6LJ7Wrr42+goLRV9qIg== dependencies: - "@babel/core" "^7.1.6" + "@babel/core" "^7.4.5" "@babel/plugin-transform-react-constant-elements" "^7.0.0" - "@babel/preset-env" "^7.1.6" + "@babel/preset-env" "^7.4.5" "@babel/preset-react" "^7.0.0" - "@svgr/core" "^4.1.0" - "@svgr/plugin-jsx" "^4.1.0" - "@svgr/plugin-svgo" "^4.0.3" - loader-utils "^1.1.0" + "@svgr/core" "^4.3.3" + "@svgr/plugin-jsx" "^4.3.3" + "@svgr/plugin-svgo" "^4.3.1" + loader-utils "^1.2.3" "@types/babel__core@^7.1.0": version "7.1.3" @@ -1388,6 +2017,25 @@ dependencies: "@types/bn.js" "*" +"@types/eslint-visitor-keys@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" + integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== + +"@types/events@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" + integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== + +"@types/glob@^7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" + integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== + dependencies: + "@types/events" "*" + "@types/minimatch" "*" + "@types/node" "*" + "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": version "2.0.1" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" @@ -1408,11 +2056,26 @@ "@types/istanbul-lib-coverage" "*" "@types/istanbul-lib-report" "*" +"@types/json-schema@^7.0.3": + version "7.0.4" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" + integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== + +"@types/minimatch@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + "@types/node@*": version "12.11.2" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.11.2.tgz#75ba3beda30d690b89a5089ca1c6e8e386150b76" integrity sha512-dsfE4BHJkLQW+reOS6b17xhZ/6FB1rB8eRRvO08nn5o+voxf3i74tuyFWNH6djdfgX7Sm5s6LD8t6mJug4dpDw== +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + "@types/q@^1.5.1": version "1.5.2" resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" @@ -1435,32 +2098,48 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.6.0.tgz#a5ff3128c692393fb16efa403ec7c8a5593dab0f" - integrity sha512-U224c29E2lo861TQZs6GSmyC0OYeRNg6bE9UVIiFBxN2MlA0nq2dCrgIVyyRbC05UOcrgf2Wk/CF2gGOPQKUSQ== +"@typescript-eslint/eslint-plugin@^2.8.0": + version "2.13.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.13.0.tgz#57e933fe16a2fc66dbac059af0d6d85d921d748e" + integrity sha512-QoiANo0MMGNa8ej/yX3BrW5dZj5d8HYcKiM2fyYUlezECqn8Xc7T/e4EUdiGinn8jhBrn+9X47E9TWaaup3u1g== dependencies: - "@typescript-eslint/parser" "1.6.0" - "@typescript-eslint/typescript-estree" "1.6.0" - requireindex "^1.2.0" - tsutils "^3.7.0" + "@typescript-eslint/experimental-utils" "2.13.0" + eslint-utils "^1.4.3" + functional-red-black-tree "^1.0.1" + regexpp "^3.0.0" + tsutils "^3.17.1" + +"@typescript-eslint/experimental-utils@2.13.0": + version "2.13.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.13.0.tgz#958614faa6f77599ee2b241740e0ea402482533d" + integrity sha512-+Hss3clwa6aNiC8ZjA45wEm4FutDV5HsVXPl/rDug1THq6gEtOYRGLqS3JlTk7mSnL5TbJz0LpEbzbPnKvY6sw== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/typescript-estree" "2.13.0" + eslint-scope "^5.0.0" + +"@typescript-eslint/parser@^2.8.0": + version "2.13.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.13.0.tgz#ea1ab394cf9ca17467e3da7f96eca9309f57c326" + integrity sha512-vbDeLr5QRJ1K7x5iRK8J9wuGwR9OVyd1zDAY9XFAQvAosHVjSVbDgkm328ayE6hx2QWVGhwvGaEhedcqAbfQcA== + dependencies: + "@types/eslint-visitor-keys" "^1.0.0" + "@typescript-eslint/experimental-utils" "2.13.0" + "@typescript-eslint/typescript-estree" "2.13.0" + eslint-visitor-keys "^1.1.0" -"@typescript-eslint/parser@1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-1.6.0.tgz#f01189c8b90848e3b8e45a6cdad27870529d1804" - integrity sha512-VB9xmSbfafI+/kI4gUK3PfrkGmrJQfh0N4EScT1gZXSZyUxpsBirPL99EWZg9MmPG0pzq/gMtgkk7/rAHj4aQw== - dependencies: - "@typescript-eslint/typescript-estree" "1.6.0" - eslint-scope "^4.0.0" - eslint-visitor-keys "^1.0.0" - -"@typescript-eslint/typescript-estree@1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-1.6.0.tgz#6cf43a07fee08b8eb52e4513b428c8cdc9751ef0" - integrity sha512-A4CanUwfaG4oXobD5y7EXbsOHjCwn8tj1RDd820etpPAjH+Icjc2K9e/DQM1Hac5zH2BSy+u6bjvvF2wwREvYA== +"@typescript-eslint/typescript-estree@2.13.0": + version "2.13.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.13.0.tgz#a2e746867da772c857c13853219fced10d2566bc" + integrity sha512-t21Mg5cc8T3ADEUGwDisHLIubgXKjuNRbkpzDMLb7/JMmgCe/gHM9FaaujokLey+gwTuLF5ndSQ7/EfQqrQx4g== dependencies: + debug "^4.1.1" + eslint-visitor-keys "^1.1.0" + glob "^7.1.6" + is-glob "^4.0.1" lodash.unescape "4.0.1" - semver "5.5.0" + semver "^6.3.0" + tsutils "^3.17.1" "@webassemblyjs/ast@1.8.5": version "1.8.5" @@ -1636,11 +2315,6 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" -acorn-dynamic-import@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948" - integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw== - acorn-globals@^4.1.0, acorn-globals@^4.3.0: version "4.3.4" resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" @@ -1649,7 +2323,7 @@ acorn-globals@^4.1.0, acorn-globals@^4.3.0: acorn "^6.0.1" acorn-walk "^6.0.1" -acorn-jsx@^5.0.0: +acorn-jsx@^5.0.0, acorn-jsx@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.1.0.tgz#294adb71b57398b0680015f0a38c563ee1db5384" integrity sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw== @@ -1664,27 +2338,56 @@ acorn@^5.5.3: resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== -acorn@^6.0.1, acorn@^6.0.4, acorn@^6.0.5, acorn@^6.0.7: +acorn@^6.0.1, acorn@^6.0.4, acorn@^6.0.7: version "6.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.3.0.tgz#0087509119ffa4fc0a0041d1e93a417e68cb856e" integrity sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA== +acorn@^6.2.1: + version "6.4.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.0.tgz#b659d2ffbafa24baf5db1cdbb2c94a983ecd2784" + integrity sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw== + +acorn@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" + integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ== + address@1.1.2, address@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== +adjust-sourcemap-loader@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-2.0.0.tgz#6471143af75ec02334b219f54bc7970c52fb29a4" + integrity sha512-4hFsTsn58+YjrU9qKzML2JSSDqKvN8mUGQ0nNIrfPi8hmIONT4L3uUaT6MKdMsZ9AjsU6D2xDkZxCkbQPxChrA== + dependencies: + assert "1.4.1" + camelcase "5.0.0" + loader-utils "1.2.3" + object-path "0.11.4" + regex-parser "2.2.10" + +aggregate-error@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" + integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + ajv-errors@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== -ajv-keywords@^3.1.0: +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: version "3.4.1" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== -ajv@^6.1.0, ajv@^6.10.2, ajv@^6.5.5, ajv@^6.9.1: +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5, ajv@^6.9.1: version "6.10.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== @@ -1714,6 +2417,13 @@ ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== +ansi-escapes@^4.2.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.0.tgz#a4ce2b33d6b214b7950d8595c212f12ac9cc569d" + integrity sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg== + dependencies: + type-fest "^0.8.1" + ansi-html@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" @@ -1734,6 +2444,11 @@ ansi-regex@^4.0.0, ansi-regex@^4.1.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -1782,6 +2497,11 @@ aria-query@^3.0.0: ast-types-flow "0.0.7" commander "^2.11.0" +arity-n@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/arity-n/-/arity-n-1.0.4.tgz#d9e76b11733e08569c0847ae7b39b2860b30b745" + integrity sha1-2edrEXM+CFacCEeuezmyhgswt0U= + arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" @@ -1873,6 +2593,13 @@ assert-plus@1.0.0, assert-plus@^1.0.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= +assert@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" + integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE= + dependencies: + util "0.10.3" + assert@^1.1.1: version "1.5.0" resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" @@ -1933,22 +2660,22 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= -atob@^2.1.1: +atob@^2.1.1, atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@^9.4.9: - version "9.6.5" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.6.5.tgz#98f4afe7e93cccf323287515d426019619775e5e" - integrity sha512-rGd50YV8LgwFQ2WQp4XzOTG69u1qQsXn0amww7tjqV5jJuNazgFKYEVItEBngyyvVITKOg20zr2V+9VsrXJQ2g== +autoprefixer@^9.6.1: + version "9.7.3" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.3.tgz#fd42ed03f53de9beb4ca0d61fb4f7268a9bb50b4" + integrity sha512-8T5Y1C5Iyj6PgkPSFd0ODvK9DIleuPKUPYniNxybS47g2k2wFgLZ46lGQHlBuGKIAEV8fbCDfKCCRS1tvOgc3Q== dependencies: - browserslist "^4.7.0" - caniuse-lite "^1.0.30000999" + browserslist "^4.8.0" + caniuse-lite "^1.0.30001012" chalk "^2.4.2" normalize-range "^0.1.2" num2fraction "^1.2.2" - postcss "^7.0.18" + postcss "^7.0.23" postcss-value-parser "^4.0.2" aws-sign2@~0.7.0: @@ -1977,19 +2704,7 @@ babel-code-frame@^6.22.0: esutils "^2.0.2" js-tokens "^3.0.2" -babel-eslint@10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.1.tgz#919681dc099614cd7d31d45c8908695092a1faed" - integrity sha512-z7OT1iNV+TjOwHNLLyJk+HN+YVWX+CLE6fPD2SymJZOZQBs+QIexFjhm4keGTm8MW9xr4EC9Q0PbaLB24V5GoQ== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.0.0" - "@babel/traverse" "^7.0.0" - "@babel/types" "^7.0.0" - eslint-scope "3.7.1" - eslint-visitor-keys "^1.0.0" - -babel-eslint@^10.0.1: +babel-eslint@10.0.3, babel-eslint@^10.0.1: version "10.0.3" resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.3.tgz#81a2c669be0f205e19462fed2482d33e4687a88a" integrity sha512-z3U7eMY6r/3f3/JB9mTsLjyxrv0Yb1zb8PCWCLpguxfCzBIZUwy23R1t/XKewP+8mEN2Ck8Dtr4q20z6ce6SoA== @@ -2008,7 +2723,7 @@ babel-extract-comments@^1.0.0: dependencies: babylon "^6.18.0" -babel-jest@^24.8.0, babel-jest@^24.9.0: +babel-jest@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" integrity sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw== @@ -2021,15 +2736,15 @@ babel-jest@^24.8.0, babel-jest@^24.9.0: chalk "^2.4.2" slash "^2.0.0" -babel-loader@8.0.5: - version "8.0.5" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.5.tgz#225322d7509c2157655840bba52e46b6c2f2fe33" - integrity sha512-NTnHnVRd2JnRqPC0vW+iOQWU5pchDbYXsG2E6DMXEpMfUcQKclF9gmf3G3ZMhzG7IG9ji4coL0cm+FxeWxDpnw== +babel-loader@8.0.6: + version "8.0.6" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.6.tgz#e33bdb6f362b03f4bb141a0c21ab87c501b70dfb" + integrity sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw== dependencies: find-cache-dir "^2.0.0" loader-utils "^1.0.2" mkdirp "^0.5.1" - util.promisify "^1.0.0" + pify "^4.0.1" babel-plugin-dynamic-import-node@2.3.0, babel-plugin-dynamic-import-node@^2.3.0: version "2.3.0" @@ -2055,19 +2770,19 @@ babel-plugin-jest-hoist@^24.9.0: dependencies: "@types/babel__traverse" "^7.0.6" -babel-plugin-macros@2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.6.1.tgz#41f7ead616fc36f6a93180e89697f69f51671181" - integrity sha512-6W2nwiXme6j1n2erPOnmRiWfObUhWH7Qw1LMi9XZy8cj+KtESu3T6asZvtk5bMQQjX8te35o7CFueiSdL/2NmQ== +babel-plugin-macros@2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.7.1.tgz#ee294383c1a38f9d6535be3d89734824cb3ed415" + integrity sha512-HNM284amlKSQ6FddI4jLXD+XTqF0cTYOe5uemOIZxHJHnamC+OhFQ57rMF9sgnYhkJQptVl9U1SKVZsV9/GLQQ== dependencies: - "@babel/runtime" "^7.4.2" - cosmiconfig "^5.2.0" - resolve "^1.10.0" + "@babel/runtime" "^7.7.2" + cosmiconfig "^6.0.0" + resolve "^1.12.0" -babel-plugin-named-asset-import@^0.3.2: - version "0.3.4" - resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.4.tgz#4a8fc30e9a3e2b1f5ed36883386ab2d84e1089bd" - integrity sha512-S6d+tEzc5Af1tKIMbsf2QirCcPdQ+mKUCY2H1nJj1DyA1ShwpsoxEOAwbWsG5gcXNV/olpvQd9vrUWRx4bnhpw== +babel-plugin-named-asset-import@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.5.tgz#d3fa1a7f1f4babd4ed0785b75e2f926df0d70d0d" + integrity sha512-sGhfINU+AuMw9oFAdIn/nD5sem3pn/WgxAfDZ//Q3CnF+5uaho7C7shh2rKLk6sKE/XkfmyibghocwKdVjLIKg== "babel-plugin-styled-components@>= 1": version "1.10.6" @@ -2110,26 +2825,29 @@ babel-preset-jest@^24.9.0: "@babel/plugin-syntax-object-rest-spread" "^7.0.0" babel-plugin-jest-hoist "^24.9.0" -babel-preset-react-app@^9.0.0: - version "9.0.2" - resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-9.0.2.tgz#247d37e883d6d6f4b4691e5f23711bb2dd80567d" - integrity sha512-aXD+CTH8Chn8sNJr4tO/trWKqe5sSE4hdO76j9fhVezJSzmpWYWUSc5JoPmdSxADwef5kQFNGKXd433vvkd2VQ== - dependencies: - "@babel/core" "7.6.0" - "@babel/plugin-proposal-class-properties" "7.5.5" - "@babel/plugin-proposal-decorators" "7.6.0" - "@babel/plugin-proposal-object-rest-spread" "7.5.5" - "@babel/plugin-syntax-dynamic-import" "7.2.0" - "@babel/plugin-transform-destructuring" "7.6.0" - "@babel/plugin-transform-flow-strip-types" "7.4.4" - "@babel/plugin-transform-react-display-name" "7.2.0" - "@babel/plugin-transform-runtime" "7.6.0" - "@babel/preset-env" "7.6.0" - "@babel/preset-react" "7.0.0" - "@babel/preset-typescript" "7.6.0" - "@babel/runtime" "7.6.0" +babel-preset-react-app@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-9.1.0.tgz#74c644d809f098d4b131646730c7bed0696084ca" + integrity sha512-0qMOv/pCcCQWxX1eNyKD9GlzZTdzZIK/Pq3O6TGe65tZSJTSplw1pFlaPujm0GjBj4g3GeCQbP08vvzlH7OGHg== + dependencies: + "@babel/core" "7.7.4" + "@babel/plugin-proposal-class-properties" "7.7.4" + "@babel/plugin-proposal-decorators" "7.7.4" + "@babel/plugin-proposal-nullish-coalescing-operator" "7.7.4" + "@babel/plugin-proposal-numeric-separator" "7.7.4" + "@babel/plugin-proposal-object-rest-spread" "7.7.4" + "@babel/plugin-proposal-optional-chaining" "7.7.4" + "@babel/plugin-syntax-dynamic-import" "7.7.4" + "@babel/plugin-transform-destructuring" "7.7.4" + "@babel/plugin-transform-flow-strip-types" "7.7.4" + "@babel/plugin-transform-react-display-name" "7.7.4" + "@babel/plugin-transform-runtime" "7.7.4" + "@babel/preset-env" "7.7.4" + "@babel/preset-react" "7.7.4" + "@babel/preset-typescript" "7.7.4" + "@babel/runtime" "7.7.4" babel-plugin-dynamic-import-node "2.3.0" - babel-plugin-macros "2.6.1" + babel-plugin-macros "2.7.1" babel-plugin-transform-react-remove-prop-types "0.4.24" babel-runtime@6.26.0, babel-runtime@^6.26.0: @@ -2362,16 +3080,16 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.7.0.tgz#9ee89225ffc07db03409f2fee524dc8227458a17" - integrity sha512-9rGNDtnj+HaahxiVV38Gn8n8Lr8REKsel68v1sPFfIGEK6uSXTY3h9acgiT1dZVtOOUtifo/Dn8daDQ5dUgVsA== +browserslist@4.7.3: + version "4.7.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.7.3.tgz#02341f162b6bcc1e1028e30624815d4924442dc3" + integrity sha512-jWvmhqYpx+9EZm/FxcZSbUZyDEvDTLDi3nSAKbzEkyWvtI0mNSmUosey+5awDW1RUlrgXbQb5A6qY1xQH9U6MQ== dependencies: - caniuse-lite "^1.0.30000989" - electron-to-chromium "^1.3.247" - node-releases "^1.1.29" + caniuse-lite "^1.0.30001010" + electron-to-chromium "^1.3.306" + node-releases "^1.1.40" -browserslist@^4.0.0, browserslist@^4.1.1, browserslist@^4.4.2, browserslist@^4.5.2, browserslist@^4.6.0, browserslist@^4.7.0, browserslist@^4.7.1: +browserslist@^4.0.0, browserslist@^4.5.2, browserslist@^4.6.0, browserslist@^4.7.1: version "4.7.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.7.1.tgz#bd400d1aea56538580e8c4d5f1c54ac11b5ab468" integrity sha512-QtULFqKIAtiyNx7NhZ/p4rB8m3xDozVo/pi5VgTlADLF2tNigz/QH+v0m5qhn7XfHT7u+607NcCNOnC0HZAlMg== @@ -2380,6 +3098,15 @@ browserslist@^4.0.0, browserslist@^4.1.1, browserslist@^4.4.2, browserslist@^4.5 electron-to-chromium "^1.3.284" node-releases "^1.1.36" +browserslist@^4.6.2, browserslist@^4.6.4, browserslist@^4.8.0, browserslist@^4.8.2: + version "4.8.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.2.tgz#b45720ad5fbc8713b7253c20766f701c9a694289" + integrity sha512-+M4oeaTplPm/f1pXDw84YohEv7B1i/2Aisei8s4s6k3QsoSHa7i5sz8u/cGQkkatCPxMASKxPualR4wwYgVboA== + dependencies: + caniuse-lite "^1.0.30001015" + electron-to-chromium "^1.3.322" + node-releases "^1.1.42" + bs58@4.0.1, bs58@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" @@ -2461,6 +3188,30 @@ cacache@^12.0.2: unique-filename "^1.1.1" y18n "^4.0.0" +cacache@^13.0.1: + version "13.0.1" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-13.0.1.tgz#a8000c21697089082f85287a1aec6e382024a71c" + integrity sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w== + dependencies: + chownr "^1.1.2" + figgy-pudding "^3.5.1" + fs-minipass "^2.0.0" + glob "^7.1.4" + graceful-fs "^4.2.2" + infer-owner "^1.0.4" + lru-cache "^5.1.1" + minipass "^3.0.0" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + p-map "^3.0.0" + promise-inflight "^1.0.1" + rimraf "^2.7.1" + ssri "^7.0.0" + unique-filename "^1.1.1" + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -2521,6 +3272,16 @@ camelcase-keys@^2.0.0: camelcase "^2.0.0" map-obj "^1.0.0" +camelcase@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" + integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== + +camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + camelcase@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" @@ -2531,16 +3292,6 @@ camelcase@^3.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= -camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= - -camelcase@^5.0.0, camelcase@^5.2.0, camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - camelize@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" @@ -2556,11 +3307,16 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000939, caniuse-lite@^1.0.30000989, caniuse-lite@^1.0.30000999: +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000999: version "1.0.30001002" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001002.tgz#ba999a737b1abd5bf0fd47efe43a09b9cadbe9b0" integrity sha512-pRuxPE8wdrWmVPKcDmJJiGBxr6lFJq4ivdSeo9FTmGj5Rb8NX3Mby2pARG57MXF15hYAhZ0nHV5XxT2ig4bz3g== +caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001010, caniuse-lite@^1.0.30001012, caniuse-lite@^1.0.30001015: + version "1.0.30001017" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001017.tgz#d3ad6ec18148b9bd991829958d9d7e562bb78cd6" + integrity sha512-EDnZyOJ6eYh6lHmCvCdHAFbfV4KJ9lSdfv4h/ppEhrU/Yudkl7jujwMZ1we6RX7DXqBfT04pVMQ4J+1wcTlsKA== + capture-exit@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" @@ -2613,7 +3369,7 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.4: +chokidar@^2.0.2, chokidar@^2.0.4, chokidar@^2.1.8: version "2.1.8" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== @@ -2632,12 +3388,12 @@ chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.4: optionalDependencies: fsevents "^1.2.7" -chownr@^1.1.1: +chownr@^1.1.1, chownr@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142" integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw== -chrome-trace-event@^1.0.0: +chrome-trace-event@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== @@ -2679,6 +3435,11 @@ clean-css@4.2.x: dependencies: source-map "~0.6.0" +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" @@ -2686,6 +3447,13 @@ cli-cursor@^2.1.0: dependencies: restore-cursor "^2.0.0" +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + cli-width@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" @@ -2729,15 +3497,14 @@ clone-deep@^0.2.4: lazy-cache "^1.0.3" shallow-clone "^0.1.2" -clone-deep@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-2.0.2.tgz#00db3a1e173656730d1188c3d6aced6d7ea97713" - integrity sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ== +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== dependencies: - for-own "^1.0.0" is-plain-object "^2.0.4" - kind-of "^6.0.0" - shallow-clone "^1.0.0" + kind-of "^6.0.2" + shallow-clone "^3.0.0" co@^4.6.0: version "4.6.0" @@ -2836,6 +3603,13 @@ component-emitter@^1.2.1: resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== +compose-function@3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/compose-function/-/compose-function-3.0.3.tgz#9ed675f13cc54501d30950a486ff6a7ba3ab185f" + integrity sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8= + dependencies: + arity-n "^1.0.4" + compressible@~2.0.16: version "2.0.17" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1" @@ -2843,7 +3617,7 @@ compressible@~2.0.16: dependencies: mime-db ">= 1.40.0 < 2" -compression@^1.5.2: +compression@^1.7.4: version "1.7.4" resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== @@ -2871,12 +3645,12 @@ concat-stream@^1.5.0: readable-stream "^2.2.2" typedarray "^0.0.6" -confusing-browser-globals@^1.0.5, confusing-browser-globals@^1.0.7: +confusing-browser-globals@^1.0.5, confusing-browser-globals@^1.0.9: version "1.0.9" resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw== -connect-history-api-fallback@^1.3.0: +connect-history-api-fallback@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== @@ -2915,6 +3689,18 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== +convert-source-map@1.7.0, convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +convert-source-map@^0.3.3: + version "0.3.5" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" + integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= + convert-source-map@^1.1.0, convert-source-map@^1.4.0: version "1.6.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" @@ -2957,10 +3743,13 @@ core-js-compat@^3.0.0, core-js-compat@^3.1.1: browserslist "^4.7.1" semver "^6.3.0" -core-js@3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.2.1.tgz#cd41f38534da6cc59f7db050fe67307de9868b09" - integrity sha512-Qa5XSVefSVPRxy2XfUC13WbvqkxhkwB3ve+pgCQveNgYzbM/UxZeu1dcOX/xr4UmfUd+muuvsaxilQzCyUurMw== +core-js-compat@^3.6.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.1.tgz#39638c935c83c93a793abb628b252ec43e85783a" + integrity sha512-2Tl1EuxZo94QS2VeH28Ebf5g3xbPZG/hj/N5HDDy4XMP/ImR0JIer/nggQRiMN91Q54JVkGbytf42wO29oXVHg== + dependencies: + browserslist "^4.8.2" + semver "7.0.0" core-js@^2.4.0: version "2.6.10" @@ -2972,12 +3761,17 @@ core-js@^3.0.0: resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.3.3.tgz#b7048d3c6c1a52b5fe55a729c1d4ccdffe0891bb" integrity sha512-0xmD4vUJRY8nfLyV9zcpC17FtSie5STXzw+HyYw2t8IIvmDnbq7RJUULECCo+NstpJtwK9kx8S+898iyqgeUow== +core-js@^3.4.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.1.tgz#39d5e2e346258cc01eb7d44345b1c3c014ca3f05" + integrity sha512-186WjSik2iTGfDjfdCZAxv2ormxtKgemjC3SI6PL31qOA0j5LhTDVjHChccoc7brwLvpvLPiMyRlcO88C4l1QQ== + core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -cosmiconfig@^5.0.0, cosmiconfig@^5.2.0, cosmiconfig@^5.2.1: +cosmiconfig@^5.0.0, cosmiconfig@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== @@ -2987,6 +3781,17 @@ cosmiconfig@^5.0.0, cosmiconfig@^5.2.0, cosmiconfig@^5.2.1: js-yaml "^3.13.1" parse-json "^4.0.0" +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + create-ecdh@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" @@ -3087,22 +3892,23 @@ css-has-pseudo@^0.10.0: postcss "^7.0.6" postcss-selector-parser "^5.0.0-rc.4" -css-loader@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-2.1.1.tgz#d8254f72e412bb2238bb44dd674ffbef497333ea" - integrity sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w== +css-loader@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.2.0.tgz#bb570d89c194f763627fcf1f80059c6832d009b2" + integrity sha512-QTF3Ud5H7DaZotgdcJjGMvyDj5F3Pn1j/sC6VBEOVp94cbwqyIBdcs/quzj4MC1BKQSrTpQznegH/5giYbhnCQ== dependencies: - camelcase "^5.2.0" - icss-utils "^4.1.0" + camelcase "^5.3.1" + cssesc "^3.0.0" + icss-utils "^4.1.1" loader-utils "^1.2.3" normalize-path "^3.0.0" - postcss "^7.0.14" + postcss "^7.0.17" postcss-modules-extract-imports "^2.0.0" - postcss-modules-local-by-default "^2.0.6" + postcss-modules-local-by-default "^3.0.2" postcss-modules-scope "^2.1.0" - postcss-modules-values "^2.0.0" - postcss-value-parser "^3.3.0" - schema-utils "^1.0.0" + postcss-modules-values "^3.0.0" + postcss-value-parser "^4.0.0" + schema-utils "^2.0.0" css-prefers-color-scheme@^3.1.1: version "3.1.1" @@ -3171,7 +3977,17 @@ css-what@2.1, css-what@^2.1.2: resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== -cssdb@^4.3.0: +css@^2.0.0: + version "2.2.4" + resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" + integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== + dependencies: + inherits "^2.0.3" + source-map "^0.6.1" + source-map-resolve "^0.5.2" + urix "^0.1.0" + +cssdb@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== @@ -3244,7 +4060,7 @@ cssnano-util-same-parent@^4.0.0: resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== -cssnano@^4.1.0: +cssnano@^4.1.10: version "4.1.10" resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== @@ -3285,6 +4101,14 @@ cyclist@^1.0.1: resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + damerau-levenshtein@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.5.tgz#780cf7144eb2e8dbd1c3bb83ae31100ccc31a414" @@ -3337,13 +4161,6 @@ decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= -decamelize@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-2.0.0.tgz#656d7bbc8094c4c788ea53c5840908c9c7d063c7" - integrity sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg== - dependencies: - xregexp "4.0.0" - decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" @@ -3408,17 +4225,18 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" -del@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" - integrity sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU= +del@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" + integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== dependencies: + "@types/glob" "^7.1.1" globby "^6.1.0" - is-path-cwd "^1.0.0" - is-path-in-cwd "^1.0.0" - p-map "^1.1.1" - pify "^3.0.0" - rimraf "^2.2.8" + is-path-cwd "^2.0.0" + is-path-in-cwd "^2.0.0" + p-map "^2.0.0" + pify "^4.0.1" + rimraf "^2.6.3" delayed-stream@~1.0.0: version "1.0.0" @@ -3612,15 +4430,15 @@ dot-prop@^4.1.1: dependencies: is-obj "^1.0.0" -dotenv-expand@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-4.2.0.tgz#def1f1ca5d6059d24a766e587942c21106ce1275" - integrity sha1-3vHxyl1gWdJKdm5YeULCEQbOEnU= +dotenv-expand@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" + integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== -dotenv@6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.2.0.tgz#941c0410535d942c8becf28d3f357dbd9d476064" - integrity sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w== +dotenv@8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" + integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== duplexer@^0.1.1: version "0.1.1" @@ -3658,11 +4476,16 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.3.247, electron-to-chromium@^1.3.284: +electron-to-chromium@^1.3.284: version "1.3.292" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.292.tgz#7812fc5138619342f1dd5823df6e9cbb7d2820e9" integrity sha512-hqkem5ANpt6mxVXmhAmlbdG8iicuyM/jEYgmP1tiHPeOLyZoTyGUzrDmJS/xyrrZy9frkW1uQcubicu7f6DS5g== +electron-to-chromium@^1.3.306, electron-to-chromium@^1.3.322: + version "1.3.322" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.322.tgz#a6f7e1c79025c2b05838e8e344f6e89eb83213a8" + integrity sha512-Tc8JQEfGQ1MzfSzI/bTlSr7btJv/FFO7Yh6tanqVmIWOuNCu6/D1MilIEgLtmWqIrsv+o4IjpLAhgMBr/ncNAA== + elliptic@^6.0.0, elliptic@^6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.1.tgz#c380f5f909bf1b9b4428d028cd18d3b0efd6b52b" @@ -3681,6 +4504,11 @@ emoji-regex@^7.0.1, emoji-regex@^7.0.2: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" @@ -3810,6 +4638,24 @@ es-to-primitive@^1.1.1, es-to-primitive@^1.2.0: is-date-object "^1.0.1" is-symbol "^1.0.2" +es5-ext@^0.10.35, es5-ext@^0.10.50: + version "0.10.53" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" + integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.3" + next-tick "~1.0.0" + +es6-iterator@2.0.3, es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + es6-object-assign@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" @@ -3820,6 +4666,14 @@ es6-promise@^4.2.4: resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== +es6-symbol@^3.1.1, es6-symbol@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -3860,12 +4714,12 @@ eslint-config-airbnb@^17.1.0: object.assign "^4.1.0" object.entries "^1.1.0" -eslint-config-react-app@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-4.0.1.tgz#23fd0fd7ea89442ef1e733f66a7207674b23c8db" - integrity sha512-ZsaoXUIGsK8FCi/x4lT2bZR5mMkL/Kgj+Lnw690rbvvUr/uiwgFiD8FcfAhkCycm7Xte6O5lYz4EqMx2vX7jgw== +eslint-config-react-app@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-5.1.0.tgz#a37b3f2d4f56f856f93277281ef52bd791273e63" + integrity sha512-hBaxisHC6HXRVvxX+/t1n8mOdmCVIKgkXsf2WoUkJi7upHJTwYTsdCmx01QPOjKNT34QMQQ9sL0tVBlbiMFjxA== dependencies: - confusing-browser-globals "^1.0.7" + confusing-browser-globals "^1.0.9" eslint-import-resolver-node@^0.3.2: version "0.3.2" @@ -3875,18 +4729,18 @@ eslint-import-resolver-node@^0.3.2: debug "^2.6.9" resolve "^1.5.0" -eslint-loader@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-2.1.2.tgz#453542a1230d6ffac90e4e7cb9cadba9d851be68" - integrity sha512-rA9XiXEOilLYPOIInvVH5S/hYfyTPyxag6DZhoQOduM+3TkghAEQ3VcFO8VnX4J4qg/UIBzp72aOf/xvYmpmsg== +eslint-loader@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-3.0.2.tgz#5a627316a51d6f41d357b9f6f0554e91506cdd6e" + integrity sha512-S5VnD+UpVY1PyYRqeBd/4pgsmkvSokbHqTXAQMpvCyRr3XN2tvSLo9spm2nEpqQqh9dezw3os/0zWihLeOg2Rw== dependencies: - loader-fs-cache "^1.0.0" - loader-utils "^1.0.2" - object-assign "^4.0.1" - object-hash "^1.1.4" - rimraf "^2.6.1" + fs-extra "^8.1.0" + loader-fs-cache "^1.0.2" + loader-utils "^1.2.3" + object-hash "^1.3.1" + schema-utils "^2.2.0" -eslint-module-utils@^2.3.0, eslint-module-utils@^2.4.0: +eslint-module-utils@^2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.4.1.tgz#7b4675875bf96b0dbf1b21977456e5bb1f5e018c" integrity sha512-H6DOj+ejw7Tesdgbfs4jeS4YMFrT8uI8xwd1gtQqXssaR0EQ26L+2O/w6wkYFy2MymON0fTwHmXBvvfLNZVZEw== @@ -3894,30 +4748,14 @@ eslint-module-utils@^2.3.0, eslint-module-utils@^2.4.0: debug "^2.6.8" pkg-dir "^2.0.0" -eslint-plugin-flowtype@2.50.1: - version "2.50.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.50.1.tgz#36d4c961ac8b9e9e1dc091d3fba0537dad34ae8a" - integrity sha512-9kRxF9hfM/O6WGZcZPszOVPd2W0TLHBtceulLTsGfwMPtiCCLnCW0ssRiOOiXyqrCA20pm1iXdXm7gQeN306zQ== +eslint-plugin-flowtype@3.13.0: + version "3.13.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-3.13.0.tgz#e241ebd39c0ce519345a3f074ec1ebde4cf80f2c" + integrity sha512-bhewp36P+t7cEV0b6OdmoRWJCBYRiHFlqPZAG1oS3SF+Y0LQkeDvFSM4oxoxvczD1OdONCXMlJfQFiWLcV9urw== dependencies: - lodash "^4.17.10" - -eslint-plugin-import@2.16.0: - version "2.16.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.16.0.tgz#97ac3e75d0791c4fac0e15ef388510217be7f66f" - integrity sha512-z6oqWlf1x5GkHIFgrSvtmudnqM6Q60KM4KvpWi5ubonMjycLjndvd5+8VAZIsTlHC03djdgJuyKG6XO577px6A== - dependencies: - contains-path "^0.1.0" - debug "^2.6.9" - doctrine "1.5.0" - eslint-import-resolver-node "^0.3.2" - eslint-module-utils "^2.3.0" - has "^1.0.3" - lodash "^4.17.11" - minimatch "^3.0.4" - read-pkg-up "^2.0.0" - resolve "^1.9.0" + lodash "^4.17.15" -eslint-plugin-import@^2.14.0: +eslint-plugin-import@2.18.2, eslint-plugin-import@^2.14.0: version "2.18.2" resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz#02f1180b90b077b33d447a17a2326ceb400aceb6" integrity sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ== @@ -3934,21 +4772,7 @@ eslint-plugin-import@^2.14.0: read-pkg-up "^2.0.0" resolve "^1.11.0" -eslint-plugin-jsx-a11y@6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.1.tgz#4ebba9f339b600ff415ae4166e3e2e008831cf0c" - integrity sha512-cjN2ObWrRz0TTw7vEcGQrx+YltMvZoOEx4hWU8eEERDnBIU00OTq7Vr+jA7DFKxiwLNv4tTh5Pq2GUNEa8b6+w== - dependencies: - aria-query "^3.0.0" - array-includes "^3.0.3" - ast-types-flow "^0.0.7" - axobject-query "^2.0.2" - damerau-levenshtein "^1.0.4" - emoji-regex "^7.0.2" - has "^1.0.3" - jsx-ast-utils "^2.0.1" - -eslint-plugin-jsx-a11y@^6.1.2: +eslint-plugin-jsx-a11y@6.2.3, eslint-plugin-jsx-a11y@^6.1.2: version "6.2.3" resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz#b872a09d5de51af70a97db1eea7dc933043708aa" integrity sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg== @@ -3968,25 +4792,12 @@ eslint-plugin-no-exclusive-tests@^1.0.0-rc.1: resolved "https://registry.yarnpkg.com/eslint-plugin-no-exclusive-tests/-/eslint-plugin-no-exclusive-tests-1.0.0-rc.1.tgz#6f6a61ebd904a2a1cec013e16688ec16bc94aa83" integrity sha1-b2ph69kEoqHOwBPhZojsFryUqoM= -eslint-plugin-react-hooks@^1.5.0: +eslint-plugin-react-hooks@^1.6.1: version "1.7.0" resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz#6210b6d5a37205f0b92858f895a4e827020a7d04" integrity sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA== -eslint-plugin-react@7.12.4: - version "7.12.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.12.4.tgz#b1ecf26479d61aee650da612e425c53a99f48c8c" - integrity sha512-1puHJkXJY+oS1t467MjbqjvX53uQ05HXwjqDgdbGBqf5j9eeydI54G3KwiJmWciQ0HTBacIKw2jgwSBSH3yfgQ== - dependencies: - array-includes "^3.0.3" - doctrine "^2.1.0" - has "^1.0.3" - jsx-ast-utils "^2.0.1" - object.fromentries "^2.0.0" - prop-types "^15.6.2" - resolve "^1.9.0" - -eslint-plugin-react@^7.11.1: +eslint-plugin-react@7.16.0, eslint-plugin-react@^7.11.1: version "7.16.0" resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.16.0.tgz#9928e4f3e2122ed3ba6a5b56d0303ba3e41d8c09" integrity sha512-GacBAATewhhptbK3/vTP09CbFrgUJmBSaaRcWdbQLFvUZy9yVcQxigBNHGPU/KE2AyHpzj3AWXpxoMTsIDiHug== @@ -4006,23 +4817,23 @@ eslint-restricted-globals@^0.1.1: resolved "https://registry.yarnpkg.com/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz#35f0d5cbc64c2e3ed62e93b4b1a7af05ba7ed4d7" integrity sha1-NfDVy8ZMLj7WLpO0saevBbp+1Nc= -eslint-scope@3.7.1: - version "3.7.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" - integrity sha1-PWPD7f2gLgbgGkUq2IyqzHzctug= +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== dependencies: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-scope@^4.0.0, eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== +eslint-scope@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" + integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== dependencies: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-utils@^1.3.1: +eslint-utils@^1.3.1, eslint-utils@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== @@ -4034,7 +4845,7 @@ eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== -eslint@^5.16.0, eslint@^5.4.0: +eslint@^5.4.0: version "5.16.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea" integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg== @@ -4076,6 +4887,49 @@ eslint@^5.16.0, eslint@^5.4.0: table "^5.2.3" text-table "^0.2.0" +eslint@^6.6.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" + integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.10.0" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^4.0.1" + doctrine "^3.0.0" + eslint-scope "^5.0.0" + eslint-utils "^1.4.3" + eslint-visitor-keys "^1.1.0" + espree "^6.1.2" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + inquirer "^7.0.0" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.14" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.3" + progress "^2.0.0" + regexpp "^2.0.1" + semver "^6.1.2" + strip-ansi "^5.2.0" + strip-json-comments "^3.0.1" + table "^5.2.3" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + espree@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" @@ -4085,6 +4939,15 @@ espree@^5.0.1: acorn-jsx "^5.0.0" eslint-visitor-keys "^1.0.0" +espree@^6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.2.tgz#6c272650932b4f91c3714e5e7b5f5e2ecf47262d" + integrity sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA== + dependencies: + acorn "^7.1.0" + acorn-jsx "^5.1.0" + eslint-visitor-keys "^1.1.0" + esprima@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" @@ -4197,7 +5060,7 @@ expect@^24.9.0: jest-message-util "^24.9.0" jest-regex-util "^24.9.0" -express@^4.16.2: +express@^4.17.1: version "4.17.1" resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== @@ -4233,6 +5096,13 @@ express@^4.16.2: utils-merge "1.0.1" vary "~1.1.2" +ext@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" + integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== + dependencies: + type "^2.0.0" + extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -4308,7 +5178,7 @@ fast-json-stable-stringify@^2.0.0: resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= -fast-levenshtein@~2.0.4: +fast-levenshtein@~2.0.4, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -4346,6 +5216,13 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" +figures@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.1.0.tgz#4b198dd07d8d71530642864af2d45dd9e459c4ec" + integrity sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg== + dependencies: + escape-string-regexp "^1.0.5" + file-entry-cache@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" @@ -4353,13 +5230,13 @@ file-entry-cache@^5.0.1: dependencies: flat-cache "^2.0.1" -file-loader@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-3.0.1.tgz#f8e0ba0b599918b51adfe45d66d1e771ad560faa" - integrity sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw== +file-loader@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-4.3.0.tgz#780f040f729b3d18019f20605f723e844b8a58af" + integrity sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA== dependencies: - loader-utils "^1.0.2" - schema-utils "^1.0.0" + loader-utils "^1.2.3" + schema-utils "^2.5.0" filesize@3.6.1: version "3.6.1" @@ -4407,6 +5284,15 @@ find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: make-dir "^2.0.0" pkg-dir "^3.0.0" +find-cache-dir@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.2.0.tgz#e7fe44c1abc1299f516146e563108fd1006c1874" + integrity sha512-1JKclkYYsf1q9WIJKLZa9S9muC+08RIjzAlLrK4QcYLJMS6mk9yombQ9qf+zJ7H9LS800k0s44L4sDq9VYzqyg== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.0" + pkg-dir "^4.1.0" + find-up@3.0.0, find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" @@ -4429,6 +5315,14 @@ find-up@^2.0.0, find-up@^2.1.0: dependencies: locate-path "^2.0.0" +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + flat-cache@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" @@ -4485,13 +5379,6 @@ for-own@^0.1.3: dependencies: for-in "^1.0.1" -for-own@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" - integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= - dependencies: - for-in "^1.0.1" - foreach@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" @@ -4502,10 +5389,10 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= -fork-ts-checker-webpack-plugin@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-1.5.0.tgz#ce1d77190b44d81a761b10b6284a373795e41f0c" - integrity sha512-zEhg7Hz+KhZlBhILYpXy+Beu96gwvkROWJiTXOCyOOMMrdBIRPvsBpBqgTI4jfJGrJXcqGwJR8zsBGDmzY0jsA== +fork-ts-checker-webpack-plugin@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.0.tgz#fb411a4b2c3697e1cd7f83436d4feeacbcc70c7b" + integrity sha512-6OkRfjuNMNqb14f01xokcWcKV5Ekknc2FvziNpcTYru+kxIYFA2MtuuBI19MHThZnjSBhoi35Dcq+I0oUkFjmQ== dependencies: babel-code-frame "^6.22.0" chalk "^2.4.1" @@ -4550,7 +5437,16 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" -fs-extra@7.0.1, fs-extra@^7.0.0: +fs-extra@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" + integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^7.0.0: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== @@ -4559,12 +5455,12 @@ fs-extra@7.0.1, fs-extra@^7.0.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" - integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== dependencies: - graceful-fs "^4.1.2" + graceful-fs "^4.2.0" jsonfile "^4.0.0" universalify "^0.1.0" @@ -4575,6 +5471,13 @@ fs-minipass@^1.2.5: dependencies: minipass "^2.6.0" +fs-minipass@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.0.0.tgz#a6415edab02fae4b9e9230bc87ee2e4472003cd1" + integrity sha512-40Qz+LFXmd9tzYVnnBmZvFfvAADfUA14TXPK1s7IfElJTIZ97rA8w4Kin7Wt5JBrC3ShnnFJO/5vPjPEeJIq9A== + dependencies: + minipass "^3.0.0" + fs-write-stream-atomic@^1.0.8: version "1.0.10" resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" @@ -4590,10 +5493,10 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.0.6.tgz#87b19df0bfb4a1a51d7ddb51b01b5f3bedb40c33" - integrity sha512-vfmKZp3XPM36DNF0qhW+Cdxk7xm7gTEHY1clv1Xq1arwRQuKZgAhw+NZNWbJBtuaNxzNXwhfdPYRrvIbjfS33A== +fsevents@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" + integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== fsevents@^1.2.7: version "1.2.9" @@ -4698,6 +5601,13 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" +glob-parent@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" + integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== + dependencies: + is-glob "^4.0.1" + glob-to-regexp@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" @@ -4715,6 +5625,18 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, gl once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + global-modules@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" @@ -4744,6 +5666,13 @@ globals@^11.1.0, globals@^11.7.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== +globals@^12.1.0: + version "12.3.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.3.0.tgz#1e564ee5c4dded2ab098b0f88f24702a3c56be13" + integrity sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw== + dependencies: + type-fest "^0.8.1" + globby@8.0.2: version "8.0.2" resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" @@ -4782,6 +5711,11 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6 resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== +graceful-fs@^4.2.0, graceful-fs@^4.2.2: + version "4.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" + integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== + growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" @@ -4800,7 +5734,7 @@ handle-thing@^2.0.0: resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== -handlebars@4.5.3, handlebars@^4.1.2: +handlebars@^4.1.2: version "4.5.3" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.5.3.tgz#5cf75bd8714f7605713511a56be7c349becb0482" integrity sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA== @@ -4961,7 +5895,7 @@ html-encoding-sniffer@^1.0.2: dependencies: whatwg-encoding "^1.0.1" -html-entities@^1.2.0: +html-entities@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= @@ -5045,7 +5979,7 @@ http-errors@~1.7.2: resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q= -http-proxy-middleware@^0.19.1: +http-proxy-middleware@0.19.1: version "0.19.1" resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== @@ -5095,12 +6029,7 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: dependencies: safer-buffer ">= 2.1.2 < 3" -icss-replace-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" - integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= - -icss-utils@^4.1.0: +icss-utils@^4.0.0, icss-utils@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== @@ -5169,6 +6098,14 @@ import-fresh@^3.0.0: parent-module "^1.0.0" resolve-from "^4.0.0" +import-fresh@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + import-from@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" @@ -5201,12 +6138,17 @@ indent-string@^2.1.0: dependencies: repeating "^2.0.0" +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + indexes-of@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= -infer-owner@^1.0.3: +infer-owner@^1.0.3, infer-owner@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== @@ -5277,7 +6219,26 @@ inquirer@^6.2.2: strip-ansi "^5.1.0" through "^2.3.6" -internal-ip@^4.2.0: +inquirer@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.1.tgz#13f7980eedc73c689feff3994b109c4e799c6ebb" + integrity sha512-V1FFQ3TIO15det8PijPLFR9M9baSlnRs9nL7zWu1MNVA2T9YVl9ZbrHJhYs7e9X8jeMZ3lr2JH/rdHFgNCBdYw== + dependencies: + ansi-escapes "^4.2.1" + chalk "^2.4.2" + cli-cursor "^3.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" + run-async "^2.2.0" + rxjs "^6.5.3" + string-width "^4.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" + +internal-ip@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== @@ -5327,6 +6288,11 @@ is-absolute-url@^2.0.0: resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= +is-absolute-url@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== + is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -5470,6 +6436,11 @@ is-fullwidth-code-point@^2.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + is-generator-fn@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" @@ -5487,7 +6458,7 @@ is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" -is-glob@^4.0.0: +is-glob@^4.0.0, is-glob@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== @@ -5513,24 +6484,29 @@ is-obj@^1.0.0, is-obj@^1.0.1: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= -is-path-cwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" - integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0= +is-path-cwd@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== -is-path-in-cwd@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" - integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ== +is-path-in-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" + integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== dependencies: - is-path-inside "^1.0.0" + is-path-inside "^2.1.0" -is-path-inside@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" - integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= +is-path-inside@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" + integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== dependencies: - path-is-inside "^1.0.1" + path-is-inside "^1.0.2" + +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" @@ -5605,6 +6581,11 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= +is-wsl@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.1.1.tgz#4a1c152d429df3d441669498e2486d3596ebaf1d" + integrity sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog== + isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -5691,7 +6672,7 @@ jest-changed-files@^24.9.0: execa "^1.0.0" throat "^4.0.0" -jest-cli@^24.7.1: +jest-cli@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af" integrity sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg== @@ -5897,18 +6878,7 @@ jest-resolve-dependencies@^24.9.0: jest-regex-util "^24.3.0" jest-snapshot "^24.9.0" -jest-resolve@24.7.1: - version "24.7.1" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.7.1.tgz#e4150198299298380a75a9fd55043fa3b9b17fde" - integrity sha512-Bgrc+/UUZpGJ4323sQyj85hV9d+ANyPNu6XfRDUcyFNX1QrZpSoM0kE4Mb2vZMAYTJZsBFzYe8X1UaOkOELSbw== - dependencies: - "@jest/types" "^24.7.0" - browser-resolve "^1.11.3" - chalk "^2.0.1" - jest-pnp-resolver "^1.2.1" - realpath-native "^1.1.0" - -jest-resolve@^24.9.0: +jest-resolve@24.9.0, jest-resolve@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.9.0.tgz#dff04c7687af34c4dd7e524892d9cf77e5d17321" integrity sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ== @@ -6027,16 +6997,17 @@ jest-validate@^24.9.0: leven "^3.1.0" pretty-format "^24.9.0" -jest-watch-typeahead@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.3.0.tgz#f56d9ee17ea71ecbf8253fed213df3185a1584c9" - integrity sha512-+uOtlppt9ysST6k6ZTqsPI0WNz2HLa8bowiZylZoQCQaAVn7XsVmHhZREkz73FhKelrFrpne4hQQjdq42nFEmA== +jest-watch-typeahead@0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.4.2.tgz#e5be959698a7fa2302229a5082c488c3c8780a4a" + integrity sha512-f7VpLebTdaXs81rg/oj4Vg/ObZy2QtGzAmGLNsqUS5G5KtSN68tFcIsbvNODfNyQxU78g7D8x77o3bgfBTR+2Q== dependencies: - ansi-escapes "^3.0.0" + ansi-escapes "^4.2.1" chalk "^2.4.1" + jest-regex-util "^24.9.0" jest-watcher "^24.3.0" - slash "^2.0.0" - string-length "^2.0.0" + slash "^3.0.0" + string-length "^3.1.0" strip-ansi "^5.0.0" jest-watcher@^24.3.0, jest-watcher@^24.9.0: @@ -6060,13 +7031,13 @@ jest-worker@^24.6.0, jest-worker@^24.9.0: merge-stream "^2.0.0" supports-color "^6.1.0" -jest@24.7.1: - version "24.7.1" - resolved "https://registry.yarnpkg.com/jest/-/jest-24.7.1.tgz#0d94331cf510c75893ee32f87d7321d5bf8f2501" - integrity sha512-AbvRar5r++izmqo5gdbAjTeA6uNRGoNRuj5vHB0OnDXo2DXWZJVuaObiGgtlvhKb+cWy2oYbQSfxv7Q7GjnAtA== +jest@24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171" + integrity sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw== dependencies: import-local "^2.0.0" - jest-cli "^24.7.1" + jest-cli "^24.9.0" js-base64@^2.1.8: version "2.5.1" @@ -6255,7 +7226,7 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -jsx-ast-utils@^2.0.1, jsx-ast-utils@^2.2.1: +jsx-ast-utils@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.1.tgz#4d4973ebf8b9d2837ee91a8208cc66f3a2776cfb" integrity sha512-v3FxCcAf20DayI+uxnCuw795+oOIkVu6EnJ1+kSzhqqTZHNkTZ7B66ZgLp4oLJ/gbA64cI0B7WRoHZMSRdyVRQ== @@ -6263,7 +7234,7 @@ jsx-ast-utils@^2.0.1, jsx-ast-utils@^2.2.1: array-includes "^3.0.3" object.assign "^4.1.0" -killable@^1.0.0: +killable@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== @@ -6354,6 +7325,11 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -6385,7 +7361,7 @@ load-json-file@^4.0.0: pify "^3.0.0" strip-bom "^3.0.0" -loader-fs-cache@^1.0.0: +loader-fs-cache@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.2.tgz#54cedf6b727e1779fd8f01205f05f6e88706f086" integrity sha512-70IzT/0/L+M20jUlEqZhZyArTU6VKLRTYRDAYN26g4jfzpJqjipLL3/hgYpySqI9PwsVRHHFja0LfEmsx9X2Cw== @@ -6393,12 +7369,12 @@ loader-fs-cache@^1.0.0: find-cache-dir "^0.1.1" mkdirp "0.5.1" -loader-runner@^2.3.0: +loader-runner@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== -loader-utils@1.2.3, loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: +loader-utils@1.2.3, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== @@ -6423,6 +7399,13 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + lodash._reinterpolate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" @@ -6438,11 +7421,6 @@ lodash.sortby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= -lodash.tail@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664" - integrity sha1-0jM6NtnncXyK0vfKyv7HwytERmQ= - lodash.template@^4.4.0, lodash.template@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" @@ -6468,15 +7446,15 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -"lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.5, lodash@~4.17.10: +"lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.5, lodash@~4.17.10: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== -loglevel@^1.4.1: - version "1.6.4" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.4.tgz#f408f4f006db8354d0577dcf6d33485b3cb90d56" - integrity sha512-p0b6mOGKcGa+7nnmKbpzR6qloPbrgLcnio++E+14Vo/XffOGwZtRpUhr8dTH/x2oCMmEoIU0Zwm3ZauhvYD17g== +loglevel@^1.6.4: + version "1.6.6" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.6.tgz#0ee6300cc058db6b3551fa1c4bf73b83bb771312" + integrity sha512-Sgr5lbboAUBo3eXCSPL4/KoVz3ROKquOjcctxmHIt+vol2DrqTQe3SwkKKuYhEiWB5kYa13YyopJ69deJ1irzQ== long@~3: version "3.2.0" @@ -6526,6 +7504,13 @@ make-dir@^2.0.0, make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" +make-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.0.tgz#1b5f39f6b9270ed33f9f054c5c0f84304989f801" + integrity sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw== + dependencies: + semver "^6.0.0" + makeerror@1.0.x: version "1.0.11" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" @@ -6600,7 +7585,7 @@ memoize-one@^4.0.0: resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-4.1.0.tgz#a2387c58c03fff27ca390c31b764a79addf3f906" integrity sha512-2GApq0yI/b22J2j9rhbrAlsHb0Qcz+7yWxeLG8h+95sl1XPUgeLimQSOdur4Vw7cUhrBHwaUZxWFZueojqNRzA== -memory-fs@^0.4.1, memory-fs@~0.4.1: +memory-fs@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= @@ -6666,7 +7651,7 @@ microevent.ts@~0.1.1: resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== -micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: +micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -6715,7 +7700,7 @@ mime@1.6.0: resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mime@^2.0.3, mime@^2.4.4: +mime@^2.4.4: version "2.4.4" resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== @@ -6725,7 +7710,7 @@ mimic-fn@^1.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== -mimic-fn@^2.0.0: +mimic-fn@^2.0.0, mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== @@ -6737,12 +7722,13 @@ min-document@^2.19.0: dependencies: dom-walk "^0.1.0" -mini-css-extract-plugin@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.5.0.tgz#ac0059b02b9692515a637115b0cc9fed3a35c7b0" - integrity sha512-IuaLjruM0vMKhUUT51fQdQzBYTX49dLj8w68ALEAe2A4iYNpIC4eMac67mt3NzycvjOlf07/kYxJDc0RTl1Wqw== +mini-css-extract-plugin@0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.0.tgz#81d41ec4fe58c713a96ad7c723cdb2d0bd4d70e1" + integrity sha512-MNpRGbNA52q6U92i0qbVpQNsgk7LExy41MdAlG84FeytfDOtRIf/mCHdEgG8rpTKOaNKiqUnZdlptF469hxqOw== dependencies: loader-utils "^1.1.0" + normalize-url "1.9.1" schema-utils "^1.0.0" webpack-sources "^1.1.0" @@ -6778,6 +7764,27 @@ minimist@~0.0.1: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz#3dcb6bb4a546e32969c7ad710f2c79a86abba93a" + integrity sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA== + dependencies: + minipass "^3.0.0" + minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" @@ -6786,6 +7793,13 @@ minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: safe-buffer "^5.1.2" yallist "^3.0.0" +minipass@^3.0.0, minipass@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.1.tgz#7607ce778472a185ad6d89082aa2070f79cedcd5" + integrity sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w== + dependencies: + yallist "^4.0.0" + minizlib@^1.2.1: version "1.3.3" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" @@ -6825,7 +7839,7 @@ mixin-object@^2.0.1: for-in "^0.1.3" is-extendable "^0.1.1" -mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: +mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= @@ -6877,6 +7891,11 @@ mute-stream@0.0.7: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + nan@^2.12.1, nan@^2.13.2: version "2.14.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" @@ -6918,11 +7937,16 @@ negotiator@0.6.2: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -neo-async@^2.5.0, neo-async@^2.6.0: +neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== +next-tick@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= + nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" @@ -6963,7 +7987,7 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= -node-libs-browser@^2.0.0: +node-libs-browser@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== @@ -7024,13 +8048,20 @@ node-pre-gyp@^0.12.0: semver "^5.3.0" tar "^4" -node-releases@^1.1.29, node-releases@^1.1.36: +node-releases@^1.1.36: version "1.1.38" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.38.tgz#d81b365df2936654ba37f509ba2fbe91eff2578b" integrity sha512-/5NZAaOyTj134Oy5Cp/J8mso8OD/D9CSuL+6TOXXsTKO8yjc5e4up75SRPCganCjwFKMj2jbp5tR0dViVdox7g== dependencies: semver "^6.3.0" +node-releases@^1.1.40, node-releases@^1.1.42: + version "1.1.44" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.44.tgz#cd66438a6eb875e3eb012b6a12e48d9f4326ffd7" + integrity sha512-NwbdvJyR7nrcGrXvKAvzc5raj/NkoJudkarh2yIpJ4t0NH4aqjUDz/486P+ynIW5eokKOfzGNRdYoLfBlomruw== + dependencies: + semver "^6.3.0" + node-sass@^4.10.0: version "4.12.0" resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.12.0.tgz#0914f531932380114a30cc5fa4fa63233a25f017" @@ -7101,6 +8132,16 @@ normalize-range@^0.1.2: resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= +normalize-url@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + normalize-url@^3.0.0: version "3.3.0" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" @@ -7163,7 +8204,7 @@ oauth-sign@~0.9.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@4.1.1, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -7177,7 +8218,7 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-hash@^1.1.4: +object-hash@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df" integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA== @@ -7197,6 +8238,11 @@ object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== +object-path@0.11.4: + version "0.11.4" + resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.4.tgz#370ae752fbf37de3ea70a861c23bba8915691949" + integrity sha1-NwrnUvvzfePqcKhhwju6iRVpGUk= + object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" @@ -7290,14 +8336,21 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" -open@^6.3.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" - integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== +onetime@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" + integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== dependencies: - is-wsl "^1.1.0" + mimic-fn "^2.1.0" + +open@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/open/-/open-7.0.0.tgz#7e52999b14eb73f90f0f0807fe93897c4ae73ec9" + integrity sha512-K6EKzYqnwQzk+/dzJAQSBORub3xlBTxMz+ntpZpH/LyCa1o6KjXhuN+2npAaI9jaSmU3R1Q8NWf4KUWcyytGsQ== + dependencies: + is-wsl "^2.1.0" -opn@^5.1.0: +opn@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== @@ -7312,12 +8365,12 @@ optimist@^0.6.1: minimist "~0.0.1" wordwrap "~0.0.2" -optimize-css-assets-webpack-plugin@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.1.tgz#9eb500711d35165b45e7fd60ba2df40cb3eb9159" - integrity sha512-Rqm6sSjWtx9FchdP0uzTQDc7GXDKnwVEGoSxjezPkzMewx7gEWE9IMUYKmigTRC4U3RaNSwYVnUDLuIdtTpm0A== +optimize-css-assets-webpack-plugin@5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz#e2f1d4d94ad8c0af8967ebd7cf138dcb1ef14572" + integrity sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA== dependencies: - cssnano "^4.1.0" + cssnano "^4.1.10" last-call-webpack-plugin "^3.0.0" optionator@^0.8.1, optionator@^0.8.2: @@ -7332,6 +8385,18 @@ optionator@^0.8.1, optionator@^0.8.2: type-check "~0.3.2" wordwrap "~1.0.0" +optionator@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + original@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" @@ -7407,7 +8472,7 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.0.0: +p-limit@^2.0.0, p-limit@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537" integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg== @@ -7428,16 +8493,37 @@ p-locate@^3.0.0: dependencies: p-limit "^2.0.0" -p-map@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" - integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-map@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + dependencies: + aggregate-error "^3.0.0" p-reduce@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= +p-retry@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" + integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== + dependencies: + retry "^0.12.0" + p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" @@ -7503,6 +8589,16 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" +parse-json@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" + integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + lines-and-columns "^1.1.6" + parse5@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" @@ -7545,12 +8641,17 @@ path-exists@^3.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-is-inside@^1.0.1, path-is-inside@^1.0.2: +path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= @@ -7593,6 +8694,11 @@ path-type@^3.0.0: dependencies: pify "^3.0.0" +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + pbkdf2@^3.0.3: version "3.0.17" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" @@ -7664,6 +8770,13 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" +pkg-dir@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + pkg-up@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" @@ -7676,14 +8789,14 @@ pn@^1.1.0: resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== -pnp-webpack-plugin@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.2.1.tgz#cd9d698df2a6fcf7255093c1c9511adf65b9421b" - integrity sha512-W6GctK7K2qQiVR+gYSv/Gyt6jwwIH4vwdviFqx+Y2jAtVf5eZyYIDf5Ac2NCDMBiX5yWscBLZElPTsyA1UtVVA== +pnp-webpack-plugin@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.5.0.tgz#62a1cd3068f46d564bb33c56eb250e4d586676eb" + integrity sha512-jd9olUr9D7do+RN8Wspzhpxhgp1n6Vd0NtQ4SFkmIACZoEL1nkyAdW9Ygrinjec0vgDcWjscFQQ1gDW8rsfKTg== dependencies: - ts-pnp "^1.0.0" + ts-pnp "^1.1.2" -portfinder@^1.0.9: +portfinder@^1.0.25: version "1.0.25" resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.25.tgz#254fd337ffba869f4b9d37edc298059cb4d35eca" integrity sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg== @@ -7705,12 +8818,12 @@ postcss-attribute-case-insensitive@^4.0.1: postcss "^7.0.2" postcss-selector-parser "^5.0.0" -postcss-browser-comments@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-2.0.0.tgz#dc48d6a8ddbff188a80a000b7393436cb18aed88" - integrity sha512-xGG0UvoxwBc4Yx4JX3gc0RuDl1kc4bVihCzzk6UC72YPfq5fu3c717Nu8Un3nvnq1BJ31gBnFXIG/OaUTnpHgA== +postcss-browser-comments@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz#1248d2d935fb72053c8e1f61a84a57292d9f65e9" + integrity sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig== dependencies: - postcss "^7.0.2" + postcss "^7" postcss-calc@^7.0.1: version "7.0.1" @@ -7739,7 +8852,7 @@ postcss-color-gray@^5.0.0: postcss "^7.0.5" postcss-values-parser "^2.0.0" -postcss-color-hex-alpha@^5.0.2: +postcss-color-hex-alpha@^5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== @@ -7783,14 +8896,14 @@ postcss-convert-values@^4.0.1: postcss "^7.0.0" postcss-value-parser "^3.0.0" -postcss-custom-media@^7.0.7: +postcss-custom-media@^7.0.8: version "7.0.8" resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== dependencies: postcss "^7.0.14" -postcss-custom-properties@^8.0.9: +postcss-custom-properties@^8.0.11: version "8.0.11" resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== @@ -8019,14 +9132,15 @@ postcss-modules-extract-imports@^2.0.0: dependencies: postcss "^7.0.5" -postcss-modules-local-by-default@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.6.tgz#dd9953f6dd476b5fd1ef2d8830c8929760b56e63" - integrity sha512-oLUV5YNkeIBa0yQl7EYnxMgy4N6noxmiwZStaEJUSe2xPMcdNc8WmBQuQCx18H5psYbVxz8zoHk0RAAYZXP9gA== +postcss-modules-local-by-default@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz#e8a6561be914aaf3c052876377524ca90dbb7915" + integrity sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ== dependencies: - postcss "^7.0.6" - postcss-selector-parser "^6.0.0" - postcss-value-parser "^3.3.1" + icss-utils "^4.1.1" + postcss "^7.0.16" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.0" postcss-modules-scope@^2.1.0: version "2.1.0" @@ -8036,12 +9150,12 @@ postcss-modules-scope@^2.1.0: postcss "^7.0.6" postcss-selector-parser "^6.0.0" -postcss-modules-values@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz#479b46dc0c5ca3dc7fa5270851836b9ec7152f64" - integrity sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w== +postcss-modules-values@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" + integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== dependencies: - icss-replace-symbols "^1.1.0" + icss-utils "^4.0.0" postcss "^7.0.6" postcss-nesting@^7.0.0: @@ -8132,15 +9246,16 @@ postcss-normalize-whitespace@^4.0.2: postcss "^7.0.0" postcss-value-parser "^3.0.0" -postcss-normalize@7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-7.0.1.tgz#eb51568d962b8aa61a8318383c8bb7e54332282e" - integrity sha512-NOp1fwrG+6kVXWo7P9SizCHX6QvioxFD/hZcI2MLxPmVnFJFC0j0DDpIuNw2tUDeCFMni59gCVgeJ1/hYhj2OQ== +postcss-normalize@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-8.0.1.tgz#90e80a7763d7fdf2da6f2f0f82be832ce4f66776" + integrity sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ== dependencies: - "@csstools/normalize.css" "^9.0.1" - browserslist "^4.1.1" - postcss "^7.0.2" - postcss-browser-comments "^2.0.0" + "@csstools/normalize.css" "^10.1.0" + browserslist "^4.6.2" + postcss "^7.0.17" + postcss-browser-comments "^3.0.0" + sanitize.css "^10.0.0" postcss-ordered-values@^4.1.2: version "4.1.2" @@ -8173,27 +9288,27 @@ postcss-place@^4.0.1: postcss "^7.0.2" postcss-values-parser "^2.0.0" -postcss-preset-env@6.6.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.6.0.tgz#642e7d962e2bdc2e355db117c1eb63952690ed5b" - integrity sha512-I3zAiycfqXpPIFD6HXhLfWXIewAWO8emOKz+QSsxaUZb9Dp8HbF5kUf+4Wy/AxR33o+LRoO8blEWCHth0ZsCLA== +postcss-preset-env@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" + integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== dependencies: - autoprefixer "^9.4.9" - browserslist "^4.4.2" - caniuse-lite "^1.0.30000939" + autoprefixer "^9.6.1" + browserslist "^4.6.4" + caniuse-lite "^1.0.30000981" css-blank-pseudo "^0.1.4" css-has-pseudo "^0.10.0" css-prefers-color-scheme "^3.1.1" - cssdb "^4.3.0" - postcss "^7.0.14" + cssdb "^4.4.0" + postcss "^7.0.17" postcss-attribute-case-insensitive "^4.0.1" postcss-color-functional-notation "^2.0.1" postcss-color-gray "^5.0.0" - postcss-color-hex-alpha "^5.0.2" + postcss-color-hex-alpha "^5.0.3" postcss-color-mod-function "^3.0.3" postcss-color-rebeccapurple "^4.0.1" - postcss-custom-media "^7.0.7" - postcss-custom-properties "^8.0.9" + postcss-custom-media "^7.0.8" + postcss-custom-properties "^8.0.11" postcss-custom-selectors "^5.1.2" postcss-dir-pseudo-class "^5.0.0" postcss-double-position-gradients "^1.0.0" @@ -8292,7 +9407,7 @@ postcss-selector-parser@^5.0.0, postcss-selector-parser@^5.0.0-rc.3, postcss-sel indexes-of "^1.0.1" uniq "^1.0.1" -postcss-selector-parser@^6.0.0: +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== @@ -8325,7 +9440,7 @@ postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0, postcss-value-parser@^ resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== -postcss-value-parser@^4.0.2: +postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz#482282c09a42706d1fc9a069b73f44ec08391dc9" integrity sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ== @@ -8339,7 +9454,25 @@ postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: indexes-of "^1.0.1" uniq "^1.0.1" -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.18, postcss@^7.0.2, postcss@^7.0.5, postcss@^7.0.6: +postcss@7.0.21: + version "7.0.21" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.21.tgz#06bb07824c19c2021c5d056d5b10c35b989f7e17" + integrity sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +postcss@^7, postcss@^7.0.16, postcss@^7.0.23: + version "7.0.25" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.25.tgz#dd2a2a753d50b13bed7a2009b4a18ac14d9db21e" + integrity sha512-NXXVvWq9icrm/TgQC0O6YVFi4StfJz46M1iNd/h6B26Nvh/HKI+q4YZtFN/EjcInZliEscO/WL10BXnc1E5nwg== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.5, postcss@^7.0.6: version "7.0.18" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.18.tgz#4b9cda95ae6c069c67a4d933029eddd4838ac233" integrity sha512-/7g1QXXgegpF+9GJj4iN7ChGF40sYuGYJ8WZu8DZWnmhQ/G36hfdk3q9LBJmoK+lZ+yzZ5KYpOoxq7LF1BxE8g== @@ -8353,6 +9486,11 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= +prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + pretty-bytes@^5.1.0: version "5.3.0" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.3.0.tgz#f2849e27db79fb4d6cfe24764fc4134f165989f2" @@ -8401,7 +9539,7 @@ promise-inflight@^1.0.1: resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= -promise@8.0.3, promise@^8.0.1: +promise@^8.0.1, promise@^8.0.3: version "8.0.3" resolved "https://registry.yarnpkg.com/promise/-/promise-8.0.3.tgz#f592e099c6cddc000d538ee7283bb190452b0bf6" integrity sha512-HeRDUL1RJiLhyA0/grn+PTShlBAcLuh/1BJGtrvjwbvRDCTLLMEz9rOGCV+R3vHY4MixIuoMEd9Yq/XvsTPcjw== @@ -8528,6 +9666,14 @@ qs@~6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" @@ -8543,7 +9689,7 @@ querystringify@^2.1.1: resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== -raf@3.4.1: +raf@^3.4.1: version "3.4.1" resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== @@ -8590,33 +9736,33 @@ rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-app-polyfill@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-1.0.4.tgz#4dd2636846b585c2d842b1e44e1bc29044345874" - integrity sha512-5Vte6ki7jpNsNCUKaboyofAhmURmCn2Y6Hu7ydJ6Iu4dct1CIGoh/1FT7gUZKAbowVX2lxVPlijvp1nKxfAl4w== +react-app-polyfill@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-1.0.5.tgz#59c7377a0b9ed25692eeaca7ad9b12ef2d064709" + integrity sha512-RcbV6+msbvZJZUIK/LX3UafPtoaDSJgUWu4sqBxHKTVmBsnlU2QWCKJRBRmgjxu+ivW/GPINbPWRM4Ppa6Lbgw== dependencies: - core-js "3.2.1" - object-assign "4.1.1" - promise "8.0.3" - raf "3.4.1" - regenerator-runtime "0.13.3" - whatwg-fetch "3.0.0" + core-js "^3.4.1" + object-assign "^4.1.1" + promise "^8.0.3" + raf "^3.4.1" + regenerator-runtime "^0.13.3" + whatwg-fetch "^3.0.0" -react-dev-utils@^9.0.1: - version "9.1.0" - resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-9.1.0.tgz#3ad2bb8848a32319d760d0a84c56c14bdaae5e81" - integrity sha512-X2KYF/lIGyGwP/F/oXgGDF24nxDA2KC4b7AFto+eqzc/t838gpSGiaU8trTqHXOohuLxxc5qi1eDzsl9ucPDpg== +react-dev-utils@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-10.0.0.tgz#bd2d16426c7e4cbfed1b46fb9e2ac98ec06fcdfa" + integrity sha512-8OKSJvl8ccXJDNf0YGw377L9v1OnT16skD/EuZWm0M/yr255etP4x4kuUCT1EfFfJ7Rhc4ZTpPTfPrvgiXa50Q== dependencies: "@babel/code-frame" "7.5.5" address "1.1.2" - browserslist "4.7.0" + browserslist "4.7.3" chalk "2.4.2" cross-spawn "6.0.5" detect-port-alt "1.1.6" escape-string-regexp "1.0.5" filesize "3.6.1" find-up "3.0.0" - fork-ts-checker-webpack-plugin "1.5.0" + fork-ts-checker-webpack-plugin "3.1.0" global-modules "2.0.0" globby "8.0.2" gzip-size "5.1.1" @@ -8624,12 +9770,11 @@ react-dev-utils@^9.0.1: inquirer "6.5.0" is-root "2.1.0" loader-utils "1.2.3" - open "^6.3.0" + open "^7.0.0" pkg-up "2.0.0" - react-error-overlay "^6.0.3" + react-error-overlay "^6.0.4" recursive-readdir "2.2.2" shell-quote "1.7.2" - sockjs-client "1.4.0" strip-ansi "5.2.0" text-table "0.2.0" @@ -8653,10 +9798,10 @@ react-dom@16.8.6: prop-types "^15.6.2" scheduler "^0.13.6" -react-error-overlay@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.3.tgz#c378c4b0a21e88b2e159a3e62b2f531fd63bf60d" - integrity sha512-bOUvMWFQVk5oz8Ded9Xb7WVdEi3QGLC8tH7HmYP0Fdp4Bn3qw0tRFmr5TW6mvahzvmrK4a6bqWGfCevBflP+Xw== +react-error-overlay@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.4.tgz#0d165d6d27488e660bc08e57bdabaad741366f7a" + integrity sha512-ueZzLmHltszTshDMwyfELDq8zOA803wQ1ZuzCccXa1m57k1PxSHfflPD5W9YIiTXLs0JTLzoj6o1LuM5N6zzNA== react-icons@3.4.0: version "3.4.0" @@ -8668,65 +9813,65 @@ react-is@^16.6.0, react-is@^16.8.1, react-is@^16.8.4: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.10.2.tgz#984120fd4d16800e9a738208ab1fba422d23b5ab" integrity sha512-INBT1QEgtcCCgvccr5/86CfD71fw9EPmDxgiJX4I2Ddr6ZsV6iFXsuby+qWJPtmNuMY0zByTsG4468P7nHuNWA== -react-scripts@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-3.0.1.tgz#e5565350d8069cc9966b5998d3fe3befe3d243ac" - integrity sha512-LKEjBhVpEB+c312NeJhzF+NATxF7JkHNr5GhtwMeRS1cMeLElMeIu8Ye7WGHtDP7iz7ra4ryy48Zpo6G/cwWUw== - dependencies: - "@babel/core" "7.4.3" - "@svgr/webpack" "4.1.0" - "@typescript-eslint/eslint-plugin" "1.6.0" - "@typescript-eslint/parser" "1.6.0" - babel-eslint "10.0.1" - babel-jest "^24.8.0" - babel-loader "8.0.5" - babel-plugin-named-asset-import "^0.3.2" - babel-preset-react-app "^9.0.0" - camelcase "^5.2.0" +react-scripts@3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-3.3.0.tgz#f26a21f208f20bd04770f43e50b5bbc151920c2a" + integrity sha512-hzPc6bxCc9GnsspWqk494c2Gpd0dRbk/C8q76BNQIENi9GMwoxFljOEcZoZcpFpJgQ45alxFR6QaLt+51qie7g== + dependencies: + "@babel/core" "7.7.4" + "@svgr/webpack" "4.3.3" + "@typescript-eslint/eslint-plugin" "^2.8.0" + "@typescript-eslint/parser" "^2.8.0" + babel-eslint "10.0.3" + babel-jest "^24.9.0" + babel-loader "8.0.6" + babel-plugin-named-asset-import "^0.3.5" + babel-preset-react-app "^9.1.0" + camelcase "^5.3.1" case-sensitive-paths-webpack-plugin "2.2.0" - css-loader "2.1.1" - dotenv "6.2.0" - dotenv-expand "4.2.0" - eslint "^5.16.0" - eslint-config-react-app "^4.0.1" - eslint-loader "2.1.2" - eslint-plugin-flowtype "2.50.1" - eslint-plugin-import "2.16.0" - eslint-plugin-jsx-a11y "6.2.1" - eslint-plugin-react "7.12.4" - eslint-plugin-react-hooks "^1.5.0" - file-loader "3.0.1" - fs-extra "7.0.1" + css-loader "3.2.0" + dotenv "8.2.0" + dotenv-expand "5.1.0" + eslint "^6.6.0" + eslint-config-react-app "^5.1.0" + eslint-loader "3.0.2" + eslint-plugin-flowtype "3.13.0" + eslint-plugin-import "2.18.2" + eslint-plugin-jsx-a11y "6.2.3" + eslint-plugin-react "7.16.0" + eslint-plugin-react-hooks "^1.6.1" + file-loader "4.3.0" + fs-extra "^8.1.0" html-webpack-plugin "4.0.0-beta.5" identity-obj-proxy "3.0.0" - is-wsl "^1.1.0" - jest "24.7.1" + jest "24.9.0" jest-environment-jsdom-fourteen "0.1.0" - jest-resolve "24.7.1" - jest-watch-typeahead "0.3.0" - mini-css-extract-plugin "0.5.0" - optimize-css-assets-webpack-plugin "5.0.1" - pnp-webpack-plugin "1.2.1" + jest-resolve "24.9.0" + jest-watch-typeahead "0.4.2" + mini-css-extract-plugin "0.8.0" + optimize-css-assets-webpack-plugin "5.0.3" + pnp-webpack-plugin "1.5.0" postcss-flexbugs-fixes "4.1.0" postcss-loader "3.0.0" - postcss-normalize "7.0.1" - postcss-preset-env "6.6.0" + postcss-normalize "8.0.1" + postcss-preset-env "6.7.0" postcss-safe-parser "4.0.1" - react-app-polyfill "^1.0.1" - react-dev-utils "^9.0.1" - resolve "1.10.0" - sass-loader "7.1.0" - semver "6.0.0" - style-loader "0.23.1" - terser-webpack-plugin "1.2.3" - ts-pnp "1.1.2" - url-loader "1.1.2" - webpack "4.29.6" - webpack-dev-server "3.2.1" - webpack-manifest-plugin "2.0.4" - workbox-webpack-plugin "4.2.0" + react-app-polyfill "^1.0.5" + react-dev-utils "^10.0.0" + resolve "1.12.2" + resolve-url-loader "3.1.1" + sass-loader "8.0.0" + semver "6.3.0" + style-loader "1.0.0" + terser-webpack-plugin "2.2.1" + ts-pnp "1.1.5" + url-loader "2.3.0" + webpack "4.41.2" + webpack-dev-server "3.9.0" + webpack-manifest-plugin "2.2.0" + workbox-webpack-plugin "4.3.1" optionalDependencies: - fsevents "2.0.6" + fsevents "2.1.2" react-tooltip@3.9.2: version "3.9.2" @@ -8872,16 +10017,16 @@ regenerate@^1.4.0: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== -regenerator-runtime@0.13.3, regenerator-runtime@^0.13.2: - version "0.13.3" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" - integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== - regenerator-runtime@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== +regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.3: + version "0.13.3" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" + integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== + regenerator-transform@^0.14.0: version "0.14.1" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.1.tgz#3b2fce4e1ab7732c08f665dfdb314749c7ddd2fb" @@ -8897,6 +10042,11 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" +regex-parser@2.2.10: + version "2.2.10" + resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.10.tgz#9e66a8f73d89a107616e63b39d4deddfee912b37" + integrity sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA== + regexp.prototype.flags@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz#6b30724e306a27833eeb171b66ac8890ba37e41c" @@ -8909,6 +10059,11 @@ regexpp@^2.0.1: resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== +regexpp@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.0.0.tgz#dd63982ee3300e67b41c1956f850aa680d9d330e" + integrity sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g== + regexpu-core@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.6.0.tgz#2037c18b327cfce8a6fea2a4ec441f2432afb8b6" @@ -9028,11 +10183,6 @@ require-main-filename@^2.0.0: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== -requireindex@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.2.0.tgz#3463cdb22ee151902635aa6c9535d4de9c2ef1ef" - integrity sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww== - requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" @@ -9055,6 +10205,22 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve-url-loader@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.1.tgz#28931895fa1eab9be0647d3b2958c100ae3c0bf0" + integrity sha512-K1N5xUjj7v0l2j/3Sgs5b8CjrrgtC70SmdCuZiJ8tSyb5J+uk3FoeZ4b7yTnH6j7ngI+Bc5bldHJIa8hYdu2gQ== + dependencies: + adjust-sourcemap-loader "2.0.0" + camelcase "5.3.1" + compose-function "3.0.3" + convert-source-map "1.7.0" + es6-iterator "2.0.3" + loader-utils "1.2.3" + postcss "7.0.21" + rework "1.0.1" + rework-visit "1.0.0" + source-map "0.6.1" + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" @@ -9065,14 +10231,14 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" - integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== +resolve@1.12.2: + version "1.12.2" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.2.tgz#08b12496d9aa8659c75f534a8f05f0d892fff594" + integrity sha512-cAVTI2VLHWYsGOirfeYVVQ7ZDejtQ9fp4YhYckWDEkFfqbVjaT11iM8k6xSAfGFMM+gDpZjMnFssPu8we+mqFw== dependencies: path-parse "^1.0.6" -resolve@^1.10.0, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1, resolve@^1.9.0: +resolve@^1.10.0, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1: version "1.12.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== @@ -9087,11 +10253,37 @@ restore-cursor@^2.0.0: onetime "^2.0.0" signal-exit "^3.0.2" +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + +rework-visit@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a" + integrity sha1-mUWygD8hni96ygCtuLyfZA+ELJo= + +rework@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz#30806a841342b54510aa4110850cd48534144aa7" + integrity sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc= + dependencies: + convert-source-map "^0.3.3" + css "^2.0.0" + rgb-regex@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" @@ -9102,7 +10294,7 @@ rgba-regex@^1.0.0: resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= -rimraf@2, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: +rimraf@2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3, rimraf@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -9150,6 +10342,13 @@ rxjs@^6.4.0: dependencies: tslib "^1.9.0" +rxjs@^6.5.3: + version "6.5.4" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" + integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== + dependencies: + tslib "^1.9.0" + safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -9187,6 +10386,11 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" +sanitize.css@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-10.0.0.tgz#b5cb2547e96d8629a60947544665243b1dc3657a" + integrity sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg== + sass-graph@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49" @@ -9197,17 +10401,16 @@ sass-graph@^2.2.4: scss-tokenizer "^0.2.3" yargs "^7.0.0" -sass-loader@7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-7.1.0.tgz#16fd5138cb8b424bf8a759528a1972d72aad069d" - integrity sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w== +sass-loader@8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-8.0.0.tgz#e7b07a3e357f965e6b03dd45b016b0a9746af797" + integrity sha512-+qeMu563PN7rPdit2+n5uuYVR0SSVwm0JsOUsaJXzgYcClWSlmX0iHDnmeOobPkf5kUglVot3QS6SyLyaQoJ4w== dependencies: - clone-deep "^2.0.1" - loader-utils "^1.0.1" - lodash.tail "^4.1.1" - neo-async "^2.5.0" - pify "^3.0.0" - semver "^5.5.0" + clone-deep "^4.0.1" + loader-utils "^1.2.3" + neo-async "^2.6.1" + schema-utils "^2.1.0" + semver "^6.3.0" sax@^1.2.4, sax@~1.2.4: version "1.2.4" @@ -9262,6 +10465,14 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" +schema-utils@^2.0.0, schema-utils@^2.0.1, schema-utils@^2.1.0, schema-utils@^2.2.0, schema-utils@^2.5.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.1.tgz#eb78f0b945c7bcfa2082b3565e8db3548011dc4f" + integrity sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg== + dependencies: + ajv "^6.10.2" + ajv-keywords "^3.4.1" + scss-tokenizer@^0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" @@ -9275,7 +10486,7 @@ select-hose@^2.0.0: resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= -selfsigned@^1.9.1: +selfsigned@^1.10.7: version "1.10.7" resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.7.tgz#da5819fd049d5574f28e88a9bcc6dbc6e6f3906b" integrity sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA== @@ -9287,21 +10498,16 @@ selfsigned@^1.9.1: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" - integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== - -semver@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.0.0.tgz#05e359ee571e5ad7ed641a6eec1e547ba52dea65" - integrity sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ== - -semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: +semver@6.3.0, semver@^6.0.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + semver@~5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" @@ -9326,12 +10532,12 @@ send@0.17.1: range-parser "~1.2.1" statuses "~1.5.0" -serialize-javascript@^2.1.2: +serialize-javascript@^2.1.0, serialize-javascript@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== -serve-index@^1.7.2: +serve-index@^1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= @@ -9402,14 +10608,12 @@ shallow-clone@^0.1.2: lazy-cache "^0.2.3" mixin-object "^2.0.1" -shallow-clone@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-1.0.0.tgz#4480cd06e882ef68b2ad88a3ea54832e2c48b571" - integrity sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA== +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== dependencies: - is-extendable "^0.1.1" - kind-of "^5.0.0" - mixin-object "^2.0.1" + kind-of "^6.0.2" shebang-command@^1.2.0: version "1.2.0" @@ -9460,6 +10664,11 @@ slash@^2.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + slice-ansi@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" @@ -9499,18 +10708,6 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -sockjs-client@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.3.0.tgz#12fc9d6cb663da5739d3dc5fb6e8687da95cb177" - integrity sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg== - dependencies: - debug "^3.2.5" - eventsource "^1.0.7" - faye-websocket "~0.11.1" - inherits "^2.0.3" - json3 "^3.3.2" - url-parse "^1.4.3" - sockjs-client@1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" @@ -9531,6 +10728,13 @@ sockjs@0.3.19: faye-websocket "^0.10.0" uuid "^3.0.1" +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= + dependencies: + is-plain-obj "^1.0.0" + source-list-map@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" @@ -9547,6 +10751,17 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" +source-map-resolve@^0.5.2: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + source-map-support@^0.5.6, source-map-support@^0.5.9, source-map-support@~0.5.12: version "0.5.13" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" @@ -9560,6 +10775,11 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= +source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + source-map@^0.4.2: version "0.4.4" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" @@ -9572,11 +10792,6 @@ source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - spdx-correct@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" @@ -9615,7 +10830,7 @@ spdy-transport@^3.0.0: readable-stream "^3.0.6" wbuf "^1.7.3" -spdy@^4.0.0: +spdy@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.1.tgz#6f12ed1c5db7ea4f24ebb8b89ba58c87c08257f2" integrity sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA== @@ -9660,6 +10875,14 @@ ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" +ssri@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-7.1.0.tgz#92c241bf6de82365b5c7fb4bd76e975522e1294d" + integrity sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g== + dependencies: + figgy-pudding "^3.5.1" + minipass "^3.1.1" + stable@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" @@ -9727,6 +10950,11 @@ stream-shift@^1.0.0: resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + string-length@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" @@ -9735,6 +10963,14 @@ string-length@^2.0.0: astral-regex "^1.0.0" strip-ansi "^4.0.0" +string-length@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837" + integrity sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA== + dependencies: + astral-regex "^1.0.0" + strip-ansi "^5.2.0" + string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -9761,6 +10997,15 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" +string-width@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + string.prototype.trimleft@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz#6cc47f0d7eb8d62b0f3701611715a3954591d634" @@ -9821,6 +11066,13 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" @@ -9858,13 +11110,18 @@ strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -style-loader@0.23.1: - version "0.23.1" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925" - integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg== +strip-json-comments@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" + integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== + +style-loader@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.0.0.tgz#1d5296f9165e8e2c85d24eee0b7caf9ec8ca1f82" + integrity sha512-B0dOCFwv7/eY31a5PCieNwMgMhVGFe9w+rh7s/Bx8kfFkrth9zfTZquoYvdw8URgiqxObQKcpW51Ugz1HjfdZw== dependencies: - loader-utils "^1.1.0" - schema-utils "^1.0.0" + loader-utils "^1.2.3" + schema-utils "^2.0.1" styled-components@4.1.3: version "4.1.3" @@ -9960,7 +11217,7 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" -tapable@^1.0.0, tapable@^1.1.0: +tapable@^1.0.0, tapable@^1.1.0, tapable@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== @@ -9987,7 +11244,21 @@ tar@^4: safe-buffer "^5.1.2" yallist "^3.0.3" -terser-webpack-plugin@1.2.3, terser-webpack-plugin@1.4.3, terser-webpack-plugin@^1.1.0: +terser-webpack-plugin@2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.2.1.tgz#5569e6c7d8be79e5e43d6da23acc3b6ba77d22bd" + integrity sha512-jwdauV5Al7zopR6OAYvIIRcxXCSvLjZjr7uZE8l2tIWb/ryrGN48sJftqGf5k9z09tWhajx53ldp0XPI080YnA== + dependencies: + cacache "^13.0.1" + find-cache-dir "^3.0.0" + jest-worker "^24.9.0" + schema-utils "^2.5.0" + serialize-javascript "^2.1.0" + source-map "^0.6.1" + terser "^4.3.9" + webpack-sources "^1.4.3" + +terser-webpack-plugin@^1.4.1: version "1.4.3" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" integrity sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA== @@ -10011,6 +11282,15 @@ terser@^4.1.2: source-map "~0.6.1" source-map-support "~0.5.12" +terser@^4.3.9: + version "4.4.3" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.4.3.tgz#401abc52b88869cf904412503b1eb7da093ae2f0" + integrity sha512-0ikKraVtRDKGzHrzkCv5rUNDzqlhmhowOBqC0XqUHFpW+vJ45+20/IFBcebwKfiS2Z9fJin6Eo+F1zLZsxi8RA== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + test-exclude@^5.2.3: version "5.2.3" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" @@ -10160,22 +11440,17 @@ trim-newlines@^1.0.0: dependencies: glob "^7.1.2" -ts-pnp@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.2.tgz#be8e4bfce5d00f0f58e0666a82260c34a57af552" - integrity sha512-f5Knjh7XCyRIzoC/z1Su1yLLRrPrFCgtUAh/9fCSP6NKbATwpOL1+idQVXQokK9GRFURn/jYPGPfegIctwunoA== - -ts-pnp@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.4.tgz#ae27126960ebaefb874c6d7fa4729729ab200d90" - integrity sha512-1J/vefLC+BWSo+qe8OnJQfWTYRS6ingxjwqmHMqaMxXMj7kFtKLgAaYW3JeX3mktjgUL+etlU8/B4VUAUI9QGw== +ts-pnp@1.1.5, ts-pnp@^1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.5.tgz#840e0739c89fce5f3abd9037bb091dbff16d9dec" + integrity sha512-ti7OGMOUOzo66wLF3liskw6YQIaSsBgc4GOAlWRnIEj8htCxJUxskanMUoJOD6MDCRAXo36goXJZch+nOS0VMA== tslib@^1.8.1, tslib@^1.9.0: version "1.10.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== -tsutils@^3.7.0: +tsutils@^3.17.1: version "3.17.1" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== @@ -10206,6 +11481,11 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + type-is@~1.6.17, type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -10214,6 +11494,16 @@ type-is@~1.6.17, type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" + integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== + typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -10398,14 +11688,14 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= -url-loader@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-1.1.2.tgz#b971d191b83af693c5e3fea4064be9e1f2d7f8d8" - integrity sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg== +url-loader@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-2.3.0.tgz#e0e2ef658f003efb8ca41b0f3ffbf76bab88658b" + integrity sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog== dependencies: - loader-utils "^1.1.0" - mime "^2.0.3" - schema-utils "^1.0.0" + loader-utils "^1.2.3" + mime "^2.4.4" + schema-utils "^2.5.0" url-parse@^1.4.3: version "1.4.7" @@ -10486,6 +11776,11 @@ uuid@^3.0.1, uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== +v8-compile-cache@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" + integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== + validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -10541,7 +11836,7 @@ walker@^1.0.7, walker@~1.0.5: dependencies: makeerror "1.0.x" -watchpack@^1.5.0: +watchpack@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA== @@ -10562,7 +11857,7 @@ webidl-conversions@^4.0.2: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== -webpack-dev-middleware@^3.5.1: +webpack-dev-middleware@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== @@ -10573,41 +11868,44 @@ webpack-dev-middleware@^3.5.1: range-parser "^1.2.1" webpack-log "^2.0.0" -webpack-dev-server@3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.2.1.tgz#1b45ce3ecfc55b6ebe5e36dab2777c02bc508c4e" - integrity sha512-sjuE4mnmx6JOh9kvSbPYw3u/6uxCLHNWfhWaIPwcXWsvWOPN+nc5baq4i9jui3oOBRXGonK9+OI0jVkaz6/rCw== +webpack-dev-server@3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.9.0.tgz#27c3b5d0f6b6677c4304465ac817623c8b27b89c" + integrity sha512-E6uQ4kRrTX9URN9s/lIbqTAztwEPdvzVrcmHE8EQ9YnuT9J8Es5Wrd8n9BKg1a0oZ5EgEke/EQFgUsp18dSTBw== dependencies: ansi-html "0.0.7" bonjour "^3.5.0" - chokidar "^2.0.0" - compression "^1.5.2" - connect-history-api-fallback "^1.3.0" + chokidar "^2.1.8" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" debug "^4.1.1" - del "^3.0.0" - express "^4.16.2" - html-entities "^1.2.0" - http-proxy-middleware "^0.19.1" + del "^4.1.1" + express "^4.17.1" + html-entities "^1.2.1" + http-proxy-middleware "0.19.1" import-local "^2.0.0" - internal-ip "^4.2.0" + internal-ip "^4.3.0" ip "^1.1.5" - killable "^1.0.0" - loglevel "^1.4.1" - opn "^5.1.0" - portfinder "^1.0.9" + is-absolute-url "^3.0.3" + killable "^1.0.1" + loglevel "^1.6.4" + opn "^5.5.0" + p-retry "^3.0.1" + portfinder "^1.0.25" schema-utils "^1.0.0" - selfsigned "^1.9.1" - semver "^5.6.0" - serve-index "^1.7.2" + selfsigned "^1.10.7" + semver "^6.3.0" + serve-index "^1.9.1" sockjs "0.3.19" - sockjs-client "1.3.0" - spdy "^4.0.0" - strip-ansi "^3.0.0" + sockjs-client "1.4.0" + spdy "^4.0.1" + strip-ansi "^3.0.1" supports-color "^6.1.0" url "^0.11.0" - webpack-dev-middleware "^3.5.1" + webpack-dev-middleware "^3.7.2" webpack-log "^2.0.0" - yargs "12.0.2" + ws "^6.2.1" + yargs "12.0.5" webpack-log@^2.0.0: version "2.0.0" @@ -10617,16 +11915,17 @@ webpack-log@^2.0.0: ansi-colors "^3.0.0" uuid "^3.3.2" -webpack-manifest-plugin@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.0.4.tgz#e4ca2999b09557716b8ba4475fb79fab5986f0cd" - integrity sha512-nejhOHexXDBKQOj/5v5IZSfCeTO3x1Dt1RZEcGfBSul891X/eLIcIVH31gwxPDdsi2Z8LKKFGpM4w9+oTBOSCg== +webpack-manifest-plugin@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz#19ca69b435b0baec7e29fbe90fb4015de2de4f16" + integrity sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ== dependencies: fs-extra "^7.0.0" lodash ">=3.5 <5" + object.entries "^1.1.0" tapable "^1.0.0" -webpack-sources@^1.1.0, webpack-sources@^1.3.0, webpack-sources@^1.4.0: +webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== @@ -10634,35 +11933,34 @@ webpack-sources@^1.1.0, webpack-sources@^1.3.0, webpack-sources@^1.4.0: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@4.29.6: - version "4.29.6" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.29.6.tgz#66bf0ec8beee4d469f8b598d3988ff9d8d90e955" - integrity sha512-MwBwpiE1BQpMDkbnUUaW6K8RFZjljJHArC6tWQJoFm0oQtfoSebtg4Y7/QHnJ/SddtjYLHaKGX64CFjG5rehJw== +webpack@4.41.2: + version "4.41.2" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.2.tgz#c34ec76daa3a8468c9b61a50336d8e3303dce74e" + integrity sha512-Zhw69edTGfbz9/8JJoyRQ/pq8FYUoY0diOXqW0T6yhgdhCv6wr0hra5DwwWexNRns2Z2+gsnrNcbe9hbGBgk/A== dependencies: "@webassemblyjs/ast" "1.8.5" "@webassemblyjs/helper-module-context" "1.8.5" "@webassemblyjs/wasm-edit" "1.8.5" "@webassemblyjs/wasm-parser" "1.8.5" - acorn "^6.0.5" - acorn-dynamic-import "^4.0.0" - ajv "^6.1.0" - ajv-keywords "^3.1.0" - chrome-trace-event "^1.0.0" + acorn "^6.2.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" enhanced-resolve "^4.1.0" - eslint-scope "^4.0.0" + eslint-scope "^4.0.3" json-parse-better-errors "^1.0.2" - loader-runner "^2.3.0" - loader-utils "^1.1.0" - memory-fs "~0.4.1" - micromatch "^3.1.8" - mkdirp "~0.5.0" - neo-async "^2.5.0" - node-libs-browser "^2.0.0" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.1" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" schema-utils "^1.0.0" - tapable "^1.1.0" - terser-webpack-plugin "^1.1.0" - watchpack "^1.5.0" - webpack-sources "^1.3.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.1" + watchpack "^1.6.0" + webpack-sources "^1.4.1" websocket-driver@>=0.5.1: version "0.7.3" @@ -10685,7 +11983,7 @@ whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, whatwg-encoding@^1.0.5: dependencies: iconv-lite "0.4.24" -whatwg-fetch@3.0.0: +whatwg-fetch@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== @@ -10737,6 +12035,11 @@ wide-align@^1.1.0: dependencies: string-width "^1.0.2 || 2" +word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" @@ -10761,7 +12064,7 @@ workbox-broadcast-update@^4.3.1: dependencies: workbox-core "^4.3.1" -workbox-build@^4.2.0: +workbox-build@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-4.3.1.tgz#414f70fb4d6de47f6538608b80ec52412d233e64" integrity sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw== @@ -10866,14 +12169,14 @@ workbox-sw@^4.3.1: resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-4.3.1.tgz#df69e395c479ef4d14499372bcd84c0f5e246164" integrity sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w== -workbox-webpack-plugin@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-4.2.0.tgz#c94c3f69ff39c8a5b0c7e6bebc382cb53410a63d" - integrity sha512-YZsiA+y/ns/GdWRaBsfYv8dln1ebWtGnJcTOg1ppO0pO1tScAHX0yGtHIjndxz3L/UUhE8b0NQE9KeLNwJwA5A== +workbox-webpack-plugin@4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-4.3.1.tgz#47ff5ea1cc074b6c40fb5a86108863a24120d4bd" + integrity sha512-gJ9jd8Mb8wHLbRz9ZvGN57IAmknOipD3W4XNE/Lk/4lqs5Htw4WOQgakQy/o/4CoXQlMCYldaqUg+EJ35l9MEQ== dependencies: "@babel/runtime" "^7.0.0" json-stable-stringify "^1.0.1" - workbox-build "^4.2.0" + workbox-build "^4.3.1" workbox-window@^4.3.1: version "4.3.1" @@ -10941,7 +12244,7 @@ ws@^5.2.0: dependencies: async-limiter "~1.0.0" -ws@^6.1.0, ws@^6.1.2: +ws@^6.1.0, ws@^6.1.2, ws@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== @@ -10958,11 +12261,6 @@ xmlchars@^2.1.1: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -xregexp@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.0.0.tgz#e698189de49dd2a18cc5687b05e17c8e43943020" - integrity sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg== - xtend@^4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" @@ -10988,12 +12286,25 @@ yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== -yargs-parser@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" - integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.7.2.tgz#f26aabf738590ab61efaca502358e48dc9f348b2" + integrity sha512-qXROVp90sb83XtAoqE8bP9RwAkTTZbugRUTm5YeFCBfNRPEp2YzTeqWiz7m5OORHzEvrA/qcGS8hp/E+MMROYw== + dependencies: + "@babel/runtime" "^7.6.3" + +yargs-parser@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" + integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== dependencies: - camelcase "^4.1.0" + camelcase "^5.0.0" + decamelize "^1.2.0" yargs-parser@^13.1.1: version "13.1.1" @@ -11010,13 +12321,13 @@ yargs-parser@^5.0.0: dependencies: camelcase "^3.0.0" -yargs@12.0.2: - version "12.0.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.2.tgz#fe58234369392af33ecbef53819171eff0f5aadc" - integrity sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ== +yargs@12.0.5: + version "12.0.5" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" + integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== dependencies: cliui "^4.0.0" - decamelize "^2.0.0" + decamelize "^1.2.0" find-up "^3.0.0" get-caller-file "^1.0.1" os-locale "^3.0.0" @@ -11026,7 +12337,7 @@ yargs@12.0.2: string-width "^2.0.0" which-module "^2.0.0" y18n "^3.2.1 || ^4.0.0" - yargs-parser "^10.1.0" + yargs-parser "^11.1.1" yargs@^13.3.0: version "13.3.0" From be05faee312b8f057f789b63d0509e720bc33fdf Mon Sep 17 00:00:00 2001 From: Bradley Hart Date: Mon, 30 Dec 2019 10:49:14 -0500 Subject: [PATCH 62/76] Removing unmounted component error and correcting WebAuthn dropdown msg --- src/App.js | 9 ++++----- src/components/navigation/NavigationBar.js | 7 ++++--- src/components/navigation/UserDropdown.js | 17 +++++------------ src/components/navigation/UserInfo.js | 12 ++++++------ 4 files changed, 19 insertions(+), 26 deletions(-) diff --git a/src/App.js b/src/App.js index 5135c681..bedaea6d 100644 --- a/src/App.js +++ b/src/App.js @@ -73,7 +73,7 @@ class App extends React.Component { this.displayNotificationBar(false) } - enroll = async ( onSuccess ) => { + enroll = async () => { console.info('enroll().top') // Via static contextType = UALContext, access to the activeUser object on this.context is now available const { ual: { activeUser } } = this.props @@ -85,7 +85,6 @@ class App extends React.Component { console.info('pubkey:', pubkey) await enrollWebauthnPubkey(accountName, pubkey) this.setState({enrolled: true}) - onSuccess(); } catch (err) { this.displayError(err) } @@ -99,14 +98,14 @@ class App extends React.Component { const routeToResults = () => this.displayResults(true) const routeToLanding = () => this.displayResults(false) const hideNotificationBar = () => this.clearError() - const { showResults, showNotificationBar, error } = this.state + const { showResults, showNotificationBar, error, enrolled } = this.state return (

    diff --git a/src/components/navigation/NavigationBar.js b/src/components/navigation/NavigationBar.js index 65ccffe6..4c870a3e 100644 --- a/src/components/navigation/NavigationBar.js +++ b/src/components/navigation/NavigationBar.js @@ -1,5 +1,5 @@ import React from 'react' -import { func, instanceOf, oneOfType, shape } from 'prop-types' +import { bool, func, instanceOf, oneOfType, shape } from 'prop-types' import { EOSIOAuthUser } from 'ual-eosio-reference-authenticator' import { ScatterUser } from 'ual-scatter' import { LynxUser } from 'ual-lynx' @@ -12,7 +12,7 @@ import LoginButton from 'components/navigation/LoginButton' import { onKeyUpEnter } from 'utils/keyPress' import logo from 'assets/images/logo.svg' -const NavigationBar = ({ ual: { activeUser }, routeToLanding, login, enroll }) => ( +const NavigationBar = ({ ual: { activeUser }, routeToLanding, login, enroll, enrolled }) => (
  • Post a Property
  • { activeUser - ?
  • + ?
  • :
  • } @@ -47,6 +47,7 @@ NavigationBar.propTypes = { routeToLanding: func.isRequired, login: func.isRequired, enroll: func.isRequired, + enrolled: bool.isRequired } NavigationBar.defaultProps = { diff --git a/src/components/navigation/UserDropdown.js b/src/components/navigation/UserDropdown.js index b400e12c..c4043026 100644 --- a/src/components/navigation/UserDropdown.js +++ b/src/components/navigation/UserDropdown.js @@ -1,5 +1,5 @@ import React from 'react' -import { func } from 'prop-types' +import { bool, func } from 'prop-types' // UAL context object that can be set via the contextType property on a class and can be referenced using this.context import { UALContext } from 'ual-reactjs-renderer' import './UserDropdown.scss' @@ -14,18 +14,11 @@ class UserDropdown extends React.Component { static propTypes = { logout: func.isRequired, enroll: func.isRequired, - } - - state = { - enrolled: false + enrolled: bool.isRequired, } render() { - const { logout, enroll } = this.props; - const { enrolled } = this.state; - const doEnroll = () => { - enroll(() => this.setState({enrolled: true})) - } + const { logout, enrolled, enroll } = this.props; return (
    { !enrolled ?
  • onKeyUpEnter(event, doEnroll)} + onClick={enroll} + onKeyUp={event => onKeyUpEnter(event, enroll)} > privacy Enable WebAuthn 2FA diff --git a/src/components/navigation/UserInfo.js b/src/components/navigation/UserInfo.js index af1f4278..fd932d01 100644 --- a/src/components/navigation/UserInfo.js +++ b/src/components/navigation/UserInfo.js @@ -38,7 +38,7 @@ class UserInfo extends React.Component { })) } - renderLogout = ( enroll ) => ( + renderLogout = ( enroll, enrolled ) => (
    dropdown
    - { this.state.showDropdown && this.renderDropdown( enroll ) } + { this.state.showDropdown && this.renderDropdown( enroll, enrolled ) }
    ) - renderDropdown = ( enroll ) => { + renderDropdown = ( enroll, enrolled ) => { const { logout } = this.context return (
    - +
    ) } @@ -65,13 +65,13 @@ class UserInfo extends React.Component { render() { const { logout, isAutoLogin } = this.context const { accountName } = this.state - const { enroll } = this.props; + const { enroll, enrolled } = this.props; const shouldDisplayLogout = logout && !isAutoLogin return (
    Signed in as
    {accountName}
    - { shouldDisplayLogout && this.renderLogout(enroll) } + { shouldDisplayLogout && this.renderLogout(enroll, enrolled) }
    ) } From 78e6b11230de9e6e9b09bbfccf947c8933587067 Mon Sep 17 00:00:00 2001 From: Bradley Hart Date: Thu, 2 Jan 2020 10:26:02 -0500 Subject: [PATCH 63/76] GitPod websocket error --- package.json | 3 +- yarn.lock | 1054 ++++++++++++++++++++++++-------------------------- 2 files changed, 504 insertions(+), 553 deletions(-) diff --git a/package.json b/package.json index 112f2174..00c96b2e 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "randombytes": "^2.1.0", "react": "16.8.6", "react-dom": "16.8.6", - "react-scripts": "3.3.0", + "react-scripts": "3.2.0", "ual-eosio-reference-authenticator": "0.1.3", "ual-lynx": "0.2.2", "ual-reactjs-renderer": "0.1.7", @@ -66,6 +66,7 @@ ], "devDependencies": { "@blockone/eslint-config-blockone": "^1.1.1", + "@testing-library/react": "^9.4.0", "@types/elliptic": "^6.4.6", "eslint-plugin-no-exclusive-tests": "^1.0.0-rc.1", "node-sass": "^4.10.0" diff --git a/yarn.lock b/yarn.lock index 6e5e5c08..c6bc81a7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -29,6 +29,26 @@ semver "^5.4.1" source-map "^0.5.0" +"@babel/core@7.6.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.6.0.tgz#9b00f73554edd67bebc86df8303ef678be3d7b48" + integrity sha512-FuRhDRtsd6IptKpHXAa+4WPZYY2ZzgowkbLBecEDDSje1X/apG7jQM33or3NdOmjXBKWGOg4JmSiRfUfuTtHXw== + dependencies: + "@babel/code-frame" "^7.5.5" + "@babel/generator" "^7.6.0" + "@babel/helpers" "^7.6.0" + "@babel/parser" "^7.6.0" + "@babel/template" "^7.6.0" + "@babel/traverse" "^7.6.0" + "@babel/types" "^7.6.0" + convert-source-map "^1.1.0" + debug "^4.1.0" + json5 "^2.1.0" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + "@babel/core@7.7.4": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.7.4.tgz#37e864532200cb6b50ee9a4045f5f817840166ab" @@ -79,7 +99,7 @@ lodash "^4.17.13" source-map "^0.5.0" -"@babel/generator@^7.7.4": +"@babel/generator@^7.6.0", "@babel/generator@^7.7.4": version "7.7.7" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.7.7.tgz#859ac733c44c74148e1a72980a64ec84b85f4f45" integrity sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ== @@ -432,7 +452,7 @@ "@babel/traverse" "^7.6.2" "@babel/types" "^7.6.0" -"@babel/helpers@^7.7.4": +"@babel/helpers@^7.6.0", "@babel/helpers@^7.7.4": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.7.4.tgz#62c215b9e6c712dadc15a9a0dcab76c92a940302" integrity sha512-ak5NGZGJ6LV85Q1Zc9gn2n+ayXOizryhjSUBTdu5ih1tlVCJeuQENzc4ItyCVhINVXvIT/ZQ4mheGIsfBkpskg== @@ -1539,7 +1559,7 @@ dependencies: regenerator-runtime "^0.13.2" -"@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2": +"@babel/runtime@^7.6.2", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6": version "7.7.7" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.7.tgz#194769ca8d6d7790ec23605af9ee3e42a0aa79cf" integrity sha512-uCnC2JEVAu8AKB5do1WRIsvrdJ0flYx/A/9f/6chdacnEZ7LmavjdsDXr5ksYBegxtuTPR5Va9/+13QF/kFkCA== @@ -1579,7 +1599,7 @@ globals "^11.1.0" lodash "^4.17.13" -"@babel/traverse@^7.7.4": +"@babel/traverse@^7.6.0", "@babel/traverse@^7.7.4": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.7.4.tgz#9c1e7c60fb679fe4fcfaa42500833333c2058558" integrity sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw== @@ -1652,10 +1672,10 @@ resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== -"@csstools/normalize.css@^10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18" - integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== +"@csstools/normalize.css@^9.0.1": + version "9.0.1" + resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-9.0.1.tgz#c27b391d8457d1e893f1eddeaf5e5412d12ffbb5" + integrity sha512-6It2EVfGskxZCQhuykrfnALg7oVeiI6KclWSmGDqB0AiInVrTGB9Jp9i4/Ad21u9Jde/voVQz6eFX/eSg/UsPA== "@emotion/is-prop-valid@^0.7.3": version "0.7.3" @@ -1867,6 +1887,11 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== +"@sheerun/mutationobserver-shim@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.2.tgz#8013f2af54a2b7d735f71560ff360d3a8176a87b" + integrity sha512-vTCdPp/T/Q3oSqwHmZ5Kpa9oI7iLtGl3RQaA/NyLHikvcrPxACkkKVr/XzkSPJWXHRhKGzVvb0urJsbMlRxi1Q== + "@svgr/babel-plugin-add-jsx-attribute@^4.2.0": version "4.2.0" resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz#dadcb6218503532d6884b210e7f3c502caaa44b1" @@ -1921,7 +1946,7 @@ "@svgr/babel-plugin-transform-react-native-svg" "^4.2.0" "@svgr/babel-plugin-transform-svg-component" "^4.2.0" -"@svgr/core@^4.3.3": +"@svgr/core@^4.3.2": version "4.3.3" resolved "https://registry.yarnpkg.com/@svgr/core/-/core-4.3.3.tgz#b37b89d5b757dc66e8c74156d00c368338d24293" integrity sha512-qNuGF1QON1626UCaZamWt5yedpgOytvLj5BQZe2j1k1B8DUG4OyugZyfEwBeXozCUwhLEpsrgPrE+eCu4fY17w== @@ -1937,7 +1962,7 @@ dependencies: "@babel/types" "^7.4.4" -"@svgr/plugin-jsx@^4.3.3": +"@svgr/plugin-jsx@^4.3.2", "@svgr/plugin-jsx@^4.3.3": version "4.3.3" resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-4.3.3.tgz#e2ba913dbdfbe85252a34db101abc7ebd50992fa" integrity sha512-cLOCSpNWQnDB1/v+SUENHH7a0XY09bfuMKdq9+gYvtuwzC2rU4I0wKGFEp1i24holdQdwodCtDQdFtJiTCWc+w== @@ -1956,20 +1981,41 @@ merge-deep "^3.0.2" svgo "^1.2.2" -"@svgr/webpack@4.3.3": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-4.3.3.tgz#13cc2423bf3dff2d494f16b17eb7eacb86895017" - integrity sha512-bjnWolZ6KVsHhgyCoYRFmbd26p8XVbulCzSG53BDQqAr+JOAderYK7CuYrB3bDjHJuF6LJ7Wrr42+goLRV9qIg== +"@svgr/webpack@4.3.2": + version "4.3.2" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-4.3.2.tgz#319d4471c8f3d5c3af35059274834d9b5b8fb956" + integrity sha512-F3VE5OvyOWBEd2bF7BdtFRyI6E9it3mN7teDw0JQTlVtc4HZEYiiLSl+Uf9Uub6IYHVGc+qIrxxDyeedkQru2w== dependencies: "@babel/core" "^7.4.5" "@babel/plugin-transform-react-constant-elements" "^7.0.0" "@babel/preset-env" "^7.4.5" "@babel/preset-react" "^7.0.0" - "@svgr/core" "^4.3.3" - "@svgr/plugin-jsx" "^4.3.3" + "@svgr/core" "^4.3.2" + "@svgr/plugin-jsx" "^4.3.2" "@svgr/plugin-svgo" "^4.3.1" loader-utils "^1.2.3" +"@testing-library/dom@^6.11.0": + version "6.11.0" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-6.11.0.tgz#962a38f1a721fdb7c9e35e7579e33ff13a00eda4" + integrity sha512-Pkx9LMIGshyNbfmecjt18rrAp/ayMqGH674jYER0SXj0iG9xZc+zWRjk2Pg9JgPBDvwI//xGrI/oOQkAi4YEew== + dependencies: + "@babel/runtime" "^7.6.2" + "@sheerun/mutationobserver-shim" "^0.3.2" + "@types/testing-library__dom" "^6.0.0" + aria-query "3.0.0" + pretty-format "^24.9.0" + wait-for-expect "^3.0.0" + +"@testing-library/react@^9.4.0": + version "9.4.0" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-9.4.0.tgz#b021ac8cb987c8dc54c6841875f745bf9b2e88e5" + integrity sha512-XdhDWkI4GktUPsz0AYyeQ8M9qS/JFie06kcSnUVcpgOwFjAu9vhwR83qBl+lw9yZWkbECjL8Hd+n5hH6C0oWqg== + dependencies: + "@babel/runtime" "^7.7.6" + "@testing-library/dom" "^6.11.0" + "@types/testing-library__react" "^9.1.2" + "@types/babel__core@^7.1.0": version "7.1.3" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.3.tgz#e441ea7df63cd080dfcd02ab199e6d16a735fc30" @@ -2022,20 +2068,6 @@ resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== -"@types/events@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" - integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== - -"@types/glob@^7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" - integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== - dependencies: - "@types/events" "*" - "@types/minimatch" "*" - "@types/node" "*" - "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": version "2.0.1" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" @@ -2061,11 +2093,6 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== -"@types/minimatch@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== - "@types/node@*": version "12.11.2" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.11.2.tgz#75ba3beda30d690b89a5089ca1c6e8e386150b76" @@ -2076,16 +2103,51 @@ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== +"@types/prop-types@*": + version "15.7.3" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" + integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== + "@types/q@^1.5.1": version "1.5.2" resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== +"@types/react-dom@*": + version "16.9.4" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.4.tgz#0b58df09a60961dcb77f62d4f1832427513420df" + integrity sha512-fya9xteU/n90tda0s+FtN5Ym4tbgxpq/hb/Af24dvs6uYnYn+fspaxw5USlw0R8apDNwxsqumdRoCoKitckQqw== + dependencies: + "@types/react" "*" + +"@types/react@*": + version "16.9.17" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.17.tgz#58f0cc0e9ec2425d1441dd7b623421a867aa253e" + integrity sha512-UP27In4fp4sWF5JgyV6pwVPAQM83Fj76JOcg02X5BZcpSu5Wx+fP9RMqc2v0ssBoQIFvD5JdKY41gjJJKmw6Bg== + dependencies: + "@types/prop-types" "*" + csstype "^2.2.0" + "@types/stack-utils@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== +"@types/testing-library__dom@*", "@types/testing-library__dom@^6.0.0": + version "6.11.0" + resolved "https://registry.yarnpkg.com/@types/testing-library__dom/-/testing-library__dom-6.11.0.tgz#777e3ef44cb48f2430e3fad6a2053ec39004a5d3" + integrity sha512-qUmnGl6H0wajUaO3VCJJoAeN/bQwpUzCqE/hk96NiGjIh5H4b8LfmQTOj4cHfS/9hCwO0DJytC6osHYDYiouyA== + dependencies: + pretty-format "^24.3.0" + +"@types/testing-library__react@^9.1.2": + version "9.1.2" + resolved "https://registry.yarnpkg.com/@types/testing-library__react/-/testing-library__react-9.1.2.tgz#e33af9124c60a010fc03a34eff8f8a34a75c4351" + integrity sha512-CYaMqrswQ+cJACy268jsLAw355DZtPZGt3Jwmmotlcu8O/tkoXBI6AeZ84oZBJsIsesozPKzWzmv/0TIU+1E9Q== + dependencies: + "@types/react-dom" "*" + "@types/testing-library__dom" "*" + "@types/yargs-parser@*": version "13.1.0" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-13.1.0.tgz#c563aa192f39350a1d18da36c5a8da382bbd8228" @@ -2098,40 +2160,40 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^2.8.0": - version "2.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.13.0.tgz#57e933fe16a2fc66dbac059af0d6d85d921d748e" - integrity sha512-QoiANo0MMGNa8ej/yX3BrW5dZj5d8HYcKiM2fyYUlezECqn8Xc7T/e4EUdiGinn8jhBrn+9X47E9TWaaup3u1g== +"@typescript-eslint/eslint-plugin@^2.2.0": + version "2.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.14.0.tgz#c74447400537d4eb7aae1e31879ab43e6c662a8a" + integrity sha512-sneOJ3Hu0m5whJiVIxGBZZZMxMJ7c0LhAJzeMJgHo+n5wFs+/6rSR/gl7crkdR2kNwfOOSdzdc0gMvatG4dX2Q== dependencies: - "@typescript-eslint/experimental-utils" "2.13.0" + "@typescript-eslint/experimental-utils" "2.14.0" eslint-utils "^1.4.3" functional-red-black-tree "^1.0.1" regexpp "^3.0.0" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@2.13.0": - version "2.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.13.0.tgz#958614faa6f77599ee2b241740e0ea402482533d" - integrity sha512-+Hss3clwa6aNiC8ZjA45wEm4FutDV5HsVXPl/rDug1THq6gEtOYRGLqS3JlTk7mSnL5TbJz0LpEbzbPnKvY6sw== +"@typescript-eslint/experimental-utils@2.14.0": + version "2.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.14.0.tgz#e9179fa3c44e00b3106b85d7b69342901fb43e3b" + integrity sha512-KcyKS7G6IWnIgl3ZpyxyBCxhkBPV+0a5Jjy2g5HxlrbG2ZLQNFeneIBVXdaBCYOVjvGmGGFKom1kgiAY75SDeQ== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.13.0" + "@typescript-eslint/typescript-estree" "2.14.0" eslint-scope "^5.0.0" -"@typescript-eslint/parser@^2.8.0": - version "2.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.13.0.tgz#ea1ab394cf9ca17467e3da7f96eca9309f57c326" - integrity sha512-vbDeLr5QRJ1K7x5iRK8J9wuGwR9OVyd1zDAY9XFAQvAosHVjSVbDgkm328ayE6hx2QWVGhwvGaEhedcqAbfQcA== +"@typescript-eslint/parser@^2.2.0": + version "2.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.14.0.tgz#30fa0523d86d74172a5e32274558404ba4262cd6" + integrity sha512-haS+8D35fUydIs+zdSf4BxpOartb/DjrZ2IxQ5sR8zyGfd77uT9ZJZYF8+I0WPhzqHmfafUBx8MYpcp8pfaoSA== dependencies: "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.13.0" - "@typescript-eslint/typescript-estree" "2.13.0" + "@typescript-eslint/experimental-utils" "2.14.0" + "@typescript-eslint/typescript-estree" "2.14.0" eslint-visitor-keys "^1.1.0" -"@typescript-eslint/typescript-estree@2.13.0": - version "2.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.13.0.tgz#a2e746867da772c857c13853219fced10d2566bc" - integrity sha512-t21Mg5cc8T3ADEUGwDisHLIubgXKjuNRbkpzDMLb7/JMmgCe/gHM9FaaujokLey+gwTuLF5ndSQ7/EfQqrQx4g== +"@typescript-eslint/typescript-estree@2.14.0": + version "2.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.14.0.tgz#c67698acdc14547f095eeefe908958d93e1a648d" + integrity sha512-pnLpUcMNG7GfFFfNQbEX6f1aPa5fMnH2G9By+A1yovYI4VIOK2DzkaRuUlIkbagpAcrxQHLqovI1YWqEcXyRnA== dependencies: debug "^4.1.1" eslint-visitor-keys "^1.1.0" @@ -2369,14 +2431,6 @@ adjust-sourcemap-loader@2.0.0: object-path "0.11.4" regex-parser "2.2.10" -aggregate-error@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" - integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - ajv-errors@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" @@ -2489,7 +2543,7 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -aria-query@^3.0.0: +aria-query@3.0.0, aria-query@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc" integrity sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w= @@ -2779,7 +2833,7 @@ babel-plugin-macros@2.7.1: cosmiconfig "^6.0.0" resolve "^1.12.0" -babel-plugin-named-asset-import@^0.3.5: +babel-plugin-named-asset-import@^0.3.4: version "0.3.5" resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.5.tgz#d3fa1a7f1f4babd4ed0785b75e2f926df0d70d0d" integrity sha512-sGhfINU+AuMw9oFAdIn/nD5sem3pn/WgxAfDZ//Q3CnF+5uaho7C7shh2rKLk6sKE/XkfmyibghocwKdVjLIKg== @@ -2825,7 +2879,7 @@ babel-preset-jest@^24.9.0: "@babel/plugin-syntax-object-rest-spread" "^7.0.0" babel-plugin-jest-hoist "^24.9.0" -babel-preset-react-app@^9.1.0: +babel-preset-react-app@^9.0.2: version "9.1.0" resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-9.1.0.tgz#74c644d809f098d4b131646730c7bed0696084ca" integrity sha512-0qMOv/pCcCQWxX1eNyKD9GlzZTdzZIK/Pq3O6TGe65tZSJTSplw1pFlaPujm0GjBj4g3GeCQbP08vvzlH7OGHg== @@ -3080,14 +3134,14 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@4.7.3: - version "4.7.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.7.3.tgz#02341f162b6bcc1e1028e30624815d4924442dc3" - integrity sha512-jWvmhqYpx+9EZm/FxcZSbUZyDEvDTLDi3nSAKbzEkyWvtI0mNSmUosey+5awDW1RUlrgXbQb5A6qY1xQH9U6MQ== +browserslist@4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.7.0.tgz#9ee89225ffc07db03409f2fee524dc8227458a17" + integrity sha512-9rGNDtnj+HaahxiVV38Gn8n8Lr8REKsel68v1sPFfIGEK6uSXTY3h9acgiT1dZVtOOUtifo/Dn8daDQ5dUgVsA== dependencies: - caniuse-lite "^1.0.30001010" - electron-to-chromium "^1.3.306" - node-releases "^1.1.40" + caniuse-lite "^1.0.30000989" + electron-to-chromium "^1.3.247" + node-releases "^1.1.29" browserslist@^4.0.0, browserslist@^4.5.2, browserslist@^4.6.0, browserslist@^4.7.1: version "4.7.1" @@ -3098,7 +3152,7 @@ browserslist@^4.0.0, browserslist@^4.5.2, browserslist@^4.6.0, browserslist@^4.7 electron-to-chromium "^1.3.284" node-releases "^1.1.36" -browserslist@^4.6.2, browserslist@^4.6.4, browserslist@^4.8.0, browserslist@^4.8.2: +browserslist@^4.1.1, browserslist@^4.6.4, browserslist@^4.8.0, browserslist@^4.8.2: version "4.8.2" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.2.tgz#b45720ad5fbc8713b7253c20766f701c9a694289" integrity sha512-+M4oeaTplPm/f1pXDw84YohEv7B1i/2Aisei8s4s6k3QsoSHa7i5sz8u/cGQkkatCPxMASKxPualR4wwYgVboA== @@ -3188,30 +3242,6 @@ cacache@^12.0.2: unique-filename "^1.1.1" y18n "^4.0.0" -cacache@^13.0.1: - version "13.0.1" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-13.0.1.tgz#a8000c21697089082f85287a1aec6e382024a71c" - integrity sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w== - dependencies: - chownr "^1.1.2" - figgy-pudding "^3.5.1" - fs-minipass "^2.0.0" - glob "^7.1.4" - graceful-fs "^4.2.2" - infer-owner "^1.0.4" - lru-cache "^5.1.1" - minipass "^3.0.0" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.2" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - p-map "^3.0.0" - promise-inflight "^1.0.1" - rimraf "^2.7.1" - ssri "^7.0.0" - unique-filename "^1.1.1" - cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -3277,11 +3307,6 @@ camelcase@5.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== -camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - camelcase@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" @@ -3292,6 +3317,16 @@ camelcase@^3.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= + +camelcase@^5.0.0, camelcase@^5.2.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + camelize@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" @@ -3312,7 +3347,7 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000999: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001002.tgz#ba999a737b1abd5bf0fd47efe43a09b9cadbe9b0" integrity sha512-pRuxPE8wdrWmVPKcDmJJiGBxr6lFJq4ivdSeo9FTmGj5Rb8NX3Mby2pARG57MXF15hYAhZ0nHV5XxT2ig4bz3g== -caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001010, caniuse-lite@^1.0.30001012, caniuse-lite@^1.0.30001015: +caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30000989, caniuse-lite@^1.0.30001012, caniuse-lite@^1.0.30001015: version "1.0.30001017" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001017.tgz#d3ad6ec18148b9bd991829958d9d7e562bb78cd6" integrity sha512-EDnZyOJ6eYh6lHmCvCdHAFbfV4KJ9lSdfv4h/ppEhrU/Yudkl7jujwMZ1we6RX7DXqBfT04pVMQ4J+1wcTlsKA== @@ -3369,7 +3404,7 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -chokidar@^2.0.2, chokidar@^2.0.4, chokidar@^2.1.8: +chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.4: version "2.1.8" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== @@ -3388,7 +3423,7 @@ chokidar@^2.0.2, chokidar@^2.0.4, chokidar@^2.1.8: optionalDependencies: fsevents "^1.2.7" -chownr@^1.1.1, chownr@^1.1.2: +chownr@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142" integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw== @@ -3435,11 +3470,6 @@ clean-css@4.2.x: dependencies: source-map "~0.6.0" -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" @@ -3617,7 +3647,7 @@ compressible@~2.0.16: dependencies: mime-db ">= 1.40.0 < 2" -compression@^1.7.4: +compression@^1.5.2: version "1.7.4" resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== @@ -3650,7 +3680,7 @@ confusing-browser-globals@^1.0.5, confusing-browser-globals@^1.0.9: resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw== -connect-history-api-fallback@^1.6.0: +connect-history-api-fallback@^1.3.0: version "1.6.0" resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== @@ -3689,10 +3719,10 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -convert-source-map@1.7.0, convert-source-map@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== +convert-source-map@1.6.0, convert-source-map@^1.1.0, convert-source-map@^1.4.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" + integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== dependencies: safe-buffer "~5.1.1" @@ -3701,10 +3731,10 @@ convert-source-map@^0.3.3: resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= -convert-source-map@^1.1.0, convert-source-map@^1.4.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" - integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== +convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== dependencies: safe-buffer "~5.1.1" @@ -3892,23 +3922,22 @@ css-has-pseudo@^0.10.0: postcss "^7.0.6" postcss-selector-parser "^5.0.0-rc.4" -css-loader@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.2.0.tgz#bb570d89c194f763627fcf1f80059c6832d009b2" - integrity sha512-QTF3Ud5H7DaZotgdcJjGMvyDj5F3Pn1j/sC6VBEOVp94cbwqyIBdcs/quzj4MC1BKQSrTpQznegH/5giYbhnCQ== +css-loader@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-2.1.1.tgz#d8254f72e412bb2238bb44dd674ffbef497333ea" + integrity sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w== dependencies: - camelcase "^5.3.1" - cssesc "^3.0.0" - icss-utils "^4.1.1" + camelcase "^5.2.0" + icss-utils "^4.1.0" loader-utils "^1.2.3" normalize-path "^3.0.0" - postcss "^7.0.17" + postcss "^7.0.14" postcss-modules-extract-imports "^2.0.0" - postcss-modules-local-by-default "^3.0.2" + postcss-modules-local-by-default "^2.0.6" postcss-modules-scope "^2.1.0" - postcss-modules-values "^3.0.0" - postcss-value-parser "^4.0.0" - schema-utils "^2.0.0" + postcss-modules-values "^2.0.0" + postcss-value-parser "^3.3.0" + schema-utils "^1.0.0" css-prefers-color-scheme@^3.1.1: version "3.1.1" @@ -4089,6 +4118,11 @@ cssstyle@^1.0.0, cssstyle@^1.1.1: dependencies: cssom "0.3.x" +csstype@^2.2.0: + version "2.6.8" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.8.tgz#0fb6fc2417ffd2816a418c9336da74d7f07db431" + integrity sha512-msVS9qTuMT5zwAGCVm4mxfrZ18BNc6Csd0oJAtiFMZ1FAx1CCvy2+5MDmYoix63LM/6NDbNtodCiGYGmFgO0dA== + currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" @@ -4161,6 +4195,13 @@ decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= +decamelize@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-2.0.0.tgz#656d7bbc8094c4c788ea53c5840908c9c7d063c7" + integrity sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg== + dependencies: + xregexp "4.0.0" + decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" @@ -4225,18 +4266,17 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" -del@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" - integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== +del@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" + integrity sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU= dependencies: - "@types/glob" "^7.1.1" globby "^6.1.0" - is-path-cwd "^2.0.0" - is-path-in-cwd "^2.0.0" - p-map "^2.0.0" - pify "^4.0.1" - rimraf "^2.6.3" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + p-map "^1.1.1" + pify "^3.0.0" + rimraf "^2.2.8" delayed-stream@~1.0.0: version "1.0.0" @@ -4435,10 +4475,10 @@ dotenv-expand@5.1.0: resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== -dotenv@8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" - integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== +dotenv@6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.2.0.tgz#941c0410535d942c8becf28d3f357dbd9d476064" + integrity sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w== duplexer@^0.1.1: version "0.1.1" @@ -4476,16 +4516,16 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= +electron-to-chromium@^1.3.247, electron-to-chromium@^1.3.322: + version "1.3.322" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.322.tgz#a6f7e1c79025c2b05838e8e344f6e89eb83213a8" + integrity sha512-Tc8JQEfGQ1MzfSzI/bTlSr7btJv/FFO7Yh6tanqVmIWOuNCu6/D1MilIEgLtmWqIrsv+o4IjpLAhgMBr/ncNAA== + electron-to-chromium@^1.3.284: version "1.3.292" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.292.tgz#7812fc5138619342f1dd5823df6e9cbb7d2820e9" integrity sha512-hqkem5ANpt6mxVXmhAmlbdG8iicuyM/jEYgmP1tiHPeOLyZoTyGUzrDmJS/xyrrZy9frkW1uQcubicu7f6DS5g== -electron-to-chromium@^1.3.306, electron-to-chromium@^1.3.322: - version "1.3.322" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.322.tgz#a6f7e1c79025c2b05838e8e344f6e89eb83213a8" - integrity sha512-Tc8JQEfGQ1MzfSzI/bTlSr7btJv/FFO7Yh6tanqVmIWOuNCu6/D1MilIEgLtmWqIrsv+o4IjpLAhgMBr/ncNAA== - elliptic@^6.0.0, elliptic@^6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.1.tgz#c380f5f909bf1b9b4428d028cd18d3b0efd6b52b" @@ -4714,7 +4754,7 @@ eslint-config-airbnb@^17.1.0: object.assign "^4.1.0" object.entries "^1.1.0" -eslint-config-react-app@^5.1.0: +eslint-config-react-app@^5.0.2: version "5.1.0" resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-5.1.0.tgz#a37b3f2d4f56f856f93277281ef52bd791273e63" integrity sha512-hBaxisHC6HXRVvxX+/t1n8mOdmCVIKgkXsf2WoUkJi7upHJTwYTsdCmx01QPOjKNT34QMQQ9sL0tVBlbiMFjxA== @@ -4797,7 +4837,22 @@ eslint-plugin-react-hooks@^1.6.1: resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz#6210b6d5a37205f0b92858f895a4e827020a7d04" integrity sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA== -eslint-plugin-react@7.16.0, eslint-plugin-react@^7.11.1: +eslint-plugin-react@7.14.3: + version "7.14.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.14.3.tgz#911030dd7e98ba49e1b2208599571846a66bdf13" + integrity sha512-EzdyyBWC4Uz2hPYBiEJrKCUi2Fn+BJ9B/pJQcjw5X+x/H2Nm59S4MJIvL4O5NEE0+WbnQwEBxWY03oUk+Bc3FA== + dependencies: + array-includes "^3.0.3" + doctrine "^2.1.0" + has "^1.0.3" + jsx-ast-utils "^2.1.0" + object.entries "^1.1.0" + object.fromentries "^2.0.0" + object.values "^1.1.0" + prop-types "^15.7.2" + resolve "^1.10.1" + +eslint-plugin-react@^7.11.1: version "7.16.0" resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.16.0.tgz#9928e4f3e2122ed3ba6a5b56d0303ba3e41d8c09" integrity sha512-GacBAATewhhptbK3/vTP09CbFrgUJmBSaaRcWdbQLFvUZy9yVcQxigBNHGPU/KE2AyHpzj3AWXpxoMTsIDiHug== @@ -4887,7 +4942,7 @@ eslint@^5.4.0: table "^5.2.3" text-table "^0.2.0" -eslint@^6.6.0: +eslint@^6.1.0: version "6.8.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== @@ -5060,7 +5115,7 @@ expect@^24.9.0: jest-message-util "^24.9.0" jest-regex-util "^24.9.0" -express@^4.17.1: +express@^4.16.2: version "4.17.1" resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== @@ -5230,13 +5285,13 @@ file-entry-cache@^5.0.1: dependencies: flat-cache "^2.0.1" -file-loader@4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-4.3.0.tgz#780f040f729b3d18019f20605f723e844b8a58af" - integrity sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA== +file-loader@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-3.0.1.tgz#f8e0ba0b599918b51adfe45d66d1e771ad560faa" + integrity sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw== dependencies: - loader-utils "^1.2.3" - schema-utils "^2.5.0" + loader-utils "^1.0.2" + schema-utils "^1.0.0" filesize@3.6.1: version "3.6.1" @@ -5284,15 +5339,6 @@ find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: make-dir "^2.0.0" pkg-dir "^3.0.0" -find-cache-dir@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.2.0.tgz#e7fe44c1abc1299f516146e563108fd1006c1874" - integrity sha512-1JKclkYYsf1q9WIJKLZa9S9muC+08RIjzAlLrK4QcYLJMS6mk9yombQ9qf+zJ7H9LS800k0s44L4sDq9VYzqyg== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.0" - pkg-dir "^4.1.0" - find-up@3.0.0, find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" @@ -5315,14 +5361,6 @@ find-up@^2.0.0, find-up@^2.1.0: dependencies: locate-path "^2.0.0" -find-up@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - flat-cache@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" @@ -5389,10 +5427,10 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= -fork-ts-checker-webpack-plugin@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.0.tgz#fb411a4b2c3697e1cd7f83436d4feeacbcc70c7b" - integrity sha512-6OkRfjuNMNqb14f01xokcWcKV5Ekknc2FvziNpcTYru+kxIYFA2MtuuBI19MHThZnjSBhoi35Dcq+I0oUkFjmQ== +fork-ts-checker-webpack-plugin@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-1.5.0.tgz#ce1d77190b44d81a761b10b6284a373795e41f0c" + integrity sha512-zEhg7Hz+KhZlBhILYpXy+Beu96gwvkROWJiTXOCyOOMMrdBIRPvsBpBqgTI4jfJGrJXcqGwJR8zsBGDmzY0jsA== dependencies: babel-code-frame "^6.22.0" chalk "^2.4.1" @@ -5437,19 +5475,19 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" -fs-extra@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" - integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== +fs-extra@7.0.1, fs-extra@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== dependencies: graceful-fs "^4.1.2" jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== +fs-extra@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" + integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== dependencies: graceful-fs "^4.1.2" jsonfile "^4.0.0" @@ -5471,13 +5509,6 @@ fs-minipass@^1.2.5: dependencies: minipass "^2.6.0" -fs-minipass@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.0.0.tgz#a6415edab02fae4b9e9230bc87ee2e4472003cd1" - integrity sha512-40Qz+LFXmd9tzYVnnBmZvFfvAADfUA14TXPK1s7IfElJTIZ97rA8w4Kin7Wt5JBrC3ShnnFJO/5vPjPEeJIq9A== - dependencies: - minipass "^3.0.0" - fs-write-stream-atomic@^1.0.8: version "1.0.10" resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" @@ -5493,10 +5524,10 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" - integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== +fsevents@2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.0.7.tgz#382c9b443c6cbac4c57187cdda23aa3bf1ccfc2a" + integrity sha512-a7YT0SV3RB+DjYcppwVDLtn13UQnmg0SWZS7ezZD0UjnLwXmy8Zm21GMVGLaFGimIqcvyMQaOJBrop8MyOp1kQ== fsevents@^1.2.7: version "1.2.9" @@ -5711,7 +5742,7 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6 resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== -graceful-fs@^4.2.0, graceful-fs@^4.2.2: +graceful-fs@^4.2.0: version "4.2.3" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== @@ -5895,7 +5926,7 @@ html-encoding-sniffer@^1.0.2: dependencies: whatwg-encoding "^1.0.1" -html-entities@^1.2.1: +html-entities@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= @@ -5979,7 +6010,7 @@ http-errors@~1.7.2: resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q= -http-proxy-middleware@0.19.1: +http-proxy-middleware@^0.19.1: version "0.19.1" resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== @@ -6029,7 +6060,12 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: dependencies: safer-buffer ">= 2.1.2 < 3" -icss-utils@^4.0.0, icss-utils@^4.1.1: +icss-replace-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" + integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= + +icss-utils@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== @@ -6138,17 +6174,12 @@ indent-string@^2.1.0: dependencies: repeating "^2.0.0" -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - indexes-of@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= -infer-owner@^1.0.3, infer-owner@^1.0.4: +infer-owner@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== @@ -6238,7 +6269,7 @@ inquirer@^7.0.0: strip-ansi "^5.1.0" through "^2.3.6" -internal-ip@^4.3.0: +internal-ip@^4.2.0: version "4.3.0" resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== @@ -6288,11 +6319,6 @@ is-absolute-url@^2.0.0: resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= -is-absolute-url@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" - integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== - is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -6484,24 +6510,24 @@ is-obj@^1.0.0, is-obj@^1.0.1: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= -is-path-cwd@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== +is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0= -is-path-in-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" - integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== +is-path-in-cwd@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" + integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ== dependencies: - is-path-inside "^2.1.0" + is-path-inside "^1.0.0" -is-path-inside@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" - integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== +is-path-inside@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" + integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= dependencies: - path-is-inside "^1.0.2" + path-is-inside "^1.0.1" is-plain-obj@^1.0.0: version "1.1.0" @@ -6581,11 +6607,6 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= -is-wsl@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.1.1.tgz#4a1c152d429df3d441669498e2486d3596ebaf1d" - integrity sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog== - isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -6997,14 +7018,13 @@ jest-validate@^24.9.0: leven "^3.1.0" pretty-format "^24.9.0" -jest-watch-typeahead@0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.4.2.tgz#e5be959698a7fa2302229a5082c488c3c8780a4a" - integrity sha512-f7VpLebTdaXs81rg/oj4Vg/ObZy2QtGzAmGLNsqUS5G5KtSN68tFcIsbvNODfNyQxU78g7D8x77o3bgfBTR+2Q== +jest-watch-typeahead@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.4.0.tgz#4d5356839a85421588ce452d2440bf0d25308397" + integrity sha512-bJR/HPNgOQnkmttg1OkBIrYFAYuxFxExtgQh67N2qPvaWGVC8TCkedRNPKBfmZfVXFD3u2sCH+9OuS5ApBfCgA== dependencies: ansi-escapes "^4.2.1" chalk "^2.4.1" - jest-regex-util "^24.9.0" jest-watcher "^24.3.0" slash "^3.0.0" string-length "^3.1.0" @@ -7226,6 +7246,14 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" +jsx-ast-utils@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz#8a9364e402448a3ce7f14d357738310d9248054f" + integrity sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA== + dependencies: + array-includes "^3.0.3" + object.assign "^4.1.0" + jsx-ast-utils@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.1.tgz#4d4973ebf8b9d2837ee91a8208cc66f3a2776cfb" @@ -7234,7 +7262,7 @@ jsx-ast-utils@^2.2.1: array-includes "^3.0.3" object.assign "^4.1.0" -killable@^1.0.1: +killable@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== @@ -7374,7 +7402,7 @@ loader-runner@^2.4.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== -loader-utils@1.2.3, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: +loader-utils@1.2.3, loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== @@ -7399,13 +7427,6 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - lodash._reinterpolate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" @@ -7451,7 +7472,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== -loglevel@^1.6.4: +loglevel@^1.4.1: version "1.6.6" resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.6.tgz#0ee6300cc058db6b3551fa1c4bf73b83bb771312" integrity sha512-Sgr5lbboAUBo3eXCSPL4/KoVz3ROKquOjcctxmHIt+vol2DrqTQe3SwkKKuYhEiWB5kYa13YyopJ69deJ1irzQ== @@ -7504,13 +7525,6 @@ make-dir@^2.0.0, make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" -make-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.0.tgz#1b5f39f6b9270ed33f9f054c5c0f84304989f801" - integrity sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw== - dependencies: - semver "^6.0.0" - makeerror@1.0.x: version "1.0.11" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" @@ -7764,27 +7778,6 @@ minimist@~0.0.1: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= -minipass-collect@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" - integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== - dependencies: - minipass "^3.0.0" - -minipass-flush@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" - integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== - dependencies: - minipass "^3.0.0" - -minipass-pipeline@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz#3dcb6bb4a546e32969c7ad710f2c79a86abba93a" - integrity sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA== - dependencies: - minipass "^3.0.0" - minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" @@ -7793,13 +7786,6 @@ minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: safe-buffer "^5.1.2" yallist "^3.0.0" -minipass@^3.0.0, minipass@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.1.tgz#7607ce778472a185ad6d89082aa2070f79cedcd5" - integrity sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w== - dependencies: - yallist "^4.0.0" - minizlib@^1.2.1: version "1.3.3" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" @@ -8048,6 +8034,13 @@ node-pre-gyp@^0.12.0: semver "^5.3.0" tar "^4" +node-releases@^1.1.29, node-releases@^1.1.42: + version "1.1.44" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.44.tgz#cd66438a6eb875e3eb012b6a12e48d9f4326ffd7" + integrity sha512-NwbdvJyR7nrcGrXvKAvzc5raj/NkoJudkarh2yIpJ4t0NH4aqjUDz/486P+ynIW5eokKOfzGNRdYoLfBlomruw== + dependencies: + semver "^6.3.0" + node-releases@^1.1.36: version "1.1.38" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.38.tgz#d81b365df2936654ba37f509ba2fbe91eff2578b" @@ -8055,13 +8048,6 @@ node-releases@^1.1.36: dependencies: semver "^6.3.0" -node-releases@^1.1.40, node-releases@^1.1.42: - version "1.1.44" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.44.tgz#cd66438a6eb875e3eb012b6a12e48d9f4326ffd7" - integrity sha512-NwbdvJyR7nrcGrXvKAvzc5raj/NkoJudkarh2yIpJ4t0NH4aqjUDz/486P+ynIW5eokKOfzGNRdYoLfBlomruw== - dependencies: - semver "^6.3.0" - node-sass@^4.10.0: version "4.12.0" resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.12.0.tgz#0914f531932380114a30cc5fa4fa63233a25f017" @@ -8343,14 +8329,14 @@ onetime@^5.1.0: dependencies: mimic-fn "^2.1.0" -open@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/open/-/open-7.0.0.tgz#7e52999b14eb73f90f0f0807fe93897c4ae73ec9" - integrity sha512-K6EKzYqnwQzk+/dzJAQSBORub3xlBTxMz+ntpZpH/LyCa1o6KjXhuN+2npAaI9jaSmU3R1Q8NWf4KUWcyytGsQ== +open@^6.3.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" + integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== dependencies: - is-wsl "^2.1.0" + is-wsl "^1.1.0" -opn@^5.5.0: +opn@^5.1.0: version "5.5.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== @@ -8472,7 +8458,7 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.0.0, p-limit@^2.2.0: +p-limit@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537" integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg== @@ -8493,37 +8479,16 @@ p-locate@^3.0.0: dependencies: p-limit "^2.0.0" -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-map@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - -p-map@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" - integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== - dependencies: - aggregate-error "^3.0.0" +p-map@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" + integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== p-reduce@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= -p-retry@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" - integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== - dependencies: - retry "^0.12.0" - p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" @@ -8641,17 +8606,12 @@ path-exists@^3.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-is-inside@^1.0.2: +path-is-inside@^1.0.1, path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= @@ -8770,13 +8730,6 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" -pkg-dir@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - pkg-up@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" @@ -8796,7 +8749,7 @@ pnp-webpack-plugin@1.5.0: dependencies: ts-pnp "^1.1.2" -portfinder@^1.0.25: +portfinder@^1.0.9: version "1.0.25" resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.25.tgz#254fd337ffba869f4b9d37edc298059cb4d35eca" integrity sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg== @@ -8818,12 +8771,12 @@ postcss-attribute-case-insensitive@^4.0.1: postcss "^7.0.2" postcss-selector-parser "^5.0.0" -postcss-browser-comments@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz#1248d2d935fb72053c8e1f61a84a57292d9f65e9" - integrity sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig== +postcss-browser-comments@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-2.0.0.tgz#dc48d6a8ddbff188a80a000b7393436cb18aed88" + integrity sha512-xGG0UvoxwBc4Yx4JX3gc0RuDl1kc4bVihCzzk6UC72YPfq5fu3c717Nu8Un3nvnq1BJ31gBnFXIG/OaUTnpHgA== dependencies: - postcss "^7" + postcss "^7.0.2" postcss-calc@^7.0.1: version "7.0.1" @@ -9132,15 +9085,14 @@ postcss-modules-extract-imports@^2.0.0: dependencies: postcss "^7.0.5" -postcss-modules-local-by-default@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz#e8a6561be914aaf3c052876377524ca90dbb7915" - integrity sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ== +postcss-modules-local-by-default@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.6.tgz#dd9953f6dd476b5fd1ef2d8830c8929760b56e63" + integrity sha512-oLUV5YNkeIBa0yQl7EYnxMgy4N6noxmiwZStaEJUSe2xPMcdNc8WmBQuQCx18H5psYbVxz8zoHk0RAAYZXP9gA== dependencies: - icss-utils "^4.1.1" - postcss "^7.0.16" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.0.0" + postcss "^7.0.6" + postcss-selector-parser "^6.0.0" + postcss-value-parser "^3.3.1" postcss-modules-scope@^2.1.0: version "2.1.0" @@ -9150,12 +9102,12 @@ postcss-modules-scope@^2.1.0: postcss "^7.0.6" postcss-selector-parser "^6.0.0" -postcss-modules-values@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" - integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== +postcss-modules-values@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz#479b46dc0c5ca3dc7fa5270851836b9ec7152f64" + integrity sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w== dependencies: - icss-utils "^4.0.0" + icss-replace-symbols "^1.1.0" postcss "^7.0.6" postcss-nesting@^7.0.0: @@ -9246,16 +9198,15 @@ postcss-normalize-whitespace@^4.0.2: postcss "^7.0.0" postcss-value-parser "^3.0.0" -postcss-normalize@8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-8.0.1.tgz#90e80a7763d7fdf2da6f2f0f82be832ce4f66776" - integrity sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ== +postcss-normalize@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-7.0.1.tgz#eb51568d962b8aa61a8318383c8bb7e54332282e" + integrity sha512-NOp1fwrG+6kVXWo7P9SizCHX6QvioxFD/hZcI2MLxPmVnFJFC0j0DDpIuNw2tUDeCFMni59gCVgeJ1/hYhj2OQ== dependencies: - "@csstools/normalize.css" "^10.1.0" - browserslist "^4.6.2" - postcss "^7.0.17" - postcss-browser-comments "^3.0.0" - sanitize.css "^10.0.0" + "@csstools/normalize.css" "^9.0.1" + browserslist "^4.1.1" + postcss "^7.0.2" + postcss-browser-comments "^2.0.0" postcss-ordered-values@^4.1.2: version "4.1.2" @@ -9407,7 +9358,7 @@ postcss-selector-parser@^5.0.0, postcss-selector-parser@^5.0.0-rc.3, postcss-sel indexes-of "^1.0.1" uniq "^1.0.1" -postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: +postcss-selector-parser@^6.0.0: version "6.0.2" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== @@ -9440,7 +9391,7 @@ postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0, postcss-value-parser@^ resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== -postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2: +postcss-value-parser@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz#482282c09a42706d1fc9a069b73f44ec08391dc9" integrity sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ== @@ -9454,28 +9405,28 @@ postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: indexes-of "^1.0.1" uniq "^1.0.1" -postcss@7.0.21: - version "7.0.21" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.21.tgz#06bb07824c19c2021c5d056d5b10c35b989f7e17" - integrity sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ== +postcss@7.0.14: + version "7.0.14" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.14.tgz#4527ed6b1ca0d82c53ce5ec1a2041c2346bbd6e5" + integrity sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg== dependencies: chalk "^2.4.2" source-map "^0.6.1" supports-color "^6.1.0" -postcss@^7, postcss@^7.0.16, postcss@^7.0.23: - version "7.0.25" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.25.tgz#dd2a2a753d50b13bed7a2009b4a18ac14d9db21e" - integrity sha512-NXXVvWq9icrm/TgQC0O6YVFi4StfJz46M1iNd/h6B26Nvh/HKI+q4YZtFN/EjcInZliEscO/WL10BXnc1E5nwg== +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.18" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.18.tgz#4b9cda95ae6c069c67a4d933029eddd4838ac233" + integrity sha512-/7g1QXXgegpF+9GJj4iN7ChGF40sYuGYJ8WZu8DZWnmhQ/G36hfdk3q9LBJmoK+lZ+yzZ5KYpOoxq7LF1BxE8g== dependencies: chalk "^2.4.2" source-map "^0.6.1" supports-color "^6.1.0" -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.5, postcss@^7.0.6: - version "7.0.18" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.18.tgz#4b9cda95ae6c069c67a4d933029eddd4838ac233" - integrity sha512-/7g1QXXgegpF+9GJj4iN7ChGF40sYuGYJ8WZu8DZWnmhQ/G36hfdk3q9LBJmoK+lZ+yzZ5KYpOoxq7LF1BxE8g== +postcss@^7.0.23: + version "7.0.25" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.25.tgz#dd2a2a753d50b13bed7a2009b4a18ac14d9db21e" + integrity sha512-NXXVvWq9icrm/TgQC0O6YVFi4StfJz46M1iNd/h6B26Nvh/HKI+q4YZtFN/EjcInZliEscO/WL10BXnc1E5nwg== dependencies: chalk "^2.4.2" source-map "^0.6.1" @@ -9504,7 +9455,7 @@ pretty-error@^2.1.1: renderkid "^2.0.1" utila "~0.4" -pretty-format@^24.9.0: +pretty-format@^24.3.0, pretty-format@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== @@ -9736,7 +9687,7 @@ rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-app-polyfill@^1.0.5: +react-app-polyfill@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-1.0.5.tgz#59c7377a0b9ed25692eeaca7ad9b12ef2d064709" integrity sha512-RcbV6+msbvZJZUIK/LX3UafPtoaDSJgUWu4sqBxHKTVmBsnlU2QWCKJRBRmgjxu+ivW/GPINbPWRM4Ppa6Lbgw== @@ -9748,21 +9699,21 @@ react-app-polyfill@^1.0.5: regenerator-runtime "^0.13.3" whatwg-fetch "^3.0.0" -react-dev-utils@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-10.0.0.tgz#bd2d16426c7e4cbfed1b46fb9e2ac98ec06fcdfa" - integrity sha512-8OKSJvl8ccXJDNf0YGw377L9v1OnT16skD/EuZWm0M/yr255etP4x4kuUCT1EfFfJ7Rhc4ZTpPTfPrvgiXa50Q== +react-dev-utils@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-9.1.0.tgz#3ad2bb8848a32319d760d0a84c56c14bdaae5e81" + integrity sha512-X2KYF/lIGyGwP/F/oXgGDF24nxDA2KC4b7AFto+eqzc/t838gpSGiaU8trTqHXOohuLxxc5qi1eDzsl9ucPDpg== dependencies: "@babel/code-frame" "7.5.5" address "1.1.2" - browserslist "4.7.3" + browserslist "4.7.0" chalk "2.4.2" cross-spawn "6.0.5" detect-port-alt "1.1.6" escape-string-regexp "1.0.5" filesize "3.6.1" find-up "3.0.0" - fork-ts-checker-webpack-plugin "3.1.0" + fork-ts-checker-webpack-plugin "1.5.0" global-modules "2.0.0" globby "8.0.2" gzip-size "5.1.1" @@ -9770,11 +9721,12 @@ react-dev-utils@^10.0.0: inquirer "6.5.0" is-root "2.1.0" loader-utils "1.2.3" - open "^7.0.0" + open "^6.3.0" pkg-up "2.0.0" - react-error-overlay "^6.0.4" + react-error-overlay "^6.0.3" recursive-readdir "2.2.2" shell-quote "1.7.2" + sockjs-client "1.4.0" strip-ansi "5.2.0" text-table "0.2.0" @@ -9798,7 +9750,7 @@ react-dom@16.8.6: prop-types "^15.6.2" scheduler "^0.13.6" -react-error-overlay@^6.0.4: +react-error-overlay@^6.0.3: version "6.0.4" resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.4.tgz#0d165d6d27488e660bc08e57bdabaad741366f7a" integrity sha512-ueZzLmHltszTshDMwyfELDq8zOA803wQ1ZuzCccXa1m57k1PxSHfflPD5W9YIiTXLs0JTLzoj6o1LuM5N6zzNA== @@ -9813,65 +9765,66 @@ react-is@^16.6.0, react-is@^16.8.1, react-is@^16.8.4: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.10.2.tgz#984120fd4d16800e9a738208ab1fba422d23b5ab" integrity sha512-INBT1QEgtcCCgvccr5/86CfD71fw9EPmDxgiJX4I2Ddr6ZsV6iFXsuby+qWJPtmNuMY0zByTsG4468P7nHuNWA== -react-scripts@3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-3.3.0.tgz#f26a21f208f20bd04770f43e50b5bbc151920c2a" - integrity sha512-hzPc6bxCc9GnsspWqk494c2Gpd0dRbk/C8q76BNQIENi9GMwoxFljOEcZoZcpFpJgQ45alxFR6QaLt+51qie7g== +react-scripts@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-3.2.0.tgz#58ccd6b4ffa27f1b4d2986cbdcaa916660e9e33c" + integrity sha512-6LzuKbE2B4eFQG6i1FnTScn9HDcWBfXXnOwW9xKFPJ/E3rK8i1ufbOZ0ocKyRPxJAKdN7iqg3i7lt0+oxkSVOA== dependencies: - "@babel/core" "7.7.4" - "@svgr/webpack" "4.3.3" - "@typescript-eslint/eslint-plugin" "^2.8.0" - "@typescript-eslint/parser" "^2.8.0" + "@babel/core" "7.6.0" + "@svgr/webpack" "4.3.2" + "@typescript-eslint/eslint-plugin" "^2.2.0" + "@typescript-eslint/parser" "^2.2.0" babel-eslint "10.0.3" babel-jest "^24.9.0" babel-loader "8.0.6" - babel-plugin-named-asset-import "^0.3.5" - babel-preset-react-app "^9.1.0" - camelcase "^5.3.1" + babel-plugin-named-asset-import "^0.3.4" + babel-preset-react-app "^9.0.2" + camelcase "^5.2.0" case-sensitive-paths-webpack-plugin "2.2.0" - css-loader "3.2.0" - dotenv "8.2.0" + css-loader "2.1.1" + dotenv "6.2.0" dotenv-expand "5.1.0" - eslint "^6.6.0" - eslint-config-react-app "^5.1.0" + eslint "^6.1.0" + eslint-config-react-app "^5.0.2" eslint-loader "3.0.2" eslint-plugin-flowtype "3.13.0" eslint-plugin-import "2.18.2" eslint-plugin-jsx-a11y "6.2.3" - eslint-plugin-react "7.16.0" + eslint-plugin-react "7.14.3" eslint-plugin-react-hooks "^1.6.1" - file-loader "4.3.0" - fs-extra "^8.1.0" + file-loader "3.0.1" + fs-extra "7.0.1" html-webpack-plugin "4.0.0-beta.5" identity-obj-proxy "3.0.0" + is-wsl "^1.1.0" jest "24.9.0" jest-environment-jsdom-fourteen "0.1.0" jest-resolve "24.9.0" - jest-watch-typeahead "0.4.2" + jest-watch-typeahead "0.4.0" mini-css-extract-plugin "0.8.0" optimize-css-assets-webpack-plugin "5.0.3" pnp-webpack-plugin "1.5.0" postcss-flexbugs-fixes "4.1.0" postcss-loader "3.0.0" - postcss-normalize "8.0.1" + postcss-normalize "7.0.1" postcss-preset-env "6.7.0" postcss-safe-parser "4.0.1" - react-app-polyfill "^1.0.5" - react-dev-utils "^10.0.0" - resolve "1.12.2" - resolve-url-loader "3.1.1" - sass-loader "8.0.0" + react-app-polyfill "^1.0.4" + react-dev-utils "^9.1.0" + resolve "1.12.0" + resolve-url-loader "3.1.0" + sass-loader "7.2.0" semver "6.3.0" style-loader "1.0.0" - terser-webpack-plugin "2.2.1" - ts-pnp "1.1.5" - url-loader "2.3.0" - webpack "4.41.2" - webpack-dev-server "3.9.0" - webpack-manifest-plugin "2.2.0" + terser-webpack-plugin "1.4.1" + ts-pnp "1.1.4" + url-loader "2.1.0" + webpack "4.41.0" + webpack-dev-server "3.2.1" + webpack-manifest-plugin "2.1.1" workbox-webpack-plugin "4.3.1" optionalDependencies: - fsevents "2.1.2" + fsevents "2.0.7" react-tooltip@3.9.2: version "3.9.2" @@ -10205,18 +10158,18 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve-url-loader@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.1.tgz#28931895fa1eab9be0647d3b2958c100ae3c0bf0" - integrity sha512-K1N5xUjj7v0l2j/3Sgs5b8CjrrgtC70SmdCuZiJ8tSyb5J+uk3FoeZ4b7yTnH6j7ngI+Bc5bldHJIa8hYdu2gQ== +resolve-url-loader@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.0.tgz#54d8181d33cd1b66a59544d05cadf8e4aa7d37cc" + integrity sha512-2QcrA+2QgVqsMJ1Hn5NnJXIGCX1clQ1F6QJTqOeiaDw9ACo1G2k+8/shq3mtqne03HOFyskAClqfxKyFBriXZg== dependencies: adjust-sourcemap-loader "2.0.0" - camelcase "5.3.1" + camelcase "5.0.0" compose-function "3.0.3" - convert-source-map "1.7.0" + convert-source-map "1.6.0" es6-iterator "2.0.3" loader-utils "1.2.3" - postcss "7.0.21" + postcss "7.0.14" rework "1.0.1" rework-visit "1.0.0" source-map "0.6.1" @@ -10231,20 +10184,20 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@1.12.2: - version "1.12.2" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.2.tgz#08b12496d9aa8659c75f534a8f05f0d892fff594" - integrity sha512-cAVTI2VLHWYsGOirfeYVVQ7ZDejtQ9fp4YhYckWDEkFfqbVjaT11iM8k6xSAfGFMM+gDpZjMnFssPu8we+mqFw== - dependencies: - path-parse "^1.0.6" - -resolve@^1.10.0, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1: +resolve@1.12.0, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1: version "1.12.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== dependencies: path-parse "^1.0.6" +resolve@^1.10.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.14.1.tgz#9e018c540fcf0c427d678b9931cbf45e984bcaff" + integrity sha512-fn5Wobh4cxbLzuHaE+nphztHy43/b++4M6SsGFC2gB8uYwf0C8LcarfCz1un7UTW8OFQg9iNjZ4xpcFVGebDPg== + dependencies: + path-parse "^1.0.6" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -10266,11 +10219,6 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== -retry@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= - rework-visit@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a" @@ -10294,7 +10242,7 @@ rgba-regex@^1.0.0: resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= -rimraf@2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3, rimraf@^2.7.1: +rimraf@2, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -10386,11 +10334,6 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -sanitize.css@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-10.0.0.tgz#b5cb2547e96d8629a60947544665243b1dc3657a" - integrity sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg== - sass-graph@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49" @@ -10401,16 +10344,16 @@ sass-graph@^2.2.4: scss-tokenizer "^0.2.3" yargs "^7.0.0" -sass-loader@8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-8.0.0.tgz#e7b07a3e357f965e6b03dd45b016b0a9746af797" - integrity sha512-+qeMu563PN7rPdit2+n5uuYVR0SSVwm0JsOUsaJXzgYcClWSlmX0iHDnmeOobPkf5kUglVot3QS6SyLyaQoJ4w== +sass-loader@7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-7.2.0.tgz#e34115239309d15b2527cb62b5dfefb62a96ff7f" + integrity sha512-h8yUWaWtsbuIiOCgR9fd9c2lRXZ2uG+h8Dzg/AGNj+Hg/3TO8+BBAW9mEP+mh8ei+qBKqSJ0F1FLlYjNBc61OA== dependencies: clone-deep "^4.0.1" - loader-utils "^1.2.3" - neo-async "^2.6.1" - schema-utils "^2.1.0" - semver "^6.3.0" + loader-utils "^1.0.1" + neo-async "^2.5.0" + pify "^4.0.1" + semver "^5.5.0" sax@^1.2.4, sax@~1.2.4: version "1.2.4" @@ -10465,7 +10408,7 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" -schema-utils@^2.0.0, schema-utils@^2.0.1, schema-utils@^2.1.0, schema-utils@^2.2.0, schema-utils@^2.5.0: +schema-utils@^2.0.0, schema-utils@^2.0.1, schema-utils@^2.2.0: version "2.6.1" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.1.tgz#eb78f0b945c7bcfa2082b3565e8db3548011dc4f" integrity sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg== @@ -10486,7 +10429,7 @@ select-hose@^2.0.0: resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= -selfsigned@^1.10.7: +selfsigned@^1.9.1: version "1.10.7" resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.7.tgz#da5819fd049d5574f28e88a9bcc6dbc6e6f3906b" integrity sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA== @@ -10532,12 +10475,17 @@ send@0.17.1: range-parser "~1.2.1" statuses "~1.5.0" -serialize-javascript@^2.1.0, serialize-javascript@^2.1.2: +serialize-javascript@^1.7.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.9.1.tgz#cfc200aef77b600c47da9bb8149c943e798c2fdb" + integrity sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A== + +serialize-javascript@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== -serve-index@^1.9.1: +serve-index@^1.7.2: version "1.9.1" resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= @@ -10708,6 +10656,18 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" +sockjs-client@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.3.0.tgz#12fc9d6cb663da5739d3dc5fb6e8687da95cb177" + integrity sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg== + dependencies: + debug "^3.2.5" + eventsource "^1.0.7" + faye-websocket "~0.11.1" + inherits "^2.0.3" + json3 "^3.3.2" + url-parse "^1.4.3" + sockjs-client@1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" @@ -10830,7 +10790,7 @@ spdy-transport@^3.0.0: readable-stream "^3.0.6" wbuf "^1.7.3" -spdy@^4.0.1: +spdy@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.1.tgz#6f12ed1c5db7ea4f24ebb8b89ba58c87c08257f2" integrity sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA== @@ -10875,14 +10835,6 @@ ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" -ssri@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-7.1.0.tgz#92c241bf6de82365b5c7fb4bd76e975522e1294d" - integrity sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g== - dependencies: - figgy-pudding "^3.5.1" - minipass "^3.1.1" - stable@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" @@ -11244,19 +11196,20 @@ tar@^4: safe-buffer "^5.1.2" yallist "^3.0.3" -terser-webpack-plugin@2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.2.1.tgz#5569e6c7d8be79e5e43d6da23acc3b6ba77d22bd" - integrity sha512-jwdauV5Al7zopR6OAYvIIRcxXCSvLjZjr7uZE8l2tIWb/ryrGN48sJftqGf5k9z09tWhajx53ldp0XPI080YnA== +terser-webpack-plugin@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.1.tgz#61b18e40eaee5be97e771cdbb10ed1280888c2b4" + integrity sha512-ZXmmfiwtCLfz8WKZyYUuuHf3dMYEjg8NrjHMb0JqHVHVOSkzp3cW2/XG1fP3tRhqEqSzMwzzRQGtAPbs4Cncxg== dependencies: - cacache "^13.0.1" - find-cache-dir "^3.0.0" - jest-worker "^24.9.0" - schema-utils "^2.5.0" - serialize-javascript "^2.1.0" + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^1.7.0" source-map "^0.6.1" - terser "^4.3.9" - webpack-sources "^1.4.3" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" terser-webpack-plugin@^1.4.1: version "1.4.3" @@ -11282,15 +11235,6 @@ terser@^4.1.2: source-map "~0.6.1" source-map-support "~0.5.12" -terser@^4.3.9: - version "4.4.3" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.4.3.tgz#401abc52b88869cf904412503b1eb7da093ae2f0" - integrity sha512-0ikKraVtRDKGzHrzkCv5rUNDzqlhmhowOBqC0XqUHFpW+vJ45+20/IFBcebwKfiS2Z9fJin6Eo+F1zLZsxi8RA== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - test-exclude@^5.2.3: version "5.2.3" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" @@ -11440,7 +11384,12 @@ trim-newlines@^1.0.0: dependencies: glob "^7.1.2" -ts-pnp@1.1.5, ts-pnp@^1.1.2: +ts-pnp@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.4.tgz#ae27126960ebaefb874c6d7fa4729729ab200d90" + integrity sha512-1J/vefLC+BWSo+qe8OnJQfWTYRS6ingxjwqmHMqaMxXMj7kFtKLgAaYW3JeX3mktjgUL+etlU8/B4VUAUI9QGw== + +ts-pnp@^1.1.2: version "1.1.5" resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.5.tgz#840e0739c89fce5f3abd9037bb091dbff16d9dec" integrity sha512-ti7OGMOUOzo66wLF3liskw6YQIaSsBgc4GOAlWRnIEj8htCxJUxskanMUoJOD6MDCRAXo36goXJZch+nOS0VMA== @@ -11688,14 +11637,14 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= -url-loader@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-2.3.0.tgz#e0e2ef658f003efb8ca41b0f3ffbf76bab88658b" - integrity sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog== +url-loader@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-2.1.0.tgz#bcc1ecabbd197e913eca23f5e0378e24b4412961" + integrity sha512-kVrp/8VfEm5fUt+fl2E0FQyrpmOYgMEkBsv8+UDP1wFhszECq5JyGF33I7cajlVY90zRZ6MyfgKXngLvHYZX8A== dependencies: loader-utils "^1.2.3" mime "^2.4.4" - schema-utils "^2.5.0" + schema-utils "^2.0.0" url-parse@^1.4.3: version "1.4.7" @@ -11829,6 +11778,11 @@ w3c-xmlserializer@^1.1.2: webidl-conversions "^4.0.2" xml-name-validator "^3.0.0" +wait-for-expect@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/wait-for-expect/-/wait-for-expect-3.0.1.tgz#ec204a76b0038f17711e575720aaf28505ac7185" + integrity sha512-3Ha7lu+zshEG/CeHdcpmQsZnnZpPj/UsG3DuKO8FskjuDbkx3jE3845H+CuwZjA2YWYDfKMU2KhnCaXMLd3wVw== + walker@^1.0.7, walker@~1.0.5: version "1.0.7" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" @@ -11857,7 +11811,7 @@ webidl-conversions@^4.0.2: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== -webpack-dev-middleware@^3.7.2: +webpack-dev-middleware@^3.5.1: version "3.7.2" resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== @@ -11868,44 +11822,41 @@ webpack-dev-middleware@^3.7.2: range-parser "^1.2.1" webpack-log "^2.0.0" -webpack-dev-server@3.9.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.9.0.tgz#27c3b5d0f6b6677c4304465ac817623c8b27b89c" - integrity sha512-E6uQ4kRrTX9URN9s/lIbqTAztwEPdvzVrcmHE8EQ9YnuT9J8Es5Wrd8n9BKg1a0oZ5EgEke/EQFgUsp18dSTBw== +webpack-dev-server@3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.2.1.tgz#1b45ce3ecfc55b6ebe5e36dab2777c02bc508c4e" + integrity sha512-sjuE4mnmx6JOh9kvSbPYw3u/6uxCLHNWfhWaIPwcXWsvWOPN+nc5baq4i9jui3oOBRXGonK9+OI0jVkaz6/rCw== dependencies: ansi-html "0.0.7" bonjour "^3.5.0" - chokidar "^2.1.8" - compression "^1.7.4" - connect-history-api-fallback "^1.6.0" + chokidar "^2.0.0" + compression "^1.5.2" + connect-history-api-fallback "^1.3.0" debug "^4.1.1" - del "^4.1.1" - express "^4.17.1" - html-entities "^1.2.1" - http-proxy-middleware "0.19.1" + del "^3.0.0" + express "^4.16.2" + html-entities "^1.2.0" + http-proxy-middleware "^0.19.1" import-local "^2.0.0" - internal-ip "^4.3.0" + internal-ip "^4.2.0" ip "^1.1.5" - is-absolute-url "^3.0.3" - killable "^1.0.1" - loglevel "^1.6.4" - opn "^5.5.0" - p-retry "^3.0.1" - portfinder "^1.0.25" + killable "^1.0.0" + loglevel "^1.4.1" + opn "^5.1.0" + portfinder "^1.0.9" schema-utils "^1.0.0" - selfsigned "^1.10.7" - semver "^6.3.0" - serve-index "^1.9.1" + selfsigned "^1.9.1" + semver "^5.6.0" + serve-index "^1.7.2" sockjs "0.3.19" - sockjs-client "1.4.0" - spdy "^4.0.1" - strip-ansi "^3.0.1" + sockjs-client "1.3.0" + spdy "^4.0.0" + strip-ansi "^3.0.0" supports-color "^6.1.0" url "^0.11.0" - webpack-dev-middleware "^3.7.2" + webpack-dev-middleware "^3.5.1" webpack-log "^2.0.0" - ws "^6.2.1" - yargs "12.0.5" + yargs "12.0.2" webpack-log@^2.0.0: version "2.0.0" @@ -11915,17 +11866,17 @@ webpack-log@^2.0.0: ansi-colors "^3.0.0" uuid "^3.3.2" -webpack-manifest-plugin@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz#19ca69b435b0baec7e29fbe90fb4015de2de4f16" - integrity sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ== +webpack-manifest-plugin@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.1.1.tgz#6b3e280327815b83152c79f42d0ca13b665773c4" + integrity sha512-2zqJ6mvc3yoiqfDjghAIpljhLSDh/G7vqGrzYcYqqRCd/ZZZCAuc/YPE5xG0LGpLgDJRhUNV1H+znyyhIxahzA== dependencies: fs-extra "^7.0.0" lodash ">=3.5 <5" object.entries "^1.1.0" tapable "^1.0.0" -webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: +webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== @@ -11933,10 +11884,10 @@ webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack- source-list-map "^2.0.0" source-map "~0.6.1" -webpack@4.41.2: - version "4.41.2" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.2.tgz#c34ec76daa3a8468c9b61a50336d8e3303dce74e" - integrity sha512-Zhw69edTGfbz9/8JJoyRQ/pq8FYUoY0diOXqW0T6yhgdhCv6wr0hra5DwwWexNRns2Z2+gsnrNcbe9hbGBgk/A== +webpack@4.41.0: + version "4.41.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.0.tgz#db6a254bde671769f7c14e90a1a55e73602fc70b" + integrity sha512-yNV98U4r7wX1VJAj5kyMsu36T8RPPQntcb5fJLOsMz/pt/WrKC0Vp1bAlqPLkA1LegSwQwf6P+kAbyhRKVQ72g== dependencies: "@webassemblyjs/ast" "1.8.5" "@webassemblyjs/helper-module-context" "1.8.5" @@ -12244,7 +12195,7 @@ ws@^5.2.0: dependencies: async-limiter "~1.0.0" -ws@^6.1.0, ws@^6.1.2, ws@^6.2.1: +ws@^6.1.0, ws@^6.1.2: version "6.2.1" resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== @@ -12261,6 +12212,11 @@ xmlchars@^2.1.1: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== +xregexp@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.0.0.tgz#e698189de49dd2a18cc5687b05e17c8e43943020" + integrity sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg== + xtend@^4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" @@ -12286,11 +12242,6 @@ yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - yaml@^1.7.2: version "1.7.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.7.2.tgz#f26aabf738590ab61efaca502358e48dc9f348b2" @@ -12298,13 +12249,12 @@ yaml@^1.7.2: dependencies: "@babel/runtime" "^7.6.3" -yargs-parser@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" - integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== +yargs-parser@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" + integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" + camelcase "^4.1.0" yargs-parser@^13.1.1: version "13.1.1" @@ -12321,13 +12271,13 @@ yargs-parser@^5.0.0: dependencies: camelcase "^3.0.0" -yargs@12.0.5: - version "12.0.5" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" - integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== +yargs@12.0.2: + version "12.0.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.2.tgz#fe58234369392af33ecbef53819171eff0f5aadc" + integrity sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ== dependencies: cliui "^4.0.0" - decamelize "^1.2.0" + decamelize "^2.0.0" find-up "^3.0.0" get-caller-file "^1.0.1" os-locale "^3.0.0" @@ -12337,7 +12287,7 @@ yargs@12.0.5: string-width "^2.0.0" which-module "^2.0.0" y18n "^3.2.1 || ^4.0.0" - yargs-parser "^11.1.1" + yargs-parser "^10.1.0" yargs@^13.3.0: version "13.3.0" From 435eb3193b79ea972916bcca64acf447dee931bf Mon Sep 17 00:00:00 2001 From: Bradley Hart Date: Thu, 2 Jan 2020 10:32:34 -0500 Subject: [PATCH 64/76] Remove security issues Can't bump react-scripts without causing websocket issues on GitPod --- package.json | 3 ++- yarn.lock | 7 +------ 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 00c96b2e..f36e3296 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,8 @@ "ual-token-pocket": "0.1.2" }, "resolutions": { - "eosjs": "^20.0.2-a53eecb.0" + "eosjs": "^20.0.2-a53eecb.0", + "serialize-javascript": "^2.1.1" }, "scripts": { "start": "node scripts/copyDefaultEnv.js && react-scripts start", diff --git a/yarn.lock b/yarn.lock index c6bc81a7..53a01d09 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10475,12 +10475,7 @@ send@0.17.1: range-parser "~1.2.1" statuses "~1.5.0" -serialize-javascript@^1.7.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.9.1.tgz#cfc200aef77b600c47da9bb8149c943e798c2fdb" - integrity sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A== - -serialize-javascript@^2.1.2: +serialize-javascript@^1.7.0, serialize-javascript@^2.1.1, serialize-javascript@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== From 658c75dd070c574c9d77023e24b0c423da585d6e Mon Sep 17 00:00:00 2001 From: Bradley Hart Date: Thu, 2 Jan 2020 13:20:01 -0500 Subject: [PATCH 65/76] Cypress Integration Test Testing: Login with Scatter Enable WebAuthn 2FA Rent Property with WebAuthn 2FA Like Property --- cypress.json | 1 + cypress/integration/App.spec.js | 30 +++++++++++++++++++++ src/components/navigation/UserDropdown.js | 4 +++ src/components/results/property/Property.js | 3 +++ src/components/search/SearchBox.js | 2 +- 5 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 cypress.json create mode 100644 cypress/integration/App.spec.js diff --git a/cypress.json b/cypress.json new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/cypress.json @@ -0,0 +1 @@ +{} diff --git a/cypress/integration/App.spec.js b/cypress/integration/App.spec.js new file mode 100644 index 00000000..88baa99d --- /dev/null +++ b/cypress/integration/App.spec.js @@ -0,0 +1,30 @@ + +describe('Tropical Stay', () => { + + it('Rent Action', () => { + cy.visit('https://localhost:3000') + cy.contains('Login').click() + cy.wait(1000) + cy.get('[aria-label="Scatter"]').click() + cy.wait(2000) + cy.get('.user-info-container').should('have.text', ' Signed in as example') + + cy.get('div[role=button].user-info-dropdown-btn').click() + cy.get('[aria-label="Enable WebAuthn 2FA"]').click() + cy.get('[aria-label="Enable WebAuthn 2FA"]').click() + cy.wait(2500) + cy.get('div[role=button].user-info-dropdown-btn').click() + cy.get('.user-dropdown-item.menu-item-with-icon').first().should('have.text', 'WebAuthn 2FA Enabled!') + + cy.get('[aria-label="Search a Property Submit"]').click() + cy.get('[aria-label="Rent Property Button"]').first().click() + cy.wait(2000) + cy.get('[aria-label="Rent Property Button"]').first().should('have.text', 'Renting') + + cy.get('[aria-label="Like Property Button"]').first().click() + cy.wait(2000) + cy.get('[aria-label="Like Property Button"]').first().should('have.text', 'Liked') + }) +}) + + diff --git a/src/components/navigation/UserDropdown.js b/src/components/navigation/UserDropdown.js index c4043026..51679d01 100644 --- a/src/components/navigation/UserDropdown.js +++ b/src/components/navigation/UserDropdown.js @@ -28,6 +28,8 @@ class UserDropdown extends React.Component {
      { !enrolled ?
    • onKeyUpEnter(event, enroll)} > @@ -40,6 +42,8 @@ class UserDropdown extends React.Component {
    • }
    • onKeyUpEnter(event, logout)} > diff --git a/src/components/results/property/Property.js b/src/components/results/property/Property.js index c10e0f08..2ede49e1 100644 --- a/src/components/results/property/Property.js +++ b/src/components/results/property/Property.js @@ -88,6 +88,7 @@ class Property extends React.Component { className='property-image' tabIndex={0} role='button' + aria-label='Rent Property Image' onClick={this.onRent} onKeyUp={event => onKeyUpEnter(event, this.onRent)} > @@ -100,6 +101,7 @@ class Property extends React.Component { className={`button rent-button ${rented && !loading ? 'active' : ''}`} tabIndex={0} role='button' + aria-label='Rent Property Button' onClick={this.onRent} onKeyUp={event => onKeyUpEnter(event, this.onRent)} > @@ -110,6 +112,7 @@ class Property extends React.Component { className={`button like-button ${liked && !loading ? 'active' : ''}`} tabIndex={0} role='button' + aria-label='Like Property Button' onClick={this.onLike} onKeyUp={event => onKeyUpEnter(event, this.onLike)} > diff --git a/src/components/search/SearchBox.js b/src/components/search/SearchBox.js index 72f0d92d..87c0a086 100644 --- a/src/components/search/SearchBox.js +++ b/src/components/search/SearchBox.js @@ -15,7 +15,7 @@ const SearchBox = ({ onSearch }) => {
      - + ) } From d2c1819d50ec79d1bafd51a2afa4f0be27348c14 Mon Sep 17 00:00:00 2001 From: Jon La Marr Date: Wed, 15 Jan 2020 09:40:37 -0500 Subject: [PATCH 66/76] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a3abdb0f..480e4617 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,7 @@ The following open source repositories are utilized in Tropical Example: - [Transactions Errors](#transactions-errors) - [Manifest Specification](#manifest-specification) - [Ricardian Specification](#ricardian-specification) -- [WebAuthn](#web-authn) +- [WebAuthn](#webauthn) - [Running Tropical Example](#running-tropical-example) - [Required Tools](#required-tools) - [Setup](#setup-1) From aa190d2780bf2438f52044556d45cef363c9a9c7 Mon Sep 17 00:00:00 2001 From: Bradley Hart Date: Wed, 15 Jan 2020 11:35:04 -0500 Subject: [PATCH 67/76] Wallet location, removing compiled files, bumping versions, appName FQDN --- README.md | 2 +- eosio/Dockerfile | 17 +++- eosio/contracts/tropical/tropical.abi | 114 ------------------------- eosio/contracts/tropical/tropical.wasm | Bin 23671 -> 0 bytes eosio/scripts/deploy_contracts.sh | 9 +- src/index.js | 2 +- 6 files changed, 25 insertions(+), 119 deletions(-) delete mode 100644 eosio/contracts/tropical/tropical.abi delete mode 100755 eosio/contracts/tropical/tropical.wasm diff --git a/README.md b/README.md index 480e4617..09cd981a 100644 --- a/README.md +++ b/README.md @@ -110,7 +110,7 @@ import { Scatter } from 'ual-scatter' import { Lynx } from 'ual-lynx' import { TokenPocket } from 'ual-token-pocket' ... -const appName = 'Tropical Example' +const appName = 'Tropical-Example' // Chains const chain = { diff --git a/eosio/Dockerfile b/eosio/Dockerfile index fcd62d06..4488978f 100644 --- a/eosio/Dockerfile +++ b/eosio/Dockerfile @@ -4,12 +4,25 @@ RUN echo "INSTALLING EOSIO AND CDT" RUN apt-get update && apt-get install -y wget sudo curl RUN wget https://github.com/EOSIO/eosio.cdt/releases/download/v1.6.1/eosio.cdt_1.6.1-1_amd64.deb RUN apt-get update && sudo apt install -y ./eosio.cdt_1.6.1-1_amd64.deb -RUN wget https://github.com/EOSIO/eos/releases/download/v2.0.0-rc2/eosio_2.0.0-rc2-ubuntu-18.04_amd64.deb -RUN apt-get update && sudo apt install -y ./eosio_2.0.0-rc2-ubuntu-18.04_amd64.deb +RUN wget https://github.com/EOSIO/eos/releases/download/v2.0.0/eosio_2.0.0-1-ubuntu-18.04_amd64.deb +RUN apt-get update && sudo apt install -y ./eosio_2.0.0-1-ubuntu-18.04_amd64.deb RUN echo "INSTALLING CONTRACTS" RUN mkdir -p "/opt/eosio/bin/contracts" +RUN echo "INSTALLING EOSIO.CONTRACTS v1.8.3" +RUN wget https://github.com/EOSIO/eosio.contracts/archive/v1.8.3.tar.gz +RUN mkdir -p /eosio.contracts-1.8.3 +RUN tar xvzf ./v1.8.3.tar.gz -C /eosio.contracts-1.8.3 +RUN mv /eosio.contracts-1.8.3/eosio.contracts-1.8.3 /opt/eosio/bin/contracts + +RUN echo "INSTALLING EOSIO.CONTRACTS v1.9.0" +RUN wget https://github.com/EOSIO/eosio.contracts/archive/v1.9.0.tar.gz +RUN mkdir -p /eosio.contracts +RUN tar xvzf ./v1.9.0.tar.gz -C /eosio.contracts +RUN mv /eosio.contracts/eosio.contracts-1.9.0 /opt/eosio/bin/contracts +RUN mv /opt/eosio/bin/contracts/eosio.contracts-1.9.0 /opt/eosio/bin/contracts/eosio.contracts + RUN echo "INSTALLING EOSIO.CONTRACTS" RUN wget https://github.com/EOSIO/eosio.contracts/archive/v1.7.0.tar.gz RUN mkdir -p /eosio.contracts diff --git a/eosio/contracts/tropical/tropical.abi b/eosio/contracts/tropical/tropical.abi deleted file mode 100644 index ba67d165..00000000 --- a/eosio/contracts/tropical/tropical.abi +++ /dev/null @@ -1,114 +0,0 @@ -{ - "____comment": "This file was generated with eosio-abigen. DO NOT EDIT ", - "version": "eosio::abi/1.1", - "types": [], - "structs": [ - { - "name": "check2fa", - "base": "", - "fields": [ - { - "name": "user", - "type": "name" - }, - { - "name": "property", - "type": "name" - }, - { - "name": "server_key", - "type": "public_key" - }, - { - "name": "user_key", - "type": "public_key" - }, - { - "name": "server_auth", - "type": "signature" - }, - { - "name": "bearer_auth", - "type": "signature" - } - ] - }, - { - "name": "config", - "base": "", - "fields": [ - { - "name": "srvkey", - "type": "public_key" - } - ] - }, - { - "name": "like", - "base": "", - "fields": [ - { - "name": "user", - "type": "name" - } - ] - }, - { - "name": "rent", - "base": "", - "fields": [ - { - "name": "user", - "type": "name" - }, - { - "name": "property", - "type": "name" - } - ] - }, - { - "name": "setsrvkey", - "base": "", - "fields": [ - { - "name": "server_key", - "type": "public_key" - } - ] - } - ], - "actions": [ - { - "name": "check2fa", - "type": "check2fa", - "ricardian_contract": "---\nspec_version: 0.2.0\ntitle: Validate the 2FA Token\nsummary: Validate a WebAuthn second factor\nicon: https://upload.wikimedia.org/wikipedia/commons/thumb/d/d4/OOjs_UI_icon_key-ltr.svg/200px-OOjs_UI_icon_key-ltr.svg.png#0A1E2435DCAFDF4B34E60C65C570DCE30FAAC1862D7C5E139D188A6EAAF95014\n---\nAny usage of bots, macros, or any autonomous form of liking a specific person’s property would result in the investigation of like legitimacy for a post." - }, - { - "name": "like", - "type": "like", - "ricardian_contract": "---\nspec_version: 0.2.0\ntitle: Like a Property\nsummary: Like a Tropical Example property\nicon: https://upload.wikimedia.org/wikipedia/commons/thumb/4/42/Love_Heart_SVG.svg/265px-Love_Heart_SVG.svg.png#301991F0C25EE8EAA55F4CE940B9E5910560652A8D930C56D65C3C8987FF7DDB\n---\nLiking this property will be visible to anyone who views your profile or searches your name.\nThis like may result in the post owner’s property to be featured on the property owner’s most liked pages.\nAny usage of bots, macros, or any autonomous form of liking a specific person’s property would result in the investigation of like legitimacy for a post." - }, - { - "name": "rent", - "type": "rent", - "ricardian_contract": "---\nspec_version: 0.2.0\ntitle: Rent a Property\nsummary: Rent a Tropical Example property\nicon: https://https://upload.wikimedia.org/wikipedia/commons/thumb/3/3e/Dollar_sign_in_circle.svg/240px-Dollar_sign_in_circle.svg.png#27F7CC5F628A8FC0B16680C141D58D42A1F49E3E38B1A4F67590C61F5D607CBF\n---\nRenting a property requires 2FA and constitutes a binding agreement to pay the listed rental fee(s).\nAny usage of bots, macros, or any autonomous form of liking a specific person’s property would result in the investigation of like legitimacy for a post." - }, - { - "name": "setsrvkey", - "type": "setsrvkey", - "ricardian_contract": "---\nspec_version: 0.2.0\ntitle: Set the Root-of-trust\nsummary: This is an administrative action that sets the respected \"root of trust\" key that counter signs 2FA\nicon: https://upload.wikimedia.org/wikipedia/commons/thumb/d/d4/OOjs_UI_icon_key-ltr.svg/200px-OOjs_UI_icon_key-ltr.svg.png#0A1E2435DCAFDF4B34E60C65C570DCE30FAAC1862D7C5E139D188A6EAAF95014\n---\nAny usage of bots, macros, or any autonomous form of liking a specific person’s property would result in the investigation of like legitimacy for a post." - } - ], - "tables": [ - { - "name": "config", - "type": "config", - "index_type": "i64", - "key_names": [], - "key_types": [] - } - ], - "ricardian_clauses": [], - "variants": [] -} \ No newline at end of file diff --git a/eosio/contracts/tropical/tropical.wasm b/eosio/contracts/tropical/tropical.wasm deleted file mode 100755 index d4bf47f94c91e4fa82ec8ebd57fcd5652b785618..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23671 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 Date: Wed, 15 Jan 2020 11:45:31 -0500 Subject: [PATCH 68/76] Updating to latest eosjs@edge --- package.json | 3 +-- src/api/index.js | 7 ++++--- yarn.lock | 17 +++++++++-------- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/package.json b/package.json index f36e3296..023999e2 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "create-hmac": "^1.1.7", "ecurve": "^1.0.6", "elliptic": "^6.5.1", - "eosjs": "20.0.4-e2c667e.0", + "eosjs": "20.0.4-7938e1a.0", "focus-visible": "4.1.5", "prop-types": "15.7.2", "randombytes": "^2.1.0", @@ -43,7 +43,6 @@ "ual-token-pocket": "0.1.2" }, "resolutions": { - "eosjs": "^20.0.2-a53eecb.0", "serialize-javascript": "^2.1.1" }, "scripts": { diff --git a/src/api/index.js b/src/api/index.js index 79e77f26..86d819f1 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -1,7 +1,8 @@ import { Router, json } from 'express' import { ec as EC } from 'elliptic' import {Serialize, Numeric} from 'eosjs' -import { JsSignatureProvider, PrivateKey, PublicKey, Signature } from 'eosjs/dist/eosjs-jssig' +import { PrivateKey, PublicKey, Signature } from 'eosjs/dist/eosjs-jssig' +import { KeyType } from 'eosjs/dist/eosjs-numeric' import base64url from 'base64url' import cbor from 'cbor' import util from 'util'; @@ -59,13 +60,13 @@ export default () => { const kPrivElliptic = PrivateKey.fromString(private_key_wif).toElliptic(ec) const ellipticSignature = kPrivElliptic.sign(sigDigest) - const signature = Signature.fromElliptic(ellipticSignature).toString() + const signature = Signature.fromElliptic(ellipticSignature, KeyType.k1).toString() const userKey = Numeric.publicKeyToString({ type: Numeric.KeyType.wa, data: users[name].eosioPubkey.slice(1), }) - const serverKey = PublicKey.fromElliptic(kPrivElliptic).toString() + const serverKey = PublicKey.fromElliptic(kPrivElliptic, KeyType.k1).toString() const credentialIDStr = base64url.encode(users[name].credentialID) resp.json({ diff --git a/yarn.lock b/yarn.lock index 53a01d09..77066f52 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4623,18 +4623,19 @@ eosjs-window-message-signature-provider-interface@0.1.3: dependencies: eosjs-signature-provider-interface "0.1.2" -eosjs@20.0.0, eosjs@^20.0.2-a53eecb.0: - version "20.0.2" - resolved "https://registry.yarnpkg.com/eosjs/-/eosjs-20.0.2.tgz#89f8b802703bfc7ee75027cfc2464bfc5ee7f0e1" - integrity sha512-rDITnI4lVGqCFWbjum9Y3wBomFX8tPZjI3ustssECkTHVz72qByq53GnPAtjTMUZqjYwyYj0Q8+CZLWJe4+LmQ== +eosjs@20.0.0: + version "20.0.0" + resolved "https://registry.yarnpkg.com/eosjs/-/eosjs-20.0.0.tgz#43940abfe15cd191ce4027d60294036e914613e9" + integrity sha512-Ak9CPtZgCFayUmq43X3Nsn4v67lkLfSzEdTUfMk1XAWA5s4HRn7lBTeTeDCzJ/rggi+dZ170VeJwc5T3gPk4HQ== dependencies: babel-runtime "6.26.0" + eosjs-ecc "4.0.4" text-encoding "0.7.0" -eosjs@20.0.4-e2c667e.0: - version "20.0.4-e2c667e.0" - resolved "https://registry.yarnpkg.com/eosjs/-/eosjs-20.0.4-e2c667e.0.tgz#8815a8d2ae476aac4dc3502d976c0b20cb931c3a" - integrity sha512-pL2fudVFvYv24VIX7QIWjFKFcXV+xzKrzmyyCr5UFpaDwKdxhg/Q/jtq6BSDraEapyctNnVS1sl6XLBTXr85KQ== +eosjs@20.0.4-7938e1a.0: + version "20.0.4-7938e1a.0" + resolved "https://registry.yarnpkg.com/eosjs/-/eosjs-20.0.4-7938e1a.0.tgz#c0f14a4b4c4106b5efb6d9e1b8f7facbdb2164c6" + integrity sha512-tQyxGaATeM1lMnVNdFfPtURR24a5WeGHk/XRH36tg3bx4xgkOKp+bXEtofwlkAt5lOOE0OTLZo4dmBHelk+uhQ== dependencies: babel-runtime "6.26.0" text-encoding "0.7.0" From dd2b16104333521b7c6619abc7e0dc8bc23f4493 Mon Sep 17 00:00:00 2001 From: Bradley Hart Date: Wed, 15 Jan 2020 14:16:08 -0500 Subject: [PATCH 69/76] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 09cd981a..855a57b1 100644 --- a/README.md +++ b/README.md @@ -403,7 +403,8 @@ You can view the contract in the [eosio/contracts directory](https://github.com/ ### Running Frontend -```yarn startSecure +```bash +yarn startSecure ``` This command runs the app in development mode over SSL. You can also run `yarn start` to run the app without SSL. You will need to install a self-signed SSL certificate or enable [allow-insecure-localhost](chrome://flags/#allow-insecure-localhost) if running over SSL in chrome. Open [https://localhost:3000](https://localhost:3000) to view it in the browser. From a20723709488735cc3ae93ac2b4cd03f2c2806a9 Mon Sep 17 00:00:00 2001 From: Bradley Hart Date: Wed, 15 Jan 2020 16:42:15 -0500 Subject: [PATCH 70/76] gitpod bump versions --- .gitpod.dockerfile | 6 +++--- eosio/Dockerfile | 7 ------- eosio/scripts/deploy_contracts.sh | 23 ++++++++++++++++------- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/.gitpod.dockerfile b/.gitpod.dockerfile index c6363d2c..ab5146bf 100644 --- a/.gitpod.dockerfile +++ b/.gitpod.dockerfile @@ -8,7 +8,7 @@ RUN echo "INSTALLING EOSIO AND CDT" \ && apt-get install -y wget sudo curl \ && wget https://github.com/EOSIO/eosio.cdt/releases/download/v1.6.1/eosio.cdt_1.6.1-1_amd64.deb \ && apt-get update && sudo apt install -y --allow-downgrades ./eosio.cdt_1.6.1-1_amd64.deb \ - && wget https://github.com/EOSIO/eos/releases/download/v2.0.0-rc2/eosio_2.0.0-rc2-ubuntu-18.04_amd64.deb \ - && apt-get update && sudo apt install -y ./eosio_2.0.0-rc2-ubuntu-18.04_amd64.deb \ - && rm ./eosio_2.0.0-rc2-ubuntu-18.04_amd64.deb \ + && wget https://github.com/EOSIO/eos/releases/download/v2.0.0/eosio_2.0.0-1-ubuntu-18.04_amd64.deb \ + && apt-get update && sudo apt install -y ./eosio_2.0.0-1-ubuntu-18.04_amd64.deb \ + && rm ./eosio_2.0.0-1-ubuntu-18.04_amd64.deb \ && rm ./eosio.cdt_1.6.1-1_amd64.deb diff --git a/eosio/Dockerfile b/eosio/Dockerfile index 4488978f..0ab10270 100644 --- a/eosio/Dockerfile +++ b/eosio/Dockerfile @@ -23,13 +23,6 @@ RUN tar xvzf ./v1.9.0.tar.gz -C /eosio.contracts RUN mv /eosio.contracts/eosio.contracts-1.9.0 /opt/eosio/bin/contracts RUN mv /opt/eosio/bin/contracts/eosio.contracts-1.9.0 /opt/eosio/bin/contracts/eosio.contracts -RUN echo "INSTALLING EOSIO.CONTRACTS" -RUN wget https://github.com/EOSIO/eosio.contracts/archive/v1.7.0.tar.gz -RUN mkdir -p /eosio.contracts -RUN tar xvzf ./v1.7.0.tar.gz -C /eosio.contracts -RUN mv /eosio.contracts/eosio.contracts-1.7.0 /opt/eosio/bin/contracts -RUN mv /opt/eosio/bin/contracts/eosio.contracts-1.7.0 /opt/eosio/bin/contracts/eosio.contracts - RUN echo "INSTALLING EOSIO.ASSERT CONTRACT" RUN wget https://github.com/EOSIO/eosio.assert/archive/v0.1.0.tar.gz RUN mkdir -p /eosio.assert diff --git a/eosio/scripts/deploy_contracts.sh b/eosio/scripts/deploy_contracts.sh index c3362ce3..326d774b 100755 --- a/eosio/scripts/deploy_contracts.sh +++ b/eosio/scripts/deploy_contracts.sh @@ -219,14 +219,23 @@ if [ ! -z "$RUNNING_IN_GITPOD" ]; then mkdir -p $CONTRACTS_DIR mkdir -p $ROOT_DIR/downloads - echo "INSTALLING EOSIO.CONTRACTS" - wget https://github.com/EOSIO/eosio.contracts/archive/v1.7.0.tar.gz - mkdir -p $ROOT_DIR/downloads/eosio.contracts + echo "INSTALLING EOSIO.CONTRACTS v1.8.3" + wget https://github.com/EOSIO/eosio.contracts/archive/v1.8.3.tar.gz + mkdir -p $ROOT_DIR/downloads/eosio.contracts-1.8.3 + mkdir -p $CONTRACTS_DIR/eosio.contracts-1.8.3 + tar xvzf ./v1.8.3.tar.gz -C $ROOT_DIR/downloads/eosio.contracts-1.8.3 + mv $ROOT_DIR/downloads/eosio.contracts-1.8.3/eosio.contracts-1.8.3/* $CONTRACTS_DIR/eosio.contracts-1.8.3 + rm -rf $ROOT_DIR/downloads/eosio.contracts-1.8.3 + rm ./v1.8.3.tar.gz + + echo "INSTALLING EOSIO.CONTRACTS v1.9.0" + wget https://github.com/EOSIO/eosio.contracts/archive/v1.9.0.tar.gz + mkdir -p $ROOT_DIR/downloads/eosio.contracts-1.9.0 mkdir -p $CONTRACTS_DIR/eosio.contracts - tar xvzf ./v1.7.0.tar.gz -C $ROOT_DIR/downloads/eosio.contracts - mv $ROOT_DIR/downloads/eosio.contracts/eosio.contracts-1.7.0/* $CONTRACTS_DIR/eosio.contracts - rm -rf $ROOT_DIR/downloads/eosio.contracts - rm ./v1.7.0.tar.gz + tar xvzf ./v1.9.0.tar.gz -C $ROOT_DIR/downloads/eosio.contracts-1.9.0 + mv $ROOT_DIR/downloads/eosio.contracts-1.9.0/eosio.contracts-1.9.0/* $CONTRACTS_DIR/eosio.contracts + rm -rf $ROOT_DIR/downloads/eosio.contracts-1.9.0 + rm ./v1.9.0.tar.gz echo "INSTALLING EOSIO.ASSERT CONTRACT" wget https://github.com/EOSIO/eosio.assert/archive/v0.1.0.tar.gz From d9f4bc18805f7babe59bacd879bbb2ced851b35a Mon Sep 17 00:00:00 2001 From: Bradley Hart Date: Thu, 16 Jan 2020 10:44:01 -0500 Subject: [PATCH 71/76] eslint fixes --- package.json | 1 + src/App.js | 15 ++-- src/api/index.js | 59 +++++++-------- src/components/navigation/NavigationBar.js | 2 +- src/components/navigation/UserDropdown.js | 20 +++--- src/components/navigation/UserInfo.js | 12 ++-- src/components/results/ResultsProperties.js | 4 +- src/components/results/property/Property.js | 38 ++++++---- src/setupProxy.js | 14 ++-- src/utils/transaction.js | 56 +++++++-------- src/utils/webauthn.js | 80 ++++++++++----------- yarn.lock | 2 +- 12 files changed, 157 insertions(+), 146 deletions(-) diff --git a/package.json b/package.json index 023999e2..d19deaa6 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "ecurve": "^1.0.6", "elliptic": "^6.5.1", "eosjs": "20.0.4-7938e1a.0", + "express": "4.17.1", "focus-visible": "4.1.5", "prop-types": "15.7.2", "randombytes": "^2.1.0", diff --git a/src/App.js b/src/App.js index bedaea6d..715ff94e 100644 --- a/src/App.js +++ b/src/App.js @@ -9,7 +9,7 @@ import NotificationBar from 'components/notification/NotificationBar' import ResultsPage from 'components/results/ResultsPage' import LandingPage from 'components/landing/LandingPage' -import {generateWebauthnPubkey, enrollWebauthnPubkey} from "utils/webauthn" +import { generateWebauthnPubkey, enrollWebauthnPubkey } from 'utils/webauthn' class App extends React.Component { static propTypes = { @@ -84,12 +84,12 @@ class App extends React.Component { console.info('accountName:', accountName) console.info('pubkey:', pubkey) await enrollWebauthnPubkey(accountName, pubkey) - this.setState({enrolled: true}) + this.setState({ enrolled: true }) } catch (err) { this.displayError(err) } } else { - this.displayError(new Error("Not Logged In!")) + this.displayError(new Error('Not Logged In!')) } } @@ -105,7 +105,14 @@ class App extends React.Component { { showNotificationBar && } { showResults - ? + ? ( + + ) : }
      diff --git a/src/api/index.js b/src/api/index.js index 86d819f1..404ea87d 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -1,15 +1,15 @@ import { Router, json } from 'express' import { ec as EC } from 'elliptic' -import {Serialize, Numeric} from 'eosjs' +import { Serialize, Numeric } from 'eosjs' import { PrivateKey, PublicKey, Signature } from 'eosjs/dist/eosjs-jssig' import { KeyType } from 'eosjs/dist/eosjs-numeric' import base64url from 'base64url' import cbor from 'cbor' -import util from 'util'; +import util from 'util' export default () => { const ec = new EC('secp256k1') - const private_key_wif = process.env.API_SERVER_PRIVATE_KEY + const privateKeyWif = process.env.API_SERVER_PRIVATE_KEY const api = Router() const decodeWebauthnPublicKey = (webauthnPublicKey, hostname) => { @@ -19,23 +19,20 @@ export default () => { const flags = authdata.readUInt8(32) const credentialIDLength = authdata.readUInt16BE(53) const credentialID = authdata.slice(55, 55 + credentialIDLength) - const COSEPublicKeyBuffer = authdata.slice( 55 + credentialIDLength ) + const COSEPublicKeyBuffer = authdata.slice(55 + credentialIDLength) const COSEPublicKey = cbor.decodeFirstSync(COSEPublicKeyBuffer) - const x = COSEPublicKey.get(-2) - const y = COSEPublicKey.get(-3) + const x = COSEPublicKey.get(-2) + const y = COSEPublicKey.get(-3) const rpId = hostname - const presence = ((flags)=>{ - if (flags & 0x04) - return 2 - else if (flags & 0x01) - return 1 - else - return 0 + const presence = ((flags) => { + if (flags & 0x04) return 2 + if (flags & 0x01) return 1 + return 0 })(flags) - const ser = new Serialize.SerialBuffer({textEncoder: new util.TextEncoder(), textDecoder: new util.TextDecoder()}) + const ser = new Serialize.SerialBuffer({ textEncoder: new util.TextEncoder(), textDecoder: new util.TextDecoder() }) ser.push(2) ser.push((y[31] & 1) ? 3 : 2) ser.pushArray(x) @@ -43,22 +40,23 @@ export default () => { ser.pushString(rpId) const eosioPubkey = ser.asUint8Array() - return {eosioPubkey, credentialID} + return { eosioPubkey, credentialID } } const users = {} - api.post( '/generateRentChallenge', json(), (req, resp) => { + api.post('/generateRentChallenge', json(), (req, resp) => { const name = req.body.accountName - const propertyName = req.body.propertyName - const namePairBuffer = new Serialize.SerialBuffer({textEncoder: new util.TextEncoder(), textDecoder: new util.TextDecoder()}) + const { propertyName } = req.body + const namePairBuffer = + new Serialize.SerialBuffer({ textEncoder: new util.TextEncoder(), textDecoder: new util.TextDecoder() }) namePairBuffer.pushName(name) namePairBuffer.pushName(propertyName) - const sigData = Buffer.concat( [ namePairBuffer.asUint8Array(), users[name].eosioPubkey ] ) + const sigData = Buffer.concat([namePairBuffer.asUint8Array(), users[name].eosioPubkey]) const sigDigest = Buffer.from(ec.hash().update(sigData).digest()) - const kPrivElliptic = PrivateKey.fromString(private_key_wif).toElliptic(ec) + const kPrivElliptic = PrivateKey.fromString(privateKeyWif).toElliptic(ec) const ellipticSignature = kPrivElliptic.sign(sigDigest) const signature = Signature.fromElliptic(ellipticSignature, KeyType.k1).toString() @@ -70,21 +68,18 @@ export default () => { const credentialIDStr = base64url.encode(users[name].credentialID) resp.json({ - 'status': 'ok', - 'userKey' : userKey, - 'serverKey' : serverKey, - 'serverAuth': signature, - 'credentialID': credentialIDStr + status: 'ok', + userKey, + serverKey, + serverAuth: signature, + credentialID: credentialIDStr, }) }) - api.post( '/enroll', json(), (req, resp) => { - const name = req.body.accountName - const webauthnPublicKey = req.body.webauthnPublicKey - const hostname = req.body.hostname - - users[name] = decodeWebauthnPublicKey(webauthnPublicKey, hostname) - resp.json({ 'status': 'ok' }) + api.post('/enroll', json(), (req, resp) => { + const { accountName, hostname, webauthnPublicKey } = req.body + users[accountName] = decodeWebauthnPublicKey(webauthnPublicKey, hostname) + resp.json({ status: 'ok' }) }) return api diff --git a/src/components/navigation/NavigationBar.js b/src/components/navigation/NavigationBar.js index 4c870a3e..704e6ed6 100644 --- a/src/components/navigation/NavigationBar.js +++ b/src/components/navigation/NavigationBar.js @@ -47,7 +47,7 @@ NavigationBar.propTypes = { routeToLanding: func.isRequired, login: func.isRequired, enroll: func.isRequired, - enrolled: bool.isRequired + enrolled: bool.isRequired, } NavigationBar.defaultProps = { diff --git a/src/components/navigation/UserDropdown.js b/src/components/navigation/UserDropdown.js index 51679d01..2828eca7 100644 --- a/src/components/navigation/UserDropdown.js +++ b/src/components/navigation/UserDropdown.js @@ -9,16 +9,16 @@ import logoutIcon from 'assets/images/leave.svg' import { onKeyUpEnter } from 'utils/keyPress' class UserDropdown extends React.Component { - static contextType = UALContext - static propTypes = { logout: func.isRequired, enroll: func.isRequired, enrolled: bool.isRequired, } + static contextType = UALContext + render() { - const { logout, enrolled, enroll } = this.props; + const { logout, enrolled, enroll } = this.props return (
        { !enrolled - ?
      • onKeyUpEnter(event, enroll)} @@ -36,13 +37,16 @@ class UserDropdown extends React.Component { privacy Enable WebAuthn 2FA
      • - :
      • + ) + : ( +
      • privacy WebAuthn 2FA Enabled!
      • + ) } -
      • onKeyUpEnter(event, logout)} diff --git a/src/components/navigation/UserInfo.js b/src/components/navigation/UserInfo.js index fd932d01..7f910137 100644 --- a/src/components/navigation/UserInfo.js +++ b/src/components/navigation/UserInfo.js @@ -8,8 +8,6 @@ import upArrow from 'assets/images/up-arrow.svg' import { onKeyUpEnter } from 'utils/keyPress' class UserInfo extends React.Component { - static contextType = UALContext - _isMounted = false state = { @@ -38,7 +36,9 @@ class UserInfo extends React.Component { })) } - renderLogout = ( enroll, enrolled ) => ( + static contextType = UALContext + + renderLogout = (enroll, enrolled) => (
        dropdown
        - { this.state.showDropdown && this.renderDropdown( enroll, enrolled ) } + { this.state.showDropdown && this.renderDropdown(enroll, enrolled) }
        ) - renderDropdown = ( enroll, enrolled ) => { + renderDropdown = (enroll, enrolled) => { const { logout } = this.context return (
        @@ -65,7 +65,7 @@ class UserInfo extends React.Component { render() { const { logout, isAutoLogin } = this.context const { accountName } = this.state - const { enroll, enrolled } = this.props; + const { enroll, enrolled } = this.props const shouldDisplayLogout = logout && !isAutoLogin return (
        diff --git a/src/components/results/ResultsProperties.js b/src/components/results/ResultsProperties.js index 62e3c634..2f1a064d 100644 --- a/src/components/results/ResultsProperties.js +++ b/src/components/results/ResultsProperties.js @@ -8,7 +8,9 @@ const NUM_PROPERTIES = 8 const ResultsProperties = ({ login, displayError, enrolled }) => (
        - { [...Array(NUM_PROPERTIES).keys()].map(e => ) + { [...Array(NUM_PROPERTIES).keys()].map((e) => { + return + }) }
        ) diff --git a/src/components/results/property/Property.js b/src/components/results/property/Property.js index 2ede49e1..bbfd793f 100644 --- a/src/components/results/property/Property.js +++ b/src/components/results/property/Property.js @@ -14,8 +14,6 @@ import rentSvg from 'assets/images/money-bag.svg' import rentingSvg from 'assets/images/renting.svg' class Property extends React.Component { - static contextType = UALContext - static propTypes = { login: func.isRequired, displayError: func.isRequired, @@ -26,7 +24,7 @@ class Property extends React.Component { loading: false, liked: false, rented: false, - canRent: canUseWebAuthN() + canRent: canUseWebAuthN(), } onLike = async () => { @@ -53,23 +51,33 @@ class Property extends React.Component { onRent = async () => { const { login, displayError } = this.props const { activeUser } = this.context - if ( activeUser ) { + if (activeUser) { if (!this.state.canRent) { displayError(new Error('HTTPS is required to use 2FA.')) - return; - } else if (!this.props.enrolled) { - displayError(new Error('No 2FA enrolled 2FA: Please enroll in 2FA (under Login/Profile menu at the top right) to Rent.')) - return; + return + } + if (!this.props.enrolled) { + displayError( + new Error('No 2FA enrolled 2FA: Please enroll in 2FA (under Login/Profile menu at the top right) to Rent.'), + ) + return } this.setState({ loading: true }) try { const accountName = await activeUser.getAccountName() - const rentChallenge = await generateRentChallenge(accountName, "aproperty") - const userAuth = await signRentChallenge(accountName, "aproperty", rentChallenge) - const transaction = generateRentTransaction(accountName, "aproperty", rentChallenge.serverKey, rentChallenge.userKey, rentChallenge.serverAuth, userAuth) + const rentChallenge = await generateRentChallenge(accountName, 'aproperty') + const userAuth = await signRentChallenge(accountName, 'aproperty', rentChallenge) + const transaction = generateRentTransaction( + accountName, + 'aproperty', + rentChallenge.serverKey, + rentChallenge.userKey, + rentChallenge.serverAuth, + userAuth, + ) // The activeUser.signTransaction will propose the passed in transaction to the logged in Authenticator await activeUser.signTransaction(transaction, transactionConfig) - this.setState({rented: true}) + this.setState({ rented: true }) } catch (err) { displayError(err) } @@ -79,6 +87,8 @@ class Property extends React.Component { } } + static contextType = UALContext + render() { const { loading, liked, rented } = this.state @@ -105,7 +115,7 @@ class Property extends React.Component { onClick={this.onRent} onKeyUp={event => onKeyUpEnter(event, this.onRent)} > - rent + rent {rented && !loading ? 'Renting' : 'Rent'} onKeyUpEnter(event, this.onLike)} > - like + like {liked && !loading ? 'Liked' : 'Like'}
        diff --git a/src/setupProxy.js b/src/setupProxy.js index c8acc87b..9930d57c 100644 --- a/src/setupProxy.js +++ b/src/setupProxy.js @@ -1,14 +1,14 @@ // The API is in ES6 and this is run in the node environment -require("@babel/register")({ - presets: ["@babel/preset-env"] -}); +require('@babel/register')({ + presets: ['@babel/preset-env'], +}) -const Api = require('./api').default; +const Api = require('./api').default // This is a mis-use of the react proxySetup to allow for a simple API layer that the application can // interact with. In a production setup, this would either proxy to an api service endpoint OR proper // CORS/access control would be in place for the api service to be directly accessible from the app // -module.exports = function(app) { - app.use('/api', Api()); -}; \ No newline at end of file +module.exports = (app) => { + app.use('/api', Api()) +} diff --git a/src/utils/transaction.js b/src/utils/transaction.js index 4b74a171..6f575480 100644 --- a/src/utils/transaction.js +++ b/src/utils/transaction.js @@ -12,35 +12,33 @@ export const generateTransaction = account => ({ }], }) -export const generateRentTransaction = (accountName, propertyName, serverKey, userKey, serverAuth, userAuth) => { - return { - context_free_actions: [{ - account: 'tropical', - name: 'check2fa', - authorization: [], - data: { - user: accountName, - property: propertyName, - server_key: serverKey, - user_key: userKey, - server_auth: serverAuth, - bearer_auth: userAuth - } +export const generateRentTransaction = (accountName, propertyName, serverKey, userKey, serverAuth, userAuth) => ({ + context_free_actions: [{ + account: 'tropical', + name: 'check2fa', + authorization: [], + data: { + user: accountName, + property: propertyName, + server_key: serverKey, + user_key: userKey, + server_auth: serverAuth, + bearer_auth: userAuth, + }, + }], + actions: [{ + account: 'tropical', + name: 'rent', + authorization: [{ + actor: accountName, + permission: 'active', }], - actions: [{ - account: 'tropical', - name: 'rent', - authorization: [{ - actor: accountName, - permission: 'active' - }], - data: { - user: accountName, - property: propertyName, - } - } - ], - } -} + data: { + user: accountName, + property: propertyName, + }, + }, + ], +}) export const transactionConfig = { broadcast: true, expireSeconds: 300 } diff --git a/src/utils/webauthn.js b/src/utils/webauthn.js index b60d9166..abd52061 100644 --- a/src/utils/webauthn.js +++ b/src/utils/webauthn.js @@ -1,43 +1,39 @@ import base64url from 'base64url' -import {Serialize, Numeric} from 'eosjs' -import { ec } from 'elliptic' +import { Serialize, Numeric } from 'eosjs' +import { ec as EC } from 'elliptic' // taken from the const formatWebauthnPubkey = (pubkey) => { const clientDataStr = String.fromCharCode.apply(null, new Uint8Array(pubkey.clientDataJSON)) return { - attestationObject: base64url.encode(pubkey.attestationObject), - clientData: JSON.parse(clientDataStr) + attestationObject: base64url.encode(pubkey.attestationObject), + clientData: JSON.parse(clientDataStr), } } const decodeWebauthnSignature = (assertion, key) => { - const e = new ec('p256'); + const e = new EC('p256') const fixup = (x) => { const a = Array.from(x) - while (a.length < 32) - a.unshift(0) - while (a.length > 32) - if (a.shift() !== 0) - throw new Error('Signature has an r or s that is too big') + while (a.length < 32) a.unshift(0) + while (a.length > 32) if (a.shift() !== 0) throw new Error('Signature has an r or s that is too big') return new Uint8Array(a) } const der = new Serialize.SerialBuffer({ array: new Uint8Array(assertion.signature) }) - if (der.get() !== 0x30) - throw new Error('Signature missing DER prefix') - if (der.get() !== der.array.length - 2) - throw new Error('Signature has bad length') - if (der.get() !== 0x02) - throw new Error('Signature has bad r marker') + if (der.get() !== 0x30) throw new Error('Signature missing DER prefix') + if (der.get() !== der.array.length - 2) throw new Error('Signature has bad length') + if (der.get() !== 0x02) throw new Error('Signature has bad r marker') const r = fixup(der.getUint8Array(der.get())) - if (der.get() !== 0x02) - throw new Error('Signature has bad s marker') + if (der.get() !== 0x02) throw new Error('Signature has bad s marker') const s = fixup(der.getUint8Array(der.get())) const pubkeyData = Numeric.stringToPublicKey(key).data.subarray(0, 33) - const pubKey = e.keyFromPublic(pubkeyData).getPublic(); - const signedData = Buffer.concat([Buffer.from(assertion.authenticatorData), Buffer.from(e.hash().update(Buffer.from(assertion.clientDataJSON)).digest())]) + const pubKey = e.keyFromPublic(pubkeyData).getPublic() + const signedData = Buffer.concat([ + Buffer.from(assertion.authenticatorData), + Buffer.from(e.hash().update(Buffer.from(assertion.clientDataJSON)).digest()), + ]) const hash = Buffer.from(e.hash().update(signedData).digest()) const recid = e.getKeyRecoveryParam(hash, Buffer.from(assertion.signature), pubKey) @@ -49,21 +45,21 @@ const decodeWebauthnSignature = (assertion, key) => { sigData.pushBytes(new Uint8Array(assertion.clientDataJSON)) const sig = Numeric.signatureToString({ - type: Numeric.KeyType.wa, - data: sigData.asUint8Array().slice(), + type: Numeric.KeyType.wa, + data: sigData.asUint8Array().slice(), }) - return sig; + return sig } -export const generateWebauthnPubkey = async ( accountName ) => { +export const generateWebauthnPubkey = async (accountName) => { const createCredentialOptions = { // Format of new credentials is publicKey publicKey: { // Relying Party rp: { - name: "Tropical Stay", - id: window.location.hostname + name: 'Tropical Stay', + id: window.location.hostname, }, // Cryptographic challenge from the server challenge: new Uint8Array(26), @@ -75,12 +71,12 @@ export const generateWebauthnPubkey = async ( accountName ) => { }, // Requested format of new keypair pubKeyCredParams: [{ - type: "public-key", + type: 'public-key', alg: -7, }], timeout: 60000, - attestation: 'direct' - } + attestation: 'direct', + }, } const webauthnResp = await navigator.credentials.create(createCredentialOptions) @@ -91,7 +87,7 @@ export const enrollWebauthnPubkey = async (accountName, webauthnPublicKey) => { const payload = { accountName, webauthnPublicKey, - hostname: window.location.hostname + hostname: window.location.hostname, } const enrollResponse = await fetch('/api/enroll', { @@ -99,19 +95,19 @@ export const enrollWebauthnPubkey = async (accountName, webauthnPublicKey) => { headers: { 'Content-Type': 'application/json', }, - body: JSON.stringify(payload) + body: JSON.stringify(payload), }) const enrollResult = await enrollResponse.json() - if (!enrollResult.status || enrollResult.status !== "ok") { - throw new Error("Enrollment failed") + if (!enrollResult.status || enrollResult.status !== 'ok') { + throw new Error('Enrollment failed') } } -export const generateRentChallenge = async(accountName, propertyName) => { +export const generateRentChallenge = async (accountName, propertyName) => { const payload = { accountName, - propertyName + propertyName, } const resp = await fetch('/api/generateRentChallenge', { @@ -119,19 +115,19 @@ export const generateRentChallenge = async(accountName, propertyName) => { headers: { 'Content-Type': 'application/json', }, - body: JSON.stringify(payload) + body: JSON.stringify(payload), }) const result = await resp.json() - if (!result.status || result.status !== "ok") { - throw new Error("Enrollment failed") + if (!result.status || result.status !== 'ok') { + throw new Error('Enrollment failed') } return result } -export const signRentChallenge = async(accountName, propertyName, challenge) => { - const e = new ec('p256'); +export const signRentChallenge = async (accountName, propertyName, challenge) => { + const e = new EC('p256') const challengeBuffer = new Serialize.SerialBuffer() challengeBuffer.pushName(accountName) challengeBuffer.pushName(propertyName) @@ -154,6 +150,4 @@ export const signRentChallenge = async(accountName, propertyName, challenge) => return decodeWebauthnSignature(webauthnResp.response, challenge.userKey) } -export const canUseWebAuthN = () => { - return window.location.protocol.replace(/:$/, '') === 'https' -} +export const canUseWebAuthN = () => window.location.protocol.replace(/:$/, '') === 'https' diff --git a/yarn.lock b/yarn.lock index 77066f52..4340e116 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5116,7 +5116,7 @@ expect@^24.9.0: jest-message-util "^24.9.0" jest-regex-util "^24.9.0" -express@^4.16.2: +express@^4.16.2, express@^4.17.1: version "4.17.1" resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== From ab79e7195bc0c163dc2aa422531ac460e8e68dc9 Mon Sep 17 00:00:00 2001 From: Bradley Hart Date: Thu, 16 Jan 2020 12:23:00 -0500 Subject: [PATCH 72/76] differentiating Like function, adjusting PropertyImage component --- README.md | 4 ++-- src/components/navigation/UserDropdown.js | 2 +- src/components/results/ResultsProperties.js | 6 +++--- src/components/results/property/Property.js | 15 +++------------ .../results/property/PropertyImage.js | 19 +++++++++++++++---- src/utils/transaction.js | 2 +- 6 files changed, 25 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 855a57b1..600acb88 100644 --- a/README.md +++ b/README.md @@ -233,7 +233,7 @@ It is **highly recommended** in the transaction configuration to provide a `expi ```javascript import { UALContext } from 'ual-reactjs-renderer' -import { generateTransaction } from 'utils/transaction' +import { generateLikeTransaction } from 'utils/transaction' ... class Property extends React.Component { static contextType = UALContext @@ -245,7 +245,7 @@ class Property extends React.Component { if (activeUser) { try { const accountName = await activeUser.getAccountName() - const transaction = generateTransaction(accountName) + const transaction = generateLikeTransaction(accountName) // The activeUser.signTransaction will propose the passed in transaction to the logged in Authenticator await activeUser.signTransaction(transaction, { broadcast: true, expireSeconds: 300 }) this.setState({ liked: true }) diff --git a/src/components/navigation/UserDropdown.js b/src/components/navigation/UserDropdown.js index 2828eca7..a3d45eb4 100644 --- a/src/components/navigation/UserDropdown.js +++ b/src/components/navigation/UserDropdown.js @@ -51,7 +51,7 @@ class UserDropdown extends React.Component { onClick={logout} onKeyUp={event => onKeyUpEnter(event, logout)} > - + Logout
      diff --git a/src/components/results/ResultsProperties.js b/src/components/results/ResultsProperties.js index 2f1a064d..e47c1522 100644 --- a/src/components/results/ResultsProperties.js +++ b/src/components/results/ResultsProperties.js @@ -8,9 +8,9 @@ const NUM_PROPERTIES = 8 const ResultsProperties = ({ login, displayError, enrolled }) => (
      - { [...Array(NUM_PROPERTIES).keys()].map((e) => { - return - }) + { [...Array(NUM_PROPERTIES).keys()].map((e) => ( + + )) }
      ) diff --git a/src/components/results/property/Property.js b/src/components/results/property/Property.js index bbfd793f..6c7f7013 100644 --- a/src/components/results/property/Property.js +++ b/src/components/results/property/Property.js @@ -5,7 +5,7 @@ import { UALContext } from 'ual-reactjs-renderer' import './Property.scss' import PropertyImage from 'components/results/property/PropertyImage' -import { generateTransaction, generateRentTransaction, transactionConfig } from 'utils/transaction' +import { generateLikeTransaction, generateRentTransaction, transactionConfig } from 'utils/transaction' import { generateRentChallenge, signRentChallenge, canUseWebAuthN } from 'utils/webauthn' import { onKeyUpEnter } from 'utils/keyPress' @@ -35,7 +35,7 @@ class Property extends React.Component { this.setState({ loading: true }) try { const accountName = await activeUser.getAccountName() - const transaction = generateTransaction(accountName) + const transaction = generateLikeTransaction(accountName) // The activeUser.signTransaction will propose the passed in transaction to the logged in Authenticator await activeUser.signTransaction(transaction, transactionConfig) this.setState({ liked: true }) @@ -94,16 +94,7 @@ class Property extends React.Component { return (
      -
      onKeyUpEnter(event, this.onRent)} - > - -
      +
      diff --git a/src/components/results/property/PropertyImage.js b/src/components/results/property/PropertyImage.js index fd848114..92d98d64 100644 --- a/src/components/results/property/PropertyImage.js +++ b/src/components/results/property/PropertyImage.js @@ -1,18 +1,29 @@ import React from 'react' -import { bool } from 'prop-types' +import { bool, func } from 'prop-types' import './PropertyImage.scss' import propertySvg from 'assets/images/property.svg' +import { onKeyUpEnter } from 'utils/keyPress' -const PropertyImage = () => ( -
      - property +const PropertyImage = ({ onRent }) => ( +
      onKeyUpEnter(event, onRent)} + > +
      + property +
      ) PropertyImage.propTypes = { loading: bool.isRequired, liked: bool.isRequired, + onRent: func.isRequired, } export default PropertyImage diff --git a/src/utils/transaction.js b/src/utils/transaction.js index 6f575480..ff650d88 100644 --- a/src/utils/transaction.js +++ b/src/utils/transaction.js @@ -1,4 +1,4 @@ -export const generateTransaction = account => ({ +export const generateLikeTransaction = account => ({ actions: [{ account: 'tropical', name: 'like', From b726fa066a4119857febbd07d3b9a56663f2af27 Mon Sep 17 00:00:00 2001 From: Jon La Marr Date: Thu, 16 Jan 2020 18:10:03 -0500 Subject: [PATCH 73/76] Locking all versions of eosjs in dependencies to 21.0.1-rc1. UAL scatter is the only thing that actually needs to be updated due to breaking changes --- package.json | 5 +- yarn.lock | 2958 ++++++++++++++++++++------------------------------ 2 files changed, 1195 insertions(+), 1768 deletions(-) diff --git a/package.json b/package.json index d19deaa6..6458db7c 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "create-hmac": "^1.1.7", "ecurve": "^1.0.6", "elliptic": "^6.5.1", - "eosjs": "20.0.4-7938e1a.0", + "eosjs": "21.0.1-rc1", "express": "4.17.1", "focus-visible": "4.1.5", "prop-types": "15.7.2", @@ -44,7 +44,8 @@ "ual-token-pocket": "0.1.2" }, "resolutions": { - "serialize-javascript": "^2.1.1" + "serialize-javascript": "^2.1.1", + "eosjs": "21.0.1-rc1" }, "scripts": { "start": "node scripts/copyDefaultEnv.js && react-scripts start", diff --git a/yarn.lock b/yarn.lock index 4340e116..59e49b44 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,13 +2,29 @@ # yarn lockfile v1 -"@babel/code-frame@7.5.5", "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5": +"@babel/code-frame@7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw== dependencies: "@babel/highlight" "^7.0.0" +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" + integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== + dependencies: + "@babel/highlight" "^7.8.3" + +"@babel/compat-data@^7.8.0", "@babel/compat-data@^7.8.1": + version "7.8.1" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.8.1.tgz#fc0bbbb7991e4fb2b47e168e60f2cc2c41680be9" + integrity sha512-Z+6ZOXvyOWYxJ50BwxzdhRnRsGST8Y3jaZgxYig575lTjVSs3KtJnmESwZegg6e2Dn0td1eDhoWlp1wI4BTCPw== + dependencies: + browserslist "^4.8.2" + invariant "^2.2.4" + semver "^5.5.0" + "@babel/core@7.4.3": version "7.4.3" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.3.tgz#198d6d3af4567be3989550d97e068de94503074f" @@ -70,433 +86,261 @@ source-map "^0.5.0" "@babel/core@^7.1.0", "@babel/core@^7.4.5": - version "7.6.4" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.6.4.tgz#6ebd9fe00925f6c3e177bb726a188b5f578088ff" - integrity sha512-Rm0HGw101GY8FTzpWSyRbki/jzq+/PkNQJ+nSulrdY6gFGOsNseCqD6KHRYe2E+EdzuBdr2pxCp6s4Uk6eJ+XQ== - dependencies: - "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.6.4" - "@babel/helpers" "^7.6.2" - "@babel/parser" "^7.6.4" - "@babel/template" "^7.6.0" - "@babel/traverse" "^7.6.3" - "@babel/types" "^7.6.3" - convert-source-map "^1.1.0" + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.3.tgz#30b0ebb4dd1585de6923a0b4d179e0b9f5d82941" + integrity sha512-4XFkf8AwyrEG7Ziu3L2L0Cv+WyY47Tcsp70JFmpftbAA1K7YL/sgE9jh9HyNj08Y/U50ItUchpN0w6HxAoX1rA== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.8.3" + "@babel/helpers" "^7.8.3" + "@babel/parser" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + convert-source-map "^1.7.0" debug "^4.1.0" + gensync "^1.0.0-beta.1" json5 "^2.1.0" lodash "^4.17.13" resolve "^1.3.2" semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.4.0", "@babel/generator@^7.6.3", "@babel/generator@^7.6.4": - version "7.6.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.6.4.tgz#a4f8437287bf9671b07f483b76e3bb731bc97671" - integrity sha512-jsBuXkFoZxk0yWLyGI9llT9oiQ2FeTASmRFE32U+aaDTfoE92t78eroO7PTpU/OrYq38hlcDM6vbfLDaOLy+7w== +"@babel/generator@^7.4.0", "@babel/generator@^7.6.0", "@babel/generator@^7.7.4", "@babel/generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.3.tgz#0e22c005b0a94c1c74eafe19ef78ce53a4d45c03" + integrity sha512-WjoPk8hRpDRqqzRpvaR8/gDUPkrnOOeuT2m8cNICJtZH6mwaCo3v0OKMI7Y6SM1pBtyijnLtAL0HDi41pf41ug== dependencies: - "@babel/types" "^7.6.3" + "@babel/types" "^7.8.3" jsesc "^2.5.1" lodash "^4.17.13" source-map "^0.5.0" -"@babel/generator@^7.6.0", "@babel/generator@^7.7.4": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.7.7.tgz#859ac733c44c74148e1a72980a64ec84b85f4f45" - integrity sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ== - dependencies: - "@babel/types" "^7.7.4" - jsesc "^2.5.1" - lodash "^4.17.13" - source-map "^0.5.0" - -"@babel/helper-annotate-as-pure@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" - integrity sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q== - dependencies: - "@babel/types" "^7.0.0" - -"@babel/helper-annotate-as-pure@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.7.4.tgz#bb3faf1e74b74bd547e867e48f551fa6b098b6ce" - integrity sha512-2BQmQgECKzYKFPpiycoF9tlb5HA4lrVyAmLLVK177EcQAqjVLciUb2/R+n1boQ9y5ENV3uz2ZqiNw7QMBBw1Og== - dependencies: - "@babel/types" "^7.7.4" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f" - integrity sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.1.0" - "@babel/types" "^7.0.0" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.7.4.tgz#5f73f2b28580e224b5b9bd03146a4015d6217f5f" - integrity sha512-Biq/d/WtvfftWZ9Uf39hbPBYDUo986m5Bb4zhkeYDGUllF43D+nUe5M6Vuo6/8JDK/0YX/uBdeoQpyaNhNugZQ== +"@babel/helper-annotate-as-pure@^7.0.0", "@babel/helper-annotate-as-pure@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee" + integrity sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw== dependencies: - "@babel/helper-explode-assignable-expression" "^7.7.4" - "@babel/types" "^7.7.4" + "@babel/types" "^7.8.3" -"@babel/helper-builder-react-jsx@^7.3.0": - version "7.3.0" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.3.0.tgz#a1ac95a5d2b3e88ae5e54846bf462eeb81b318a4" - integrity sha512-MjA9KgwCuPEkQd9ncSXvSyJ5y+j2sICHyrI0M3L+6fnS4wMSNDc1ARXsbTfbb2cXHn17VisSnU/sHFTCxVxSMw== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz#c84097a427a061ac56a1c30ebf54b7b22d241503" + integrity sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw== dependencies: - "@babel/types" "^7.3.0" - esutils "^2.0.0" + "@babel/helper-explode-assignable-expression" "^7.8.3" + "@babel/types" "^7.8.3" -"@babel/helper-builder-react-jsx@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.7.4.tgz#da188d247508b65375b2c30cf59de187be6b0c66" - integrity sha512-kvbfHJNN9dg4rkEM4xn1s8d1/h6TYNvajy9L1wx4qLn9HFg0IkTsQi4rfBe92nxrPUFcMsHoMV+8rU7MJb3fCA== +"@babel/helper-builder-react-jsx@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.8.3.tgz#dee98d7d79cc1f003d80b76fe01c7f8945665ff6" + integrity sha512-JT8mfnpTkKNCboTqZsQTdGo3l3Ik3l7QIt9hh0O9DYiwVel37VoJpILKM4YFbP2euF32nkQSb+F9cUk9b7DDXQ== dependencies: - "@babel/types" "^7.7.4" + "@babel/types" "^7.8.3" esutils "^2.0.0" -"@babel/helper-call-delegate@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz#87c1f8ca19ad552a736a7a27b1c1fcf8b1ff1f43" - integrity sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ== +"@babel/helper-call-delegate@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.8.3.tgz#de82619898aa605d409c42be6ffb8d7204579692" + integrity sha512-6Q05px0Eb+N4/GTyKPPvnkig7Lylw+QzihMpws9iiZQv7ZImf84ZsZpQH7QoWN4n4tm81SnSzPgHw2qtO0Zf3A== dependencies: - "@babel/helper-hoist-variables" "^7.4.4" - "@babel/traverse" "^7.4.4" - "@babel/types" "^7.4.4" + "@babel/helper-hoist-variables" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" -"@babel/helper-call-delegate@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.7.4.tgz#621b83e596722b50c0066f9dc37d3232e461b801" - integrity sha512-8JH9/B7J7tCYJ2PpWVpw9JhPuEVHztagNVuQAFBVFYluRMlpG7F1CgKEgGeL6KFqcsIa92ZYVj6DSc0XwmN1ZA== +"@babel/helper-compilation-targets@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.3.tgz#2deedc816fd41dca7355ef39fd40c9ea69f0719a" + integrity sha512-JLylPCsFjhLN+6uBSSh3iYdxKdeO9MNmoY96PE/99d8kyBFaXLORtAVhqN6iHa+wtPeqxKLghDOZry0+Aiw9Tw== dependencies: - "@babel/helper-hoist-variables" "^7.7.4" - "@babel/traverse" "^7.7.4" - "@babel/types" "^7.7.4" + "@babel/compat-data" "^7.8.1" + browserslist "^4.8.2" + invariant "^2.2.4" + levenary "^1.1.0" + semver "^5.5.0" -"@babel/helper-create-class-features-plugin@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.7.4.tgz#fce60939fd50618610942320a8d951b3b639da2d" - integrity sha512-l+OnKACG4uiDHQ/aJT8dwpR+LhCJALxL0mJ6nzjB25e5IPwqV1VOsY7ah6UB1DG+VOXAIMtuC54rFJGiHkxjgA== +"@babel/helper-create-class-features-plugin@^7.7.4", "@babel/helper-create-class-features-plugin@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.3.tgz#5b94be88c255f140fd2c10dd151e7f98f4bff397" + integrity sha512-qmp4pD7zeTxsv0JNecSBsEmG1ei2MqwJq4YQcK3ZWm/0t07QstWfvuV/vm3Qt5xNMFETn2SZqpMx2MQzbtq+KA== dependencies: - "@babel/helper-function-name" "^7.7.4" - "@babel/helper-member-expression-to-functions" "^7.7.4" - "@babel/helper-optimise-call-expression" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.7.4" - "@babel/helper-split-export-declaration" "^7.7.4" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-member-expression-to-functions" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" -"@babel/helper-create-regexp-features-plugin@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.7.4.tgz#6d5762359fd34f4da1500e4cff9955b5299aaf59" - integrity sha512-Mt+jBKaxL0zfOIWrfQpnfYCN7/rS6GKx6CCCfuoqVVd+17R8zNDlzVYmIi9qyb2wOk002NsmSTDymkIygDUH7A== +"@babel/helper-create-regexp-features-plugin@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.3.tgz#c774268c95ec07ee92476a3862b75cc2839beb79" + integrity sha512-Gcsm1OHCUr9o9TcJln57xhWHtdXbA2pgQ58S0Lxlks0WMGNXuki4+GLfX0p+L2ZkINUGZvfkz8rzoqJQSthI+Q== dependencies: - "@babel/helper-regex" "^7.4.4" + "@babel/helper-regex" "^7.8.3" regexpu-core "^4.6.0" -"@babel/helper-define-map@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.5.5.tgz#3dec32c2046f37e09b28c93eb0b103fd2a25d369" - integrity sha512-fTfxx7i0B5NJqvUOBBGREnrqbTxRh7zinBANpZXAVDlsZxYdclDp467G1sQ8VZYMnAURY3RpBUAgOYT9GfzHBg== - dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/types" "^7.5.5" - lodash "^4.17.13" - -"@babel/helper-define-map@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.7.4.tgz#2841bf92eb8bd9c906851546fe6b9d45e162f176" - integrity sha512-v5LorqOa0nVQUvAUTUF3KPastvUt/HzByXNamKQ6RdJRTV7j8rLL+WB5C/MzzWAwOomxDhYFb1wLLxHqox86lg== +"@babel/helper-define-map@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz#a0655cad5451c3760b726eba875f1cd8faa02c15" + integrity sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g== dependencies: - "@babel/helper-function-name" "^7.7.4" - "@babel/types" "^7.7.4" + "@babel/helper-function-name" "^7.8.3" + "@babel/types" "^7.8.3" lodash "^4.17.13" -"@babel/helper-explode-assignable-expression@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6" - integrity sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA== - dependencies: - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.0.0" - -"@babel/helper-explode-assignable-expression@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.7.4.tgz#fa700878e008d85dc51ba43e9fb835cddfe05c84" - integrity sha512-2/SicuFrNSXsZNBxe5UGdLr+HZg+raWBLE9vC98bdYOKX/U6PY0mdGlYUJdtTDPSU0Lw0PNbKKDpwYHJLn2jLg== - dependencies: - "@babel/traverse" "^7.7.4" - "@babel/types" "^7.7.4" - -"@babel/helper-function-name@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" - integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== - dependencies: - "@babel/helper-get-function-arity" "^7.0.0" - "@babel/template" "^7.1.0" - "@babel/types" "^7.0.0" - -"@babel/helper-function-name@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz#ab6e041e7135d436d8f0a3eca15de5b67a341a2e" - integrity sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ== - dependencies: - "@babel/helper-get-function-arity" "^7.7.4" - "@babel/template" "^7.7.4" - "@babel/types" "^7.7.4" - -"@babel/helper-get-function-arity@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" - integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== - dependencies: - "@babel/types" "^7.0.0" - -"@babel/helper-get-function-arity@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz#cb46348d2f8808e632f0ab048172130e636005f0" - integrity sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA== - dependencies: - "@babel/types" "^7.7.4" - -"@babel/helper-hoist-variables@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz#0298b5f25c8c09c53102d52ac4a98f773eb2850a" - integrity sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w== - dependencies: - "@babel/types" "^7.4.4" - -"@babel/helper-hoist-variables@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.7.4.tgz#612384e3d823fdfaaf9fce31550fe5d4db0f3d12" - integrity sha512-wQC4xyvc1Jo/FnLirL6CEgPgPCa8M74tOdjWpRhQYapz5JC7u3NYU1zCVoVAGCE3EaIP9T1A3iW0WLJ+reZlpQ== +"@babel/helper-explode-assignable-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz#a728dc5b4e89e30fc2dfc7d04fa28a930653f982" + integrity sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw== dependencies: - "@babel/types" "^7.7.4" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" -"@babel/helper-member-expression-to-functions@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.5.5.tgz#1fb5b8ec4453a93c439ee9fe3aeea4a84b76b590" - integrity sha512-5qZ3D1uMclSNqYcXqiHoA0meVdv+xUEex9em2fqMnrk/scphGlGgg66zjMrPJESPwrFJ6sbfFQYUSa0Mz7FabA== +"@babel/helper-function-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca" + integrity sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA== dependencies: - "@babel/types" "^7.5.5" + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" -"@babel/helper-member-expression-to-functions@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.7.4.tgz#356438e2569df7321a8326644d4b790d2122cb74" - integrity sha512-9KcA1X2E3OjXl/ykfMMInBK+uVdfIVakVe7W7Lg3wfXUNyS3Q1HWLFRwZIjhqiCGbslummPDnmb7vIekS0C1vw== +"@babel/helper-get-function-arity@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" + integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== dependencies: - "@babel/types" "^7.7.4" + "@babel/types" "^7.8.3" -"@babel/helper-module-imports@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" - integrity sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A== +"@babel/helper-hoist-variables@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz#1dbe9b6b55d78c9b4183fc8cdc6e30ceb83b7134" + integrity sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg== dependencies: - "@babel/types" "^7.0.0" + "@babel/types" "^7.8.3" -"@babel/helper-module-imports@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.7.4.tgz#e5a92529f8888bf319a6376abfbd1cebc491ad91" - integrity sha512-dGcrX6K9l8258WFjyDLJwuVKxR4XZfU0/vTUgOQYWEnRD8mgr+p4d6fCUMq/ys0h4CCt/S5JhbvtyErjWouAUQ== +"@babel/helper-member-expression-to-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" + integrity sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA== dependencies: - "@babel/types" "^7.7.4" + "@babel/types" "^7.8.3" -"@babel/helper-module-transforms@^7.1.0", "@babel/helper-module-transforms@^7.4.4": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.5.5.tgz#f84ff8a09038dcbca1fd4355661a500937165b4a" - integrity sha512-jBeCvETKuJqeiaCdyaheF40aXnnU1+wkSiUs/IQg3tB85up1LyL8x77ClY8qJpuRJUcXQo+ZtdNESmZl4j56Pw== +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.7.4", "@babel/helper-module-imports@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" + integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-simple-access" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.4.4" - "@babel/template" "^7.4.4" - "@babel/types" "^7.5.5" - lodash "^4.17.13" + "@babel/types" "^7.8.3" -"@babel/helper-module-transforms@^7.7.4", "@babel/helper-module-transforms@^7.7.5": - version "7.7.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.7.5.tgz#d044da7ffd91ec967db25cd6748f704b6b244835" - integrity sha512-A7pSxyJf1gN5qXVcidwLWydjftUN878VkalhXX5iQDuGyiGK3sOrrKKHF4/A4fwHtnsotv/NipwAeLzY4KQPvw== +"@babel/helper-module-transforms@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.8.3.tgz#d305e35d02bee720fbc2c3c3623aa0c316c01590" + integrity sha512-C7NG6B7vfBa/pwCOshpMbOYUmrYQDfCpVL/JCRu0ek8B5p8kue1+BCXpg2vOYs7w5ACB9GTOBYQ5U6NwrMg+3Q== dependencies: - "@babel/helper-module-imports" "^7.7.4" - "@babel/helper-simple-access" "^7.7.4" - "@babel/helper-split-export-declaration" "^7.7.4" - "@babel/template" "^7.7.4" - "@babel/types" "^7.7.4" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-simple-access" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" lodash "^4.17.13" -"@babel/helper-optimise-call-expression@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" - integrity sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g== - dependencies: - "@babel/types" "^7.0.0" - -"@babel/helper-optimise-call-expression@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.7.4.tgz#034af31370d2995242aa4df402c3b7794b2dcdf2" - integrity sha512-VB7gWZ2fDkSuqW6b1AKXkJWO5NyNI3bFL/kK79/30moK57blr6NbH8xcl2XcKCwOmJosftWunZqfO84IGq3ZZg== +"@babel/helper-optimise-call-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" + integrity sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ== dependencies: - "@babel/types" "^7.7.4" + "@babel/types" "^7.8.3" -"@babel/helper-plugin-utils@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" - integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" + integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== -"@babel/helper-regex@^7.0.0", "@babel/helper-regex@^7.4.4": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.5.5.tgz#0aa6824f7100a2e0e89c1527c23936c152cab351" - integrity sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw== +"@babel/helper-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965" + integrity sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ== dependencies: lodash "^4.17.13" -"@babel/helper-remap-async-to-generator@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f" - integrity sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-wrap-function" "^7.1.0" - "@babel/template" "^7.1.0" - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.0.0" - -"@babel/helper-remap-async-to-generator@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.7.4.tgz#c68c2407350d9af0e061ed6726afb4fff16d0234" - integrity sha512-Sk4xmtVdM9sA/jCI80f+KS+Md+ZHIpjuqmYPk1M7F/upHou5e4ReYmExAiu6PVe65BhJPZA2CY9x9k4BqE5klw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.7.4" - "@babel/helper-wrap-function" "^7.7.4" - "@babel/template" "^7.7.4" - "@babel/traverse" "^7.7.4" - "@babel/types" "^7.7.4" - -"@babel/helper-replace-supers@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.5.5.tgz#f84ce43df031222d2bad068d2626cb5799c34bc2" - integrity sha512-XvRFWrNnlsow2u7jXDuH4jDDctkxbS7gXssrP4q2nUD606ukXHRvydj346wmNg+zAgpFx4MWf4+usfC93bElJg== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.5.5" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/traverse" "^7.5.5" - "@babel/types" "^7.5.5" - -"@babel/helper-replace-supers@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.7.4.tgz#3c881a6a6a7571275a72d82e6107126ec9e2cdd2" - integrity sha512-pP0tfgg9hsZWo5ZboYGuBn/bbYT/hdLPVSS4NMmiRJdwWhP0IznPwN9AE1JwyGsjSPLC364I0Qh5p+EPkGPNpg== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.7.4" - "@babel/helper-optimise-call-expression" "^7.7.4" - "@babel/traverse" "^7.7.4" - "@babel/types" "^7.7.4" - -"@babel/helper-simple-access@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c" - integrity sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w== - dependencies: - "@babel/template" "^7.1.0" - "@babel/types" "^7.0.0" - -"@babel/helper-simple-access@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.7.4.tgz#a169a0adb1b5f418cfc19f22586b2ebf58a9a294" - integrity sha512-zK7THeEXfan7UlWsG2A6CI/L9jVnI5+xxKZOdej39Y0YtDYKx9raHk5F2EtK9K8DHRTihYwg20ADt9S36GR78A== - dependencies: - "@babel/template" "^7.7.4" - "@babel/types" "^7.7.4" - -"@babel/helper-split-export-declaration@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" - integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q== - dependencies: - "@babel/types" "^7.4.4" - -"@babel/helper-split-export-declaration@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz#57292af60443c4a3622cf74040ddc28e68336fd8" - integrity sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug== - dependencies: - "@babel/types" "^7.7.4" - -"@babel/helper-wrap-function@^7.1.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa" - integrity sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ== - dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/template" "^7.1.0" - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.2.0" - -"@babel/helper-wrap-function@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.7.4.tgz#37ab7fed5150e22d9d7266e830072c0cdd8baace" - integrity sha512-VsfzZt6wmsocOaVU0OokwrIytHND55yvyT4BPB9AIIgwr8+x7617hetdJTsuGwygN5RC6mxA9EJztTjuwm2ofg== - dependencies: - "@babel/helper-function-name" "^7.7.4" - "@babel/template" "^7.7.4" - "@babel/traverse" "^7.7.4" - "@babel/types" "^7.7.4" - -"@babel/helpers@^7.4.3", "@babel/helpers@^7.6.2": - version "7.6.2" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.6.2.tgz#681ffe489ea4dcc55f23ce469e58e59c1c045153" - integrity sha512-3/bAUL8zZxYs1cdX2ilEE0WobqbCmKWr/889lf2SS0PpDcpEIY8pb1CCyz0pEcX3pEb+MCbks1jIokz2xLtGTA== - dependencies: - "@babel/template" "^7.6.0" - "@babel/traverse" "^7.6.2" - "@babel/types" "^7.6.0" - -"@babel/helpers@^7.6.0", "@babel/helpers@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.7.4.tgz#62c215b9e6c712dadc15a9a0dcab76c92a940302" - integrity sha512-ak5NGZGJ6LV85Q1Zc9gn2n+ayXOizryhjSUBTdu5ih1tlVCJeuQENzc4ItyCVhINVXvIT/ZQ4mheGIsfBkpskg== - dependencies: - "@babel/template" "^7.7.4" - "@babel/traverse" "^7.7.4" - "@babel/types" "^7.7.4" - -"@babel/highlight@^7.0.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540" - integrity sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ== +"@babel/helper-remap-async-to-generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz#273c600d8b9bf5006142c1e35887d555c12edd86" + integrity sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-wrap-function" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-replace-supers@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.3.tgz#91192d25f6abbcd41da8a989d4492574fb1530bc" + integrity sha512-xOUssL6ho41U81etpLoT2RTdvdus4VfHamCuAm4AHxGr+0it5fnwoVdwUJ7GFEqCsQYzJUhcbsN9wB9apcYKFA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-simple-access@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" + integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== + dependencies: + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-split-export-declaration@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" + integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-wrap-function@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610" + integrity sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helpers@^7.4.3", "@babel/helpers@^7.6.0", "@babel/helpers@^7.7.4", "@babel/helpers@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.8.3.tgz#382fbb0382ce7c4ce905945ab9641d688336ce85" + integrity sha512-LmU3q9Pah/XyZU89QvBgGt+BCsTPoQa+73RxAQh8fb8qkDyIfeQnmgs+hvzhTCKTzqOyk7JTkS3MS1S8Mq5yrQ== + dependencies: + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/highlight@^7.0.0", "@babel/highlight@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" + integrity sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg== dependencies: chalk "^2.0.0" esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.6.0", "@babel/parser@^7.6.3", "@babel/parser@^7.6.4": - version "7.6.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.6.4.tgz#cb9b36a7482110282d5cb6dd424ec9262b473d81" - integrity sha512-D8RHPW5qd0Vbyo3qb+YjO5nvUVRTXFLQ/FsDxJU2Nqz4uB5EnUN0ZQSEYpvTIbRuttig1XbHWU5oMeQwQSAA+A== - -"@babel/parser@^7.7.4": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.7.7.tgz#1b886595419cf92d811316d5b715a53ff38b4937" - integrity sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw== - -"@babel/plugin-proposal-async-generator-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e" - integrity sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-remap-async-to-generator" "^7.1.0" - "@babel/plugin-syntax-async-generators" "^7.2.0" +"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.6.0", "@babel/parser@^7.7.4", "@babel/parser@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.3.tgz#790874091d2001c9be6ec426c2eed47bc7679081" + integrity sha512-/V72F4Yp/qmHaTALizEm9Gf2eQHV3QyTL3K0cNfijwnMnb1L+LDlAubb/ZnSdGAVzVSWakujHYs1I26x66sMeQ== -"@babel/plugin-proposal-async-generator-functions@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.7.4.tgz#0351c5ac0a9e927845fffd5b82af476947b7ce6d" - integrity sha512-1ypyZvGRXriY/QP668+s8sFr2mqinhkRDMPSQLNghCQE+GAkFtp+wkHVvg2+Hdki8gwP+NFzJBJ/N1BfzCCDEw== +"@babel/plugin-proposal-async-generator-functions@^7.2.0", "@babel/plugin-proposal-async-generator-functions@^7.7.4", "@babel/plugin-proposal-async-generator-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz#bad329c670b382589721b27540c7d288601c6e6f" + integrity sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-remap-async-to-generator" "^7.7.4" - "@babel/plugin-syntax-async-generators" "^7.7.4" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-remap-async-to-generator" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" "@babel/plugin-proposal-class-properties@7.7.4": version "7.7.4" @@ -515,29 +359,21 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-decorators" "^7.7.4" -"@babel/plugin-proposal-dynamic-import@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.7.4.tgz#dde64a7f127691758cbfed6cf70de0fa5879d52d" - integrity sha512-StH+nGAdO6qDB1l8sZ5UBV8AC3F2VW2I8Vfld73TMKyptMU9DY5YsJAS8U81+vEtxcH3Y/La0wG0btDrhpnhjQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-dynamic-import" "^7.7.4" - -"@babel/plugin-proposal-json-strings@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317" - integrity sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg== +"@babel/plugin-proposal-dynamic-import@^7.7.4", "@babel/plugin-proposal-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz#38c4fe555744826e97e2ae930b0fb4cc07e66054" + integrity sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-json-strings" "^7.2.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" -"@babel/plugin-proposal-json-strings@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.7.4.tgz#7700a6bfda771d8dc81973249eac416c6b4c697d" - integrity sha512-wQvt3akcBTfLU/wYoqm/ws7YOAQKu8EVJEvHip/mzkNtjaclQoCCIqKXFP5/eyfnfbQCDV3OLRIK3mIVyXuZlw== +"@babel/plugin-proposal-json-strings@^7.2.0", "@babel/plugin-proposal-json-strings@^7.7.4", "@babel/plugin-proposal-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz#da5216b238a98b58a1e05d6852104b10f9a70d6b" + integrity sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-json-strings" "^7.7.4" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.0" "@babel/plugin-proposal-nullish-coalescing-operator@7.7.4": version "7.7.4" @@ -547,6 +383,14 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.7.4" +"@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz#e4572253fdeed65cddeecfdab3f928afeb2fd5d2" + integrity sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-proposal-numeric-separator@7.7.4": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.7.4.tgz#7819a17445f4197bb9575e5750ed349776da858a" @@ -563,777 +407,469 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-object-rest-spread" "^7.7.4" -"@babel/plugin-proposal-object-rest-spread@^7.4.3": - version "7.6.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.6.2.tgz#8ffccc8f3a6545e9f78988b6bf4fe881b88e8096" - integrity sha512-LDBXlmADCsMZV1Y9OQwMc0MyGZ8Ta/zlD9N67BfQT8uYwkRswiu2hU6nJKrjrt/58aH/vqfQlR/9yId/7A2gWw== +"@babel/plugin-proposal-object-rest-spread@^7.4.3", "@babel/plugin-proposal-object-rest-spread@^7.7.4", "@babel/plugin-proposal-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.8.3.tgz#eb5ae366118ddca67bed583b53d7554cad9951bb" + integrity sha512-8qvuPwU/xxUCt78HocNlv0mXXo0wdh9VT1R04WU8HGOfaOob26pF+9P5/lYjN/q7DHOX1bvX60hnhOvuQUJdbA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" -"@babel/plugin-proposal-object-rest-spread@^7.7.4", "@babel/plugin-proposal-object-rest-spread@^7.7.7": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.7.7.tgz#9f27075004ab99be08c5c1bd653a2985813cb370" - integrity sha512-3qp9I8lelgzNedI3hrhkvhaEYree6+WHnyA/q4Dza9z7iEIs1eyhWyJnetk3jJ69RT0AT4G0UhEGwyGFJ7GUuQ== +"@babel/plugin-proposal-optional-catch-binding@^7.2.0", "@babel/plugin-proposal-optional-catch-binding@^7.7.4", "@babel/plugin-proposal-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz#9dee96ab1650eed88646ae9734ca167ac4a9c5c9" + integrity sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.7.4" - -"@babel/plugin-proposal-optional-catch-binding@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5" - integrity sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" - -"@babel/plugin-proposal-optional-catch-binding@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.7.4.tgz#ec21e8aeb09ec6711bc0a39ca49520abee1de379" - integrity sha512-DyM7U2bnsQerCQ+sejcTNZh8KQEUuC3ufzdnVnSiUv/qoGJp2Z3hanKL18KDhsBT5Wj6a7CMT5mdyCNJsEaA9w== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.7.4" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" "@babel/plugin-proposal-optional-chaining@7.7.4": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.7.4.tgz#3f04c2de1a942cbd3008324df8144b9cbc0ca0ba" - integrity sha512-JmgaS+ygAWDR/STPe3/7y0lNlHgS+19qZ9aC06nYLwQ/XB7c0q5Xs+ksFU3EDnp9EiEsO0dnRAOKeyLHTZuW3A== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-optional-chaining" "^7.7.4" - -"@babel/plugin-proposal-unicode-property-regex@^7.4.0": - version "7.6.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.6.2.tgz#05413762894f41bfe42b9a5e80919bd575dcc802" - integrity sha512-NxHETdmpeSCtiatMRYWVJo7266rrvAC3DTeG5exQBIH/fMIUK7ejDNznBbn3HQl/o9peymRRg7Yqkx6PdUXmMw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.6.0" - -"@babel/plugin-proposal-unicode-property-regex@^7.7.4", "@babel/plugin-proposal-unicode-property-regex@^7.7.7": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.7.7.tgz#433fa9dac64f953c12578b29633f456b68831c4e" - integrity sha512-80PbkKyORBUVm1fbTLrHpYdJxMThzM1UqFGh0ALEhO9TYbG86Ah9zQYAB/84axz2vcxefDLdZwWwZNlYARlu9w== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-async-generators@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f" - integrity sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-async-generators@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.7.4.tgz#331aaf310a10c80c44a66b238b6e49132bd3c889" - integrity sha512-Li4+EjSpBgxcsmeEF8IFcfV/+yJGxHXDirDkEoyFjumuwbmfCVHUt0HuowD/iGM7OhIRyXJH9YXxqiH6N815+g== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-decorators@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.7.4.tgz#3c91cfee2a111663ff3ac21b851140f5a52a4e0b" - integrity sha512-0oNLWNH4k5ZbBVfAwiTU53rKFWIeTh6ZlaWOXWJc4ywxs0tjz5fc3uZ6jKAnZSxN98eXVgg7bJIuzjX+3SXY+A== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-dynamic-import@7.7.4", "@babel/plugin-syntax-dynamic-import@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.7.4.tgz#29ca3b4415abfe4a5ec381e903862ad1a54c3aec" - integrity sha512-jHQW0vbRGvwQNgyVxwDh4yuXu4bH1f5/EICJLAhl1SblLs2CDhrsmCk+v5XLdE9wxtAFRyxx+P//Iw+a5L/tTg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-flow@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.7.4.tgz#6d91b59e1a0e4c17f36af2e10dd64ef220919d7b" - integrity sha512-2AMAWl5PsmM5KPkB22cvOkUyWk6MjUaqhHNU5nSPUl/ns3j5qLfw2SuYP5RbVZ0tfLvePr4zUScbICtDP2CUNw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-json-strings@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz#72bd13f6ffe1d25938129d2a186b11fd62951470" - integrity sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-json-strings@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.7.4.tgz#86e63f7d2e22f9e27129ac4e83ea989a382e86cc" - integrity sha512-QpGupahTQW1mHRXddMG5srgpHWqRLwJnJZKXTigB9RPFCCGbDGCgBeM/iC82ICXp414WeYx/tD54w7M2qRqTMg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-jsx@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz#0b85a3b4bc7cdf4cc4b8bf236335b907ca22e7c7" - integrity sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-jsx@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.7.4.tgz#dab2b56a36fb6c3c222a1fbc71f7bf97f327a9ec" - integrity sha512-wuy6fiMe9y7HeZBWXYCGt2RGxZOj0BImZ9EyXJVnVGBKO/Br592rbR3rtIQn0eQhAk9vqaKP5n8tVqEFBQMfLg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.7.4.tgz#e53b751d0c3061b1ba3089242524b65a7a9da12b" - integrity sha512-XKh/yIRPiQTOeBg0QJjEus5qiSKucKAiApNtO1psqG7D17xmE+X2i5ZqBEuSvo0HRuyPaKaSN/Gy+Ha9KFQolw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-numeric-separator@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.7.4.tgz#39818f8042a09d4c6248d85d82555369da4da5c4" - integrity sha512-vmlUUBlLuFnbpaR+1kKIdo62xQEN+THWbtAHSEilo+0rHl2dKKCn6GLUVKpI848wL/T0ZPQgAy8asRJ9yYEjog== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" - integrity sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-object-rest-spread@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.7.4.tgz#47cf220d19d6d0d7b154304701f468fc1cc6ff46" - integrity sha512-mObR+r+KZq0XhRVS2BrBKBpr5jqrqzlPvS9C9vuOf5ilSwzloAl7RPWLrgKdWS6IreaVrjHxTjtyqFiOisaCwg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c" - integrity sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.7.4.tgz#a3e38f59f4b6233867b4a92dcb0ee05b2c334aa6" - integrity sha512-4ZSuzWgFxqHRE31Glu+fEr/MirNZOMYmD/0BhBWyLyOOQz/gTAl7QmWm2hX1QxEIXsr2vkdlwxIzTyiYRC4xcQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-optional-chaining@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.7.4.tgz#c91fdde6de85d2eb8906daea7b21944c3610c901" - integrity sha512-2MqYD5WjZSbJdUagnJvIdSfkb/ucOC9/1fRJxm7GAxY6YQLWlUvkfxoNbUPcPLHJyetKUDQ4+yyuUyAoc0HriA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-top-level-await@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.7.4.tgz#bd7d8fa7b9fee793a36e4027fd6dd1aa32f946da" - integrity sha512-wdsOw0MvkL1UIgiQ/IFr3ETcfv1xb8RMM0H9wbiDyLaJFyiDg5oZvDLCXosIXmFeIlweML5iOBXAkqddkYNizg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-typescript@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.7.4.tgz#5d037ffa10f3b25a16f32570ebbe7a8c2efa304b" - integrity sha512-77blgY18Hud4NM1ggTA8xVT/dBENQf17OpiToSa2jSmEY3fWXD2jwrdVlO4kq5yzUTeF15WSQ6b4fByNvJcjpQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-arrow-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550" - integrity sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-arrow-functions@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.7.4.tgz#76309bd578addd8aee3b379d809c802305a98a12" - integrity sha512-zUXy3e8jBNPiffmqkHRNDdZM2r8DWhCB7HhcoyZjiK1TxYEluLHAvQuYnTT+ARqRpabWqy/NHkO6e3MsYB5YfA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-async-to-generator@^7.4.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.5.0.tgz#89a3848a0166623b5bc481164b5936ab947e887e" - integrity sha512-mqvkzwIGkq0bEF1zLRRiTdjfomZJDV33AH3oQzHVGkI2VzEmXLpKKOBvEVaFZBJdN0XTyH38s9j/Kiqr68dggg== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-remap-async-to-generator" "^7.1.0" - -"@babel/plugin-transform-async-to-generator@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.7.4.tgz#694cbeae6d613a34ef0292713fa42fb45c4470ba" - integrity sha512-zpUTZphp5nHokuy8yLlyafxCJ0rSlFoSHypTUWgpdwoDXWQcseaect7cJ8Ppk6nunOM6+5rPMkod4OYKPR5MUg== - dependencies: - "@babel/helper-module-imports" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-remap-async-to-generator" "^7.7.4" - -"@babel/plugin-transform-block-scoped-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190" - integrity sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-block-scoped-functions@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.7.4.tgz#d0d9d5c269c78eaea76227ace214b8d01e4d837b" - integrity sha512-kqtQzwtKcpPclHYjLK//3lH8OFsCDuDJBaFhVwf8kqdnF6MN4l618UDlcA7TfRs3FayrHj+svYnSX8MC9zmUyQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-block-scoping@^7.4.0": - version "7.6.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.3.tgz#6e854e51fbbaa84351b15d4ddafe342f3a5d542a" - integrity sha512-7hvrg75dubcO3ZI2rjYTzUrEuh1E9IyDEhhB6qfcooxhDA33xx2MasuLVgdxzcP6R/lipAC6n9ub9maNW6RKdw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - lodash "^4.17.13" - -"@babel/plugin-transform-block-scoping@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.7.4.tgz#200aad0dcd6bb80372f94d9e628ea062c58bf224" - integrity sha512-2VBe9u0G+fDt9B5OV5DQH4KBf5DoiNkwFKOz0TCvBWvdAN2rOykCTkrL+jTLxfCAm76l9Qo5OqL7HBOx2dWggg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - lodash "^4.17.13" - -"@babel/plugin-transform-classes@^7.4.3": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.5.5.tgz#d094299d9bd680a14a2a0edae38305ad60fb4de9" - integrity sha512-U2htCNK/6e9K7jGyJ++1p5XRU+LJjrwtoiVn9SzRlDT2KubcZ11OOwy3s24TjHxPgxNwonCYP7U2K51uVYCMDg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-define-map" "^7.5.5" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.5.5" - "@babel/helper-split-export-declaration" "^7.4.4" - globals "^11.1.0" - -"@babel/plugin-transform-classes@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.7.4.tgz#c92c14be0a1399e15df72667067a8f510c9400ec" - integrity sha512-sK1mjWat7K+buWRuImEzjNf68qrKcrddtpQo3swi9j7dUcG6y6R6+Di039QN2bD1dykeswlagupEmpOatFHHUg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.7.4" - "@babel/helper-define-map" "^7.7.4" - "@babel/helper-function-name" "^7.7.4" - "@babel/helper-optimise-call-expression" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.7.4" - "@babel/helper-split-export-declaration" "^7.7.4" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da" - integrity sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-computed-properties@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.7.4.tgz#e856c1628d3238ffe12d668eb42559f79a81910d" - integrity sha512-bSNsOsZnlpLLyQew35rl4Fma3yKWqK3ImWMSC/Nc+6nGjC9s5NFWAer1YQ899/6s9HxO2zQC1WoFNfkOqRkqRQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-destructuring@7.7.4", "@babel/plugin-transform-destructuring@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.7.4.tgz#2b713729e5054a1135097b6a67da1b6fe8789267" - integrity sha512-4jFMXI1Cu2aXbcXXl8Lr6YubCn6Oc7k9lLsu8v61TZh+1jny2BWmdtvY9zSUlLdGUvcy9DMAWyZEOqjsbeg/wA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-destructuring@^7.4.3": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.6.0.tgz#44bbe08b57f4480094d57d9ffbcd96d309075ba6" - integrity sha512-2bGIS5P1v4+sWTCnKNDZDxbGvEqi0ijeqM/YqHtVGrvG2y0ySgnEEhXErvE9dA0bnIzY9bIzdFK0jFA46ASIIQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-dotall-regex@^7.4.3": - version "7.6.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.6.2.tgz#44abb948b88f0199a627024e1508acaf8dc9b2f9" - integrity sha512-KGKT9aqKV+9YMZSkowzYoYEiHqgaDhGmPNZlZxX6UeHC4z30nC1J9IrZuGqbYFB1jaIGdv91ujpze0exiVK8bA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.6.0" - -"@babel/plugin-transform-dotall-regex@^7.7.4", "@babel/plugin-transform-dotall-regex@^7.7.7": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.7.7.tgz#3e9713f1b69f339e87fa796b097d73ded16b937b" - integrity sha512-b4in+YlTeE/QmTgrllnb3bHA0HntYvjz8O3Mcbx75UBPJA2xhb5A8nle498VhxSXJHQefjtQxpnLPehDJ4TRlg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-duplicate-keys@^7.2.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz#c5dbf5106bf84cdf691222c0974c12b1df931853" - integrity sha512-igcziksHizyQPlX9gfSjHkE2wmoCH3evvD2qR5w29/Dk0SMKE/eOI7f1HhBdNhR/zxJDqrgpoDTq5YSLH/XMsQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-duplicate-keys@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.7.4.tgz#3d21731a42e3f598a73835299dd0169c3b90ac91" - integrity sha512-g1y4/G6xGWMD85Tlft5XedGaZBCIVN+/P0bs6eabmcPP9egFleMAo65OOjlhcz1njpwagyY3t0nsQC9oTFegJA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-exponentiation-operator@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008" - integrity sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-exponentiation-operator@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.7.4.tgz#dd30c0191e3a1ba19bcc7e389bdfddc0729d5db9" - integrity sha512-MCqiLfCKm6KEA1dglf6Uqq1ElDIZwFuzz1WH5mTf8k2uQSxEJMbOIEh7IZv7uichr7PMfi5YVSrr1vz+ipp7AQ== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-flow-strip-types@7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.7.4.tgz#cc73f85944782df1d77d80977bc097920a8bf31a" - integrity sha512-w9dRNlHY5ElNimyMYy0oQowvQpwt/PRHI0QS98ZJCTZU2bvSnKXo5zEiD5u76FBPigTm8TkqzmnUTg16T7qbkA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-flow" "^7.7.4" - -"@babel/plugin-transform-for-of@^7.4.3": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz#0267fc735e24c808ba173866c6c4d1440fc3c556" - integrity sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ== + integrity sha512-JmgaS+ygAWDR/STPe3/7y0lNlHgS+19qZ9aC06nYLwQ/XB7c0q5Xs+ksFU3EDnp9EiEsO0dnRAOKeyLHTZuW3A== dependencies: "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-optional-chaining" "^7.7.4" -"@babel/plugin-transform-for-of@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.7.4.tgz#248800e3a5e507b1f103d8b4ca998e77c63932bc" - integrity sha512-zZ1fD1B8keYtEcKF+M1TROfeHTKnijcVQm0yO/Yu1f7qoDoxEIc/+GX6Go430Bg84eM/xwPFp0+h4EbZg7epAA== +"@babel/plugin-proposal-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.8.3.tgz#ae10b3214cb25f7adb1f3bc87ba42ca10b7e2543" + integrity sha512-QIoIR9abkVn+seDE3OjA08jWcs3eZ9+wJCKSRgo3WdEU2csFYgdScb+8qHB3+WXsGJD55u+5hWCISI7ejXS+kg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" -"@babel/plugin-transform-function-name@^7.4.3": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz#e1436116abb0610c2259094848754ac5230922ad" - integrity sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA== +"@babel/plugin-proposal-unicode-property-regex@^7.4.0", "@babel/plugin-proposal-unicode-property-regex@^7.7.4", "@babel/plugin-proposal-unicode-property-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.3.tgz#b646c3adea5f98800c9ab45105ac34d06cd4a47f" + integrity sha512-1/1/rEZv2XGweRwwSkLpY+s60za9OZ1hJs4YDqFHCw0kYWYwL5IFljVY1MYBL+weT1l9pokDO2uhSTLVxzoHkQ== dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-function-name@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.7.4.tgz#75a6d3303d50db638ff8b5385d12451c865025b1" - integrity sha512-E/x09TvjHNhsULs2IusN+aJNRV5zKwxu1cpirZyRPw+FyyIKEHPXTsadj48bVpc1R5Qq1B5ZkzumuFLytnbT6g== +"@babel/plugin-syntax-async-generators@^7.2.0", "@babel/plugin-syntax-async-generators@^7.7.4", "@babel/plugin-syntax-async-generators@^7.8.0": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== dependencies: - "@babel/helper-function-name" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-transform-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1" - integrity sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg== +"@babel/plugin-syntax-decorators@^7.7.4": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.8.3.tgz#8d2c15a9f1af624b0025f961682a9d53d3001bda" + integrity sha512-8Hg4dNNT9/LcA1zQlfwuKR8BUc/if7Q7NkTam9sGTcJphLwpf2g4S42uhspQrIrR+dpzE0dtTqBVFoHl8GtnnQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-literals@^7.7.4": +"@babel/plugin-syntax-dynamic-import@7.7.4": version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.7.4.tgz#27fe87d2b5017a2a5a34d1c41a6b9f6a6262643e" - integrity sha512-X2MSV7LfJFm4aZfxd0yLVFrEXAgPqYoDG53Br/tCKiKYfX0MjVjQeWPIhPHHsCqzwQANq+FLN786fF5rgLS+gw== + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.7.4.tgz#29ca3b4415abfe4a5ec381e903862ad1a54c3aec" + integrity sha512-jHQW0vbRGvwQNgyVxwDh4yuXu4bH1f5/EICJLAhl1SblLs2CDhrsmCk+v5XLdE9wxtAFRyxx+P//Iw+a5L/tTg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-member-expression-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz#fa10aa5c58a2cb6afcf2c9ffa8cb4d8b3d489a2d" - integrity sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA== +"@babel/plugin-syntax-dynamic-import@^7.7.4", "@babel/plugin-syntax-dynamic-import@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-transform-member-expression-literals@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.7.4.tgz#aee127f2f3339fc34ce5e3055d7ffbf7aa26f19a" - integrity sha512-9VMwMO7i69LHTesL0RdGy93JU6a+qOPuvB4F4d0kR0zyVjJRVJRaoaGjhtki6SzQUu8yen/vxPKN6CWnCUw6bA== +"@babel/plugin-syntax-flow@^7.7.4": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.8.3.tgz#f2c883bd61a6316f2c89380ae5122f923ba4527f" + integrity sha512-innAx3bUbA0KSYj2E2MNFSn9hiCeowOFLxlsuhXzw8hMQnzkDomUr9QCD7E9VF60NmnG1sNTuuv6Qf4f8INYsg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-modules-amd@^7.2.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz#ef00435d46da0a5961aa728a1d2ecff063e4fb91" - integrity sha512-n20UsQMKnWrltocZZm24cRURxQnWIvsABPJlw/fvoy9c6AgHZzoelAIzajDHAQrDpuKFFPPcFGd7ChsYuIUMpg== +"@babel/plugin-syntax-json-strings@^7.2.0", "@babel/plugin-syntax-json-strings@^7.7.4", "@babel/plugin-syntax-json-strings@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== dependencies: - "@babel/helper-module-transforms" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" - babel-plugin-dynamic-import-node "^2.3.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-transform-modules-amd@^7.7.4", "@babel/plugin-transform-modules-amd@^7.7.5": - version "7.7.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.7.5.tgz#39e0fb717224b59475b306402bb8eedab01e729c" - integrity sha512-CT57FG4A2ZUNU1v+HdvDSDrjNWBrtCmSH6YbbgN3Lrf0Di/q/lWRxZrE72p3+HCCz9UjfZOEBdphgC0nzOS6DQ== +"@babel/plugin-syntax-jsx@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz#521b06c83c40480f1e58b4fd33b92eceb1d6ea94" + integrity sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A== dependencies: - "@babel/helper-module-transforms" "^7.7.5" - "@babel/helper-plugin-utils" "^7.0.0" - babel-plugin-dynamic-import-node "^2.3.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-modules-commonjs@^7.4.3": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.6.0.tgz#39dfe957de4420445f1fcf88b68a2e4aa4515486" - integrity sha512-Ma93Ix95PNSEngqomy5LSBMAQvYKVe3dy+JlVJSHEXZR5ASL9lQBedMiCyVtmTLraIDVRE3ZjTZvmXXD2Ozw3g== +"@babel/plugin-syntax-nullish-coalescing-operator@^7.7.4", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== dependencies: - "@babel/helper-module-transforms" "^7.4.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-simple-access" "^7.1.0" - babel-plugin-dynamic-import-node "^2.3.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-transform-modules-commonjs@^7.7.4", "@babel/plugin-transform-modules-commonjs@^7.7.5": - version "7.7.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.7.5.tgz#1d27f5eb0bcf7543e774950e5b2fa782e637b345" - integrity sha512-9Cq4zTFExwFhQI6MT1aFxgqhIsMWQWDVwOgLzl7PTWJHsNaqFvklAU+Oz6AQLAS0dJKTwZSOCo20INwktxpi3Q== +"@babel/plugin-syntax-numeric-separator@^7.7.4": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f" + integrity sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw== dependencies: - "@babel/helper-module-transforms" "^7.7.5" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-simple-access" "^7.7.4" - babel-plugin-dynamic-import-node "^2.3.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-modules-systemjs@^7.4.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz#e75266a13ef94202db2a0620977756f51d52d249" - integrity sha512-Q2m56tyoQWmuNGxEtUyeEkm6qJYFqs4c+XyXH5RAuYxObRNz9Zgj/1g2GMnjYp2EUyEy7YTrxliGCXzecl/vJg== +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.2.0", "@babel/plugin-syntax-object-rest-spread@^7.7.4", "@babel/plugin-syntax-object-rest-spread@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: - "@babel/helper-hoist-variables" "^7.4.4" - "@babel/helper-plugin-utils" "^7.0.0" - babel-plugin-dynamic-import-node "^2.3.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-transform-modules-systemjs@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.7.4.tgz#cd98152339d3e763dfe838b7d4273edaf520bb30" - integrity sha512-y2c96hmcsUi6LrMqvmNDPBBiGCiQu0aYqpHatVVu6kD4mFEXKjyNxd/drc18XXAf9dv7UXjrZwBVmTTGaGP8iw== +"@babel/plugin-syntax-optional-catch-binding@^7.2.0", "@babel/plugin-syntax-optional-catch-binding@^7.7.4", "@babel/plugin-syntax-optional-catch-binding@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: - "@babel/helper-hoist-variables" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - babel-plugin-dynamic-import-node "^2.3.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-transform-modules-umd@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz#7678ce75169f0877b8eb2235538c074268dd01ae" - integrity sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw== +"@babel/plugin-syntax-optional-chaining@^7.7.4", "@babel/plugin-syntax-optional-chaining@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== dependencies: - "@babel/helper-module-transforms" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-transform-modules-umd@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.7.4.tgz#1027c355a118de0aae9fee00ad7813c584d9061f" - integrity sha512-u2B8TIi0qZI4j8q4C51ktfO7E3cQ0qnaXFI1/OXITordD40tt17g/sXqgNNCcMTcBFKrUPcGDx+TBJuZxLx7tw== +"@babel/plugin-syntax-top-level-await@^7.7.4", "@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz#3acdece695e6b13aaf57fc291d1a800950c71391" + integrity sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g== dependencies: - "@babel/helper-module-transforms" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-named-capturing-groups-regex@^7.4.2": - version "7.6.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.6.3.tgz#aaa6e409dd4fb2e50b6e2a91f7e3a3149dbce0cf" - integrity sha512-jTkk7/uE6H2s5w6VlMHeWuH+Pcy2lmdwFoeWCVnvIrDUnB5gQqTVI8WfmEAhF2CDEarGrknZcmSFg1+bkfCoSw== +"@babel/plugin-syntax-typescript@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.8.3.tgz#c1f659dda97711a569cef75275f7e15dcaa6cabc" + integrity sha512-GO1MQ/SGGGoiEXY0e0bSpHimJvxqB7lktLLIq2pv8xG7WZ8IMEle74jIe1FhprHBWjwjZtXHkycDLZXIWM5Wfg== dependencies: - regexpu-core "^4.6.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-named-capturing-groups-regex@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.7.4.tgz#fb3bcc4ee4198e7385805007373d6b6f42c98220" - integrity sha512-jBUkiqLKvUWpv9GLSuHUFYdmHg0ujC1JEYoZUfeOOfNydZXp1sXObgyPatpcwjWgsdBGsagWW0cdJpX/DO2jMw== +"@babel/plugin-transform-arrow-functions@^7.2.0", "@babel/plugin-transform-arrow-functions@^7.7.4", "@babel/plugin-transform-arrow-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz#82776c2ed0cd9e1a49956daeb896024c9473b8b6" + integrity sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.7.4" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-new-target@^7.4.0": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz#18d120438b0cc9ee95a47f2c72bc9768fbed60a5" - integrity sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA== +"@babel/plugin-transform-async-to-generator@^7.4.0", "@babel/plugin-transform-async-to-generator@^7.7.4", "@babel/plugin-transform-async-to-generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz#4308fad0d9409d71eafb9b1a6ee35f9d64b64086" + integrity sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-remap-async-to-generator" "^7.8.3" -"@babel/plugin-transform-new-target@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.7.4.tgz#4a0753d2d60639437be07b592a9e58ee00720167" - integrity sha512-CnPRiNtOG1vRodnsyGX37bHQleHE14B9dnnlgSeEs3ek3fHN1A1SScglTCg1sfbe7sRQ2BUcpgpTpWSfMKz3gg== +"@babel/plugin-transform-block-scoped-functions@^7.2.0", "@babel/plugin-transform-block-scoped-functions@^7.7.4", "@babel/plugin-transform-block-scoped-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz#437eec5b799b5852072084b3ae5ef66e8349e8a3" + integrity sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-object-super@^7.2.0": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.5.5.tgz#c70021df834073c65eb613b8679cc4a381d1a9f9" - integrity sha512-un1zJQAhSosGFBduPgN/YFNvWVpRuHKU7IHBglLoLZsGmruJPOo6pbInneflUdmq7YvSVqhpPs5zdBvLnteltQ== +"@babel/plugin-transform-block-scoping@^7.4.0", "@babel/plugin-transform-block-scoping@^7.7.4", "@babel/plugin-transform-block-scoping@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz#97d35dab66857a437c166358b91d09050c868f3a" + integrity sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.5.5" + "@babel/helper-plugin-utils" "^7.8.3" + lodash "^4.17.13" + +"@babel/plugin-transform-classes@^7.4.3", "@babel/plugin-transform-classes@^7.7.4", "@babel/plugin-transform-classes@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.3.tgz#46fd7a9d2bb9ea89ce88720477979fe0d71b21b8" + integrity sha512-SjT0cwFJ+7Rbr1vQsvphAHwUHvSUPmMjMU/0P59G8U2HLFqSa082JO7zkbDNWs9kH/IUqpHI6xWNesGf8haF1w== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-define-map" "^7.8.3" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + globals "^11.1.0" -"@babel/plugin-transform-object-super@^7.7.4": +"@babel/plugin-transform-computed-properties@^7.2.0", "@babel/plugin-transform-computed-properties@^7.7.4", "@babel/plugin-transform-computed-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz#96d0d28b7f7ce4eb5b120bb2e0e943343c86f81b" + integrity sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-destructuring@7.7.4": version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.7.4.tgz#48488937a2d586c0148451bf51af9d7dda567262" - integrity sha512-ho+dAEhC2aRnff2JCA0SAK7V2R62zJd/7dmtoe7MHcso4C2mS+vZjn1Pb1pCVZvJs1mgsvv5+7sT+m3Bysb6eg== + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.7.4.tgz#2b713729e5054a1135097b6a67da1b6fe8789267" + integrity sha512-4jFMXI1Cu2aXbcXXl8Lr6YubCn6Oc7k9lLsu8v61TZh+1jny2BWmdtvY9zSUlLdGUvcy9DMAWyZEOqjsbeg/wA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.7.4" -"@babel/plugin-transform-parameters@^7.4.3": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz#7556cf03f318bd2719fe4c922d2d808be5571e16" - integrity sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw== +"@babel/plugin-transform-destructuring@^7.4.3", "@babel/plugin-transform-destructuring@^7.7.4", "@babel/plugin-transform-destructuring@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.3.tgz#20ddfbd9e4676906b1056ee60af88590cc7aaa0b" + integrity sha512-H4X646nCkiEcHZUZaRkhE2XVsoz0J/1x3VVujnn96pSoGCtKPA99ZZA+va+gK+92Zycd6OBKCD8tDb/731bhgQ== dependencies: - "@babel/helper-call-delegate" "^7.4.4" - "@babel/helper-get-function-arity" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-parameters@^7.7.4", "@babel/plugin-transform-parameters@^7.7.7": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.7.7.tgz#7a884b2460164dc5f194f668332736584c760007" - integrity sha512-OhGSrf9ZBrr1fw84oFXj5hgi8Nmg+E2w5L7NhnG0lPvpDtqd7dbyilM2/vR8CKbJ907RyxPh2kj6sBCSSfI9Ew== +"@babel/plugin-transform-dotall-regex@^7.4.3", "@babel/plugin-transform-dotall-regex@^7.7.4", "@babel/plugin-transform-dotall-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz#c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e" + integrity sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw== dependencies: - "@babel/helper-call-delegate" "^7.7.4" - "@babel/helper-get-function-arity" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-property-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz#03e33f653f5b25c4eb572c98b9485055b389e905" - integrity sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ== +"@babel/plugin-transform-duplicate-keys@^7.2.0", "@babel/plugin-transform-duplicate-keys@^7.7.4", "@babel/plugin-transform-duplicate-keys@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz#8d12df309aa537f272899c565ea1768e286e21f1" + integrity sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-exponentiation-operator@^7.2.0", "@babel/plugin-transform-exponentiation-operator@^7.7.4", "@babel/plugin-transform-exponentiation-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz#581a6d7f56970e06bf51560cd64f5e947b70d7b7" + integrity sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-property-literals@^7.7.4": +"@babel/plugin-transform-flow-strip-types@7.7.4": version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.7.4.tgz#2388d6505ef89b266103f450f9167e6bd73f98c2" - integrity sha512-MatJhlC4iHsIskWYyawl53KuHrt+kALSADLQQ/HkhTjX954fkxIEh4q5slL4oRAnsm/eDoZ4q0CIZpcqBuxhJQ== + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.7.4.tgz#cc73f85944782df1d77d80977bc097920a8bf31a" + integrity sha512-w9dRNlHY5ElNimyMYy0oQowvQpwt/PRHI0QS98ZJCTZU2bvSnKXo5zEiD5u76FBPigTm8TkqzmnUTg16T7qbkA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.7.4" -"@babel/plugin-transform-react-constant-elements@^7.0.0": - version "7.6.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.6.3.tgz#9fc9ea060b983c7c035acbe481cbe1fb1245bfff" - integrity sha512-1/YogSSU7Tby9rq2VCmhuRg+6pxsHy2rI7w/oo8RKoBt6uBUFG+mk6x13kK+FY1/ggN92HAfg7ADd1v1+NCOKg== +"@babel/plugin-transform-for-of@^7.4.3", "@babel/plugin-transform-for-of@^7.7.4", "@babel/plugin-transform-for-of@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.3.tgz#15f17bce2fc95c7d59a24b299e83e81cedc22e18" + integrity sha512-ZjXznLNTxhpf4Q5q3x1NsngzGA38t9naWH8Gt+0qYZEJAcvPI9waSStSh56u19Ofjr7QmD0wUsQ8hw8s/p1VnA== dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-react-display-name@7.7.4", "@babel/plugin-transform-react-display-name@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.7.4.tgz#9f2b80b14ebc97eef4a9b29b612c58ed9c0d10dd" - integrity sha512-sBbIvqYkthai0X0vkD2xsAwluBp+LtNHH+/V4a5ydifmTtb8KOVOlrMIk/MYmIc4uTYDnjZUHQildYNo36SRJw== +"@babel/plugin-transform-function-name@^7.4.3", "@babel/plugin-transform-function-name@^7.7.4", "@babel/plugin-transform-function-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz#279373cb27322aaad67c2683e776dfc47196ed8b" + integrity sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-react-display-name@^7.0.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz#ebfaed87834ce8dc4279609a4f0c324c156e3eb0" - integrity sha512-Htf/tPa5haZvRMiNSQSFifK12gtr/8vwfr+A9y69uF0QcU77AVu4K7MiHEkTxF7lQoHOL0F9ErqgfNEAKgXj7A== +"@babel/plugin-transform-literals@^7.2.0", "@babel/plugin-transform-literals@^7.7.4", "@babel/plugin-transform-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz#aef239823d91994ec7b68e55193525d76dbd5dc1" + integrity sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-react-jsx-self@^7.0.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.2.0.tgz#461e21ad9478f1031dd5e276108d027f1b5240ba" - integrity sha512-v6S5L/myicZEy+jr6ielB0OR8h+EH/1QFx/YJ7c7Ua+7lqsjj/vW6fD5FR9hB/6y7mGbfT4vAURn3xqBxsUcdg== +"@babel/plugin-transform-member-expression-literals@^7.2.0", "@babel/plugin-transform-member-expression-literals@^7.7.4", "@babel/plugin-transform-member-expression-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz#963fed4b620ac7cbf6029c755424029fa3a40410" + integrity sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.2.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-react-jsx-self@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.7.4.tgz#81b8fbfd14b2215e8f1c2c3adfba266127b0231c" - integrity sha512-PWYjSfqrO273mc1pKCRTIJXyqfc9vWYBax88yIhQb+bpw3XChVC7VWS4VwRVs63wFHKxizvGSd00XEr+YB9Q2A== +"@babel/plugin-transform-modules-amd@^7.2.0", "@babel/plugin-transform-modules-amd@^7.7.4", "@babel/plugin-transform-modules-amd@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.8.3.tgz#65606d44616b50225e76f5578f33c568a0b876a5" + integrity sha512-MadJiU3rLKclzT5kBH4yxdry96odTUwuqrZM+GllFI/VhxfPz+k9MshJM+MwhfkCdxxclSbSBbUGciBngR+kEQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.7.4" + "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-react-jsx-source@^7.0.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.5.0.tgz#583b10c49cf057e237085bcbd8cc960bd83bd96b" - integrity sha512-58Q+Jsy4IDCZx7kqEZuSDdam/1oW8OdDX8f+Loo6xyxdfg1yF0GE2XNJQSTZCaMol93+FBzpWiPEwtbMloAcPg== +"@babel/plugin-transform-modules-commonjs@^7.4.3", "@babel/plugin-transform-modules-commonjs@^7.7.4", "@babel/plugin-transform-modules-commonjs@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.8.3.tgz#df251706ec331bd058a34bdd72613915f82928a5" + integrity sha512-JpdMEfA15HZ/1gNuB9XEDlZM1h/gF/YOH7zaZzQu2xCFRfwc01NXBMHHSTT6hRjlXJJs5x/bfODM3LiCk94Sxg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.2.0" + "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-simple-access" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-react-jsx-source@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.7.4.tgz#8994b1bf6014b133f5a46d3b7d1ee5f5e3e72c10" - integrity sha512-5ZU9FnPhqtHsOXxutRtXZAzoEJwDaP32QcobbMP1/qt7NYcsCNK8XgzJcJfoEr/ZnzVvUNInNjIW22Z6I8p9mg== +"@babel/plugin-transform-modules-systemjs@^7.4.0", "@babel/plugin-transform-modules-systemjs@^7.7.4", "@babel/plugin-transform-modules-systemjs@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.8.3.tgz#d8bbf222c1dbe3661f440f2f00c16e9bb7d0d420" + integrity sha512-8cESMCJjmArMYqa9AO5YuMEkE4ds28tMpZcGZB/jl3n0ZzlsxOAi3mC+SKypTfT8gjMupCnd3YiXCkMjj2jfOg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.7.4" + "@babel/helper-hoist-variables" "^7.8.3" + "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-react-jsx@^7.0.0": - version "7.3.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz#f2cab99026631c767e2745a5368b331cfe8f5290" - integrity sha512-a/+aRb7R06WcKvQLOu4/TpjKOdvVEKRLWFpKcNuHhiREPgGRB4TQJxq07+EZLS8LFVYpfq1a5lDUnuMdcCpBKg== +"@babel/plugin-transform-modules-umd@^7.2.0", "@babel/plugin-transform-modules-umd@^7.7.4", "@babel/plugin-transform-modules-umd@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.8.3.tgz#592d578ce06c52f5b98b02f913d653ffe972661a" + integrity sha512-evhTyWhbwbI3/U6dZAnx/ePoV7H6OUG+OjiJFHmhr9FPn0VShjwC2kdxqIuQ/+1P50TMrneGzMeyMTFOjKSnAw== dependencies: - "@babel/helper-builder-react-jsx" "^7.3.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.2.0" + "@babel/helper-module-transforms" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-react-jsx@^7.7.4": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.7.7.tgz#5cbaa7445b4a09f774029f3cc7bb448ff3122a5d" - integrity sha512-SlPjWPbva2+7/ZJbGcoqjl4LsQaLpKEzxW9hcxU7675s24JmdotJOSJ4cgAbV82W3FcZpHIGmRZIlUL8ayMvjw== +"@babel/plugin-transform-named-capturing-groups-regex@^7.4.2", "@babel/plugin-transform-named-capturing-groups-regex@^7.7.4", "@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz#a2a72bffa202ac0e2d0506afd0939c5ecbc48c6c" + integrity sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw== dependencies: - "@babel/helper-builder-react-jsx" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.7.4" + "@babel/helper-create-regexp-features-plugin" "^7.8.3" -"@babel/plugin-transform-regenerator@^7.4.3": - version "7.4.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz#629dc82512c55cee01341fb27bdfcb210354680f" - integrity sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA== +"@babel/plugin-transform-new-target@^7.4.0", "@babel/plugin-transform-new-target@^7.7.4", "@babel/plugin-transform-new-target@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz#60cc2ae66d85c95ab540eb34babb6434d4c70c43" + integrity sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw== dependencies: - regenerator-transform "^0.14.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-regenerator@^7.7.4", "@babel/plugin-transform-regenerator@^7.7.5": - version "7.7.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.7.5.tgz#3a8757ee1a2780f390e89f246065ecf59c26fce9" - integrity sha512-/8I8tPvX2FkuEyWbjRCt4qTAgZK0DVy8QRguhA524UH48RfGJy94On2ri+dCuwOpcerPRl9O4ebQkRcVzIaGBw== +"@babel/plugin-transform-object-super@^7.2.0", "@babel/plugin-transform-object-super@^7.7.4", "@babel/plugin-transform-object-super@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz#ebb6a1e7a86ffa96858bd6ac0102d65944261725" + integrity sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ== dependencies: - regenerator-transform "^0.14.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.3" -"@babel/plugin-transform-reserved-words@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz#4792af87c998a49367597d07fedf02636d2e1634" - integrity sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw== +"@babel/plugin-transform-parameters@^7.4.3", "@babel/plugin-transform-parameters@^7.7.4", "@babel/plugin-transform-parameters@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.3.tgz#7890576a13b17325d8b7d44cb37f21dc3bbdda59" + integrity sha512-/pqngtGb54JwMBZ6S/D3XYylQDFtGjWrnoCF4gXZOUpFV/ujbxnoNGNvDGu6doFWRPBveE72qTx/RRU44j5I/Q== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-call-delegate" "^7.8.3" + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-reserved-words@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.7.4.tgz#6a7cf123ad175bb5c69aec8f6f0770387ed3f1eb" - integrity sha512-OrPiUB5s5XvkCO1lS7D8ZtHcswIC57j62acAnJZKqGGnHP+TIc/ljQSrgdX/QyOTdEK5COAhuc820Hi1q2UgLQ== +"@babel/plugin-transform-property-literals@^7.2.0", "@babel/plugin-transform-property-literals@^7.7.4", "@babel/plugin-transform-property-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz#33194300d8539c1ed28c62ad5087ba3807b98263" + integrity sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-runtime@7.7.4": +"@babel/plugin-transform-react-constant-elements@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.8.3.tgz#784c25294bddaad2323eb4ff0c9f4a3f6c87d6bc" + integrity sha512-glrzN2U+egwRfkNFtL34xIBYTxbbUF2qJTP8HD3qETBBqzAWSeNB821X0GjU06+dNpq/UyCIjI72FmGE5NNkQQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-react-display-name@7.7.4": version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.7.4.tgz#51fe458c1c1fa98a8b07934f4ed38b6cd62177a6" - integrity sha512-O8kSkS5fP74Ad/8pfsCMGa8sBRdLxYoSReaARRNSz3FbFQj3z/QUvoUmJ28gn9BO93YfnXc3j+Xyaqe8cKDNBQ== + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.7.4.tgz#9f2b80b14ebc97eef4a9b29b612c58ed9c0d10dd" + integrity sha512-sBbIvqYkthai0X0vkD2xsAwluBp+LtNHH+/V4a5ydifmTtb8KOVOlrMIk/MYmIc4uTYDnjZUHQildYNo36SRJw== dependencies: - "@babel/helper-module-imports" "^7.7.4" "@babel/helper-plugin-utils" "^7.0.0" - resolve "^1.8.1" - semver "^5.5.1" -"@babel/plugin-transform-shorthand-properties@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0" - integrity sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg== +"@babel/plugin-transform-react-display-name@^7.7.4", "@babel/plugin-transform-react-display-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz#70ded987c91609f78353dd76d2fb2a0bb991e8e5" + integrity sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-shorthand-properties@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.7.4.tgz#74a0a9b2f6d67a684c6fbfd5f0458eb7ba99891e" - integrity sha512-q+suddWRfIcnyG5YiDP58sT65AJDZSUhXQDZE3r04AuqD6d/XLaQPPXSBzP2zGerkgBivqtQm9XKGLuHqBID6Q== +"@babel/plugin-transform-react-jsx-self@^7.7.4", "@babel/plugin-transform-react-jsx-self@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.8.3.tgz#c4f178b2aa588ecfa8d077ea80d4194ee77ed702" + integrity sha512-01OT7s5oa0XTLf2I8XGsL8+KqV9lx3EZV+jxn/L2LQ97CGKila2YMroTkCEIE0HV/FF7CMSRsIAybopdN9NTdg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" -"@babel/plugin-transform-spread@^7.2.0": - version "7.6.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.6.2.tgz#fc77cf798b24b10c46e1b51b1b88c2bf661bb8dd" - integrity sha512-DpSvPFryKdK1x+EDJYCy28nmAaIMdxmhot62jAXF/o99iA33Zj2Lmcp3vDmz+MUh0LNYVPvfj5iC3feb3/+PFg== +"@babel/plugin-transform-react-jsx-source@^7.7.4", "@babel/plugin-transform-react-jsx-source@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.8.3.tgz#951e75a8af47f9f120db731be095d2b2c34920e0" + integrity sha512-PLMgdMGuVDtRS/SzjNEQYUT8f4z1xb2BAT54vM1X5efkVuYBf5WyGUMbpmARcfq3NaglIwz08UVQK4HHHbC6ag== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" -"@babel/plugin-transform-spread@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.7.4.tgz#aa673b356fe6b7e70d69b6e33a17fef641008578" - integrity sha512-8OSs0FLe5/80cndziPlg4R0K6HcWSM0zyNhHhLsmw/Nc5MaA49cAsnoJ/t/YZf8qkG7fD+UjTRaApVDB526d7Q== +"@babel/plugin-transform-react-jsx@^7.7.4", "@babel/plugin-transform-react-jsx@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.8.3.tgz#4220349c0390fdefa505365f68c103562ab2fc4a" + integrity sha512-r0h+mUiyL595ikykci+fbwm9YzmuOrUBi0b+FDIKmi3fPQyFokWVEMJnRWHJPPQEjyFJyna9WZC6Viv6UHSv1g== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-builder-react-jsx" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" -"@babel/plugin-transform-sticky-regex@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1" - integrity sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw== +"@babel/plugin-transform-regenerator@^7.4.3", "@babel/plugin-transform-regenerator@^7.7.4", "@babel/plugin-transform-regenerator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.3.tgz#b31031e8059c07495bf23614c97f3d9698bc6ec8" + integrity sha512-qt/kcur/FxrQrzFR432FGZznkVAjiyFtCOANjkAKwCbt465L6ZCiUQh2oMYGU3Wo8LRFJxNDFwWn106S5wVUNA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.0.0" + regenerator-transform "^0.14.0" + +"@babel/plugin-transform-reserved-words@^7.2.0", "@babel/plugin-transform-reserved-words@^7.7.4", "@babel/plugin-transform-reserved-words@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz#9a0635ac4e665d29b162837dd3cc50745dfdf1f5" + integrity sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-sticky-regex@^7.7.4": +"@babel/plugin-transform-runtime@7.7.4": version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.7.4.tgz#ffb68c05090c30732076b1285dc1401b404a123c" - integrity sha512-Ls2NASyL6qtVe1H1hXts9yuEeONV2TJZmplLONkMPUG158CtmnrzW5Q5teibM5UVOFjG0D3IC5mzXR6pPpUY7A== + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.7.4.tgz#51fe458c1c1fa98a8b07934f4ed38b6cd62177a6" + integrity sha512-O8kSkS5fP74Ad/8pfsCMGa8sBRdLxYoSReaARRNSz3FbFQj3z/QUvoUmJ28gn9BO93YfnXc3j+Xyaqe8cKDNBQ== dependencies: + "@babel/helper-module-imports" "^7.7.4" "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.0.0" + resolve "^1.8.1" + semver "^5.5.1" -"@babel/plugin-transform-template-literals@^7.2.0": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz#9d28fea7bbce637fb7612a0750989d8321d4bcb0" - integrity sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g== +"@babel/plugin-transform-shorthand-properties@^7.2.0", "@babel/plugin-transform-shorthand-properties@^7.7.4", "@babel/plugin-transform-shorthand-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz#28545216e023a832d4d3a1185ed492bcfeac08c8" + integrity sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w== dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-template-literals@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.7.4.tgz#1eb6411736dd3fe87dbd20cc6668e5121c17d604" - integrity sha512-sA+KxLwF3QwGj5abMHkHgshp9+rRz+oY9uoRil4CyLtgEuE/88dpkeWgNk5qKVsJE9iSfly3nvHapdRiIS2wnQ== +"@babel/plugin-transform-spread@^7.2.0", "@babel/plugin-transform-spread@^7.7.4", "@babel/plugin-transform-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz#9c8ffe8170fdfb88b114ecb920b82fb6e95fe5e8" + integrity sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g== dependencies: - "@babel/helper-annotate-as-pure" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-typeof-symbol@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz#117d2bcec2fbf64b4b59d1f9819894682d29f2b2" - integrity sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw== +"@babel/plugin-transform-sticky-regex@^7.2.0", "@babel/plugin-transform-sticky-regex@^7.7.4", "@babel/plugin-transform-sticky-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz#be7a1290f81dae767475452199e1f76d6175b100" + integrity sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-regex" "^7.8.3" -"@babel/plugin-transform-typeof-symbol@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.7.4.tgz#3174626214f2d6de322882e498a38e8371b2140e" - integrity sha512-KQPUQ/7mqe2m0B8VecdyaW5XcQYaePyl9R7IsKd+irzj6jvbhoGnRE+M0aNkyAzI07VfUQ9266L5xMARitV3wg== +"@babel/plugin-transform-template-literals@^7.2.0", "@babel/plugin-transform-template-literals@^7.7.4", "@babel/plugin-transform-template-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz#7bfa4732b455ea6a43130adc0ba767ec0e402a80" + integrity sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-typescript@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.7.4.tgz#2974fd05f4e85c695acaf497f432342de9fc0636" - integrity sha512-X8e3tcPEKnwwPVG+vP/vSqEShkwODOEeyQGod82qrIuidwIrfnsGn11qPM1jBLF4MqguTXXYzm58d0dY+/wdpg== +"@babel/plugin-transform-typeof-symbol@^7.2.0", "@babel/plugin-transform-typeof-symbol@^7.7.4", "@babel/plugin-transform-typeof-symbol@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.3.tgz#5cffb216fb25c8c64ba6bf5f76ce49d3ab079f4d" + integrity sha512-3TrkKd4LPqm4jHs6nPtSDI/SV9Cm5PRJkHLUgTcqRQQTMAZ44ZaAdDZJtvWFSaRcvT0a1rTmJ5ZA5tDKjleF3g== dependencies: - "@babel/helper-create-class-features-plugin" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-typescript" "^7.7.4" + "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-unicode-regex@^7.4.3": - version "7.6.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.6.2.tgz#b692aad888a7e8d8b1b214be6b9dc03d5031f698" - integrity sha512-orZI6cWlR3nk2YmYdb0gImrgCUwb5cBUwjf6Ks6dvNVvXERkwtJWOQaEOjPiu0Gu1Tq6Yq/hruCZZOOi9F34Dw== +"@babel/plugin-transform-typescript@^7.7.4": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.8.3.tgz#be6f01a7ef423be68e65ace1f04fc407e6d88917" + integrity sha512-Ebj230AxcrKGZPKIp4g4TdQLrqX95TobLUWKd/CwG7X1XHUH1ZpkpFvXuXqWbtGRWb7uuEWNlrl681wsOArAdQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.6.0" + "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-typescript" "^7.8.3" -"@babel/plugin-transform-unicode-regex@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.7.4.tgz#a3c0f65b117c4c81c5b6484f2a5e7b95346b83ae" - integrity sha512-N77UUIV+WCvE+5yHw+oks3m18/umd7y392Zv7mYTpFqHtkpcc+QUz+gLJNTWVlWROIWeLqY0f3OjZxV5TcXnRw== +"@babel/plugin-transform-unicode-regex@^7.4.3", "@babel/plugin-transform-unicode-regex@^7.7.4", "@babel/plugin-transform-unicode-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz#0cef36e3ba73e5c57273effb182f46b91a1ecaad" + integrity sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" "@babel/preset-env@7.4.3": version "7.4.3" @@ -1447,60 +983,66 @@ semver "^5.5.0" "@babel/preset-env@^7.4.5": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.7.7.tgz#c294167b91e53e7e36d820e943ece8d0c7fe46ac" - integrity sha512-pCu0hrSSDVI7kCVUOdcMNQEbOPJ52E+LrQ14sN8uL2ALfSqePZQlKrOy+tM4uhEdYlCHi4imr8Zz2cZe9oSdIg== - dependencies: - "@babel/helper-module-imports" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-async-generator-functions" "^7.7.4" - "@babel/plugin-proposal-dynamic-import" "^7.7.4" - "@babel/plugin-proposal-json-strings" "^7.7.4" - "@babel/plugin-proposal-object-rest-spread" "^7.7.7" - "@babel/plugin-proposal-optional-catch-binding" "^7.7.4" - "@babel/plugin-proposal-unicode-property-regex" "^7.7.7" - "@babel/plugin-syntax-async-generators" "^7.7.4" - "@babel/plugin-syntax-dynamic-import" "^7.7.4" - "@babel/plugin-syntax-json-strings" "^7.7.4" - "@babel/plugin-syntax-object-rest-spread" "^7.7.4" - "@babel/plugin-syntax-optional-catch-binding" "^7.7.4" - "@babel/plugin-syntax-top-level-await" "^7.7.4" - "@babel/plugin-transform-arrow-functions" "^7.7.4" - "@babel/plugin-transform-async-to-generator" "^7.7.4" - "@babel/plugin-transform-block-scoped-functions" "^7.7.4" - "@babel/plugin-transform-block-scoping" "^7.7.4" - "@babel/plugin-transform-classes" "^7.7.4" - "@babel/plugin-transform-computed-properties" "^7.7.4" - "@babel/plugin-transform-destructuring" "^7.7.4" - "@babel/plugin-transform-dotall-regex" "^7.7.7" - "@babel/plugin-transform-duplicate-keys" "^7.7.4" - "@babel/plugin-transform-exponentiation-operator" "^7.7.4" - "@babel/plugin-transform-for-of" "^7.7.4" - "@babel/plugin-transform-function-name" "^7.7.4" - "@babel/plugin-transform-literals" "^7.7.4" - "@babel/plugin-transform-member-expression-literals" "^7.7.4" - "@babel/plugin-transform-modules-amd" "^7.7.5" - "@babel/plugin-transform-modules-commonjs" "^7.7.5" - "@babel/plugin-transform-modules-systemjs" "^7.7.4" - "@babel/plugin-transform-modules-umd" "^7.7.4" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.7.4" - "@babel/plugin-transform-new-target" "^7.7.4" - "@babel/plugin-transform-object-super" "^7.7.4" - "@babel/plugin-transform-parameters" "^7.7.7" - "@babel/plugin-transform-property-literals" "^7.7.4" - "@babel/plugin-transform-regenerator" "^7.7.5" - "@babel/plugin-transform-reserved-words" "^7.7.4" - "@babel/plugin-transform-shorthand-properties" "^7.7.4" - "@babel/plugin-transform-spread" "^7.7.4" - "@babel/plugin-transform-sticky-regex" "^7.7.4" - "@babel/plugin-transform-template-literals" "^7.7.4" - "@babel/plugin-transform-typeof-symbol" "^7.7.4" - "@babel/plugin-transform-unicode-regex" "^7.7.4" - "@babel/types" "^7.7.4" - browserslist "^4.6.0" - core-js-compat "^3.6.0" + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.8.3.tgz#dc0fb2938f52bbddd79b3c861a4b3427dd3a6c54" + integrity sha512-Rs4RPL2KjSLSE2mWAx5/iCH+GC1ikKdxPrhnRS6PfFVaiZeom22VFKN4X8ZthyN61kAaR05tfXTbCvatl9WIQg== + dependencies: + "@babel/compat-data" "^7.8.0" + "@babel/helper-compilation-targets" "^7.8.3" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-proposal-async-generator-functions" "^7.8.3" + "@babel/plugin-proposal-dynamic-import" "^7.8.3" + "@babel/plugin-proposal-json-strings" "^7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-proposal-object-rest-spread" "^7.8.3" + "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" + "@babel/plugin-proposal-optional-chaining" "^7.8.3" + "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.8.3" + "@babel/plugin-transform-async-to-generator" "^7.8.3" + "@babel/plugin-transform-block-scoped-functions" "^7.8.3" + "@babel/plugin-transform-block-scoping" "^7.8.3" + "@babel/plugin-transform-classes" "^7.8.3" + "@babel/plugin-transform-computed-properties" "^7.8.3" + "@babel/plugin-transform-destructuring" "^7.8.3" + "@babel/plugin-transform-dotall-regex" "^7.8.3" + "@babel/plugin-transform-duplicate-keys" "^7.8.3" + "@babel/plugin-transform-exponentiation-operator" "^7.8.3" + "@babel/plugin-transform-for-of" "^7.8.3" + "@babel/plugin-transform-function-name" "^7.8.3" + "@babel/plugin-transform-literals" "^7.8.3" + "@babel/plugin-transform-member-expression-literals" "^7.8.3" + "@babel/plugin-transform-modules-amd" "^7.8.3" + "@babel/plugin-transform-modules-commonjs" "^7.8.3" + "@babel/plugin-transform-modules-systemjs" "^7.8.3" + "@babel/plugin-transform-modules-umd" "^7.8.3" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" + "@babel/plugin-transform-new-target" "^7.8.3" + "@babel/plugin-transform-object-super" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.8.3" + "@babel/plugin-transform-property-literals" "^7.8.3" + "@babel/plugin-transform-regenerator" "^7.8.3" + "@babel/plugin-transform-reserved-words" "^7.8.3" + "@babel/plugin-transform-shorthand-properties" "^7.8.3" + "@babel/plugin-transform-spread" "^7.8.3" + "@babel/plugin-transform-sticky-regex" "^7.8.3" + "@babel/plugin-transform-template-literals" "^7.8.3" + "@babel/plugin-transform-typeof-symbol" "^7.8.3" + "@babel/plugin-transform-unicode-regex" "^7.8.3" + "@babel/types" "^7.8.3" + browserslist "^4.8.2" + core-js-compat "^3.6.2" invariant "^2.2.2" - js-levenshtein "^1.1.3" + levenary "^1.1.0" semver "^5.5.0" "@babel/preset-react@7.7.4": @@ -1515,15 +1057,15 @@ "@babel/plugin-transform-react-jsx-source" "^7.7.4" "@babel/preset-react@^7.0.0": - version "7.6.3" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.6.3.tgz#d5242c828322520205ae4eda5d4f4f618964e2f6" - integrity sha512-07yQhmkZmRAfwREYIQgW0HEwMY9GBJVuPY4Q12UC72AbfaawuupVWa8zQs2tlL+yun45Nv/1KreII/0PLfEsgA== + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.8.3.tgz#23dc63f1b5b0751283e04252e78cf1d6589273d2" + integrity sha512-9hx0CwZg92jGb7iHYQVgi0tOEHP/kM60CtWJQnmbATSPIQQ2xYzfoCI3EdqAhFBeeJwYMdWQuDUHMsuDbH9hyQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-transform-react-display-name" "^7.0.0" - "@babel/plugin-transform-react-jsx" "^7.0.0" - "@babel/plugin-transform-react-jsx-self" "^7.0.0" - "@babel/plugin-transform-react-jsx-source" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-transform-react-display-name" "^7.8.3" + "@babel/plugin-transform-react-jsx" "^7.8.3" + "@babel/plugin-transform-react-jsx-self" "^7.8.3" + "@babel/plugin-transform-react-jsx-source" "^7.8.3" "@babel/preset-typescript@7.7.4": version "7.7.4" @@ -1545,6 +1087,14 @@ pirates "^4.0.0" source-map-support "^0.5.9" +"@babel/runtime-corejs3@^7.7.4": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.8.3.tgz#a2445836d0699e5ba77eea2c790ad9ea51e2cd27" + integrity sha512-lrIU4aVbmlM/wQPzhEvzvNJskKyYptuXb0fGC0lTQTupTOYtR2Vqbu6/jf8vTr4M8Wt1nIzxVrSvPI5qESa/xA== + dependencies: + core-js-pure "^3.0.0" + regenerator-runtime "^0.13.2" + "@babel/runtime@7.7.4": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.4.tgz#b23a856751e4bf099262f867767889c0e3fe175b" @@ -1552,81 +1102,41 @@ dependencies: regenerator-runtime "^0.13.2" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.5": - version "7.6.3" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.6.3.tgz#935122c74c73d2240cafd32ddb5fc2a6cd35cf1f" - integrity sha512-kq6anf9JGjW8Nt5rYfEuGRaEAaH1mkv3Bbu6rYvLOpPh/RusSJXuKPEAoZ7L7gybZkchE8+NV5g9vKF4AGAtsA== +"@babel/runtime@^7.0.0", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.4", "@babel/runtime@^7.7.6": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.3.tgz#0811944f73a6c926bb2ad35e918dcc1bfab279f1" + integrity sha512-fVHx1rzEmwB130VTkLnxR+HmxcTjGzH12LYQcFFoBwakMd3aOMD4OsRN7tGG/UOYE2ektgFrS8uACAoRk1CY0w== dependencies: regenerator-runtime "^0.13.2" -"@babel/runtime@^7.6.2", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.7.tgz#194769ca8d6d7790ec23605af9ee3e42a0aa79cf" - integrity sha512-uCnC2JEVAu8AKB5do1WRIsvrdJ0flYx/A/9f/6chdacnEZ7LmavjdsDXr5ksYBegxtuTPR5Va9/+13QF/kFkCA== - dependencies: - regenerator-runtime "^0.13.2" - -"@babel/template@^7.1.0", "@babel/template@^7.4.0", "@babel/template@^7.4.4", "@babel/template@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.6.0.tgz#7f0159c7f5012230dad64cca42ec9bdb5c9536e6" - integrity sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.6.0" - "@babel/types" "^7.6.0" - -"@babel/template@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.7.4.tgz#428a7d9eecffe27deac0a98e23bf8e3675d2a77b" - integrity sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.7.4" - "@babel/types" "^7.7.4" - -"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.4", "@babel/traverse@^7.5.5", "@babel/traverse@^7.6.2", "@babel/traverse@^7.6.3": - version "7.6.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.6.3.tgz#66d7dba146b086703c0fb10dd588b7364cec47f9" - integrity sha512-unn7P4LGsijIxaAJo/wpoU11zN+2IaClkQAxcJWBNCMS6cmVh802IyLHNkAjQ0iYnRS3nnxk5O3fuXW28IMxTw== - dependencies: - "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.6.3" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.4.4" - "@babel/parser" "^7.6.3" - "@babel/types" "^7.6.3" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.13" - -"@babel/traverse@^7.6.0", "@babel/traverse@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.7.4.tgz#9c1e7c60fb679fe4fcfaa42500833333c2058558" - integrity sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw== - dependencies: - "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.7.4" - "@babel/helper-function-name" "^7.7.4" - "@babel/helper-split-export-declaration" "^7.7.4" - "@babel/parser" "^7.7.4" - "@babel/types" "^7.7.4" +"@babel/template@^7.4.0", "@babel/template@^7.6.0", "@babel/template@^7.7.4", "@babel/template@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.3.tgz#e02ad04fe262a657809327f578056ca15fd4d1b8" + integrity sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/parser" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.6.0", "@babel/traverse@^7.7.4", "@babel/traverse@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.3.tgz#a826215b011c9b4f73f3a893afbc05151358bf9a" + integrity sha512-we+a2lti+eEImHmEXp7bM9cTxGzxPmBiVJlLVD+FuuQMeeO7RaDbutbgeheDkw+Xe3mCfJHnGOWLswT74m2IPg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.8.3" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/parser" "^7.8.3" + "@babel/types" "^7.8.3" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.13" -"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.5.5", "@babel/types@^7.6.0", "@babel/types@^7.6.3": - version "7.6.3" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.6.3.tgz#3f07d96f854f98e2fbd45c64b0cb942d11e8ba09" - integrity sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA== - dependencies: - esutils "^2.0.2" - lodash "^4.17.13" - to-fast-properties "^2.0.0" - -"@babel/types@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.7.4.tgz#516570d539e44ddf308c07569c258ff94fde9193" - integrity sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA== +"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.6.0", "@babel/types@^7.7.4", "@babel/types@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c" + integrity sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg== dependencies: esutils "^2.0.2" lodash "^4.17.13" @@ -1690,14 +1200,14 @@ integrity sha512-Qv4LTqO11jepd5Qmlp3M1YEjBumoTHcHFdgPTQ+sFlIL5myi/7xu/POwP7IRu6odBdmLXdtIs1D6TuW6kbwbbg== "@emotion/unitless@^0.7.0": - version "0.7.4" - resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.4.tgz#a87b4b04e5ae14a88d48ebef15015f6b7d1f5677" - integrity sha512-kBa+cDHOR9jpRJ+kcGMsysrls0leukrm68DmFQoMIWQcXdr2cZvyvypWuGYT7U+9kAExUE7+T7r6G3C3A6L8MQ== + version "0.7.5" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" + integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== "@hapi/address@2.x.x": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.2.tgz#1c794cd6dbf2354d1eb1ef10e0303f573e1c7222" - integrity sha512-O4QDrx+JoGKZc6aN64L04vqa7e41tIiLU+OvKdcYaEMP97UttL0f9GIi9/0A4WAMx0uBd6SidDIhktZhgOcN8Q== + version "2.1.4" + resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" + integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== "@hapi/bourne@1.x.x": version "1.3.2" @@ -1705,9 +1215,9 @@ integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== "@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": - version "8.3.2" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.3.2.tgz#91e7188edebc5d876f0b91a860f555ff06f0782b" - integrity sha512-NP5SG4bzix+EtSMtcudp8TvI0lB46mXNo8uFpTDw6tqxGx4z5yx+giIunEFA0Z7oUO4DuWrOJV9xqR2tJVEdyA== + version "8.5.0" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.0.tgz#2f9ce301c8898e1c3248b0a8564696b24d1a9a5a" + integrity sha512-7XYT10CZfPsH7j9F1Jmg1+d0ezOux2oM2GfArAzLwWe4mE2Dr3hVjsAL6+TFY49RRJlCdJDMw3nJsLFroTc8Kw== "@hapi/joi@^15.0.0": version "15.1.1" @@ -2028,9 +1538,9 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.0.tgz#f1ec1c104d1bb463556ecb724018ab788d0c172a" - integrity sha512-c1mZUu4up5cp9KROs/QAw0gTeHrw/x7m52LcnvMxxOZ03DmLwPV0MlGmlgzV3cnSdjhJOZsj7E7FHeioai+egw== + version "7.6.1" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" + integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== dependencies: "@babel/types" "^7.0.0" @@ -2043,26 +1553,33 @@ "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.0.7" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.7.tgz#2496e9ff56196cc1429c72034e07eab6121b6f3f" - integrity sha512-CeBpmX1J8kWLcDEnI3Cl2Eo6RfbGvzUctA+CjZUhOKDFbLfcr7fc4usEqLNWetrlJd7RhAkyYe2czXop4fICpw== + version "7.0.8" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.8.tgz#479a4ee3e291a403a1096106013ec22cf9b64012" + integrity sha512-yGeB2dHEdvxjP0y4UbRtQaSkXJ9649fYCmIdRoul5kfAoGCwxuCbMhag0k3RPfnuh9kPGm8x89btcfDEXdVWGw== dependencies: "@babel/types" "^7.3.0" "@types/bn.js@*": - version "4.11.5" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.5.tgz#40e36197433f78f807524ec623afcf0169ac81dc" - integrity sha512-AEAZcIZga0JgVMHNtl1CprA/hXX7/wPt79AgR4XqaDt7jyj3QWYw6LPoOiznPtugDmlubUnAahMs2PFxGcQrng== + version "4.11.6" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" + integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== dependencies: "@types/node" "*" -"@types/elliptic@^6.4.6": +"@types/elliptic@6.4.10": version "6.4.10" resolved "https://registry.yarnpkg.com/@types/elliptic/-/elliptic-6.4.10.tgz#352078ebc911484e30fc0d1eca3e3c865bf0e8f8" integrity sha512-9h+Bw+aNiLzcq9DGstHccNxSsJ5iNId7mzruid7+kwm7F1IGvb4rBOOPo3+twt9ZPhI3y+JJ2m1UfgU8cOEJuQ== dependencies: "@types/bn.js" "*" +"@types/elliptic@^6.4.6": + version "6.4.11" + resolved "https://registry.yarnpkg.com/@types/elliptic/-/elliptic-6.4.11.tgz#f8c84575bf7f4bd0f9e9bebe476b26bc8ac770e2" + integrity sha512-NjpGyjDWsFroeSUidp0CQ77ooabPOm4PoOExkZi80z1Nw0aoa/S6qX4dPFoLOUCFTmA6sSfrEem2AAysP/lE9g== + dependencies: + "@types/bn.js" "*" + "@types/eslint-visitor-keys@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" @@ -2094,9 +1611,9 @@ integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== "@types/node@*": - version "12.11.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.11.2.tgz#75ba3beda30d690b89a5089ca1c6e8e386150b76" - integrity sha512-dsfE4BHJkLQW+reOS6b17xhZ/6FB1rB8eRRvO08nn5o+voxf3i74tuyFWNH6djdfgX7Sm5s6LD8t6mJug4dpDw== + version "13.1.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.1.7.tgz#db51d28b8dfacfe4fb2d0da88f5eb0a2eca00675" + integrity sha512-HU0q9GXazqiKwviVxg9SI/+t/nAsGkvLDkIdxz+ObejG2nX6Si00TeLqHMoS+a/1tjH7a8YpKVQwtgHuMQsldg== "@types/parse-json@^4.0.0": version "4.0.0" @@ -2134,9 +1651,9 @@ integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== "@types/testing-library__dom@*", "@types/testing-library__dom@^6.0.0": - version "6.11.0" - resolved "https://registry.yarnpkg.com/@types/testing-library__dom/-/testing-library__dom-6.11.0.tgz#777e3ef44cb48f2430e3fad6a2053ec39004a5d3" - integrity sha512-qUmnGl6H0wajUaO3VCJJoAeN/bQwpUzCqE/hk96NiGjIh5H4b8LfmQTOj4cHfS/9hCwO0DJytC6osHYDYiouyA== + version "6.11.1" + resolved "https://registry.yarnpkg.com/@types/testing-library__dom/-/testing-library__dom-6.11.1.tgz#6058a6ac391db679f7c60dbb27b81f0620de2dd9" + integrity sha512-ImChHtQqmjwraRLqBC2sgSQFtczeFvBmBcfhTYZn/3KwXbyD07LQykEQ0xJo7QHc1GbVvf7pRyGaIe6PkCdxEw== dependencies: pretty-format "^24.3.0" @@ -2149,57 +1666,57 @@ "@types/testing-library__dom" "*" "@types/yargs-parser@*": - version "13.1.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-13.1.0.tgz#c563aa192f39350a1d18da36c5a8da382bbd8228" - integrity sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg== + version "15.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" + integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== "@types/yargs@^13.0.0": - version "13.0.3" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.3.tgz#76482af3981d4412d65371a318f992d33464a380" - integrity sha512-K8/LfZq2duW33XW/tFwEAfnZlqIfVsoyRB3kfXdPXYhl0nfM8mmh7GS0jg7WrX2Dgq/0Ha/pR1PaR+BvmWwjiQ== + version "13.0.5" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.5.tgz#18121bfd39dc12f280cee58f92c5b21d32041908" + integrity sha512-CF/+sxTO7FOwbIRL4wMv0ZYLCRfMid2HQpzDRyViH7kSpfoAFiMdGqKIxb1PxWfjtQXQhnQuD33lvRHNwr809Q== dependencies: "@types/yargs-parser" "*" "@typescript-eslint/eslint-plugin@^2.2.0": - version "2.14.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.14.0.tgz#c74447400537d4eb7aae1e31879ab43e6c662a8a" - integrity sha512-sneOJ3Hu0m5whJiVIxGBZZZMxMJ7c0LhAJzeMJgHo+n5wFs+/6rSR/gl7crkdR2kNwfOOSdzdc0gMvatG4dX2Q== + version "2.16.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.16.0.tgz#bf339b7db824c7cc3fd1ebedbc88dd17016471af" + integrity sha512-TKWbeFAKRPrvKiR9GNxErQ8sELKqg1ZvXi6uho07mcKShBnCnqNpDQWP01FEvWKf0bxM2g7uQEI5MNjSNqvUpQ== dependencies: - "@typescript-eslint/experimental-utils" "2.14.0" + "@typescript-eslint/experimental-utils" "2.16.0" eslint-utils "^1.4.3" functional-red-black-tree "^1.0.1" regexpp "^3.0.0" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@2.14.0": - version "2.14.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.14.0.tgz#e9179fa3c44e00b3106b85d7b69342901fb43e3b" - integrity sha512-KcyKS7G6IWnIgl3ZpyxyBCxhkBPV+0a5Jjy2g5HxlrbG2ZLQNFeneIBVXdaBCYOVjvGmGGFKom1kgiAY75SDeQ== +"@typescript-eslint/experimental-utils@2.16.0": + version "2.16.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.16.0.tgz#bba65685728c532e0ddc811a0376e8d38e671f77" + integrity sha512-bXTmAztXpqxliDKZgvWkl+5dHeRN+jqXVZ16peKKFzSXVzT6mz8kgBpHiVzEKO2NZ8OCU7dG61K9sRS/SkUUFQ== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.14.0" + "@typescript-eslint/typescript-estree" "2.16.0" eslint-scope "^5.0.0" "@typescript-eslint/parser@^2.2.0": - version "2.14.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.14.0.tgz#30fa0523d86d74172a5e32274558404ba4262cd6" - integrity sha512-haS+8D35fUydIs+zdSf4BxpOartb/DjrZ2IxQ5sR8zyGfd77uT9ZJZYF8+I0WPhzqHmfafUBx8MYpcp8pfaoSA== + version "2.16.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.16.0.tgz#d0c0135a8fdb915f670802ddd7c1ba457c1b4f9d" + integrity sha512-+w8dMaYETM9v6il1yYYkApMSiwgnqXWJbXrA94LAWN603vXHACsZTirJduyeBOJjA9wT6xuXe5zZ1iCUzoxCfw== dependencies: "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.14.0" - "@typescript-eslint/typescript-estree" "2.14.0" + "@typescript-eslint/experimental-utils" "2.16.0" + "@typescript-eslint/typescript-estree" "2.16.0" eslint-visitor-keys "^1.1.0" -"@typescript-eslint/typescript-estree@2.14.0": - version "2.14.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.14.0.tgz#c67698acdc14547f095eeefe908958d93e1a648d" - integrity sha512-pnLpUcMNG7GfFFfNQbEX6f1aPa5fMnH2G9By+A1yovYI4VIOK2DzkaRuUlIkbagpAcrxQHLqovI1YWqEcXyRnA== +"@typescript-eslint/typescript-estree@2.16.0": + version "2.16.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.16.0.tgz#b444943a76c716ed32abd08cbe96172d2ca0ab75" + integrity sha512-hyrCYjFHISos68Bk5KjUAXw0pP/455qq9nxqB1KkT67Pxjcfw+r6Yhcmqnp8etFL45UexCHUMrADHH7dI/m2WQ== dependencies: debug "^4.1.1" eslint-visitor-keys "^1.1.0" glob "^7.1.6" is-glob "^4.0.1" - lodash.unescape "4.0.1" + lodash "^4.17.15" semver "^6.3.0" tsutils "^3.17.1" @@ -2360,9 +1877,9 @@ integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== abab@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.2.tgz#a2fba1b122c69a85caa02d10f9270c7219709a9d" - integrity sha512-2scffjvioEmNz0OyDSLGWDfKCVwaKc6l9Pm9kOIREU13ClXZvHpg/nRL5xyjSSSLhOnXqft2HpsAzNEEA8cFFg== + version "2.0.3" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" + integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== abbrev@1: version "1.1.1" @@ -2400,12 +1917,7 @@ acorn@^5.5.3: resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== -acorn@^6.0.1, acorn@^6.0.4, acorn@^6.0.7: - version "6.3.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.3.0.tgz#0087509119ffa4fc0a0041d1e93a417e68cb856e" - integrity sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA== - -acorn@^6.2.1: +acorn@^6.0.1, acorn@^6.0.4, acorn@^6.0.7, acorn@^6.2.1: version "6.4.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.0.tgz#b659d2ffbafa24baf5db1cdbb2c94a983ecd2784" integrity sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw== @@ -2591,13 +2103,14 @@ array-flatten@^2.1.0: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== -array-includes@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" - integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0= +array-includes@^3.0.3, array-includes@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" + integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== dependencies: - define-properties "^1.1.2" - es-abstract "^1.7.0" + define-properties "^1.1.3" + es-abstract "^1.17.0" + is-string "^1.0.5" array-union@^1.0.1: version "1.0.2" @@ -2616,6 +2129,14 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= +array.prototype.flat@^1.2.1: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" + integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -2714,22 +2235,22 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= -atob@^2.1.1, atob@^2.1.2: +atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== autoprefixer@^9.6.1: - version "9.7.3" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.3.tgz#fd42ed03f53de9beb4ca0d61fb4f7268a9bb50b4" - integrity sha512-8T5Y1C5Iyj6PgkPSFd0ODvK9DIleuPKUPYniNxybS47g2k2wFgLZ46lGQHlBuGKIAEV8fbCDfKCCRS1tvOgc3Q== + version "9.7.4" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.4.tgz#f8bf3e06707d047f0641d87aee8cfb174b2a5378" + integrity sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g== dependencies: - browserslist "^4.8.0" - caniuse-lite "^1.0.30001012" + browserslist "^4.8.3" + caniuse-lite "^1.0.30001020" chalk "^2.4.2" normalize-range "^0.1.2" num2fraction "^1.2.2" - postcss "^7.0.23" + postcss "^7.0.26" postcss-value-parser "^4.0.2" aws-sign2@~0.7.0: @@ -2738,16 +2259,17 @@ aws-sign2@~0.7.0: integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= aws4@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" - integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== + version "1.9.1" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" + integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== axobject-query@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.0.2.tgz#ea187abe5b9002b377f925d8bf7d1c561adf38f9" - integrity sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww== + version "2.1.1" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.1.1.tgz#2a3b1271ec722d48a4cd4b3fcc20c853326a49a7" + integrity sha512-lF98xa/yvy6j3fBHAgQXIYl+J4eZadOSqsPojemUqClzNbBV38wWGpUbQbVEyf4eUF5yF7eHmGgGA2JiHyjeqw== dependencies: - ast-types-flow "0.0.7" + "@babel/runtime" "^7.7.4" + "@babel/runtime-corejs3" "^7.7.4" babel-code-frame@^6.22.0: version "6.26.0" @@ -2984,6 +2506,13 @@ binary-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + block-stream@*: version "0.0.9" resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" @@ -2992,9 +2521,9 @@ block-stream@*: inherits "~2.0.0" bluebird@^3.5.5: - version "3.7.1" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.1.tgz#df70e302b471d7473489acf26a93d63b53f874de" - integrity sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg== + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: version "4.11.8" @@ -3143,23 +2672,14 @@ browserslist@4.7.0: electron-to-chromium "^1.3.247" node-releases "^1.1.29" -browserslist@^4.0.0, browserslist@^4.5.2, browserslist@^4.6.0, browserslist@^4.7.1: - version "4.7.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.7.1.tgz#bd400d1aea56538580e8c4d5f1c54ac11b5ab468" - integrity sha512-QtULFqKIAtiyNx7NhZ/p4rB8m3xDozVo/pi5VgTlADLF2tNigz/QH+v0m5qhn7XfHT7u+607NcCNOnC0HZAlMg== - dependencies: - caniuse-lite "^1.0.30000999" - electron-to-chromium "^1.3.284" - node-releases "^1.1.36" - -browserslist@^4.1.1, browserslist@^4.6.4, browserslist@^4.8.0, browserslist@^4.8.2: - version "4.8.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.2.tgz#b45720ad5fbc8713b7253c20766f701c9a694289" - integrity sha512-+M4oeaTplPm/f1pXDw84YohEv7B1i/2Aisei8s4s6k3QsoSHa7i5sz8u/cGQkkatCPxMASKxPualR4wwYgVboA== +browserslist@^4.0.0, browserslist@^4.1.1, browserslist@^4.5.2, browserslist@^4.6.0, browserslist@^4.6.4, browserslist@^4.8.2, browserslist@^4.8.3: + version "4.8.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.3.tgz#65802fcd77177c878e015f0e3189f2c4f627ba44" + integrity sha512-iU43cMMknxG1ClEZ2MDKeonKE1CCrFVkQK2AqO2YWFmvIrx4JWrvQ4w4hQez6EpVI8rHTtqh/ruHHDHSOKxvUg== dependencies: - caniuse-lite "^1.0.30001015" + caniuse-lite "^1.0.30001017" electron-to-chromium "^1.3.322" - node-releases "^1.1.42" + node-releases "^1.1.44" bs58@4.0.1, bs58@^4.0.1: version "4.0.1" @@ -3168,7 +2688,7 @@ bs58@4.0.1, bs58@^4.0.1: dependencies: base-x "^3.0.2" -bser@^2.0.0: +bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== @@ -3191,9 +2711,9 @@ buffer-xor@^1.0.3: integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= buffer@^4.3.0: - version "4.9.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" - integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== dependencies: base64-js "^1.0.2" ieee754 "^1.1.4" @@ -3342,15 +2862,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000999: - version "1.0.30001002" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001002.tgz#ba999a737b1abd5bf0fd47efe43a09b9cadbe9b0" - integrity sha512-pRuxPE8wdrWmVPKcDmJJiGBxr6lFJq4ivdSeo9FTmGj5Rb8NX3Mby2pARG57MXF15hYAhZ0nHV5XxT2ig4bz3g== - -caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30000989, caniuse-lite@^1.0.30001012, caniuse-lite@^1.0.30001015: - version "1.0.30001017" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001017.tgz#d3ad6ec18148b9bd991829958d9d7e562bb78cd6" - integrity sha512-EDnZyOJ6eYh6lHmCvCdHAFbfV4KJ9lSdfv4h/ppEhrU/Yudkl7jujwMZ1we6RX7DXqBfT04pVMQ4J+1wcTlsKA== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30000989, caniuse-lite@^1.0.30001017, caniuse-lite@^1.0.30001020: + version "1.0.30001021" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001021.tgz#e75ed1ef6dbadd580ac7e7720bb16f07b083f254" + integrity sha512-wuMhT7/hwkgd8gldgp2jcrUjOU9RXJ4XxGumQeOsUr91l3WwmM68Cpa/ymCnWEDqakwFXhuDQbaKNHXBPgeE9g== capture-exit@^2.0.0: version "2.0.0" @@ -3608,7 +3123,7 @@ commander@2.17.x: resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== -commander@^2.11, commander@^2.11.0, commander@^2.20.0, commander@~2.20.3: +commander@^2.11, commander@^2.11.0, commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -3641,11 +3156,11 @@ compose-function@3.0.3: arity-n "^1.0.4" compressible@~2.0.16: - version "2.0.17" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1" - integrity sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw== + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== dependencies: - mime-db ">= 1.40.0 < 2" + mime-db ">= 1.43.0 < 2" compression@^1.5.2: version "1.7.4" @@ -3686,11 +3201,9 @@ connect-history-api-fallback@^1.3.0: integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== console-browserify@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" - integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA= - dependencies: - date-now "^0.1.4" + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" @@ -3719,7 +3232,7 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -convert-source-map@1.6.0, convert-source-map@^1.1.0, convert-source-map@^1.4.0: +convert-source-map@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== @@ -3731,7 +3244,7 @@ convert-source-map@^0.3.3: resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= -convert-source-map@^1.7.0: +convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== @@ -3765,36 +3278,28 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js-compat@^3.0.0, core-js-compat@^3.1.1: - version "3.3.3" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.3.3.tgz#82642808cf484a35292b2f8e83ef9376884e760f" - integrity sha512-GNZkENsx5pMnS7Inwv7ZO/s3B68a9WU5kIjxqrD/tkNR8mtfXJRk8fAKRlbvWZSGPc59/TkiOBDYl5Cb65pTVA== - dependencies: - browserslist "^4.7.1" - semver "^6.3.0" - -core-js-compat@^3.6.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.1.tgz#39638c935c83c93a793abb628b252ec43e85783a" - integrity sha512-2Tl1EuxZo94QS2VeH28Ebf5g3xbPZG/hj/N5HDDy4XMP/ImR0JIer/nggQRiMN91Q54JVkGbytf42wO29oXVHg== +core-js-compat@^3.0.0, core-js-compat@^3.1.1, core-js-compat@^3.6.2: + version "3.6.4" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.4.tgz#938476569ebb6cda80d339bcf199fae4f16fff17" + integrity sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA== dependencies: - browserslist "^4.8.2" + browserslist "^4.8.3" semver "7.0.0" -core-js@^2.4.0: - version "2.6.10" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.10.tgz#8a5b8391f8cc7013da703411ce5b585706300d7f" - integrity sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA== +core-js-pure@^3.0.0: + version "3.6.4" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.4.tgz#4bf1ba866e25814f149d4e9aaa08c36173506e3a" + integrity sha512-epIhRLkXdgv32xIUFaaAry2wdxZYBi6bgM7cB136dzzXXa+dFyRLTZeLUJxnd8ShrmyVXBub63n2NHo2JAt8Cw== -core-js@^3.0.0: - version "3.3.3" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.3.3.tgz#b7048d3c6c1a52b5fe55a729c1d4ccdffe0891bb" - integrity sha512-0xmD4vUJRY8nfLyV9zcpC17FtSie5STXzw+HyYw2t8IIvmDnbq7RJUULECCo+NstpJtwK9kx8S+898iyqgeUow== +core-js@^2.4.0: + version "2.6.11" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" + integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== -core-js@^3.4.1: - version "3.6.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.1.tgz#39d5e2e346258cc01eb7d44345b1c3c014ca3f05" - integrity sha512-186WjSik2iTGfDjfdCZAxv2ormxtKgemjC3SI6PL31qOA0j5LhTDVjHChccoc7brwLvpvLPiMyRlcO88C4l1QQ== +core-js@^3.0.0, core-js@^3.4.1: + version "3.6.4" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.4.tgz#440a83536b458114b9cb2ac1580ba377dc470647" + integrity sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" @@ -3962,12 +3467,12 @@ css-select@^1.1.0: nth-check "~1.0.1" css-select@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.0.2.tgz#ab4386cec9e1f668855564b17c3733b43b2a5ede" - integrity sha512-dSpYaDVoWaELjvZ3mS6IKZM/y2PMPa/XYoEfYNZePL4U/XgyxZNroHEHReDx/d+VgXh9VbCTtFqLkFbmeqeaRQ== + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== dependencies: boolbase "^1.0.0" - css-what "^2.1.2" + css-what "^3.2.1" domutils "^1.7.0" nth-check "^1.0.2" @@ -3980,32 +3485,29 @@ css-to-react-native@^2.2.2: css-color-keywords "^1.0.0" postcss-value-parser "^3.3.0" -css-tree@1.0.0-alpha.29: - version "1.0.0-alpha.29" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.29.tgz#3fa9d4ef3142cbd1c301e7664c1f352bd82f5a39" - integrity sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg== - dependencies: - mdn-data "~1.1.0" - source-map "^0.5.3" - -css-tree@1.0.0-alpha.33: - version "1.0.0-alpha.33" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.33.tgz#970e20e5a91f7a378ddd0fc58d0b6c8d4f3be93e" - integrity sha512-SPt57bh5nQnpsTBsx/IXbO14sRc9xXu5MtMAVuo0BaQQmyf0NupNPPSoMaqiAF5tDFafYsTkfeH4Q/HCKXkg4w== +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== dependencies: mdn-data "2.0.4" - source-map "^0.5.3" + source-map "^0.6.1" css-unit-converter@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.1.tgz#d9b9281adcfd8ced935bdbaba83786897f64e996" integrity sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY= -css-what@2.1, css-what@^2.1.2: +css-what@2.1: version "2.1.3" resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== +css-what@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.2.1.tgz#f4a8f12421064621b456755e34a03a2c22df5da1" + integrity sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw== + css@^2.0.0: version "2.2.4" resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" @@ -4099,12 +3601,12 @@ cssnano@^4.1.10: is-resolvable "^1.0.0" postcss "^7.0.0" -csso@^3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/csso/-/csso-3.5.1.tgz#7b9eb8be61628973c1b261e169d2f024008e758b" - integrity sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg== +csso@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.0.2.tgz#e5f81ab3a56b8eefb7f0092ce7279329f454de3d" + integrity sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg== dependencies: - css-tree "1.0.0-alpha.29" + css-tree "1.0.0-alpha.37" cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0", cssom@^0.3.4: version "0.3.8" @@ -4164,12 +3666,7 @@ data-urls@^1.0.0, data-urls@^1.1.0: whatwg-mimetype "^2.2.0" whatwg-url "^7.0.0" -date-now@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" - integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.8, debug@^2.6.9: +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -4208,9 +3705,9 @@ decode-uri-component@^0.2.0: integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= deep-equal@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.0.tgz#3103cdf8ab6d32cf4a8df7865458f2b8d33f3745" - integrity sha512-ZbfWJq/wN1Z273o7mUSjILYqehAktR2NVoSrOukDkU9kg2v/Uv89yU4Cvz8seJeAmtN5oqiefKq8FPuXOboqLw== + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== dependencies: is-arguments "^1.0.4" is-date-object "^1.0.1" @@ -4237,7 +3734,7 @@ default-gateway@^4.2.0: execa "^1.0.0" ip-regex "^2.1.0" -define-properties@^1.1.1, define-properties@^1.1.2, define-properties@^1.1.3: +define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== @@ -4299,9 +3796,9 @@ depd@~1.1.2: integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= des.js@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" - integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw= + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== dependencies: inherits "^2.0.1" minimalistic-assert "^1.0.0" @@ -4406,9 +3903,9 @@ dom-converter@^0.2: utila "~0.4" dom-serializer@0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.1.tgz#13650c850daffea35d8b626a4cfc4d3a17643fdb" - integrity sha512-sK3ujri04WyjwQXVoK4PU3y8ula1stq10GJZpqHIUgoGZdsGzAGu65BnU3d08aTVSvO7mGPZUc0wTEDL+qGE0Q== + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== dependencies: domelementtype "^2.0.1" entities "^2.0.0" @@ -4517,19 +4014,27 @@ ee-first@1.1.1: integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= electron-to-chromium@^1.3.247, electron-to-chromium@^1.3.322: - version "1.3.322" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.322.tgz#a6f7e1c79025c2b05838e8e344f6e89eb83213a8" - integrity sha512-Tc8JQEfGQ1MzfSzI/bTlSr7btJv/FFO7Yh6tanqVmIWOuNCu6/D1MilIEgLtmWqIrsv+o4IjpLAhgMBr/ncNAA== + version "1.3.335" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.335.tgz#5fb6084a25cb1e2542df91e62b62e1931a602303" + integrity sha512-ngKsDGd/xr2lAZvilxTfdvfEiQKmavyXd6irlswaHnewmXoz6JgbM9FUNwgp3NFIUHHegh1F87H8f5BJ8zABxw== -electron-to-chromium@^1.3.284: - version "1.3.292" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.292.tgz#7812fc5138619342f1dd5823df6e9cbb7d2820e9" - integrity sha512-hqkem5ANpt6mxVXmhAmlbdG8iicuyM/jEYgmP1tiHPeOLyZoTyGUzrDmJS/xyrrZy9frkW1uQcubicu7f6DS5g== +elliptic@6.5.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.0.tgz#2b8ed4c891b7de3200e14412a5b8248c7af505ca" + integrity sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg== + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" elliptic@^6.0.0, elliptic@^6.5.1: - version "6.5.1" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.1.tgz#c380f5f909bf1b9b4428d028cd18d3b0efd6b52b" - integrity sha512-xvJINNLbTeWQjrl6X+7eQCrIy/YPv5XCpKW6kB5mKvtnGILoLDcySuwomfdzt0BMdLNVnuRNTuzKNHj0bva1Cg== + version "6.5.2" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" + integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== dependencies: bn.js "^4.4.0" brorand "^1.0.1" @@ -4623,21 +4128,14 @@ eosjs-window-message-signature-provider-interface@0.1.3: dependencies: eosjs-signature-provider-interface "0.1.2" -eosjs@20.0.0: - version "20.0.0" - resolved "https://registry.yarnpkg.com/eosjs/-/eosjs-20.0.0.tgz#43940abfe15cd191ce4027d60294036e914613e9" - integrity sha512-Ak9CPtZgCFayUmq43X3Nsn4v67lkLfSzEdTUfMk1XAWA5s4HRn7lBTeTeDCzJ/rggi+dZ170VeJwc5T3gPk4HQ== - dependencies: - babel-runtime "6.26.0" - eosjs-ecc "4.0.4" - text-encoding "0.7.0" - -eosjs@20.0.4-7938e1a.0: - version "20.0.4-7938e1a.0" - resolved "https://registry.yarnpkg.com/eosjs/-/eosjs-20.0.4-7938e1a.0.tgz#c0f14a4b4c4106b5efb6d9e1b8f7facbdb2164c6" - integrity sha512-tQyxGaATeM1lMnVNdFfPtURR24a5WeGHk/XRH36tg3bx4xgkOKp+bXEtofwlkAt5lOOE0OTLZo4dmBHelk+uhQ== +eosjs@20.0.0, eosjs@21.0.1-rc1: + version "21.0.1-rc1" + resolved "https://registry.yarnpkg.com/eosjs/-/eosjs-21.0.1-rc1.tgz#671f38bf04cfa0786ef9fef4cab10aa5ca049cde" + integrity sha512-/6vnDdgtTO8WdL2v1psFEyMSeUOQZ3gtWkxP8SSKHp1XYla2fTbPJjHW5cM7pvGhExikL2VcAEsDKKgKo1kVLA== dependencies: + "@types/elliptic" "6.4.10" babel-runtime "6.26.0" + elliptic "6.5.0" text-encoding "0.7.0" errno@^0.1.3, errno@~0.1.7: @@ -4654,26 +4152,27 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.12.0, es-abstract@^1.15.0, es-abstract@^1.5.1, es-abstract@^1.7.0: - version "1.16.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.16.0.tgz#d3a26dc9c3283ac9750dca569586e976d9dcc06d" - integrity sha512-xdQnfykZ9JMEiasTAJZJdMWCQ1Vm00NBw79/AWi7ELfZuuPCSOMDZbT9mkOfSctVtfhb+sAAzrm+j//GjjLHLg== +es-abstract@^1.12.0, es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2: + version "1.17.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.2.tgz#965b10af56597b631da15872c17a405e86c1fd46" + integrity sha512-YoKuru3Lyoy7yVTBSH2j7UxTqe/je3dWAruC0sHvZX1GNd5zX8SSLvQqEgO9b3Ex8IW+goFI9arEEsFIbulhOw== dependencies: - es-to-primitive "^1.2.0" + es-to-primitive "^1.2.1" function-bind "^1.1.1" has "^1.0.3" - has-symbols "^1.0.0" - is-callable "^1.1.4" - is-regex "^1.0.4" - object-inspect "^1.6.0" + has-symbols "^1.0.1" + is-callable "^1.1.5" + is-regex "^1.0.5" + object-inspect "^1.7.0" object-keys "^1.1.1" - string.prototype.trimleft "^2.1.0" - string.prototype.trimright "^2.1.0" + object.assign "^4.1.0" + string.prototype.trimleft "^2.1.1" + string.prototype.trimright "^2.1.1" -es-to-primitive@^1.1.1, es-to-primitive@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" - integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== +es-to-primitive@^1.1.1, es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== dependencies: is-callable "^1.1.4" is-date-object "^1.0.1" @@ -4726,9 +4225,9 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1 integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= escodegen@^1.11.0, escodegen@^1.9.1: - version "1.12.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.12.0.tgz#f763daf840af172bb3a2b6dd7219c0e17f7ff541" - integrity sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg== + version "1.12.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.12.1.tgz#08770602a74ac34c7a90ca9229e7d51e379abc76" + integrity sha512-Q8t2YZ+0e0pc7NRVj3B4tSQ9rim1oi4Fh46k2xhJ2qOiEwhQfdjyEQddWdj7ZFaKmU+5104vn1qrcjEPWq+bgQ== dependencies: esprima "^3.1.3" estraverse "^4.2.0" @@ -4763,12 +4262,12 @@ eslint-config-react-app@^5.0.2: confusing-browser-globals "^1.0.9" eslint-import-resolver-node@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" - integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q== + version "0.3.3" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz#dbaa52b6b2816b50bc6711af75422de808e98404" + integrity sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg== dependencies: debug "^2.6.9" - resolve "^1.5.0" + resolve "^1.13.1" eslint-loader@3.0.2: version "3.0.2" @@ -4781,12 +4280,12 @@ eslint-loader@3.0.2: object-hash "^1.3.1" schema-utils "^2.2.0" -eslint-module-utils@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.4.1.tgz#7b4675875bf96b0dbf1b21977456e5bb1f5e018c" - integrity sha512-H6DOj+ejw7Tesdgbfs4jeS4YMFrT8uI8xwd1gtQqXssaR0EQ26L+2O/w6wkYFy2MymON0fTwHmXBvvfLNZVZEw== +eslint-module-utils@^2.4.0, eslint-module-utils@^2.4.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.5.2.tgz#7878f7504824e1b857dd2505b59a8e5eda26a708" + integrity sha512-LGScZ/JSlqGKiT8OC+cYRxseMjyqt6QO54nl281CK93unD89ijSeRV6An8Ci/2nvWVKe8K/Tqdm75RQoIOCr+Q== dependencies: - debug "^2.6.8" + debug "^2.6.9" pkg-dir "^2.0.0" eslint-plugin-flowtype@3.13.0: @@ -4796,7 +4295,7 @@ eslint-plugin-flowtype@3.13.0: dependencies: lodash "^4.17.15" -eslint-plugin-import@2.18.2, eslint-plugin-import@^2.14.0: +eslint-plugin-import@2.18.2: version "2.18.2" resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz#02f1180b90b077b33d447a17a2326ceb400aceb6" integrity sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ== @@ -4813,6 +4312,24 @@ eslint-plugin-import@2.18.2, eslint-plugin-import@^2.14.0: read-pkg-up "^2.0.0" resolve "^1.11.0" +eslint-plugin-import@^2.14.0: + version "2.20.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.20.0.tgz#d749a7263fb6c29980def8e960d380a6aa6aecaa" + integrity sha512-NK42oA0mUc8Ngn4kONOPsPB1XhbUvNHqF+g307dPV28aknPoiNnKLFd9em4nkswwepdF5ouieqv5Th/63U7YJQ== + dependencies: + array-includes "^3.0.3" + array.prototype.flat "^1.2.1" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.2" + eslint-module-utils "^2.4.1" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.0" + read-pkg-up "^2.0.0" + resolve "^1.12.0" + eslint-plugin-jsx-a11y@6.2.3, eslint-plugin-jsx-a11y@^6.1.2: version "6.2.3" resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz#b872a09d5de51af70a97db1eea7dc933043708aa" @@ -4854,19 +4371,19 @@ eslint-plugin-react@7.14.3: resolve "^1.10.1" eslint-plugin-react@^7.11.1: - version "7.16.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.16.0.tgz#9928e4f3e2122ed3ba6a5b56d0303ba3e41d8c09" - integrity sha512-GacBAATewhhptbK3/vTP09CbFrgUJmBSaaRcWdbQLFvUZy9yVcQxigBNHGPU/KE2AyHpzj3AWXpxoMTsIDiHug== + version "7.18.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.18.0.tgz#2317831284d005b30aff8afb7c4e906f13fa8e7e" + integrity sha512-p+PGoGeV4SaZRDsXqdj9OWcOrOpZn8gXoGPcIQTzo2IDMbAKhNDnME9myZWqO3Ic4R3YmwAZ1lDjWl2R2hMUVQ== dependencies: - array-includes "^3.0.3" + array-includes "^3.1.1" doctrine "^2.1.0" has "^1.0.3" - jsx-ast-utils "^2.2.1" - object.entries "^1.1.0" - object.fromentries "^2.0.0" - object.values "^1.1.0" + jsx-ast-utils "^2.2.3" + object.entries "^1.1.1" + object.fromentries "^2.0.2" + object.values "^1.1.1" prop-types "^15.7.2" - resolve "^1.12.0" + resolve "^1.14.2" eslint-restricted-globals@^0.1.1: version "0.1.1" @@ -5049,9 +4566,9 @@ eventemitter3@^4.0.0: integrity sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg== events@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" - integrity sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA== + version "3.1.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59" + integrity sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg== eventsource@^1.0.7: version "1.0.7" @@ -5069,9 +4586,9 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: safe-buffer "^5.1.1" exec-sh@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.2.tgz#6738de2eb7c8e671d0366aea0b0db8c6f7d7391b" - integrity sha512-9sLAvzhI5nc8TpuQUh4ahMdCrWT00wPWz7j47/emR5+2qEfoZP5zzUXvx+vdx+H6ohhnsYC31iX04QLYJK8zTg== + version "0.3.4" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" + integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== execa@^1.0.0: version "1.0.0" @@ -5116,7 +4633,7 @@ expect@^24.9.0: jest-message-util "^24.9.0" jest-regex-util "^24.9.0" -express@^4.16.2, express@^4.17.1: +express@4.17.1, express@^4.16.2: version "4.17.1" resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== @@ -5230,11 +4747,11 @@ fast-glob@^2.0.2: micromatch "^3.1.10" fast-json-stable-stringify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" - integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@~2.0.4, fast-levenshtein@~2.0.6: +fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -5254,11 +4771,11 @@ faye-websocket@~0.11.1: websocket-driver ">=0.5.1" fb-watchman@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58" - integrity sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg= + version "2.0.1" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== dependencies: - bser "^2.0.0" + bser "2.1.1" figgy-pudding@^3.5.1: version "3.5.1" @@ -5294,6 +4811,11 @@ file-loader@3.0.1: loader-utils "^1.0.2" schema-utils "^1.0.0" +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + filesize@3.6.1: version "3.6.1" resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" @@ -5377,9 +4899,9 @@ flatted@^2.0.0: integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg== flatten@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" - integrity sha1-2uRqnXj74lKSJYzB54CkHZXAN4I= + version "1.0.3" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" + integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== flush-write-stream@^1.0.0: version "1.1.1" @@ -5531,12 +5053,12 @@ fsevents@2.0.7: integrity sha512-a7YT0SV3RB+DjYcppwVDLtn13UQnmg0SWZS7ezZD0UjnLwXmy8Zm21GMVGLaFGimIqcvyMQaOJBrop8MyOp1kQ== fsevents@^1.2.7: - version "1.2.9" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" - integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw== + version "1.2.11" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.11.tgz#67bf57f4758f02ede88fb2a1712fef4d15358be3" + integrity sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw== dependencies: + bindings "^1.5.0" nan "^2.12.1" - node-pre-gyp "^0.12.0" fstream@^1.0.0, fstream@^1.0.12: version "1.0.12" @@ -5579,6 +5101,11 @@ gaze@^1.0.0: dependencies: globule "^1.0.0" +gensync@^1.0.0-beta.1: + version "1.0.0-beta.1" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" + integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + get-caller-file@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" @@ -5590,9 +5117,9 @@ get-caller-file@^2.0.1: integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== get-own-enumerable-property-symbols@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.1.tgz#6f7764f88ea11e0b514bd9bd860a132259992ca4" - integrity sha512-09/VS4iek66Dh2bctjRkowueRJbY1JDGR1L/zRxO1Qk8Uxs6PnqaNSqalpizPT+CDjre3hnEsuzvhgomz9qYrA== + version "3.0.2" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== get-random-values@^1.2.0: version "1.2.0" @@ -5645,19 +5172,7 @@ glob-to-regexp@^0.3.0: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= -glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@~7.1.1: - version "7.1.5" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.5.tgz#6714c69bee20f3c3e64c4dd905553e532b40cdc0" - integrity sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.1.6: +glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@~7.1.1: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -5730,20 +5245,15 @@ globby@^6.1.0: pinkie-promise "^2.0.0" globule@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.1.tgz#5dffb1b191f22d20797a9369b49eab4e9839696d" - integrity sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ== + version "1.3.0" + resolved "https://registry.yarnpkg.com/globule/-/globule-1.3.0.tgz#41d0e9fb44afd4b80d93a23263714f90b3dec904" + integrity sha512-YlD4kdMqRCQHrhVdonet4TdRtv1/sZKepvoxNT4Nrhrp5HI8XFfc8kFlGlBn2myBo80aGp8Eft259mbcUJhgSg== dependencies: glob "~7.1.1" lodash "~4.17.10" minimatch "~3.0.2" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6: - version "4.2.2" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" - integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== - -graceful-fs@^4.2.0: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: version "4.2.3" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== @@ -5766,17 +5276,6 @@ handle-thing@^2.0.0: resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== -handlebars@^4.1.2: - version "4.5.3" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.5.3.tgz#5cf75bd8714f7605713511a56be7c349becb0482" - integrity sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA== - dependencies: - neo-async "^2.6.0" - optimist "^0.6.1" - source-map "^0.6.1" - optionalDependencies: - uglify-js "^3.1.4" - har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" @@ -5807,10 +5306,10 @@ has-flag@^3.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= -has-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" - integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= +has-symbols@^1.0.0, has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== has-unicode@^2.0.0: version "2.0.1" @@ -5848,7 +5347,7 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has@^1.0.0, has@^1.0.1, has@^1.0.3: +has@^1.0.0, has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== @@ -5932,6 +5431,11 @@ html-entities@^1.2.0: resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= +html-escaper@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.0.tgz#71e87f931de3fe09e56661ab9a29aadec707b491" + integrity sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig== + html-minifier@^3.5.20: version "3.5.21" resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" @@ -6127,15 +5631,7 @@ import-fresh@^2.0.0: caller-path "^2.0.0" resolve-from "^3.0.0" -import-fresh@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.1.0.tgz#6d33fa1dcef6df930fae003446f33415af905118" - integrity sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-fresh@^3.1.0: +import-fresh@^3.0.0, import-fresh@^3.1.0: version "3.2.1" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== @@ -6252,9 +5748,9 @@ inquirer@^6.2.2: through "^2.3.6" inquirer@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.1.tgz#13f7980eedc73c689feff3994b109c4e799c6ebb" - integrity sha512-V1FFQ3TIO15det8PijPLFR9M9baSlnRs9nL7zWu1MNVA2T9YVl9ZbrHJhYs7e9X8jeMZ3lr2JH/rdHFgNCBdYw== + version "7.0.3" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.3.tgz#f9b4cd2dff58b9f73e8d43759436ace15bed4567" + integrity sha512-+OiOVeVydu4hnCGLCSX+wedovR/Yzskv9BFqUNNKq9uU2qg7LCcCo3R86S2E7WLo0y/x2pnEZfZe1CoYnORUAw== dependencies: ansi-escapes "^4.2.1" chalk "^2.4.2" @@ -6361,10 +5857,10 @@ is-buffer@^1.0.2, is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-callable@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" - integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== +is-callable@^1.1.4, is-callable@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" + integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== is-ci@^2.0.0: version "2.0.0" @@ -6400,9 +5896,9 @@ is-data-descriptor@^1.0.0: kind-of "^6.0.0" is-date-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" - integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== is-descriptor@^0.1.0: version "0.1.6" @@ -6493,11 +5989,11 @@ is-glob@^4.0.0, is-glob@^4.0.1: is-extglob "^2.1.1" is-nan@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.2.1.tgz#9faf65b6fb6db24b7f5c0628475ea71f988401e2" - integrity sha1-n69ltvttskt/XAYoR16nH5iEAeI= + version "1.3.0" + resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.0.tgz#85d1f5482f7051c2019f5673ccebdb06f3b0db03" + integrity sha512-z7bbREymOqt2CCaZVly8aC4ML3Xhfi0ekuOnjO2L8vKdl+CttdVoGZQhd4adMFAsxQ5VeRVwORs4tU8RH+HFtQ== dependencies: - define-properties "^1.1.1" + define-properties "^1.1.3" is-number@^3.0.0: version "3.0.0" @@ -6547,12 +6043,12 @@ is-promise@^2.1.0: resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= -is-regex@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= +is-regex@^1.0.4, is-regex@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" + integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== dependencies: - has "^1.0.1" + has "^1.0.3" is-regexp@^1.0.0: version "1.0.0" @@ -6574,6 +6070,11 @@ is-stream@^1.1.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + is-svg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" @@ -6582,11 +6083,11 @@ is-svg@^3.0.0: html-comment-regex "^1.1.0" is-symbol@^1.0.1, is-symbol@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" - integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== dependencies: - has-symbols "^1.0.0" + has-symbols "^1.0.1" is-typedarray@~1.0.0: version "1.0.0" @@ -6679,11 +6180,11 @@ istanbul-lib-source-maps@^3.0.1: source-map "^0.6.1" istanbul-reports@^2.2.6: - version "2.2.6" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.6.tgz#7b4f2660d82b29303a8fe6091f8ca4bf058da1af" - integrity sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA== + version "2.2.7" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.7.tgz#5d939f6237d7b48393cc0959eab40cd4fd056931" + integrity sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg== dependencies: - handlebars "^4.1.2" + html-escaper "^2.0.0" jest-changed-files@^24.9.0: version "24.9.0" @@ -7247,7 +6748,7 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -jsx-ast-utils@^2.1.0: +jsx-ast-utils@^2.1.0, jsx-ast-utils@^2.2.1, jsx-ast-utils@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz#8a9364e402448a3ce7f14d357738310d9248054f" integrity sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA== @@ -7255,14 +6756,6 @@ jsx-ast-utils@^2.1.0: array-includes "^3.0.3" object.assign "^4.1.0" -jsx-ast-utils@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.1.tgz#4d4973ebf8b9d2837ee91a8208cc66f3a2776cfb" - integrity sha512-v3FxCcAf20DayI+uxnCuw795+oOIkVu6EnJ1+kSzhqqTZHNkTZ7B66ZgLp4oLJ/gbA64cI0B7WRoHZMSRdyVRQ== - dependencies: - array-includes "^3.0.3" - object.assign "^4.1.0" - killable@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" @@ -7295,9 +6788,9 @@ kind-of@^5.0.0: integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" - integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== kleur@^3.0.3: version "3.0.3" @@ -7346,6 +6839,13 @@ leven@^3.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== +levenary@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.0.tgz#fc146fe75f32dc483a0a2c64aef720f602cd6210" + integrity sha512-VHcwhO0UTpUW7rLPN2/OiWJdgA1e9BqEDALhrgCe/F+uUJnep6CoUsTzMeP8Rh0NGr9uKquXxqe7lwLZo509nQ== + dependencies: + leven "^3.1.0" + levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -7458,11 +6958,6 @@ lodash.templatesettings@^4.0.0: dependencies: lodash._reinterpolate "^3.0.0" -lodash.unescape@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" - integrity sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw= - lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" @@ -7576,11 +7071,6 @@ mdn-data@2.0.4: resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== -mdn-data@~1.1.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.1.4.tgz#50b5d4ffc4575276573c4eedb8780812a8419f01" - integrity sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA== - media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -7693,22 +7183,17 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@1.40.0: - version "1.40.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" - integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== - -"mime-db@>= 1.40.0 < 2": - version "1.42.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.42.0.tgz#3e252907b4c7adb906597b4b65636272cf9e7bac" - integrity sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ== +mime-db@1.43.0, "mime-db@>= 1.43.0 < 2": + version "1.43.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" + integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: - version "2.1.24" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" - integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ== + version "2.1.26" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" + integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== dependencies: - mime-db "1.40.0" + mime-db "1.43.0" mime@1.6.0: version "1.6.0" @@ -7774,11 +7259,6 @@ minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= - minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" @@ -7924,7 +7404,7 @@ negotiator@0.6.2: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1: +neo-async@^2.5.0, neo-async@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== @@ -8019,10 +7499,10 @@ node-notifier@^5.4.2: shellwords "^0.1.1" which "^1.3.0" -node-pre-gyp@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" - integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A== +node-pre-gyp@*: + version "0.14.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" + integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== dependencies: detect-libc "^1.0.2" mkdirp "^0.5.1" @@ -8033,26 +7513,19 @@ node-pre-gyp@^0.12.0: rc "^1.2.7" rimraf "^2.6.1" semver "^5.3.0" - tar "^4" - -node-releases@^1.1.29, node-releases@^1.1.42: - version "1.1.44" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.44.tgz#cd66438a6eb875e3eb012b6a12e48d9f4326ffd7" - integrity sha512-NwbdvJyR7nrcGrXvKAvzc5raj/NkoJudkarh2yIpJ4t0NH4aqjUDz/486P+ynIW5eokKOfzGNRdYoLfBlomruw== - dependencies: - semver "^6.3.0" + tar "^4.4.2" -node-releases@^1.1.36: - version "1.1.38" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.38.tgz#d81b365df2936654ba37f509ba2fbe91eff2578b" - integrity sha512-/5NZAaOyTj134Oy5Cp/J8mso8OD/D9CSuL+6TOXXsTKO8yjc5e4up75SRPCganCjwFKMj2jbp5tR0dViVdox7g== +node-releases@^1.1.29, node-releases@^1.1.44: + version "1.1.45" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.45.tgz#4cf7e9175d71b1317f15ffd68ce63bce1d53e9f2" + integrity sha512-cXvGSfhITKI8qsV116u2FTzH5EWZJfgG7d4cpqwF8I8+1tWpD6AsvvGRKq2onR0DNj1jfqsjkXZsm14JMS7Cyg== dependencies: semver "^6.3.0" node-sass@^4.10.0: - version "4.12.0" - resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.12.0.tgz#0914f531932380114a30cc5fa4fa63233a25f017" - integrity sha512-A1Iv4oN+Iel6EPv77/HddXErL2a+gZ4uBeZUy+a8O35CFYTXhgA8MgLCWBtwpGZdCvTvQ9d+bQxX/QC36GDPpQ== + version "4.13.1" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.13.1.tgz#9db5689696bb2eec2c32b98bfea4c7a2e992d0a3" + integrity sha512-TTWFx+ZhyDx1Biiez2nB0L3YrCZ/8oHagaDalbuBSlqXgUPsdkUSzJsVxeDO9LtPB49+Fh3WQl3slABo6AotNw== dependencies: async-foreach "^0.1.3" chalk "^1.1.1" @@ -8061,7 +7534,7 @@ node-sass@^4.10.0: get-stdin "^4.0.1" glob "^7.0.3" in-publish "^2.0.0" - lodash "^4.17.11" + lodash "^4.17.15" meow "^3.7.0" mkdirp "^0.5.1" nan "^2.13.2" @@ -8135,14 +7608,21 @@ normalize-url@^3.0.0: integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== npm-bundled@^1.0.1: - version "1.0.6" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" - integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== + version "1.1.1" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" + integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== + dependencies: + npm-normalize-package-bin "^1.0.1" + +npm-normalize-package-bin@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" + integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== npm-packlist@^1.1.6: - version "1.4.6" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.6.tgz#53ba3ed11f8523079f1457376dd379ee4ea42ff4" - integrity sha512-u65uQdb+qwtGvEJh/DgQgW1Xg7sqeNbmxYyrvlNznaVTjV3E5P6F/EFjM+BVHXl7JJlsdG8A64M0XI8FI/IOlg== + version "1.4.7" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.7.tgz#9e954365a06b80b18111ea900945af4f88ed4848" + integrity sha512-vAj7dIkp5NhieaGZxBJB8fF4R0078rqsmhJcAfXZ6O7JJhjhPK96n5Ry1oZcfLXgfun0GWTZPOxaEyqv8GBykQ== dependencies: ignore-walk "^3.0.1" npm-bundled "^1.0.1" @@ -8182,9 +7662,9 @@ number-is-nan@^1.0.0: integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= nwsapi@^2.0.7, nwsapi@^2.1.3: - version "2.1.4" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.1.4.tgz#e006a878db23636f8e8a67d33ca0e4edf61a842f" - integrity sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw== + version "2.2.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== oauth-sign@~0.9.0: version "0.9.0" @@ -8210,15 +7690,15 @@ object-hash@^1.3.1: resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df" integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA== -object-inspect@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b" - integrity sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ== +object-inspect@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" + integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== object-is@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6" - integrity sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY= + version "1.0.2" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.2.tgz#6b80eb84fe451498f65007982f035a5b445edec4" + integrity sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ== object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" @@ -8247,33 +7727,33 @@ object.assign@^4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" -object.entries@^1.0.4, object.entries@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.0.tgz#2024fc6d6ba246aee38bdb0ffd5cfbcf371b7519" - integrity sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA== +object.entries@^1.0.4, object.entries@^1.1.0, object.entries@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.1.tgz#ee1cf04153de02bb093fec33683900f57ce5399b" + integrity sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ== dependencies: define-properties "^1.1.3" - es-abstract "^1.12.0" + es-abstract "^1.17.0-next.1" function-bind "^1.1.1" has "^1.0.3" -object.fromentries@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.1.tgz#050f077855c7af8ae6649f45c80b16ee2d31e704" - integrity sha512-PUQv8Hbg3j2QX0IQYv3iAGCbGcu4yY4KQ92/dhA4sFSixBmSmp13UpDLs6jGK8rBtbmhNNIK99LD2k293jpiGA== +object.fromentries@^2.0.0, object.fromentries@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9" + integrity sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ== dependencies: define-properties "^1.1.3" - es-abstract "^1.15.0" + es-abstract "^1.17.0-next.1" function-bind "^1.1.1" has "^1.0.3" -object.getownpropertydescriptors@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" - integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" + integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== dependencies: - define-properties "^1.1.2" - es-abstract "^1.5.1" + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" object.pick@^1.3.0: version "1.3.0" @@ -8282,13 +7762,13 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -object.values@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9" - integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg== +object.values@^1.1.0, object.values@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" + integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== dependencies: define-properties "^1.1.3" - es-abstract "^1.12.0" + es-abstract "^1.17.0-next.1" function-bind "^1.1.1" has "^1.0.3" @@ -8344,14 +7824,6 @@ opn@^5.1.0: dependencies: is-wsl "^1.1.0" -optimist@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - optimize-css-assets-webpack-plugin@5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz#e2f1d4d94ad8c0af8967ebd7cf138dcb1ef14572" @@ -8360,19 +7832,7 @@ optimize-css-assets-webpack-plugin@5.0.3: cssnano "^4.1.10" last-call-webpack-plugin "^3.0.0" -optionator@^0.8.1, optionator@^0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" - integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.4" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - wordwrap "~1.0.0" - -optionator@^0.8.3: +optionator@^0.8.1, optionator@^0.8.2, optionator@^0.8.3: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== @@ -8460,9 +7920,9 @@ p-limit@^1.1.0: p-try "^1.0.0" p-limit@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537" - integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg== + version "2.2.2" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" + integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== dependencies: p-try "^2.0.0" @@ -8969,9 +8429,9 @@ postcss-image-set-function@^3.0.1: postcss-values-parser "^2.0.0" postcss-initial@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.1.tgz#99d319669a13d6c06ef8e70d852f68cb1b399b61" - integrity sha512-I2Sz83ZSHybMNh02xQDK609lZ1/QOyYeuizCjzEhlMgeV/HcDJapQiH4yTqLjZss0X6/6VvKFXUeObaHpJoINw== + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.2.tgz#f018563694b3c16ae8eaabe3c585ac6319637b2d" + integrity sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA== dependencies: lodash.template "^4.5.0" postcss "^7.0.2" @@ -9096,9 +8556,9 @@ postcss-modules-local-by-default@^2.0.6: postcss-value-parser "^3.3.1" postcss-modules-scope@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.1.0.tgz#ad3f5bf7856114f6fcab901b0502e2a2bc39d4eb" - integrity sha512-91Rjps0JnmtUB0cujlc8KIKCsJXWjzuxGeT/+Q2i2HXKZ7nBUeF9YQTZZTNvHVoNYj1AthsjnGLtqDUE0Op79A== + version "2.1.1" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.1.1.tgz#33d4fc946602eb5e9355c4165d68a10727689dba" + integrity sha512-OXRUPecnHCg8b9xWvldG/jUpRIGPNRka0r4D4j0ESUU2/5IOnpsjfPPmDprM3Ih8CgZ8FXjWqaniK5v4rWt3oQ== dependencies: postcss "^7.0.6" postcss-selector-parser "^6.0.0" @@ -9415,19 +8875,10 @@ postcss@7.0.14: source-map "^0.6.1" supports-color "^6.1.0" -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.5, postcss@^7.0.6: - version "7.0.18" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.18.tgz#4b9cda95ae6c069c67a4d933029eddd4838ac233" - integrity sha512-/7g1QXXgegpF+9GJj4iN7ChGF40sYuGYJ8WZu8DZWnmhQ/G36hfdk3q9LBJmoK+lZ+yzZ5KYpOoxq7LF1BxE8g== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -postcss@^7.0.23: - version "7.0.25" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.25.tgz#dd2a2a753d50b13bed7a2009b4a18ac14d9db21e" - integrity sha512-NXXVvWq9icrm/TgQC0O6YVFi4StfJz46M1iNd/h6B26Nvh/HKI+q4YZtFN/EjcInZliEscO/WL10BXnc1E5nwg== +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.26" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.26.tgz#5ed615cfcab35ba9bbb82414a4fa88ea10429587" + integrity sha512-IY4oRjpXWYshuTDFxMVkJDtWIk2LhsTlu8bZnbEJA4+bYT16Lvpo8Qv6EvDumhYRgzjZl489pmsY3qVgJQ08nA== dependencies: chalk "^2.4.2" source-map "^0.6.1" @@ -9499,9 +8950,9 @@ promise@^8.0.1, promise@^8.0.3: asap "~2.0.6" prompts@^2.0.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.2.1.tgz#f901dd2a2dfee080359c0e20059b24188d75ad35" - integrity sha512-VObPvJiWPhpZI6C5m60XOzTfnYg/xc/an+r9VYymj9WJW3B/DIH+REzjpAACPf8brwPeP+7vz3bIim3S+AaMjw== + version "2.3.0" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.0.tgz#a444e968fa4cc7e86689a74050685ac8006c4cc4" + integrity sha512-NfbbPPg/74fT7wk2XYQ7hAIp9zJyZp5Fu19iRbORqqy1BhtrkZ0fPafBU+7bmn8ie69DpT0R6QpJIN2oisYjJg== dependencies: kleur "^3.0.3" sisteransi "^1.0.3" @@ -9542,9 +8993,9 @@ pseudomap@^1.0.2: integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= psl@^1.1.24, psl@^1.1.28: - version "1.4.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.4.0.tgz#5dd26156cdb69fa1fdb8ab1991667d3f80ced7c2" - integrity sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw== + version "1.7.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c" + integrity sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ== public-encrypt@^4.0.0: version "4.0.3" @@ -9609,9 +9060,9 @@ qs@6.7.0: integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== qs@^6.5.2: - version "6.9.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.0.tgz#d1297e2a049c53119cb49cca366adbbacc80b409" - integrity sha512-27RP4UotQORTpmNQDX8BHPukOnBP3p1uUJY5UnDhaJB+rMt9iMsok724XL+UHU23bEFOHRMQ2ZhI99qOWUMGFA== + version "6.9.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.1.tgz#20082c65cb78223635ab1a9eaca8875a29bf8ec9" + integrity sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA== qs@~6.5.2: version "6.5.2" @@ -9762,9 +9213,9 @@ react-icons@3.4.0: integrity sha512-5cyYrl34KGovU/MH3YO+wN1k787vv3EKLeGDyaGOY92jSTQ/xRjkQ7iim5Ml9rgMLU1i0vszev80kWV4uRZ3Bw== react-is@^16.6.0, react-is@^16.8.1, react-is@^16.8.4: - version "16.10.2" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.10.2.tgz#984120fd4d16800e9a738208ab1fba422d23b5ab" - integrity sha512-INBT1QEgtcCCgvccr5/86CfD71fw9EPmDxgiJX4I2Ddr6ZsV6iFXsuby+qWJPtmNuMY0zByTsG4468P7nHuNWA== + version "16.12.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.12.0.tgz#2cc0fe0fba742d97fd527c42a13bec4eeb06241c" + integrity sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q== react-scripts@3.2.0: version "3.2.0" @@ -9907,9 +9358,9 @@ read-pkg@^3.0.0: path-type "^3.0.0" "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" - integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== dependencies: core-util-is "~1.0.0" inherits "~2.0.3" @@ -10002,11 +9453,12 @@ regex-parser@2.2.10: integrity sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA== regexp.prototype.flags@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz#6b30724e306a27833eeb171b66ac8890ba37e41c" - integrity sha512-ztaw4M1VqgMwl9HlPpOuiYgItcHlunW0He2fE6eNfT6E/CF2FtYi9ofOYe4mKntstYk0Fyh/rDRBdS3AnxjlrA== + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== dependencies: - define-properties "^1.1.2" + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" regexpp@^2.0.1: version "2.0.1" @@ -10036,9 +9488,9 @@ regjsgen@^0.5.0: integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== regjsparser@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c" - integrity sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ== + version "0.6.2" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.2.tgz#fd62c753991467d9d1ffe0a9f67f27a529024b96" + integrity sha512-E9ghzUtoLwDekPT0DYCp+c4h+bvuUpe6rRHCTYn6eGoqj1LgKXxT6I0Il4WbjhQkOghzi/V+y03bPKvbllL93Q== dependencies: jsesc "~0.5.0" @@ -10080,19 +9532,19 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" -request-promise-core@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.2.tgz#339f6aababcafdb31c799ff158700336301d3346" - integrity sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag== +request-promise-core@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" + integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== dependencies: - lodash "^4.17.11" + lodash "^4.17.15" request-promise-native@^1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.7.tgz#a49868a624bdea5069f1251d0a836e0d89aa2c59" - integrity sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w== + version "1.0.8" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" + integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== dependencies: - request-promise-core "1.1.2" + request-promise-core "1.1.3" stealthy-require "^1.1.1" tough-cookie "^2.3.3" @@ -10185,17 +9637,17 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@1.12.0, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1: +resolve@1.12.0: version "1.12.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== dependencies: path-parse "^1.0.6" -resolve@^1.10.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.14.1.tgz#9e018c540fcf0c427d678b9931cbf45e984bcaff" - integrity sha512-fn5Wobh4cxbLzuHaE+nphztHy43/b++4M6SsGFC2gB8uYwf0C8LcarfCz1un7UTW8OFQg9iNjZ4xpcFVGebDPg== +resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.3.2, resolve@^1.8.1: + version "1.14.2" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.14.2.tgz#dbf31d0fa98b1f29aa5169783b9c290cb865fea2" + integrity sha512-EjlOBLBO1kxsUxsKjLt7TAECyKW6fOh1VRkykQkKGzcBbjjPIxBqGh0jf7GJ3k/f5mxMqW3htMD3WdTUVtW8HQ== dependencies: path-parse "^1.0.6" @@ -10284,14 +9736,7 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" -rxjs@^6.4.0: - version "6.5.3" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.3.tgz#510e26317f4db91a7eb1de77d9dd9ba0a4899a3a" - integrity sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA== - dependencies: - tslib "^1.9.0" - -rxjs@^6.5.3: +rxjs@^6.4.0, rxjs@^6.5.3: version "6.5.4" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== @@ -10410,9 +9855,9 @@ schema-utils@^1.0.0: ajv-keywords "^3.1.0" schema-utils@^2.0.0, schema-utils@^2.0.1, schema-utils@^2.2.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.1.tgz#eb78f0b945c7bcfa2082b3565e8db3548011dc4f" - integrity sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg== + version "2.6.2" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.2.tgz#9205ec5978709b0d9edbccb9a316faf11617a017" + integrity sha512-sazKNMBX/jwrXRkOI7N6dtiTVYqzSckzol8SGuHt0lE/v3xSW6cUkOqzu6Bq2tW+dlUzq3CWIqHU3ZKauliqdg== dependencies: ajv "^6.10.2" ajv-keywords "^3.4.1" @@ -10594,9 +10039,9 @@ simple-swizzle@^0.2.2: is-arrayish "^0.3.1" sisteransi@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.3.tgz#98168d62b79e3a5e758e27ae63c4a053d748f4eb" - integrity sha512-SbEG75TzH8G7eVXFSN5f9EExILKfly7SUvVY5DhhYLvfhKqhDFY0OzevWa/zwak0RLRfWS5AvfMWpd9gJvr5Yg== + version "1.0.4" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.4.tgz#386713f1ef688c7c0304dc4c0632898941cad2e3" + integrity sha512-/ekMoM4NJ59ivGSfKapeG+FWtrmWvA1p6FBZwXrqojw90vJu8lBmrTxCMuBCydKtkaUe2zt4PlxeTKpjwMbyig== slash@^1.0.0: version "1.0.0" @@ -10696,18 +10141,7 @@ source-list-map@^2.0.0: resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== -source-map-resolve@^0.5.0: - version "0.5.2" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" - integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== - dependencies: - atob "^2.1.1" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-resolve@^0.5.2: +source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== @@ -10719,9 +10153,9 @@ source-map-resolve@^0.5.2: urix "^0.1.0" source-map-support@^0.5.6, source-map-support@^0.5.9, source-map-support@~0.5.12: - version "0.5.13" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" - integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + version "0.5.16" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" + integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -10743,7 +10177,7 @@ source-map@^0.4.2: dependencies: amdefine ">=0.0.4" -source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6: +source-map@^0.5.0, source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -10894,9 +10328,9 @@ stream-http@^2.7.2: xtend "^4.0.0" stream-shift@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" - integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== strict-uri-encode@^1.0.0: version "1.1.0" @@ -10954,18 +10388,18 @@ string-width@^4.1.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" -string.prototype.trimleft@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz#6cc47f0d7eb8d62b0f3701611715a3954591d634" - integrity sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw== +string.prototype.trimleft@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" + integrity sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag== dependencies: define-properties "^1.1.3" function-bind "^1.1.1" -string.prototype.trimright@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz#669d164be9df9b6f7559fa8e89945b168a5a6c58" - integrity sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg== +string.prototype.trimright@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9" + integrity sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g== dependencies: define-properties "^1.1.3" function-bind "^1.1.1" @@ -11127,21 +10561,21 @@ supports-color@^6.1.0: has-flag "^3.0.0" svg-parser@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.2.tgz#d134cc396fa2681dc64f518330784e98bd801ec8" - integrity sha512-1gtApepKFweigFZj3sGO8KT8LvVZK8io146EzXrpVuWCDAbISz/yMucco3hWTkpZNoPabM+dnMOpy6Swue68Zg== + version "2.0.3" + resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.3.tgz#a38f2e4e5442986f7ecb554c11f1411cfcf8c2b9" + integrity sha512-fnCWiifNhK8i2Z7b9R5tbNahpxrRdAaQbnoxKlT2KrSCj9Kq/yBSgulCRgBJRhy1dPnSY5slg5ehPUnzpEcHlg== svgo@^1.0.0, svgo@^1.2.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.0.tgz#bae51ba95ded9a33a36b7c46ce9c359ae9154313" - integrity sha512-MLfUA6O+qauLDbym+mMZgtXCGRfIxyQoeH6IKVcFslyODEe/ElJNwr0FohQ3xG4C6HK6bk3KYPPXwHVJk3V5NQ== + version "1.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== dependencies: chalk "^2.4.1" coa "^2.0.2" css-select "^2.0.0" css-select-base-adapter "^0.1.1" - css-tree "1.0.0-alpha.33" - csso "^3.5.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" js-yaml "^3.13.1" mkdirp "~0.5.1" object.values "^1.1.0" @@ -11179,7 +10613,7 @@ tar@^2.0.0: fstream "^1.0.12" inherits "2" -tar@^4: +tar@^4.4.2: version "4.4.13" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== @@ -11223,9 +10657,9 @@ terser-webpack-plugin@^1.4.1: worker-farm "^1.7.0" terser@^4.1.2: - version "4.3.9" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.3.9.tgz#e4be37f80553d02645668727777687dad26bbca8" - integrity sha512-NFGMpHjlzmyOtPL+fDw3G7+6Ueh/sz4mkaUYa4lJCxOPTNzd0Uj0aZJOmsDYoSQyfuVoWDMSWTPU3huyOm2zdA== + version "4.6.3" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.3.tgz#e33aa42461ced5238d352d2df2a67f21921f8d87" + integrity sha512-Lw+ieAXmY69d09IIc/yqeBqXpEQIpDGZqT34ui1QWXIUpR2RjbqEkT8X7Lgex19hslSqcWM5iMN2kM11eMsESQ== dependencies: commander "^2.20.0" source-map "~0.6.1" @@ -11518,14 +10952,6 @@ uglify-js@3.4.x: commander "~2.19.0" source-map "~0.6.1" -uglify-js@^3.1.4: - version "3.6.3" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.3.tgz#1351533bbe22cc698f012589ed6bd4cbd971bff8" - integrity sha512-KfQUgOqTkLp2aZxrMbCuKCDGW9slFYu2A23A36Gs7sGzTLcRBDORdOi5E21KWHFIfkY8kzgi/Pr1cXCh0yIp5g== - dependencies: - commander "~2.20.3" - source-map "~0.6.1" - unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" @@ -11668,7 +11094,7 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -util.promisify@1.0.0, util.promisify@^1.0.0, util.promisify@~1.0.0: +util.promisify@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== @@ -11676,6 +11102,16 @@ util.promisify@1.0.0, util.promisify@^1.0.0, util.promisify@~1.0.0: define-properties "^1.1.2" object.getownpropertydescriptors "^2.0.3" +util.promisify@^1.0.0, util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + util@0.10.3: version "0.10.3" resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" @@ -11717,9 +11153,9 @@ uuid@3.3.2: integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== uuid@^3.0.1, uuid@^3.3.2: - version "3.3.3" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" - integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== v8-compile-cache@^2.0.3: version "2.1.0" @@ -11754,9 +11190,9 @@ verror@1.10.0: extsprintf "^1.2.0" vm-browserify@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019" - integrity sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw== + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== w3c-hr-time@^1.0.1: version "1.0.1" @@ -11987,16 +11423,6 @@ word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= - -wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= - workbox-background-sync@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz#26821b9bf16e9e37fd1d640289edddc08afd1950" From 687ada0a15d740317ea6729614aa17ad5fde9d9d Mon Sep 17 00:00:00 2001 From: Jon La Marr Date: Fri, 17 Jan 2020 10:11:16 -0500 Subject: [PATCH 74/76] Bump to ual-scatter 0.1.8 --- package.json | 2 +- yarn.lock | 104 +++++++++++++++++++++------------------------------ 2 files changed, 44 insertions(+), 62 deletions(-) diff --git a/package.json b/package.json index 6458db7c..95ea635f 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "ual-eosio-reference-authenticator": "0.1.3", "ual-lynx": "0.2.2", "ual-reactjs-renderer": "0.1.7", - "ual-scatter": "0.1.6", + "ual-scatter": "0.1.8", "ual-token-pocket": "0.1.2" }, "resolutions": { diff --git a/yarn.lock b/yarn.lock index 59e49b44..2a2a9860 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1397,6 +1397,25 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== +"@scatterjs/core@2.7.51", "@scatterjs/core@^2.7.51": + version "2.7.51" + resolved "https://registry.yarnpkg.com/@scatterjs/core/-/core-2.7.51.tgz#5e34c13931d04275e5715b5ab9c74f88cf2c73b5" + integrity sha512-WXTIpdAS/nt+n8sf1eB1HfWhbbilmTfEJspFfJmAsgzmUL2XLAioaGjySmbQ1mXxfv8Sted0FQ+agJT4f3w2Yg== + dependencies: + create-hash "^1.2.0" + device-uuid "^1.0.4" + es6-promise "^4.2.4" + get-random-values "^1.2.0" + isomorphic-ws "^4.0.1" + ws "^6.1.0" + +"@scatterjs/eosjs2@1.5.33": + version "1.5.33" + resolved "https://registry.yarnpkg.com/@scatterjs/eosjs2/-/eosjs2-1.5.33.tgz#838b4a5bf8db2dcf983742f674b23fb9ad48d87f" + integrity sha512-yPdMllV2duTHHw21YCcA5Xi8068qGCatmvIC6dv+V1h20AuSpAwnW1FmB3ST4MN7ZTrLrnxzlLkUesZv+aGOVw== + dependencies: + "@scatterjs/core" "^2.7.51" + "@sheerun/mutationobserver-shim@^0.3.2": version "0.3.2" resolved "https://registry.yarnpkg.com/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.2.tgz#8013f2af54a2b7d735f71560ff360d3a8176a87b" @@ -2604,7 +2623,7 @@ browser-resolve@^1.11.3: dependencies: resolve "1.1.7" -browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.0.6: +browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.2.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== @@ -2724,13 +2743,6 @@ builtin-status-codes@^3.0.0: resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= -bytebuffer@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" - integrity sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0= - dependencies: - long "~3" - bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -3335,7 +3347,7 @@ create-ecdh@^4.0.0: bn.js "^4.1.0" elliptic "^6.0.0" -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.1.3, create-hash@^1.2.0: +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== @@ -3346,7 +3358,7 @@ create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.1.3, create-hash@^1.2.0: ripemd160 "^2.0.1" sha.js "^2.4.0" -create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4, create-hmac@^1.1.6, create-hmac@^1.1.7: +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4, create-hmac@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== @@ -3831,6 +3843,11 @@ detect-port-alt@1.1.6: address "^1.0.1" debug "^2.6.0" +device-uuid@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/device-uuid/-/device-uuid-1.0.4.tgz#f6973e58f19b92a237aeca7b16a395ae7195a883" + integrity sha1-9pc+WPGbkqI3rsp7FqOVrnGVqIM= + diff-sequences@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" @@ -4000,7 +4017,7 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" -ecurve@^1.0.5, ecurve@^1.0.6: +ecurve@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/ecurve/-/ecurve-1.0.6.tgz#dfdabbb7149f8d8b78816be5a7d5b83fcf6de797" integrity sha512-/BzEjNfiSuB7jIWKcS/z8FK9jNjmEWvUV2YZ4RLSmcDtP7Lq0m6FvDuSnJpBlDpGRpfRQeTLGLBI8H+kEv0r+w== @@ -4014,9 +4031,9 @@ ee-first@1.1.1: integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= electron-to-chromium@^1.3.247, electron-to-chromium@^1.3.322: - version "1.3.335" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.335.tgz#5fb6084a25cb1e2542df91e62b62e1931a602303" - integrity sha512-ngKsDGd/xr2lAZvilxTfdvfEiQKmavyXd6irlswaHnewmXoz6JgbM9FUNwgp3NFIUHHegh1F87H8f5BJ8zABxw== + version "1.3.336" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.336.tgz#f0e7a3e78f1c9a0385b6693a4a4b7453f0ae6aaf" + integrity sha512-FtazvnXAizSVMxQNPqUcTv2UElY5r3uRPQwiU1Tyg/Yc2UFr+/3wqDoLIV9ES6ablW3IrCcR8uEK2ppxaNPWhw== elliptic@6.5.0: version "6.5.0" @@ -4031,7 +4048,7 @@ elliptic@6.5.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" -elliptic@^6.0.0, elliptic@^6.5.1: +elliptic@6.5.2, elliptic@^6.0.0, elliptic@^6.5.1: version "6.5.2" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== @@ -4090,20 +4107,6 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw== -eosjs-ecc@4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/eosjs-ecc/-/eosjs-ecc-4.0.4.tgz#431450f30a6f73088ff5d7ba1ebdfe967a5ca4ab" - integrity sha512-9wAYefts4TidHOu+eN9nAisZdWpUzlUimZrB63oP7+/s4xRNJEn2Vvep2ICRODpxpidbshM1L7WaSYW9oiV5gA== - dependencies: - bigi "^1.4.2" - browserify-aes "^1.0.6" - bs58 "^4.0.1" - bytebuffer "^5.0.1" - create-hash "^1.1.3" - create-hmac "^1.1.6" - ecurve "^1.0.5" - randombytes "^2.0.5" - eosjs-ios-browser-signature-provider-interface@0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/eosjs-ios-browser-signature-provider-interface/-/eosjs-ios-browser-signature-provider-interface-0.1.1.tgz#7b1385f523f68635b17f7771150ecab3d85556c6" @@ -6973,11 +6976,6 @@ loglevel@^1.4.1: resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.6.tgz#0ee6300cc058db6b3551fa1c4bf73b83bb771312" integrity sha512-Sgr5lbboAUBo3eXCSPL4/KoVz3ROKquOjcctxmHIt+vol2DrqTQe3SwkKKuYhEiWB5kYa13YyopJ69deJ1irzQ== -long@~3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" - integrity sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s= - loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -9813,22 +9811,6 @@ saxes@^3.1.9: dependencies: xmlchars "^2.1.1" -scatterjs-core@2.7.17: - version "2.7.17" - resolved "https://registry.yarnpkg.com/scatterjs-core/-/scatterjs-core-2.7.17.tgz#f889e9d3bf1ba2003fc0411ad838fbfe42ed11fb" - integrity sha512-LKvg7nr2ViZgNyw7dzk5CbwDVz006PBFpJqKU1dx7fmMs9LmBov7gB60DFwLR9p3kirPWO2hon1TE/xe51pkFw== - dependencies: - create-hash "^1.2.0" - es6-promise "^4.2.4" - get-random-values "^1.2.0" - isomorphic-ws "^4.0.1" - ws "^6.1.0" - -scatterjs-plugin-eosjs2@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/scatterjs-plugin-eosjs2/-/scatterjs-plugin-eosjs2-1.5.0.tgz#4e8e08859c82af7b9c0b275ea57c9739a373cc18" - integrity sha512-RIYGW+c4dH//jwcAflcnI2N+erzy2AHQwfqMr8CTMCRg2S8Drm/PWf/iDn1JHsjbyTv1+kIP335zWz7xP92iAQ== - scheduler@^0.11.2: version "0.11.3" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.11.3.tgz#b5769b90cf8b1464f3f3cfcafe8e3cd7555a2d6b" @@ -9855,9 +9837,9 @@ schema-utils@^1.0.0: ajv-keywords "^3.1.0" schema-utils@^2.0.0, schema-utils@^2.0.1, schema-utils@^2.2.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.2.tgz#9205ec5978709b0d9edbccb9a316faf11617a017" - integrity sha512-sazKNMBX/jwrXRkOI7N6dtiTVYqzSckzol8SGuHt0lE/v3xSW6cUkOqzu6Bq2tW+dlUzq3CWIqHU3ZKauliqdg== + version "2.6.4" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.4.tgz#a27efbf6e4e78689d91872ee3ccfa57d7bdd0f53" + integrity sha512-VNjcaUxVnEeun6B2fiiUDjXXBtD4ZSH7pdbfIu1pOFwgptDPLMo/z9jr4sUfsjFVPqDCEin/F7IYlq7/E6yDbQ== dependencies: ajv "^6.10.2" ajv-keywords "^3.4.1" @@ -10925,15 +10907,15 @@ ual-reactjs-renderer@0.1.7: styled-components "4.1.3" universal-authenticator-library "0.1.4" -ual-scatter@0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/ual-scatter/-/ual-scatter-0.1.6.tgz#3b33f4b13bfd3fd32d81302755205323a9d35379" - integrity sha512-JrYftcVLG1Ymbnsj4+Y4Bu6FuynXlpZuaBD6NkBPb+17vy+ySo7i5T4kojQlyjf/4blXfb7q8+FyBxm5Bk7pZQ== +ual-scatter@0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/ual-scatter/-/ual-scatter-0.1.8.tgz#32535651e687a0b05b9b5e158a9dc6a243248400" + integrity sha512-tggu/1hc4Uy3KfVn7IDBzTdEK02Q84lrV65LPzlKEg8vhA439Pz4ykfd4gILSbOOPxds6cs2HCy5FPjwcd8MOg== dependencies: - eosjs "20.0.0" - eosjs-ecc "4.0.4" - scatterjs-core "2.7.17" - scatterjs-plugin-eosjs2 "^1.5.0" + "@scatterjs/core" "2.7.51" + "@scatterjs/eosjs2" "1.5.33" + elliptic "6.5.2" + eosjs "21.0.1-rc1" universal-authenticator-library "0.1.4" ual-token-pocket@0.1.2: From 451c0eb60cf3d9579542dcd2a8ed46e285153f36 Mon Sep 17 00:00:00 2001 From: Jon La Marr Date: Fri, 17 Jan 2020 10:49:28 -0500 Subject: [PATCH 75/76] New license --- IMPORTANT.md | 27 +++++++++++++++++++++++++++ README.md | 4 ++-- 2 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 IMPORTANT.md diff --git a/IMPORTANT.md b/IMPORTANT.md new file mode 100644 index 00000000..ed433799 --- /dev/null +++ b/IMPORTANT.md @@ -0,0 +1,27 @@ +# Important Notice + +We (block.one and its affiliates) make available EOSIO and other software, updates, patches and documentation (collectively, Software) on a voluntary basis as a member of the EOSIO community. A condition of you accessing any Software, websites, articles, media, publications, documents or other material (collectively, Material) is your acceptance of the terms of this important notice. + +## Software +We are not responsible for ensuring the overall performance of Software or any related applications. Any test results or performance figures are indicative and will not reflect performance under all conditions. Software may contain components that are open sourced and subject to their own licenses; you are responsible for ensuring your compliance with those licenses. + +We make no representation, warranty, guarantee or undertaking in respect of Software, whether expressed or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall we be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the Software or the use or other dealings in the Software. + +Wallets and related components are complex software that require the highest levels of security. If incorrectly built or used, they may compromise users’ private keys and digital assets. Wallet applications and related components should undergo thorough security evaluations before being used. Only experienced developers should work with such Software. + +Material is not made available to any person or entity that is the subject of sanctions administered or enforced by any country or government or otherwise designated on any list of prohibited or restricted parties (including but not limited to the lists maintained by the United Nations Security Council, the U.S. Government, the European Union or its Member States, or other applicable government authority) or organized or resident in a country or territory that is the subject of country-wide or territory-wide sanctions. You represent and warrant that neither you nor any party having a direct or indirect beneficial interest in you or on whose behalf you are acting as agent or nominee is such a person or entity and you will comply with all applicable import, re-import, sanctions, anti-boycott, export, and re-export control laws and regulations. If this is not accurate or you do not agree, then you must immediately cease accessing our Material and delete all copies of Software. + +Any person using or offering Software in connection with providing software, goods or services to third parties shall advise such third parties of this important notice, including all limitations, restrictions and exclusions of liability. + +## Trademarks +Block.one, EOSIO, EOS, the heptahedron and associated logos and related marks are our trademarks. Other trademarks referenced in Material are the property of their respective owners. + +## Third parties +Any reference in Material to any third party or third-party product, resource or service is not an endorsement or recommendation by Block.one. We are not responsible for, and disclaim any and all responsibility and liability for, your use of or reliance on any of these resources. Third-party resources may be updated, changed or terminated at any time, so information in Material may be out of date or inaccurate. + +## Forward-looking statements +Please note that in making statements expressing Block.one’s vision, we do not guarantee anything, and all aspects of our vision are subject to change at any time and in all respects at Block.one’s sole discretion, with or without notice. We call these “forward-looking statements”, which includes statements on our website and in other Material, other than statements of historical facts, such as statements regarding EOSIO’s development, expected performance, and future features, or our business strategy, plans, prospects, developments and objectives. These statements are only predictions and reflect Block.one’s current beliefs and expectations with respect to future events; they are based on assumptions and are subject to risk, uncertainties and change at any time. + +We operate in a rapidly changing environment and new risks emerge from time to time. Given these risks and uncertainties, you are cautioned not to rely on these forward-looking statements. Actual results, performance or events may differ materially from what is predicted in the forward-looking statements. Some of the factors that could cause actual results, performance or events to differ materially from the forward-looking statements include, without limitation: technical feasibility and barriers; market trends and volatility; continued availability of capital, financing and personnel; product acceptance; the commercial success of any new products or technologies; competition; government regulation and laws; and general economic, market or business conditions. + +All statements are valid only as of the date of first posting and Block.one is under no obligation to, and expressly disclaims any obligation to, update or alter any statements, whether as a result of new information, subsequent events or otherwise. Nothing in any Material constitutes technological, financial, investment, legal or other advice, either in general or with regard to any particular situation or implementation. Please consult with experts in appropriate areas before implementing or utilizing anything contained in Material. diff --git a/README.md b/README.md index 600acb88..8d72f109 100644 --- a/README.md +++ b/README.md @@ -467,6 +467,6 @@ Check out the [Contributing](./CONTRIBUTING.md) guide and please adhere to the [ ## Important -See LICENSE for copyright and license terms. Block.one makes its contribution on a voluntary basis as a member of the EOSIO community and is not responsible for ensuring the overall performance of the software or any related applications. We make no representation, warranty, guarantee or undertaking in respect of the software or any related documentation, whether expressed or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall we be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or documentation or the use or other dealings in the software or documentation. Any test results or performance figures are indicative and will not reflect performance under all conditions. Any reference to any third party or third-party product, service or other resource is not an endorsement or recommendation by Block.one. We are not responsible, and disclaim any and all responsibility and liability, for your use of or reliance on any of these resources. Third-party resources may be updated, changed or terminated at any time, so the information here may be out of date or inaccurate. Any person using or offering this software in connection with providing software, goods or services to third parties shall advise such third parties of these license terms, disclaimers and exclusions of liability. Block.one, EOSIO, EOSIO Labs, EOS, the heptahedron and associated logos are trademarks of Block.one. +See [LICENSE](./LICENSE) for copyright and license terms. -Wallets and related components are complex software that require the highest levels of security. If incorrectly built or used, they may compromise users’ private keys and digital assets. Wallet applications and related components should undergo thorough security evaluations before being used. Only experienced developers should work with this software. +All repositories and other materials are provided subject to the terms of this [IMPORTANT](./IMPORTANT.md) notice and you must familiarize yourself with its terms. The notice contains important information, limitations and restrictions relating to our software, publications, trademarks, third-party resources, and forward-looking statements. By accessing any of our repositories and other materials, you accept and agree to the terms of the notice. From 51251151cf62e465e165c52485bbade6a830f3ce Mon Sep 17 00:00:00 2001 From: Jon La Marr Date: Fri, 17 Jan 2020 10:59:15 -0500 Subject: [PATCH 76/76] Bump to 1.1.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 95ea635f..28230123 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "tropical-example-web-app", - "version": "1.0.1", + "version": "1.1.0", "license": "MIT", "description": "Simple example app demonstrating usage of several EOSIO Labs repositories", "author": {