diff --git a/babel.config.js b/babel.config.js
new file mode 100644
index 000000000..7d66fc904
--- /dev/null
+++ b/babel.config.js
@@ -0,0 +1,21 @@
+module.exports = {
+ presets: [
+ [
+ require.resolve('@babel/preset-env'),
+ {
+ modules: 'cjs',
+ targets: [
+ 'defaults',
+ 'not IE 11',
+ 'not IE_Mob 11',
+ ],
+ },
+ ],
+ require.resolve('@babel/preset-react'),
+ ],
+ plugins: [
+ require.resolve('@babel/plugin-proposal-class-properties'),
+ require.resolve('@babel/plugin-proposal-optional-chaining'),
+ require.resolve('babel-plugin-add-module-exports'),
+ ],
+};
diff --git a/demo/payload.config.js b/demo/payload.config.js
index d22da1d3d..8e4eba04a 100644
--- a/demo/payload.config.js
+++ b/demo/payload.config.js
@@ -36,11 +36,9 @@ module.exports = {
},
disable: false,
components: {
- layout: {
- // Sidebar: () => (
- //
Hello
- // ),
- },
+ // nav: () => (
+ // Hello
+ // ),
},
},
email: {
diff --git a/demo/server.js b/demo/server.js
index f98d77cf6..13ff99eda 100644
--- a/demo/server.js
+++ b/demo/server.js
@@ -38,12 +38,13 @@ expressApp.use('/external-route', externalRouter);
exports.start = (cb) => {
const server = expressApp.listen(3000, async () => {
logger.info(`listening on ${3000}...`);
- if (cb) cb();
const creds = await payload.getMockEmailCredentials();
logger.info(`Mock email account username: ${creds.user}`);
logger.info(`Mock email account password: ${creds.pass}`);
logger.info(`Log in to mock email provider at ${creds.web}`);
+
+ if (cb) cb();
});
return server;
diff --git a/jest.config.js b/jest.config.js
index b3d0efc35..953725801 100644
--- a/jest.config.js
+++ b/jest.config.js
@@ -4,4 +4,8 @@ module.exports = {
globalSetup: '/src/tests/globalSetup.js',
globalTeardown: '/src/tests/globalTeardown.js',
testTimeout: 15000,
+ moduleNameMapper: {
+ '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': '/src/mocks/fileMock.js',
+ '\\.(css|scss)$': '/src/mocks/emptyModule.js',
+ },
};
diff --git a/package.json b/package.json
index ad86ceb14..a010d22b3 100644
--- a/package.json
+++ b/package.json
@@ -33,9 +33,9 @@
"@udecode/slate-plugins": "^0.64.3",
"async-some": "^1.0.2",
"autoprefixer": "^9.7.4",
- "babel-loader": "^8.0.6",
+ "babel-jest": "^26.3.0",
+ "babel-loader": "^8.1.0",
"babel-plugin-add-module-exports": "^1.0.4",
- "babel-plugin-module-resolver": "^4.0.0",
"body-parser": "^1.19.0",
"compression": "^1.7.4",
"connect-history-api-fallback": "^1.6.0",
@@ -99,7 +99,6 @@
"react-document-meta": "^3.0.0-beta.2",
"react-dom": "^16.13.1",
"react-helmet": "^6.1.0",
- "react-hook-form": "^5.7.2",
"react-router-dom": "^5.1.2",
"react-router-navigation-prompt": "^1.8.11",
"react-select": "^3.0.8",
diff --git a/src/auth/auth.spec.js b/src/auth/auth.spec.js
index 362273ad8..23f28448d 100644
--- a/src/auth/auth.spec.js
+++ b/src/auth/auth.spec.js
@@ -6,9 +6,9 @@ const { email, password } = require('../tests/credentials');
* @jest-environment node
*/
-const config = require('../../demo/payload.config');
+const getConfig = require('../utilities/getConfig');
-const url = config.serverURL;
+const { serverURL: url } = getConfig();
let token = null;
diff --git a/src/bin/build.js b/src/bin/build.js
index c850e5701..bdf6157d9 100755
--- a/src/bin/build.js
+++ b/src/bin/build.js
@@ -4,13 +4,14 @@
const webpack = require('webpack');
const getWebpackProdConfig = require('../webpack/getWebpackProdConfig');
const findConfig = require('../utilities/findConfig');
+const getConfig = require('../utilities/getConfig');
const sanitizeConfig = require('../utilities/sanitizeConfig');
-module.exports = () => {
- const configPath = findConfig();
+const configPath = findConfig();
+module.exports = () => {
try {
- const unsanitizedConfig = require(configPath);
+ const unsanitizedConfig = getConfig();
const config = sanitizeConfig(unsanitizedConfig);
const webpackProdConfig = getWebpackProdConfig({
diff --git a/src/client/components/elements/Nav/index.js b/src/client/components/elements/Nav/index.js
index a8662d665..6f1cf726f 100644
--- a/src/client/components/elements/Nav/index.js
+++ b/src/client/components/elements/Nav/index.js
@@ -2,6 +2,7 @@ import React, { useState, useEffect } from 'react';
import { NavLink, Link, useHistory } from 'react-router-dom';
import { useConfig } from '../../providers/Config';
import { useAuthentication } from '../../providers/Authentication';
+import RenderCustomComponent from '../../utilities/RenderCustomComponent';
import Chevron from '../../icons/Chevron';
import LogOut from '../../icons/LogOut';
import Menu from '../../icons/Menu';
@@ -14,7 +15,7 @@ import './index.scss';
const baseClass = 'nav';
-const Nav = () => {
+const DefaultNav = () => {
const { permissions } = useAuthentication();
const [menuActive, setMenuActive] = useState(false);
const history = useHistory();
@@ -126,4 +127,21 @@ const Nav = () => {
);
};
+const Nav = () => {
+ const {
+ admin: {
+ components: {
+ nav: CustomNav,
+ } = {}
+ } = {},
+ } = useConfig();
+
+ return (
+
+ );
+}
+
export default Nav;
diff --git a/src/client/components/forms/field-types/Relationship/index.js b/src/client/components/forms/field-types/Relationship/index.js
index 8f35f4739..2c33bfdd8 100644
--- a/src/client/components/forms/field-types/Relationship/index.js
+++ b/src/client/components/forms/field-types/Relationship/index.js
@@ -422,7 +422,7 @@ const RelationshipFieldType = (props) => {
relationTo, validate, path, name, required,
} = props;
- const config = useConfig;
+ const config = useConfig();
const hasMultipleRelations = Array.isArray(relationTo);
diff --git a/src/collections/graphql/resolvers/resolvers.spec.js b/src/collections/graphql/resolvers/resolvers.spec.js
index 7692edd51..45298e962 100644
--- a/src/collections/graphql/resolvers/resolvers.spec.js
+++ b/src/collections/graphql/resolvers/resolvers.spec.js
@@ -4,10 +4,11 @@
// eslint-disable-next-line no-unused-vars
const fetch = require('isomorphic-fetch');
const { request, GraphQLClient } = require('graphql-request');
-const faker = require('faker');
-const config = require('../../../../demo/payload.config');
+const getConfig = require('../../../utilities/getConfig');
const { email, password } = require('../../../tests/credentials');
+const config = getConfig();
+
const url = `${config.serverURL}${config.routes.api}${config.routes.graphQL}`;
let client = null;
diff --git a/src/collections/requestHandlers/collections.spec.js b/src/collections/requestHandlers/collections.spec.js
index 9acb36008..564553926 100644
--- a/src/collections/requestHandlers/collections.spec.js
+++ b/src/collections/requestHandlers/collections.spec.js
@@ -7,11 +7,11 @@ const path = require('path');
require('isomorphic-fetch');
const faker = require('faker');
const FormData = require('form-data');
-const config = require('../../../demo/payload.config');
+const getConfig = require('../../utilities/getConfig');
const { email, password } = require('../../tests/credentials');
const fileExists = require('../../tests/utils/fileExists');
-const url = config.serverURL;
+const { serverURL: url } = getConfig();
let token = null;
diff --git a/src/globals/requestHandlers/globals.rest.spec.js b/src/globals/requestHandlers/globals.spec.js
similarity index 97%
rename from src/globals/requestHandlers/globals.rest.spec.js
rename to src/globals/requestHandlers/globals.spec.js
index f14c27c16..eea5cc184 100644
--- a/src/globals/requestHandlers/globals.rest.spec.js
+++ b/src/globals/requestHandlers/globals.spec.js
@@ -3,10 +3,10 @@
*/
require('isomorphic-fetch');
-const config = require('../../../demo/payload.config');
+const getConfig = require('../../utilities/getConfig');
const { email, password } = require('../../tests/credentials');
-const url = config.serverURL;
+const { serverURL: url } = getConfig();
let token = null;
diff --git a/src/index.js b/src/index.js
index e0b7a8e8f..86450a9bf 100644
--- a/src/index.js
+++ b/src/index.js
@@ -29,9 +29,24 @@ const localGlobalOperations = require('./globals/operations/local');
class Payload {
init(options) {
logger.info('Starting Payload...');
- const config = getConfig(options);
- this.config = sanitizeConfig(config);
+ if (!options.secret) {
+ throw new Error('Error: missing secret key. A secret key is needed to secure Payload.');
+ }
+
+ if (!options.mongoURL) {
+ throw new Error('Error: missing MongoDB connection URL.');
+ }
+
+ const config = getConfig(options);
+ const email = { ...(config.email || {}), ...(options.email || {}) };
+
+ this.config = sanitizeConfig({
+ ...config,
+ email,
+ secret: options.secret,
+ mongoURL: options.mongoURL,
+ });
if (typeof this.config.paths === 'undefined') this.config.paths = {};
diff --git a/src/webpack/mockModule.js b/src/mocks/emptyModule.js
similarity index 100%
rename from src/webpack/mockModule.js
rename to src/mocks/emptyModule.js
diff --git a/src/mocks/fileMock.js b/src/mocks/fileMock.js
new file mode 100644
index 000000000..105ff4974
--- /dev/null
+++ b/src/mocks/fileMock.js
@@ -0,0 +1 @@
+module.exports = 'file-stub';
diff --git a/src/tests/globalSetup.js b/src/tests/globalSetup.js
index c865feebf..0a04d80b2 100644
--- a/src/tests/globalSetup.js
+++ b/src/tests/globalSetup.js
@@ -1,17 +1,15 @@
require('isomorphic-fetch');
+
const server = require('../../demo/server');
-const config = require('../../demo/payload.config');
-// const payload = require('..');
+const getConfig = require('../utilities/getConfig');
const { email, password } = require('./credentials');
-const url = config.serverURL;
+const { serverURL } = getConfig();
const globalSetup = async () => {
global.PAYLOAD_SERVER = server.start();
- // ensureIndexes payload.collections....... etc loop through and await promise.all ensure indexes
-
- const response = await fetch(`${url}/api/admins/first-register`, {
+ const response = await fetch(`${serverURL}/api/admins/first-register`, {
body: JSON.stringify({
email,
password,
diff --git a/src/utilities/getConfig.js b/src/utilities/getConfig.js
index f872d2a99..442930058 100644
--- a/src/utilities/getConfig.js
+++ b/src/utilities/getConfig.js
@@ -3,58 +3,19 @@
const findConfig = require('./findConfig');
const configPath = findConfig();
+const babelConfig = require('../../babel.config');
require('ignore-styles');
-require('@babel/register')({
- presets: [
- [
- '@babel/preset-env',
- {
- targets: [
- 'defaults',
- 'not IE 11',
- 'not IE_Mob 11',
- 'maintained node versions',
- ],
- },
- ],
- '@babel/preset-react',
- ],
- plugins: [
- ['module-resolver', {
- alias: {
- 'payload/unsanitizedConfig': configPath,
- '@payloadcms/payload$': '../',
- },
- }],
- '@babel/plugin-proposal-class-properties',
- '@babel/plugin-proposal-optional-chaining',
- 'add-module-exports',
- ],
- ignore: [
- '*.scss',
- '*.css',
- 'node_modules',
- ],
-});
-const getConfig = (options = {}) => {
- if (!options.secret) {
- throw new Error('Error: missing secret key. A secret key is needed to secure Payload.');
- }
-
- if (!options.mongoURL) {
- throw new Error('Error: missing MongoDB connection URL.');
- }
+if (process.env.NODE_ENV !== 'test') {
+ require('@babel/register')(babelConfig);
+}
+const getConfig = () => {
const publicConfig = require(configPath);
- const email = { ...(publicConfig.email || {}), ...(options.email || {}) };
return {
...publicConfig,
- secret: options.secret,
- mongoURL: options.mongoURL,
- email,
paths: {
configDir: configPath.substring(0, configPath.lastIndexOf('/')),
...(publicConfig.paths || {}),
diff --git a/src/webpack/getWebpackDevConfig.js b/src/webpack/getWebpackDevConfig.js
index 98b013755..c094ecfde 100644
--- a/src/webpack/getWebpackDevConfig.js
+++ b/src/webpack/getWebpackDevConfig.js
@@ -3,8 +3,9 @@ const path = require('path');
const webpack = require('webpack');
const Dotenv = require('dotenv-webpack');
const getStyleLoaders = require('./getStyleLoaders');
+const babelConfig = require('../../babel.config');
-const mockModulePath = path.resolve(__dirname, './mockModule.js');
+const mockModulePath = path.resolve(__dirname, '../mocks/emptyModule.js');
module.exports = (config) => {
let webpackConfig = {
@@ -29,26 +30,7 @@ module.exports = (config) => {
exclude: /node_modules\/(?!(@payloadcms\/payload)\/).*/,
use: [{
loader: 'babel-loader',
- options: {
- presets: [
- [
- require.resolve('@babel/preset-env'),
- {
- targets: [
- 'defaults',
- 'not IE 11',
- 'not IE_Mob 11',
- ],
- },
- ],
- require.resolve('@babel/preset-react'),
- ],
- plugins: [
- 'add-module-exports',
- '@babel/plugin-proposal-class-properties',
- '@babel/plugin-proposal-optional-chaining',
- ],
- },
+ options: babelConfig,
},
// {
// loader: 'eslint-loader',
diff --git a/src/webpack/getWebpackProdConfig.js b/src/webpack/getWebpackProdConfig.js
index b90647cfd..920bf611c 100644
--- a/src/webpack/getWebpackProdConfig.js
+++ b/src/webpack/getWebpackProdConfig.js
@@ -3,8 +3,9 @@ const Dotenv = require('dotenv-webpack');
// const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');
const path = require('path');
const getStyleLoaders = require('./getStyleLoaders');
+const babelConfig = require('../../babel.config');
-const mockModulePath = path.resolve(__dirname, './mockModule.js');
+const mockModulePath = path.resolve(__dirname, '../mocks/emptyModule.js');
module.exports = (config) => {
let webpackConfig = {
@@ -21,40 +22,12 @@ module.exports = (config) => {
resolveLoader: { modules: ['node_modules', path.join(__dirname, '../../node_modules')] },
module: {
rules: [
- {
- test: require.resolve('../client/components/customComponents'),
- use: [
- {
- loader: 'val-loader',
- options: config,
- },
- ],
- },
{
test: /\.js$/,
exclude: /node_modules\/(?!(@payloadcms\/payload)\/).*/,
use: {
loader: 'babel-loader',
- options: {
- presets: [
- [
- require.resolve('@babel/preset-env'),
- {
- targets: [
- 'defaults',
- 'not IE 11',
- 'not IE_Mob 11',
- ],
- },
- ],
- require.resolve('@babel/preset-react'),
- ],
- plugins: [
- 'add-module-exports',
- require.resolve('@babel/plugin-proposal-optional-chaining'),
- require.resolve('@babel/plugin-proposal-class-properties'),
- ],
- },
+ options: babelConfig,
},
},
{
@@ -104,7 +77,6 @@ module.exports = (config) => {
modules: ['node_modules', path.resolve(__dirname, '../../node_modules')],
alias: {
'payload/unsanitizedConfig': config.paths.config,
- 'payload/config': path.resolve(__dirname, '../client/config.js'),
'@payloadcms/payload$': mockModulePath,
},
},
diff --git a/yarn.lock b/yarn.lock
index 831874619..d9cb1af5d 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1294,6 +1294,27 @@
source-map "^0.6.1"
write-file-atomic "^3.0.0"
+"@jest/transform@^26.3.0":
+ version "26.3.0"
+ resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.3.0.tgz#c393e0e01459da8a8bfc6d2a7c2ece1a13e8ba55"
+ integrity sha512-Isj6NB68QorGoFWvcOjlUhpkT56PqNIsXKR7XfvoDlCANn/IANlh8DrKAA2l2JKC3yWSMH5wS0GwuQM20w3b2A==
+ dependencies:
+ "@babel/core" "^7.1.0"
+ "@jest/types" "^26.3.0"
+ babel-plugin-istanbul "^6.0.0"
+ chalk "^4.0.0"
+ convert-source-map "^1.4.0"
+ fast-json-stable-stringify "^2.0.0"
+ graceful-fs "^4.2.4"
+ jest-haste-map "^26.3.0"
+ jest-regex-util "^26.0.0"
+ jest-util "^26.3.0"
+ micromatch "^4.0.2"
+ pirates "^4.0.1"
+ slash "^3.0.0"
+ source-map "^0.6.1"
+ write-file-atomic "^3.0.0"
+
"@jest/types@^25.5.0":
version "25.5.0"
resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d"
@@ -1304,6 +1325,17 @@
"@types/yargs" "^15.0.0"
chalk "^3.0.0"
+"@jest/types@^26.3.0":
+ version "26.3.0"
+ resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.3.0.tgz#97627bf4bdb72c55346eef98e3b3f7ddc4941f71"
+ integrity sha512-BDPG23U0qDeAvU4f99haztXwdAg3hz4El95LkAM+tHAqqhiVzRpEGHHU8EDxT/AnxOrA65YjLBwDahdJ9pTLJQ==
+ dependencies:
+ "@types/istanbul-lib-coverage" "^2.0.0"
+ "@types/istanbul-reports" "^3.0.0"
+ "@types/node" "*"
+ "@types/yargs" "^15.0.0"
+ chalk "^4.0.0"
+
"@microsoft/load-themed-styles@^1.10.26":
version "1.10.97"
resolved "https://registry.yarnpkg.com/@microsoft/load-themed-styles/-/load-themed-styles-1.10.97.tgz#39106393e134e68870072784c595a432d9ae9051"
@@ -1337,7 +1369,7 @@
object.assign "^4.1.0"
object.entries "^1.1.1"
-"@types/babel__core@^7.1.7":
+"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7":
version "7.1.9"
resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.9.tgz#77e59d438522a6fb898fa43dc3455c6e72f3963d"
integrity sha512-sY2RsIJ5rpER1u3/aQ8OFSI7qGIy8o1NEEbgb2UaJcvOtXOMpd39ko723NBpjQFg9SIX7TXtjejZVGeIMLhoOw==
@@ -1417,6 +1449,13 @@
"@types/istanbul-lib-coverage" "*"
"@types/istanbul-lib-report" "*"
+"@types/istanbul-reports@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821"
+ integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==
+ dependencies:
+ "@types/istanbul-lib-report" "*"
+
"@types/js-cookie@2.2.6":
version "2.2.6"
resolved "https://registry.yarnpkg.com/@types/js-cookie/-/js-cookie-2.2.6.tgz#f1a1cb35aff47bc5cfb05cb0c441ca91e914c26f"
@@ -2171,7 +2210,21 @@ babel-jest@^25.5.1:
graceful-fs "^4.2.4"
slash "^3.0.0"
-babel-loader@^8.0.6:
+babel-jest@^26.3.0:
+ version "26.3.0"
+ resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.3.0.tgz#10d0ca4b529ca3e7d1417855ef7d7bd6fc0c3463"
+ integrity sha512-sxPnQGEyHAOPF8NcUsD0g7hDCnvLL2XyblRBcgrzTWBB/mAIpWow3n1bEL+VghnnZfreLhFSBsFluRoK2tRK4g==
+ dependencies:
+ "@jest/transform" "^26.3.0"
+ "@jest/types" "^26.3.0"
+ "@types/babel__core" "^7.1.7"
+ babel-plugin-istanbul "^6.0.0"
+ babel-preset-jest "^26.3.0"
+ chalk "^4.0.0"
+ graceful-fs "^4.2.4"
+ slash "^3.0.0"
+
+babel-loader@^8.1.0:
version "8.1.0"
resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3"
integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==
@@ -2230,6 +2283,16 @@ babel-plugin-jest-hoist@^25.5.0:
"@babel/types" "^7.3.3"
"@types/babel__traverse" "^7.0.6"
+babel-plugin-jest-hoist@^26.2.0:
+ version "26.2.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.2.0.tgz#bdd0011df0d3d513e5e95f76bd53b51147aca2dd"
+ integrity sha512-B/hVMRv8Nh1sQ1a3EY8I0n4Y1Wty3NrR5ebOyVT302op+DOAau+xNEImGMsUWOC3++ZlMooCytKz+NgN8aKGbA==
+ dependencies:
+ "@babel/template" "^7.3.3"
+ "@babel/types" "^7.3.3"
+ "@types/babel__core" "^7.0.0"
+ "@types/babel__traverse" "^7.0.6"
+
babel-plugin-macros@^2.0.0:
version "2.8.0"
resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138"
@@ -2255,7 +2318,7 @@ babel-plugin-syntax-jsx@^6.18.0:
resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946"
integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=
-babel-preset-current-node-syntax@^0.1.2:
+babel-preset-current-node-syntax@^0.1.2, babel-preset-current-node-syntax@^0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.3.tgz#b4b547acddbf963cba555ba9f9cbbb70bfd044da"
integrity sha512-uyexu1sVwcdFnyq9o8UQYsXwXflIh8LvrF5+cKrYam93ned1CStffB3+BEcsxGSgagoA3GEyjDqO4a/58hyPYQ==
@@ -2280,6 +2343,14 @@ babel-preset-jest@^25.5.0:
babel-plugin-jest-hoist "^25.5.0"
babel-preset-current-node-syntax "^0.1.2"
+babel-preset-jest@^26.3.0:
+ version "26.3.0"
+ resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.3.0.tgz#ed6344506225c065fd8a0b53e191986f74890776"
+ integrity sha512-5WPdf7nyYi2/eRxCbVrE1kKCWxgWY4RsPEbdJWFm7QsesFGqjdkyLeu1zRkwM1cxK6EPIlNd6d2AxLk7J+t4pw==
+ dependencies:
+ babel-plugin-jest-hoist "^26.2.0"
+ babel-preset-current-node-syntax "^0.1.3"
+
bail@^1.0.0:
version "1.0.5"
resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776"
@@ -6327,6 +6398,27 @@ jest-haste-map@^25.5.1:
optionalDependencies:
fsevents "^2.1.2"
+jest-haste-map@^26.3.0:
+ version "26.3.0"
+ resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.3.0.tgz#c51a3b40100d53ab777bfdad382d2e7a00e5c726"
+ integrity sha512-DHWBpTJgJhLLGwE5Z1ZaqLTYqeODQIZpby0zMBsCU9iRFHYyhklYqP4EiG73j5dkbaAdSZhgB938mL51Q5LeZA==
+ dependencies:
+ "@jest/types" "^26.3.0"
+ "@types/graceful-fs" "^4.1.2"
+ "@types/node" "*"
+ anymatch "^3.0.3"
+ fb-watchman "^2.0.0"
+ graceful-fs "^4.2.4"
+ jest-regex-util "^26.0.0"
+ jest-serializer "^26.3.0"
+ jest-util "^26.3.0"
+ jest-worker "^26.3.0"
+ micromatch "^4.0.2"
+ sane "^4.0.3"
+ walker "^1.0.7"
+ optionalDependencies:
+ fsevents "^2.1.2"
+
jest-jasmine2@^25.5.4:
version "25.5.4"
resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-25.5.4.tgz#66ca8b328fb1a3c5364816f8958f6970a8526968"
@@ -6399,6 +6491,11 @@ jest-regex-util@^25.2.6:
resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-25.2.6.tgz#d847d38ba15d2118d3b06390056028d0f2fd3964"
integrity sha512-KQqf7a0NrtCkYmZZzodPftn7fL1cq3GQAFVMn5Hg8uKx/fIenLEobNanUxb7abQ1sjADHBseG/2FGpsv/wr+Qw==
+jest-regex-util@^26.0.0:
+ version "26.0.0"
+ resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28"
+ integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==
+
jest-resolve-dependencies@^25.5.4:
version "25.5.4"
resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-25.5.4.tgz#85501f53957c8e3be446e863a74777b5a17397a7"
@@ -6487,6 +6584,14 @@ jest-serializer@^25.5.0:
dependencies:
graceful-fs "^4.2.4"
+jest-serializer@^26.3.0:
+ version "26.3.0"
+ resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.3.0.tgz#1c9d5e1b74d6e5f7e7f9627080fa205d976c33ef"
+ integrity sha512-IDRBQBLPlKa4flg77fqg0n/pH87tcRKwe8zxOVTWISxGpPHYkRZ1dXKyh04JOja7gppc60+soKVZ791mruVdow==
+ dependencies:
+ "@types/node" "*"
+ graceful-fs "^4.2.4"
+
jest-snapshot@^25.5.1:
version "25.5.1"
resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-25.5.1.tgz#1a2a576491f9961eb8d00c2e5fd479bc28e5ff7f"
@@ -6519,6 +6624,18 @@ jest-util@^25.5.0:
is-ci "^2.0.0"
make-dir "^3.0.0"
+jest-util@^26.3.0:
+ version "26.3.0"
+ resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.3.0.tgz#a8974b191df30e2bf523ebbfdbaeb8efca535b3e"
+ integrity sha512-4zpn6bwV0+AMFN0IYhH/wnzIQzRaYVrz1A8sYnRnj4UXDXbOVtWmlaZkO9mipFqZ13okIfN87aDoJWB7VH6hcw==
+ dependencies:
+ "@jest/types" "^26.3.0"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ graceful-fs "^4.2.4"
+ is-ci "^2.0.0"
+ micromatch "^4.0.2"
+
jest-validate@^25.5.0:
version "25.5.0"
resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-25.5.0.tgz#fb4c93f332c2e4cf70151a628e58a35e459a413a"
@@ -6551,6 +6668,15 @@ jest-worker@^25.5.0:
merge-stream "^2.0.0"
supports-color "^7.0.0"
+jest-worker@^26.3.0:
+ version "26.3.0"
+ resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.3.0.tgz#7c8a97e4f4364b4f05ed8bca8ca0c24de091871f"
+ integrity sha512-Vmpn2F6IASefL+DVBhPzI2J9/GJUsqzomdeN+P+dK8/jKxbh8R3BtFnx3FIta7wYlPU62cpJMJQo4kuOowcMnw==
+ dependencies:
+ "@types/node" "*"
+ merge-stream "^2.0.0"
+ supports-color "^7.0.0"
+
jest@^25.3.0:
version "25.5.4"
resolved "https://registry.yarnpkg.com/jest/-/jest-25.5.4.tgz#f21107b6489cfe32b076ce2adcadee3587acb9db"
@@ -9408,11 +9534,6 @@ react-helmet@^6.1.0:
react-fast-compare "^3.1.1"
react-side-effect "^2.1.0"
-react-hook-form@^5.7.2:
- version "5.7.2"
- resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-5.7.2.tgz#a84e259e5d37dd30949af4f79c4dac31101b79ac"
- integrity sha512-bJvY348vayIvEUmSK7Fvea/NgqbT2racA2IbnJz/aPlQ3GBtaTeDITH6rtCa6y++obZzG6E3Q8VuoXPir7QYUg==
-
react-input-autosize@^2.2.2:
version "2.2.2"
resolved "https://registry.yarnpkg.com/react-input-autosize/-/react-input-autosize-2.2.2.tgz#fcaa7020568ec206bc04be36f4eb68e647c4d8c2"