diff --git a/package.json b/package.json
index 6d2a0017f..41fca8dda 100644
--- a/package.json
+++ b/package.json
@@ -35,7 +35,7 @@
"echarts-for-react": "^3.0.2",
"file-saver": "^2.0.5",
"fontsource-roboto": "^4.0.0",
- "formik": "^1.3.2",
+ "formik": "^2.2.9",
"history": "^4.10.1",
"i18n-iso-countries": "4.3.1",
"intl": "^1.2.5",
@@ -85,7 +85,7 @@
"shortid": "^2.2.16",
"source-map-explorer": "^2.5.3",
"swiper": "^6.8.4",
- "yup": "^0.32.11"
+ "yup": "^1.0.0"
},
"devDependencies": {
"@wojtekmaj/enzyme-adapter-react-17": "^0.6.0",
diff --git a/src/components/Account/Activate/Activate.container.js b/src/components/Account/Activate/Activate.container.js
index 601c7bda6..9d335f8a7 100644
--- a/src/components/Account/Activate/Activate.container.js
+++ b/src/components/Account/Activate/Activate.container.js
@@ -1,48 +1,44 @@
-import React, { Fragment, PureComponent } from 'react';
+import React, { useState, useEffect } from 'react';
import { Link } from 'react-router-dom';
import { activate } from './Activate.actions';
import './Activate.css';
-class ActivateContainer extends PureComponent {
- state = {
- isActivating: false,
- activationStatus: {}
- };
-
- componentDidMount() {
- const {
- match: {
- params: { url }
- }
- } = this.props;
+function ActivateContainer({
+ match: {
+ params: { url }
+ }
+}) {
+ const [isActivating, setIsActivating] = useState(false);
+ const [activationStatus, setActivationStatus] = useState({});
- this.setState({ isActivating: true });
+ useEffect(
+ () => {
+ setIsActivating(true);
- activate(url)
- .then(activationStatus => this.setState({ activationStatus }))
- .catch(activationStatus => this.setState({ activationStatus }))
- .finally(() => this.setState({ isActivating: false }));
- }
+ activate(url)
+ .then(response => setActivationStatus(response))
+ .catch(error => setActivationStatus(error))
+ .finally(() => setIsActivating(false));
+ },
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ []
+ );
- render() {
- const { isActivating, activationStatus } = this.state;
+ return (
+
+ {isActivating ? (
+ 'Activating your account...'
+ ) : (
+ <>
+
{activationStatus.message}
- return (
-
- {isActivating ? (
- 'Activating your account...'
- ) : (
-
- {activationStatus.message}
-
-
- Home page
-
-
- )}
-
- );
- }
+
+ Home page
+
+ >
+ )}
+
+ );
}
export default ActivateContainer;
diff --git a/src/components/Account/ChangePassword/ChangePassword.actions.js b/src/components/Account/ChangePassword/ChangePassword.actions.js
index 8f8691c02..3809c0808 100644
--- a/src/components/Account/ChangePassword/ChangePassword.actions.js
+++ b/src/components/Account/ChangePassword/ChangePassword.actions.js
@@ -34,12 +34,15 @@ export function storePassword(userid, password, url) {
return Promise.resolve(res);
} catch (err) {
dispatch(storePasswordApiFailure(err.message));
+
if (err.response != null) {
return Promise.reject(err.response.data);
}
- var disonnected = {
+
+ const disonnected = {
message: 'Unable to contact server. Try in a moment'
};
+
return Promise.reject(disonnected);
}
};
diff --git a/src/components/Account/ChangePassword/ChangePassword.component.js b/src/components/Account/ChangePassword/ChangePassword.component.js
index 4954b3011..7014487b6 100644
--- a/src/components/Account/ChangePassword/ChangePassword.component.js
+++ b/src/components/Account/ChangePassword/ChangePassword.component.js
@@ -1,4 +1,4 @@
-import React, { Component } from 'react';
+import React, { useState } from 'react';
import { connect } from 'react-redux';
import { FormattedMessage, injectIntl, intlShape } from 'react-intl';
import { Formik } from 'formik';
@@ -18,141 +18,136 @@ import { storePassword } from './ChangePassword.actions';
import messages from './ChangePassword.messages';
import './ChangePassword.css';
-export class ChangePassword extends Component {
- static propTypes = {
- intl: intlShape.isRequired
- };
-
- state = {
- isSending: false,
- storePasswordState: {},
- redirectMessage: ''
- };
+export function ChangePassword({
+ intl,
+ history,
+ storePassword,
+ match: {
+ params: { userid, url }
+ }
+}) {
+ const [isSending, setIsSending] = useState(false);
+ const [storePasswordState, setStorePasswordState] = useState({});
+ const [redirectMessage, setRedirectMessage] = useState('');
+ const isButtonDisabled = isSending || !!storePasswordState.success;
- sleep = milliseconds => {
+ function sleep(milliseconds) {
return new Promise(resolve => setTimeout(resolve, milliseconds));
- };
-
- handleSubmit = values => {
- const {
- match: {
- params: { userid, url }
- }
- } = this.props;
-
- const { intl, history, storePassword } = this.props;
+ }
- this.setState({
- isSending: true,
- storePasswordState: {}
- });
+ function handleSubmit(values) {
+ setIsSending(true);
+ setStorePasswordState({});
storePassword(userid, values.password, url)
.then(res => {
- this.setState({
- storePasswordState: res,
- redirectMessage: intl.formatMessage(messages.redirect)
- });
- this.sleep(2000).then(() => {
+ setStorePasswordState(res);
+ setRedirectMessage(intl.formatMessage(messages.redirect));
+
+ sleep(2000).then(() => {
history.replace('/login-signup');
});
})
- .catch(err => this.setState({ storePasswordState: err }))
- .finally(() => this.setState({ isSending: false }));
- };
-
- render() {
- const { isSending, storePasswordState, redirectMessage } = this.state;
- const { intl } = this.props;
-
- const isButtonDisabled = isSending || !!storePasswordState.success;
-
- return (
-
-
+
+ );
}
+ChangePassword.propTypes = {
+ intl: intlShape.isRequired
+};
+
const mapDispatchToProps = {
storePassword
};
diff --git a/src/components/Account/ChangePassword/ChangePassword.css b/src/components/Account/ChangePassword/ChangePassword.css
index e22c079e2..b916dc150 100644
--- a/src/components/Account/ChangePassword/ChangePassword.css
+++ b/src/components/Account/ChangePassword/ChangePassword.css
@@ -9,10 +9,6 @@
background: linear-gradient(to right, rgb(121, 22, 254), rgb(172, 47, 138));
}
-.ChangePassword_home {
- margin-top: 1em;
- color: inherit;
-}
.ChangePassword__form > div {
width: 100%;
}
diff --git a/src/components/Account/Login/Login.component.js b/src/components/Account/Login/Login.component.js
index 9ff63b578..a1e31f60f 100644
--- a/src/components/Account/Login/Login.component.js
+++ b/src/components/Account/Login/Login.component.js
@@ -1,4 +1,4 @@
-import React, { Component } from 'react';
+import React, { useState } from 'react';
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import { FormattedMessage, injectIntl, intlShape } from 'react-intl';
@@ -17,106 +17,110 @@ import { login } from './Login.actions';
import messages from './Login.messages';
import './Login.css';
-export class Login extends Component {
- static propTypes = {
- intl: intlShape.isRequired,
- isDialogOpen: PropTypes.bool.isRequired,
- onClose: PropTypes.func.isRequired,
- onResetPasswordClick: PropTypes.func.isRequired
- };
+export function Login({
+ intl,
+ isDialogOpen,
+ onClose,
+ onResetPasswordClick,
+ login
+}) {
+ const [isLogin, setIsLogin] = useState(false);
+ const [loginStatus, setLoginStatus] = useState({});
+ const isButtonDisabled = isLogin || !!loginStatus.success;
- state = {
- isLogging: false,
- loginStatus: {}
- };
+ function handleSubmit(values) {
+ setIsLogin(true);
+ setLoginStatus({});
- handleSubmit = values => {
- const { login } = this.props;
+ login(values)
+ .catch(loginStatus => setLoginStatus(loginStatus))
+ .finally(() => setIsLogin(false));
+ }
- this.setState({
- isLogging: true,
- loginStatus: {}
- });
+ return (
+
+
+
+
- login(values)
- .catch(loginStatus => this.setState({ loginStatus }))
- .finally(() => this.setState({ isLogging: false }));
- };
+
+
+ {loginStatus.message}
+
- render() {
- const { isLogging, loginStatus } = this.state;
- const { intl, isDialogOpen, onClose, onResetPasswordClick } = this.props;
+
+ {({ errors, handleChange, handleSubmit }) => (
+
+ )}
+
+
+
+
+
+ );
}
+Login.propTypes = {
+ intl: intlShape.isRequired,
+ isDialogOpen: PropTypes.bool.isRequired,
+ onClose: PropTypes.func.isRequired,
+ onResetPasswordClick: PropTypes.func.isRequired
+};
+
const mapDispatchToProps = {
login
};
diff --git a/src/components/Account/Login/Login.component.test.js b/src/components/Account/Login/Login.component.test.js
index 72c4ded3d..9c8155bc9 100644
--- a/src/components/Account/Login/Login.component.test.js
+++ b/src/components/Account/Login/Login.component.test.js
@@ -1,6 +1,5 @@
import React from 'react';
-import { shallow, mount } from 'enzyme';
-import { shallowMatchSnapshot } from '../../../common/test_utils';
+import { shallow } from 'enzyme';
import { Login } from './Login.component';
jest.mock('./Login.messages', () => {
@@ -24,7 +23,6 @@ jest.mock('./Login.messages', () => {
};
});
-const mockLoginfn = jest.fn();
const props = {
isDialogOpen: false,
onClose: jest.fn(),
diff --git a/src/components/Account/ResetPassword/ResetPassword.actions.js b/src/components/Account/ResetPassword/ResetPassword.actions.js
index 9ac5af14c..4756fbce3 100644
--- a/src/components/Account/ResetPassword/ResetPassword.actions.js
+++ b/src/components/Account/ResetPassword/ResetPassword.actions.js
@@ -25,7 +25,7 @@ export function forgotApiSuccess(board) {
};
}
-export function forgot({ email }, type = 'local') {
+export function forgot({ email }) {
return async dispatch => {
try {
dispatch(forgotApiStarted());
@@ -34,12 +34,15 @@ export function forgot({ email }, type = 'local') {
return Promise.resolve(res);
} catch (err) {
dispatch(forgotApiFailure(err.message));
+
if (err.response != null) {
return Promise.reject(err.response.data);
}
- var disonnected = {
+
+ const disonnected = {
message: 'Unable to contact server. Try in a moment'
};
+
return Promise.reject(disonnected);
}
};
diff --git a/src/components/Account/ResetPassword/ResetPassword.component.js b/src/components/Account/ResetPassword/ResetPassword.component.js
index eb216f307..df349544c 100644
--- a/src/components/Account/ResetPassword/ResetPassword.component.js
+++ b/src/components/Account/ResetPassword/ResetPassword.component.js
@@ -1,4 +1,4 @@
-import React, { Component } from 'react';
+import React, { useState } from 'react';
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import { FormattedMessage, injectIntl, intlShape } from 'react-intl';
@@ -18,103 +18,99 @@ import { forgot } from './ResetPassword.actions';
import messages from './ResetPassword.messages';
import './ResetPassword.css';
-export class ResetPassword extends Component {
- static propTypes = {
- intl: intlShape.isRequired,
- isDialogOpen: PropTypes.bool.isRequired,
- onClose: PropTypes.func.isRequired
- };
+export function ResetPassword({ intl, isDialogOpen, onClose, forgot }) {
+ const [isSending, setIsSending] = useState(false);
+ const [forgotState, setForgotState] = useState({});
+ const isButtonDisabled = isSending || !!forgotState.success;
- state = {
- isSending: false,
- forgotState: {}
- };
-
- handleSubmit = values => {
- const { forgot } = this.props;
-
- this.setState({
- isSending: true,
- forgotState: {}
- });
+ function handleSubmit(values) {
+ setIsSending(true);
+ setForgotState({});
forgot(values)
- .then(res => this.setState({ forgotState: res }))
- .catch(err => this.setState({ forgotState: err }))
- .finally(() => this.setState({ isSending: false }));
- };
+ .then(response => setForgotState(response))
+ .catch(error => setForgotState(error))
+ .finally(() => setIsSending(false));
+ }
- render() {
- const { isSending, forgotState } = this.state;
- const { intl, isDialogOpen, onClose } = this.props;
+ return (
+
+
+
+
- const isButtonDisabled = isSending || !!forgotState.success;
+
+
+
+
- return (
-
-
-
-
-
-
-
-
+
+ {!!forgotState.success ? (
+
+ {intl.formatMessage(messages.resetPasswordSuccess)}
+
+ ) : (
+ {forgotState.message}
+ )}
+
-
- {!!forgotState.success ? (
-
- {intl.formatMessage(messages.resetPasswordSuccess)}
-
- ) : (
- {forgotState.message}
+ {({ errors, handleChange, handleSubmit }) => (
+
)}
-
- {forgotState && !forgotState.success && (
-
- {({ errors, handleChange, handleSubmit }) => (
-
- )}
-
- )}
-
-
- );
- }
+
+ )}
+
+
+ );
}
+ResetPassword.propTypes = {
+ intl: intlShape.isRequired,
+ forgot: PropTypes.func.isRequired,
+ isDialogOpen: PropTypes.bool.isRequired,
+ onClose: PropTypes.func.isRequired
+};
+
const mapDispatchToProps = {
forgot
};
diff --git a/src/components/Account/SignUp/SignUp.component.js b/src/components/Account/SignUp/SignUp.component.js
index 7484efd10..af28a9cb2 100644
--- a/src/components/Account/SignUp/SignUp.component.js
+++ b/src/components/Account/SignUp/SignUp.component.js
@@ -1,4 +1,4 @@
-import React, { Component } from 'react';
+import React, { useState, useEffect } from 'react';
import PropTypes from 'prop-types';
import { FormattedMessage, injectIntl, intlShape } from 'react-intl';
import { Formik, ErrorMessage } from 'formik';
@@ -18,161 +18,166 @@ import { signUp } from './SignUp.actions';
import messages from './SignUp.messages';
import './SignUp.css';
-export class SignUp extends Component {
- static propTypes = {
- intl: intlShape.isRequired,
- isDialogOpen: PropTypes.bool.isRequired,
- onClose: PropTypes.func.isRequired
- };
-
- state = {
- isSigningUp: false,
- signUpStatus: {}
- };
-
- componentDidUpdate({ isDialogOpen }) {
- if (this.props.isDialogOpen && this.props.isDialogOpen !== isDialogOpen) {
- this.setState({ signUpStatus: {} });
- }
- }
+export function SignUp({ isDialogOpen, onClose, intl }) {
+ const [isSigningUp, setIsSigningUp] = useState(false);
+ const [signUpStatus, setSignUpStatus] = useState({});
+ const isButtonDisabled = isSigningUp || !!signUpStatus.success;
- handleSubmit = values => {
+ function handleSubmit(values) {
const { passwordConfirm, ...formValues } = values;
- this.setState({
- isSigningUp: true,
- signUpStatus: {}
- });
+ setIsSigningUp(true);
+ setSignUpStatus({});
signUp(formValues)
- .then(signUpStatus => this.setState({ signUpStatus }))
- .catch(signUpStatus => this.setState({ signUpStatus }))
- .finally(() => this.setState({ isSigningUp: false }));
- };
-
- render() {
- const { signUpStatus, isSigningUp } = this.state;
- const { isDialogOpen, onClose, intl } = this.props;
-
- const isButtonDisabled = isSigningUp || !!signUpStatus.success;
-
- return (
-
-
-
-
-
- setSignUpStatus(response))
+ .catch(error => setSignUpStatus(error))
+ .finally(() => setIsSigningUp(false));
+ }
+
+ useEffect(
+ () => {
+ if (!isDialogOpen) {
+ setSignUpStatus({});
+ }
+ },
+ [isDialogOpen]
+ );
+
+ return (
+
+
+
+
+
+
+
+ {signUpStatus.message}
+
+
+ {signUpStatus && !signUpStatus.success && (
+
- {signUpStatus.message}
-
- {signUpStatus && !signUpStatus.success && (
-
- {({ errors, handleChange, handleSubmit }) => (
-
- )}
-
- )}
-
-
- );
- }
+ />
+ }
+ label={
+
+ {intl.formatMessage(messages.termsAndConditions)}
+
+ ),
+ privacy: (
+
+ {intl.formatMessage(messages.privacy)}
+
+ )
+ }}
+ />
+ }
+ />
+
+
+
+
+
+
+
+
+
+ )}
+
+ )}
+
+
+ );
}
+SignUp.propTypes = {
+ intl: intlShape.isRequired,
+ isDialogOpen: PropTypes.bool.isRequired,
+ onClose: PropTypes.func.isRequired
+};
+
export default injectIntl(SignUp);
diff --git a/src/components/Account/SignUp/Signup.component.test.js b/src/components/Account/SignUp/Signup.component.test.js
index b59e1d862..6b8b90466 100644
--- a/src/components/Account/SignUp/Signup.component.test.js
+++ b/src/components/Account/SignUp/Signup.component.test.js
@@ -1,6 +1,5 @@
import React from 'react';
-import { shallow, mount } from 'enzyme';
-import { shallowMatchSnapshot } from '../../../common/test_utils';
+import { shallow } from 'enzyme';
import { SignUp } from './SignUp.component';
jest.mock('./SignUp.messages', () => {
diff --git a/yarn.lock b/yarn.lock
index 069b7b7de..e8e39e67a 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1882,7 +1882,7 @@
dependencies:
regenerator-runtime "^0.13.4"
-"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.12.13", "@babel/runtime@^7.15.4", "@babel/runtime@^7.3.1", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
+"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.12.13", "@babel/runtime@^7.3.1", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
version "7.17.9"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72"
integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==
@@ -2608,11 +2608,6 @@
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3"
integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==
-"@types/lodash@^4.14.175":
- version "4.14.182"
- resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.182.tgz#05301a4d5e62963227eaafe0ce04dd77c54ea5c2"
- integrity sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==
-
"@types/mdast@^3.0.0", "@types/mdast@^3.0.3":
version "3.0.10"
resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.10.tgz#4724244a82a4598884cbbe9bcfd73dff927ee8af"
@@ -3273,7 +3268,7 @@ arrify@^1.0.1:
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
-asap@~2.0.3, asap@~2.0.6:
+asap@~2.0.6:
version "2.0.6"
resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=
@@ -4719,11 +4714,6 @@ core-js-pure@^3.20.2:
resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.22.3.tgz#181d1b6321fb29fe99c16a1f28beb840ab84ad36"
integrity sha512-oN88zz7nmKROMy8GOjs+LN+0LedIvbMdnB5XsTlhcOg1WGARt9l0LFg0zohdoFmCsEZ1h2ZbSQ6azj3M+vhzwQ==
-core-js@^1.0.0:
- version "1.2.7"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
- integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=
-
core-js@^2.4.0:
version "2.6.12"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec"
@@ -4814,14 +4804,6 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7:
safe-buffer "^5.0.1"
sha.js "^2.4.8"
-create-react-context@^0.2.2:
- version "0.2.3"
- resolved "https://registry.yarnpkg.com/create-react-context/-/create-react-context-0.2.3.tgz#9ec140a6914a22ef04b8b09b7771de89567cb6f3"
- integrity sha512-CQBmD0+QGgTaxDL3OX1IDXYqjkp2It4RIbcb99jS6AEg27Ga+a9G3JtK6SIu0HBwPLZlmwt9F7UwWA4Bn92Rag==
- dependencies:
- fbjs "^0.8.0"
- gud "^1.0.0"
-
cropperjs@^1.5.12:
version "1.5.12"
resolved "https://registry.yarnpkg.com/cropperjs/-/cropperjs-1.5.12.tgz#d9c0db2bfb8c0d769d51739e8f916bbc44e10f50"
@@ -6476,19 +6458,6 @@ fb-watchman@^2.0.0:
dependencies:
bser "2.1.1"
-fbjs@^0.8.0:
- version "0.8.18"
- resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.18.tgz#9835e0addb9aca2eff53295cd79ca1cfc7c9662a"
- integrity sha512-EQaWFK+fEPSoibjNy8IxUtaFOMXcWsY0JaVrQoZR9zC8N2Ygf9iDITPWjUTVIax95b6I742JFLqASHfsag/vKA==
- dependencies:
- core-js "^1.0.0"
- isomorphic-fetch "^2.1.1"
- loose-envify "^1.0.0"
- object-assign "^4.1.0"
- promise "^7.1.1"
- setimmediate "^1.0.5"
- ua-parser-js "^0.7.30"
-
figgy-pudding@^3.5.1:
version "3.5.2"
resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e"
@@ -6731,20 +6700,18 @@ form-data@~2.3.2:
combined-stream "^1.0.6"
mime-types "^2.1.12"
-formik@^1.3.2:
- version "1.5.8"
- resolved "https://registry.yarnpkg.com/formik/-/formik-1.5.8.tgz#eee8cd345effe46839bc748c7f920486f12f14b0"
- integrity sha512-fNvPe+ddbh+7xiByT25vuso2p2hseG/Yvuj211fV1DbCjljUEG9OpgRpcb7g7O3kxHX/q31cbZDzMxJXPWSNwA==
+formik@^2.2.9:
+ version "2.2.9"
+ resolved "https://registry.yarnpkg.com/formik/-/formik-2.2.9.tgz#8594ba9c5e2e5cf1f42c5704128e119fc46232d0"
+ integrity sha512-LQLcISMmf1r5at4/gyJigGn0gOwFbeEAlji+N9InZF6LIMXnFNkO42sCI8Jt84YZggpD4cPWObAZaxpEFtSzNA==
dependencies:
- create-react-context "^0.2.2"
deepmerge "^2.1.1"
hoist-non-react-statics "^3.3.0"
- lodash "^4.17.14"
- lodash-es "^4.17.14"
- prop-types "^15.6.1"
+ lodash "^4.17.21"
+ lodash-es "^4.17.21"
react-fast-compare "^2.0.1"
tiny-warning "^1.0.2"
- tslib "^1.9.3"
+ tslib "^1.10.0"
forwarded@0.2.0:
version "0.2.0"
@@ -7064,11 +7031,6 @@ growly@^1.3.0:
resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=
-gud@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0"
- integrity sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==
-
gzip-size@5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274"
@@ -8241,14 +8203,6 @@ isobject@^3.0.0, isobject@^3.0.1:
resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
-isomorphic-fetch@^2.1.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9"
- integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=
- dependencies:
- node-fetch "^1.0.1"
- whatwg-fetch ">=0.10.0"
-
isstream@~0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
@@ -9249,7 +9203,7 @@ locate-path@^5.0.0:
dependencies:
p-locate "^4.1.0"
-lodash-es@^4.17.14, lodash-es@^4.17.21:
+lodash-es@^4.17.21:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee"
integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
@@ -9921,11 +9875,6 @@ nan@^2.12.1:
resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee"
integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==
-nanoclone@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/nanoclone/-/nanoclone-0.2.1.tgz#dd4090f8f1a110d26bb32c49ed2f5b9235209ed4"
- integrity sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==
-
nanoid@^2.1.0:
version "2.1.11"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-2.1.11.tgz#ec24b8a758d591561531b4176a01e3ab4f0f0280"
@@ -9999,14 +9948,6 @@ node-fetch@1.6.3:
encoding "^0.1.11"
is-stream "^1.0.1"
-node-fetch@^1.0.1:
- version "1.7.3"
- resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef"
- integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==
- dependencies:
- encoding "^0.1.11"
- is-stream "^1.0.1"
-
node-forge@^0.10.0:
version "0.10.0"
resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3"
@@ -11559,13 +11500,6 @@ promise-inflight@^1.0.1:
resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM=
-promise@^7.1.1:
- version "7.3.1"
- resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf"
- integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==
- dependencies:
- asap "~2.0.3"
-
promise@^8.0.3:
version "8.1.0"
resolved "https://registry.yarnpkg.com/promise/-/promise-8.1.0.tgz#697c25c3dfe7435dd79fcd58c38a135888eaf05e"
@@ -11590,7 +11524,7 @@ prop-types@15.x, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, pro
object-assign "^4.1.1"
react-is "^16.13.1"
-property-expr@^2.0.4:
+property-expr@^2.0.5:
version "2.0.5"
resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-2.0.5.tgz#278bdb15308ae16af3e3b9640024524f4dc02cb4"
integrity sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA==
@@ -14043,6 +13977,11 @@ timsort@^0.3.0:
resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=
+tiny-case@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/tiny-case/-/tiny-case-1.0.3.tgz#d980d66bc72b5d5a9ca86fb7c9ffdb9c898ddd03"
+ integrity sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==
+
tiny-emitter@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423"
@@ -14194,7 +14133,7 @@ tslib@2.3.0:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e"
integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==
-tslib@^1.11.1, tslib@^1.14.1, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3:
+tslib@^1.10.0, tslib@^1.11.1, tslib@^1.14.1, tslib@^1.8.1, tslib@^1.9.0:
version "1.14.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
@@ -14250,6 +14189,11 @@ type-fest@^0.8.1:
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
+type-fest@^2.19.0:
+ version "2.19.0"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b"
+ integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==
+
type-is@~1.6.18:
version "1.6.18"
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
@@ -14856,7 +14800,7 @@ whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, whatwg-encoding@^1.0.5:
dependencies:
iconv-lite "0.4.24"
-whatwg-fetch@>=0.10.0, whatwg-fetch@^3.0.0:
+whatwg-fetch@^3.0.0:
version "3.6.2"
resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c"
integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==
@@ -15265,18 +15209,15 @@ yargs@^16.2.0:
y18n "^5.0.5"
yargs-parser "^20.2.2"
-yup@^0.32.11:
- version "0.32.11"
- resolved "https://registry.yarnpkg.com/yup/-/yup-0.32.11.tgz#d67fb83eefa4698607982e63f7ca4c5ed3cf18c5"
- integrity sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg==
+yup@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/yup/-/yup-1.0.0.tgz#de4e32f9d2e45b1ab428076fc916c84db861b8ce"
+ integrity sha512-bRZIyMkoe212ahGJTE32cr2dLkJw53Va+Uw5mzsBKpcef9zCGQ23k/xtpQUfGwdWPKvCIlR8CzFwchs2rm2XpQ==
dependencies:
- "@babel/runtime" "^7.15.4"
- "@types/lodash" "^4.14.175"
- lodash "^4.17.21"
- lodash-es "^4.17.21"
- nanoclone "^0.2.1"
- property-expr "^2.0.4"
+ property-expr "^2.0.5"
+ tiny-case "^1.0.3"
toposort "^2.0.2"
+ type-fest "^2.19.0"
zrender@5.3.1:
version "5.3.1"